Skip to content

0.12.0

Latest

Choose a tag to compare

@GDYendell GDYendell released this 09 Mar 11:47
· 3 commits to main since this release
afcbf45

Breaking Changes

  • EpicsCAIOC options parameter removed - The options parameter has been removed from EpicsCAIOC(pv_prefix, controller_api, options=...)
    • Pass EPICS options via the transport config instead.
  • AttrR.update() validates before calling callbacks - If validation fails, an error is logged and the value is not updated.
  • DATATYPE_DTYPES removed - Replaced by the DType union.
    • use DType instead.
  • bind_logger removed from public API - bind_logger has been removed
    • from fastcs.logging import bind_logger; bind_logger(...) -> from fastcs.logging import logger
  • ControllerVector is now generic on Controller_T
    • ControllerVector must now be parameterised with a specific Controller
  • add_on_update_callback(always=False) - always flag added to AttrR.add_on_update_callback to let callbacks fire even when the value hasn't changed. The default is now to not fire the callback if the value has not changed, the previous behaviour was always=True.

Fixes

  • AttrRW setpoint callbacks called with validated value - Sync setpoint callbacks in AttrRW now receive self._value (the validated value) rather than the raw input.
  • 2D+ Waveforms skipped in EPICS CA - Multi-dimensional waveforms are skipped (with a warning) in the EPICS CA transport rather than raising an error. This allows serving 2D waveforms in PVA alongside CA.

New Features

  • AttrR.wait_for_value / wait_for_predicate - New async methods on AttrR to block until an attribute reaches a target value or satisfies a custom predicate, with a timeout.
  • DataType.equal / DataType.all_equal - Static helper methods on all DataType subclasses to compare values correctly (e.g. using np.array_equal for array types).
  • DType union type - Replaces the old DATATYPE_DTYPES tuple. DType is a proper union type alias; DType_T is now TypeVar("DType_T", bound=DType).
  • Improved scan task handling / reconnect - Scan tasks are now paused on exception and can be restarted with Controller.reconnect, rather than requiring restarting the entire application.
    • Note: To make use of this overridden Controller.connect methods must now set self._connected = True, and Controller.reconnect should be implemented to restore the connection for scan tasks - by default reconnect will just start the scan tasks again
    • reconnect() can be called in the interactive shell, or a driver can implement a @scan method that checks for disconnect and automatically handles reconnection.
  • Logger uses file path and line numbers - Log messages now include source file path and line number for easier debugging.

Other

  • Package rename: FastCSfastcs

What's Changed

New Contributors

Full Changelog: 0.11.3...0.12.0