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.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 --jsonoption 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 otherhappiCLI 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
--cloneargument 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_deviceswould fail outright.Fix issue where
device_clsstring would leak through and raise a bad/confusing exception duringcreate_device
Maintenance¶
Reduce missing backends log messages from
warningtodebug.Fix docs failing to build and related issues.
Add
requirements.txtfile toMANIFEST.in.
v1.6.0 (2020-04-30)¶
LCLS-specific containers are moved out of happi, and into pcdsdevices
OphydItemis now the preferred “basic”ophyd.Devicecontainer, with the intention of fully deprecatingDeviceto avoid naming confusionMinor internal fixes
v1.5.0 (2020-04-06)¶
Refactor search methods, supporting mongo and JSON backends
search- search by key/value pairs as kwargssearch_range- search for a range of values in a specific keysearch_regex- search for key/value pairs as kwargs, with values being regular expressionsAdds
SearchResultcontainer, allowing for access of metadata or device instantiation
Client['item']supportedhappi.Deviceis now marked as deprecatedMigrate 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 nowcopy.copy()-ableBackends 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
Containerobject now available with minimum amount ofEntryInfo#92Allow Happi to load more devices from LCLS questionnaire #94
New function
list_choicesadded tohappi.Clientto allow user to know what beamlines, prefixes, names, etc. will return results.Threaded
load_deviceswith option to specify a callback when devices are ready #67
v1.2.1 (2019-03-07)¶
v1.2.0 (2018-12-19)¶
Enhancements¶
Clientnow has a methodload_devicefor searching the database for aContainerand then loading the corresponding object based ondevice_class,argsandkwargs. This is a shortcut to combine two previously existing featuresClient.find_deviceandhappi.loader.from_containerClient.from_configwill create aClientobject 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~configor wherever you specify your `$XDG_CONFIG_HOME environment variableAdditional keywords were added to the base
Devicecontainer;lightpath,documentationandembedded_screen,detailed_screenandengineering_screenThere is now a base container for a
Motorobject.
Deprecations¶
screenis longer a supported key. This was too generic and the three keys detailed above allow the user more specificity.
Fixes¶
The
JSONBackendno longer relies onfcntla 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)¶
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
QSBackendwas expanded to accommodate different keyword arguments associated with different authentication methods.
v1.0.0 (2018-01-31)¶
Enhancements¶
happinow handles loading devices with the built-inEntryInfo-> args, kwargs and device_class. Simply enter the proper information in these fields, either directly inputting information or usingjinja2templating. The functionsfrom_containerandload_deviceswill then handle the necessary imports and initialize devices for youSelect which backend you want to use with the environment variable
$HAPPI_BACKENDBackend to read from the PCDS Questionnaire
All containers work out of the box with
pcdsdevices >= 0.3.0## APIAll backends are stored in the
backendsdirectory.The default plugin is now considered to be
JSONBackendThe function formerly called
load_deviceis nowfind_device.
Build¶
jinja2is now a dependencypsdm_qs_cliis now an optional dependency if you want to use the Questionnaire backendpymongois now an optional dependency if you do not want to use the MongoDB backendOnly tested against Python
3.5.xand3.6.xSent to the
pcds-tagandpcds-devAnaconda channels instead of theskywalkerchannels
v0.5.0 (2017-11-11)¶
Enhancements¶
happinow supports multiple backends. The required database operations are templated in thehappi.backends.BackendThe 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 thehappi.ClientConda builds of
happiare now available atskywalker-tagandskywalker-dev
Bug Fixes¶
Devices comparison now works properly. The listed prefix and names are compared.
API Changes¶
Mirrorcontainer has been changed to the more specific nameOffsetMirror
Deprecations¶
happiwill no longer support Python 2.7
v0.4.0 (2017-04-04)¶
Bug Fixes¶
Removed dependency on mongomock in conda-recipe
MockClientcreates entiredevice_typescontainer 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.MockClientinstead of an actual mongoDB instanceDevice can now
show_infoand print a table output of all entered information
Bug Fixes¶
activeEntryInfo 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, andprettytable