Skip to content

Conversation

@dependabot
Copy link

@dependabot dependabot bot commented on behalf of github Nov 24, 2025

Updates the requirements on fastcs and slsdet to permit the latest version.
Updates fastcs to 0.11.0

Release notes

Sourced from fastcs's releases.

0.11.0

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

... (truncated)

Commits

Updates slsdet from 9.2.0 to 10.0.0

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

@dependabot dependabot bot added the dependencies Pull requests that update a dependency file label Nov 24, 2025
Updates the requirements on [fastcs](https://github.com/DiamondLightSource/FastCS) and slsdet to permit the latest version.

Updates `fastcs` to 0.11.0
- [Release notes](https://github.com/DiamondLightSource/FastCS/releases)
- [Commits](DiamondLightSource/FastCS@0.10.1...0.11.0)

Updates `slsdet` from 9.2.0 to 10.0.0

---
updated-dependencies:
- dependency-name: fastcs
  dependency-version: 0.11.0
  dependency-type: direct:production
  dependency-group: dev-dependencies
- dependency-name: slsdet
  dependency-version: 10.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: dev-dependencies
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot dependabot bot added python Pull requests that update python code dependencies Pull requests that update a dependency file labels Nov 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant