Release Notes ============= v0.6.2 ------ Bug Fixes ^^^^^^^^^ * Make ``make_decorator`` return proper decorators. The original implementation returned functions that could not actually be used as decorators. v0.6.1 ------ This release contained only a minor UX fix involving more informative error reporting. v0.6.0 ------ Enhancements ^^^^^^^^^^^^ * Address the situation where plan "rewinding" after a pause or suspension interacted badly with some devices. There are now three ways to temporarily turn off rewinding: a Msg with a new 'rewindable' command; a special attribute on the device that the ``trigger_and_read`` plan looks for; and a special exception that devices can raise when their ``pause`` method is called. All three of these features should be considered experimental. They will likely be consolidated in the future once their usage is tested in the wild. * Add new plan wrappers and decorators: ``inject_md_wrapper``, ``run_wrapper``, ``rewindable_wrapper``. Bug Fixes ^^^^^^^^^ * Fix bug where RUnEngine was put in the "running" state, encountered an error before starting the ``_run`` coroutine, and thus never switch back to "idle." * Ensure that plans are closed correctly and that, if they fail to close themselves, a warning is printed. * Allow plan to run its cleanup messages (``finalize``) when the RunEngine is stopped or aborted. * When an exception is raised, give each plan in the plan stack an opportunity to handle it. If it is handled, carry on. * The SPEC-style ``tw`` was not passing its parameters through to the underlying ``tweak`` plan. * Silenced un-needed suspenders warnings * Fix bug in separating devices Cleanup ^^^^^^^ * Reduce unneeded usage of ``bluesky.plans.single_gen``. * Don't emit create/save messages with no reads in between. * Re-work exception handling in main run engine event loop. v0.5.3 ------ API Changes ^^^^^^^^^^^ * ``LiveTable`` only displays data from one event stream. * Remove used global state attribute ``gs.COUNT_TIME``. Bug Fixes ^^^^^^^^^ * Fix "infinite count", ``ct(num=None)``. * Allow the same data keys to be present in different event streams. But, as before, a given data key can only appear once per event. * Make SPEC-style plan ``ct`` implement baseline readings, referring to ``gs.BASELINE_DETS``. * Upon resuming after a deferred pause, clear the deferred pause request. * Make ``bluesky.utils.register_transform`` character configurable. v0.5.2 ------ * Plans were completely refactored. The API of the exist plans is supported for back-compatibility. See plans documentation to review new capabilities. * SPEC-style plans are now proper generators, not bound to the RunEngine. v0.5.0 ------ * Move ``bluesky.scientific_callbacks`` to ``bluesky.callbacks.scientific`` and ``bluesky.broker_callbacks`` to ``bluesky.callbacks.broker``. * Remove ``bluesky.register_mds`` whose usage can be replaced by: ``import metadatastore.commands; RE.subscribe_lossless('all', metadatastore.commands.insert)`` * In all occurrences, the argument ``block_group`` has been renamed ``group`` for consistency. This affects the 'trigger' and 'set' messages. * The (not widely used) ``Center`` plan has been removed. It may be distributed separately in the future. * Calling a "SPEC-like" plan now returns a generator that must be passed to the RunEngine; it does not execute the plan with the global RunEngine in gs.RE. There is a convenience wrapper available to restore the old behavior as desired. But since that usage renders the plans un-composable, it is discouraged. * The 'time' argument of the SPEC-like plans is a keyword-only argument. * The following special-case SPEC-like scans have been removed * hscan * kscan * lscan * tscan * dtscan * hklscan * hklmesh They can be defined in configuration files as desired, and in that location they will be easier to customize. * The ``describe`` method on flyers, which returns an iterable of dicts of data keys for one or more descriptors documents, has been renamed to ``describe_collect`` to avoid confusion with ``describe`` on other devices, which returns a dict of data keys for one descriptor document. * An obscure feature in ``RunEngine.request_pause`` has been removed, which involved removing the optional arguments ``callback`` and ``name``. v0.3.0 ------ * Removed ``RunEngine.persistent_fields``; all fields in ``RE.md`` persist between runs by default. * No metadata fields are "reserved"; any can be overwritten by the user. * No metadata fields are absolutely required. The metadata validation function is user-customizable. The default validation function behaves the same as previous versions of bluesky, but it is no longer manditory. * The signature of ``RunEngine`` has changed. The ``logbook`` argument is now keyword-only, and there is a new keyword-only argument, ``md_validator``. See docstring for details. * The ``configure`` method on readable objects now takes a single optional argument, a dictionary that the object can use to configure itself however it sees fit. The ``configure`` method always has a new return value, a tuple of dicts describing its old and new states: ``old, new = obj.configure(state)`` * Removed method ``increment_scan_id`` * `callbacks.broker.post_run` API and docstring brought into agreement. The API is change to expect a callable with signature ``foo(doc_name, doc)`` rather than - a callable which takes a document (as documented) - an object with ``start``, ``descriptor``, ``event`` and ``stop`` methods (as implemented). If classes derived from `CallbackBase` are being used this will not not have any effect on user code.