Release History

v1.8.3 (2020-11-17)

Bugfixes

  • Fix loading of acromag io channels from the lcls questionnaire. Previously, these were loading full acromag devices instead of individual channels and were using the incorrect PVs.

  • Fix loading of Beckhoff axis motors from the lcls questionnaire. Previously, these were misidentified as IMS motors.

Maintenance

  • Refactor questionnaire entry creation to accomplish the above.

Contributors

  • cristinasewell

v1.8.2 (2020-10-20)

Bugfixes

  • Removed hanging raise command from qs loader (hotfix)

v1.8.1 (2020-10-21)

Bugfixes

  • Fix various issues causing questionnaire loads to fail.

  • Fix clarity issues for failed questionnaire loads.

Maintenance

  • Break up the questionnaire loading routines into more maintainable chunks, reorganizing and cleaning up the code.

  • Allow introspection of questionnaire state for debugging.

v1.8.0 (2020-10-07)

Features

  • Adds bash/fzf-based fuzzy finding of happi items with corresponding activate/deactivate scripts.

  • Adds happi search --json option to output JSON instead of a table.

Maintenance

  • Move IPython import to where it’s needed in happi load, saving approximately half a second on any other happi CLI invocation.

v1.7.2 (2020-09-17)

Bugfixes

  • Fix issue with edge cases in lcls questionnaire loader

  • Fix issue with unclear warnings on creating malformed entries

Maintenance

  • Improve testing coverage for CLI functions

v1.7.1 (2020-08-20)

Bugfixes

  • Fix cli issue where the --clone argument would fail.

  • Make sure the happi cli returns usage information if the user passes no arguments.

v1.7.0 (2020-08-18)

Features

  • Add cli search globbing, e.g. now the following will work: happi search xpp* (show all devices whose names start with xpp)

Bugfixes

  • Fix issue with silent failure when editing a non-existent field.

  • Fix issues related to changing an entry’s name field.

Maintenance

  • Add documentation for the happi cli

  • Update the db.json examples to use OphydItem

v1.6.1 (2020-07-01)

Bugfixes

  • Do not raise an exception on single malformed entries uncovered during a search. Treat these as missing entries. This was causing an issue where queries like all_devices would fail outright.

  • Fix issue where device_cls string would leak through and raise a bad/confusing exception during create_device

Maintenance

  • Reduce missing backends log messages from warning to debug.

  • Fix docs failing to build and related issues.

  • Add requirements.txt file to MANIFEST.in.

v1.6.0 (2020-04-30)

  • LCLS-specific containers are moved out of happi, and into pcdsdevices

  • OphydItem is now the preferred “basic” ophyd.Device container, with the intention of fully deprecating Device to avoid naming confusion

  • Minor internal fixes

v1.5.0 (2020-04-06)

  • Refactor search methods, supporting mongo and JSON backends

    • search - search by key/value pairs as kwargs

    • search_range - search for a range of values in a specific key

    • search_regex - search for key/value pairs as kwargs, with values being regular expressions

    • Adds SearchResult container, allowing for access of metadata or device instantiation

  • Client['item'] supported

  • happi.Device is now marked as deprecated

    • Migrate to happi.OphydItem

  • Documentation building fixed and made more accurate

  • Internal refactoring

    • Reduce usage of metaclasses

    • pymongo/mongomock are truly optional test dependencies now

    • Added pre-commit configuration for developer quality-of-life

    • HappiItems are now copy.copy()-able

    • Backends supply generators and not lists

  • Fixed many oustanding issues with the JSON backend

v1.4.0 (2020-03-13)

Enhancements

  • Add an add command for cli, e.g. happi add to start an interactive device adder

  • Add an edit command for cli, e.g. happi edit im3l0 location=750 prefix=IM3L0:PPM

  • Change search command syntax to be simpler (more like edit)

  • Add a load command for cli, e.g. happi load im3l0 im1l1 -> IPython session plus other changes made in dev to “get it working”

  • Add two new Happi-aware Qt widgets: HappiDeviceListView & HappiDeviceTreeView

Bug Fixes

  • Initialize database if it does not yet exists

  • Fix broken tests

v1.3.0 (2019-12-10)

Enhancements

  • Command line script allow users to search and add devices #84

  • Base Container object now available with minimum amount of EntryInfo #92

  • Allow Happi to load more devices from LCLS questionnaire #94

  • New function list_choices added to happi.Client to allow user to know what beamlines, prefixes, names, etc. will return results.

  • Threaded load_devices with option to specify a callback when devices are ready #67

v1.2.1 (2019-03-07)

Bug Fixes

  • The test suite now passes without the mongomock backend (#89)

  • Ensure our file handles are properly closed in the JSON backend by using context managers (#87)

v1.2.0 (2018-12-19)

Enhancements

  • Client now has a method load_device for searching the database for a Container and then loading the corresponding object based on device_class, args and kwargs. This is a shortcut to combine two previously existing features Client.find_device and happi.loader.from_container

  • Client.from_config will create a Client object from a provided configuration file. You can either pass this file in explicitly, specify it via the the environment variable $HAPPI_CFG, or it will be searched for in ~config or wherever you specify your `$XDG_CONFIG_HOME environment variable

  • Additional keywords were added to the base Device container; lightpath, documentation and embedded_screen, detailed_screen and engineering_screen

  • There is now a base container for a Motor object.

Deprecations

  • screen is longer a supported key. This was too generic and the three keys detailed above allow the user more specificity.

Fixes

  • The JSONBackend no longer relies on fcntl a Linux only module of the Python standard library.

v1.1.2 (2018-08-30)

Maintenance

  • In from_container, the provided container is compared against the cached version of the device to find discrepancies. This means that modified container objects will always load a new Device. (#62)

  • The QSBackend uses newer methods available in the psdm_qs_cli to determine the proposal from the experiment name. This is more robust against exotic experiment naming schemas than prior implementations (#68)

v1.1.1 (2018-03-08)

Enhancements

  • The QSBackend guesses which a type of motor based on the prefix. Currently this supports Newport, IMS, and PMC100 motors. While there is not an explicit dependency, this will require pcdsdevices >= 0.5.0 to load properly (#51)

Bug Fixes

  • Templating is more robust when dealing with types. This includes a fatal case where the default for an EntryInfo is None (#50)

  • A proper error message is returned if an entry in the table does not have the requisite information to load (#53 )

v1.1.0 (2018-02-13)

Ownership of this repository has been transferred to https://github.com/pcdshub

Enhancements

Happi now has a cache so the repeated requests to load the same device do not spawn multiple objects.

Maintenance

  • Cleaner logging messages

  • QSBackend was expanded to accommodate different keyword arguments associated with different authentication methods.

v1.0.0 (2018-01-31)

Enhancements

  • happi now handles loading devices with the built-in EntryInfo -> args, kwargs and device_class. Simply enter the proper information in these fields, either directly inputting information or using jinja2 templating. The functions from_container and load_devices will then handle the necessary imports and initialize devices for you

  • Select which backend you want to use with the environment variable $HAPPI_BACKEND

  • Backend to read from the PCDS Questionnaire

  • All containers work out of the box with pcdsdevices >= 0.3.0 ## API

  • All backends are stored in the backends directory.

  • The default plugin is now considered to be JSONBackend

  • The function formerly called load_device is now find_device.

Build

  • jinja2 is now a dependency

  • psdm_qs_cli is now an optional dependency if you want to use the Questionnaire backend

  • pymongo is now an optional dependency if you do not want to use the MongoDB backend

  • Only tested against Python 3.5.x and 3.6.x

  • Sent to the pcds-tag and pcds-dev Anaconda channels instead of the skywalker channels

v0.5.0 (2017-11-11)

Enhancements

  • happi now supports multiple backends. The required database operations are templated in the happi.backends.Backend The existing mongoDB support was kept as the default, but the an additional JSON backend was added. The choice of database type can be entered as an argument to the happi.Client

  • Conda builds of happi are now available at skywalker-tag and skywalker-dev

Bug Fixes

  • Devices comparison now works properly. The listed prefix and names are compared.

API Changes

  • Mirror container has been changed to the more specific name OffsetMirror

Deprecations

  • happi will no longer support Python 2.7

v0.4.0 (2017-04-04)

Bug Fixes

  • Removed dependency on mongomock in conda-recipe

  • MockClient creates entire device_types container mapping

API Changes

  • Renamed alias -> name, and base -> prefix for Ophyd compatibility

v0.3.0 (2017-03-22)

Enhancements

  • Added Python 2.7 support

  • Added macros keyword for EDM support

  • Added CI tools for Travis, Codecov

  • Changed tests to use a mongomock.MockClient instead of an actual mongoDB instance

  • Device can now show_info and print a table output of all entered information

Bug Fixes

  • active EntryInfo should default to True

API Changes

  • Moved the tests directory into the package to make it easily importable by other modules hoping to use a MockClient

  • Introduced explicit dependencies on six, mongomock, and prettytable