Skip to content

Releases: DiamondLightSource/FastCS

0.12.0a1

22 Dec 14:32
aad1a85

Choose a tag to compare

0.12.0a1 Pre-release
Pre-release

What's Changed

Full Changelog: 0.11.3...0.12.0a1

0.11.3

02 Dec 10:41
db37f8b

Choose a tag to compare

What's Changed

Full Changelog: 0.11.2...0.11.3

0.11.2

01 Dec 14:43
1a11c3a

Choose a tag to compare

What's Changed

Full Changelog: 0.11.1...0.11.2

0.11.1

27 Nov 14:44
56dccba

Choose a tag to compare

What's Changed

  • Add stdio-socket to dependencies for use in containers by @GDYendell in #276

Full Changelog: 0.11.0...0.11.1

0.11.0

24 Nov 16:02
0f75fa1

Choose a tag to compare

Summary

  • Updater, Sender and Handler have been replaced with AttributeIO and AttributeIORef
    • This removes the circular dependency of Controller -> Attribute -> Handler -> Controller and simplifies the API for writing drivers
  • TransportOptions and TransportAdapter merged into Transport. Transports are now constructed with options and passed into FastCS directly
  • Backend merged into FastCS
  • SubControllers have been removed. There is now no special handling required for controllers that will be registered as sub controllers - Controller can be registered as a sub controller.
  • Controllers are now attributes of a parent Controller and can be registered and accessed with the dot accessor
  • @put methods have been removed
  • New Controller.disconnect hook added to allow clean up just before the application stops
  • New logging and tracing frameworks
    • Use fastcs.logging.logger for debug, info, warning, error with nice formatting
    • Call fastcs.logging.configure_logging to enable logging (default level info)
    • Use Tracer for trace level logging that can be configured on the console at runtime per object (e.g. attr.enable_tracing()). Some classes (Attribute, AttributeIO, Controller) inherit this, so they have self.log_event for trace messages. For other cases inherit Tracer or add a module level Tracer
    • Call fastcs.logging.configure_logging(LogLevel.TRACE) so that enabled trace logging is displayed
  • Attribute(description=) will now be passed to pvi to use as the label hover text
  • ControllerVector added to represent a set of sub controllers distinguished by and index. e.g. Odin: N FrameProcessors or PandA: N CALC blocks.
  • Type hints on controller classes are now validated at runtime to check they have been populated
  • Simplified module structure
  • Many other fixes and improvements

Breaking Changes

  • Packaging
    • Update fastcs requirement to include the desired transports, e.g. fastcs[epicsca]
  • Handlers
    • Split classes inheriting Updater / Sender / Handler into AttributeIORef with the static properties and AttributeIO with update and send (previously put) methods
    • Remove initialise method
    • Update Controller to create instances of the AttributeIOs required by its attributes. Pass down to any sub controllers that also need them. The connection used by the IO can be passed in at this point (or anything else required) to use in update and send instead of being passed the whole controller
    • Update created attributes to take io_ref=MyAttributeIORef() instead of handler/sender/updater=MyHandler()
  • Attributes
    • Remove SimpleHandler() from attributes - this is now the default behavior if an attribute is not passed io_ref
    • Change attr.set -> attr.update
    • Change attr.process -> attr.put(sync_setpoint=True)
    • Change attr.process_without_display_update -> attr.put
    • Change attr.update_display_without_process -> attr.put
    • Change attr.add_on_set_callback -> attr.add_on_update_callback
    • Change attr.add_write_display_callback -> attr.add_sync_setpoint_callback
    • Change attr.add_process_callback -> attr.add_on_put_callback
  • Transport
    • Update to pass (e.g.) EpicsCATransport instead of EpicsTransportOptions, with the same arguments, to FastCS
    • Remove calls to create_docs and create_gui. If options for these are provided then these methods will be called automatically
  • SubController
    • Update any classes inheriting SubController to inherit Controller
    • Change register_sub_controller -> add_sub_controller or assignment with the dot accessor (self.<sub_controller_name> = <sub_controller>)
  • Controller
    • Attempting to overwrite an Attribute now raises a RuntimeError, even if the type and access mode match. To statically type hint an Attribute to be validated during initialisation, only specify the type hint on the class - do not create a default instance, e.g. attr: AttrRW[int], not attr = AttrRW(Int()).
    • Controller.attributes is now a read-only view. Use Controller.add_attribute("<attr_name>", <attr>) or direct assignment (controller.<attr_name> = <attr>) to create Attributes, which will perform validation and attach them to the controller to use in the interactive shell.
  • Imports
    • from fastcs.attribute_io -> from fastcs.attributes
    • from fastcs.attribute_io_ref -> from fastcs.attributes
    • from fastcs.controller -> from fastcs.controllers
    • from fastcs.cs_methods -> from fastcs.methods
    • from fastcs.transport -> from fastcs.transports
    • from fastcs.wrappers -> from fastcs.methods
    • from fastcs.attributes import ONCE -> from fastcs.util import ONCE
    • fastcs.transport.epics.options import EpicsGUIOptions, EpicsIOCOptions -> from fastcs.transports.epics import EpicsGUIOptions, EpicsIOCOptions
    • from fastcs.transport.epics.ca.transport import EpicsCATransport -> from fastcs.transports.epics.ca import EpicsCATransport
    • Rename from fastcs.datatypes import T -> from fastcs.datatypes import DType_T

What's Changed

New Contributors

Full Changelog: 0.10.1...0.11.0

0.11.0a4

18 Nov 15:28
7ddd7d2

Choose a tag to compare

0.11.0a4 Pre-release
Pre-release

Breaking Changes

  • Attempting to overwrite an Attribute now raises a RuntimeError, even if the type and access mode match. To statically type hint an Attribute to be validated during initialisation, only specify the type hint on the class - do not create a default instance, e.g. attr: AttrRW[int], not attr = AttrRW(Int()).
  • Controller.attributes is now a read-only view. Use Controller.add_attribute("<attr_name>", <attr>) or direct assignment (controller.<attr_name> = <attr>) to create Attributes, which will perform validation and attach them to the controller to use in the interactive shell.

What's Changed

Full Changelog: 0.11.0a3...0.11.0a4

0.11.0a3

12 Nov 16:06
aecb4c3

Choose a tag to compare

0.11.0a3 Pre-release
Pre-release

What's Changed

Full Changelog: 0.11.0a2...0.11.0a3

0.11.0a2

07 Nov 14:36
0f785f4

Choose a tag to compare

0.11.0a2 Pre-release
Pre-release

What's Changed

Full Changelog: 0.11.0a1...0.11.0a2

0.11.0a1

30 Oct 16:57
9990065

Choose a tag to compare

0.11.0a1 Pre-release
Pre-release

Summary

  • Updater, Sender and Handler have been replaced with AttributeIO and AttributeIORef
    • This removes the circular dependency of Controller -> Attribute -> Handler -> Controller and simplifies the API for writing drivers
  • TransportOptions and TransportAdapter merged into Transport. Transports are now constructed with options and passed into FastCS directly
  • Backend merged into FastCS
  • SubControllers have been removed. There is now no special handling required for controllers that will be registered as sub controllers - Controller can be registered as a sub controller.
  • Controllers are now attributes of a parent Controller and can be registered and accessed with the dot accessor
  • @put methods have been removed
  • New Controller.disconnect hook added to allow clean up just before the application stops
  • New logging and tracing frameworks
    • Use fastcs.logging.logger for debug, info, warning, error with nice formatting
    • Call fastcs.logging.configure_logging to enable logging (default level info)
    • Use Tracer for trace level logging that can be configured on the console at runtime per object (e.g. attr.enable_tracing()). Some classes (Attribute, AttributeIO, Controller) inherit this, so they have self.log_event for trace messages. For other cases inherit Tracer or add a module level Tracer
    • Call fastcs.logging.configure_logging(LogLevel.TRACE) so that enabled trace logging is displayed
  • Attribute(description=) will now be passed to pvi to use as the label hover text

Breaking Changes

  • Packaging
    • Update fastcs requirement to include the desired transports, e.g. fastcs[epicsca]
  • Handlers
    • Split classes inheriting Updater / Sender / Handler into AttributeIORef with the static properties and AttributeIO with update and send (previously put) methods
    • Remove initialise method
    • Update Controller to create instances of the AttributeIOs required by its attributes. Pass down to any sub controllers that also need them. The connection used by the IO can be passed in at this point (or anything else required) to use in update and send instead of being passed the whole controller
    • Update created attributes to take io_ref=MyAttributeIORef() instead of handler/sender/updater=MyHandler()
  • Attributes
    • Remove SimpleHandler() from attributes - this is now the default behavior if an attribute is not passed io_ref
    • Change attr.set -> attr.update
    • Change attr.process -> attr.put(sync_setpoint=True)
    • Change attr.process_without_display_update -> attr.put
    • Change attr.update_display_without_process -> attr.put
    • Change attr.add_on_set_callback -> attr.add_on_update_callback
    • Change attr.add_write_display_callback -> attr.add_sync_setpoint_callback
    • Change attr.add_process_callback -> attr.add_on_put_callback
  • Transport
    • Update to pass (e.g.) EpicsCATransport instead of EpicsTransportOptions, with the same arguments, to FastCS
    • Remove calls to create_docs and create_gui. If options for these are provided then these methods will be called automatically
  • SubController
    • Update any classes inheriting SubController to inherit Controller
    • Change register_sub_controller -> add_sub_controller or assignment with the dot accessor (self.<sub_controller_name> = <sub_controller>)

What's Changed

New Contributors

Full Changelog: 0.10.1...0.11.0a1

1.10.2-beta.6

19 Sep 07:52

Choose a tag to compare

1.10.2-beta.6 Pre-release
Pre-release