0.11.0a1
Pre-release
Pre-release
Summary
Updater,SenderandHandlerhave been replaced withAttributeIOandAttributeIORef- This removes the circular dependency of
Controller->Attribute->Handler->Controllerand simplifies the API for writing drivers
- This removes the circular dependency of
TransportOptionsandTransportAdaptermerged intoTransport. Transports are now constructed with options and passed intoFastCSdirectlyBackendmerged intoFastCSSubControllers have been removed. There is now no special handling required for controllers that will be registered as sub controllers -Controllercan be registered as a sub controller.Controllersare now attributes of a parentControllerand can be registered and accessed with the dot accessor@putmethods have been removed- New
Controller.disconnecthook added to allow clean up just before the application stops - New logging and tracing frameworks
- Use
fastcs.logging.loggerfor debug, info, warning, error with nice formatting - Call
fastcs.logging.configure_loggingto enable logging (default level info) - Use
Tracerfor 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 haveself.log_eventfor trace messages. For other cases inheritTraceror add a module levelTracer - Call
fastcs.logging.configure_logging(LogLevel.TRACE)so that enabled trace logging is displayed
- Use
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]
- Update fastcs requirement to include the desired transports, e.g.
- Handlers
- Split classes inheriting
Updater/Sender/HandlerintoAttributeIORefwith the static properties andAttributeIOwithupdateandsend(previouslyput) methods - Remove
initialisemethod - Update
Controllerto create instances of theAttributeIOs 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 inupdateandsendinstead of being passed the whole controller - Update created attributes to take
io_ref=MyAttributeIORef()instead ofhandler/sender/updater=MyHandler()
- Split classes inheriting
- Attributes
- Remove
SimpleHandler()from attributes - this is now the default behavior if an attribute is not passedio_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
- Remove
- Transport
- Update to pass (e.g.)
EpicsCATransportinstead ofEpicsTransportOptions, with the same arguments, to FastCS - Remove calls to
create_docsandcreate_gui. If options for these are provided then these methods will be called automatically
- Update to pass (e.g.)
- SubController
- Update any classes inheriting
SubControllerto inheritController - Change
register_sub_controller->add_sub_controlleror assignment with the dot accessor (self.<sub_controller_name> = <sub_controller>)
- Update any classes inheriting
What's Changed
- Merge TransportAdapter and TransportOptions by @hyperrealist in #220
- Add transport extras by @hyperrealist in #221
- Update transport model creation for new class structure by @GDYendell in #223
- Remove
SubControllerby @hyperrealist in #222 - Replace Handler with AttributeIO / AttributeIORef by @jsouter in #218
- Removes Backend class and moves logic and free functions to Launch fi… by @gkalua in #225
- Add logging framework and Tracer by @GDYendell in #224
- Fix Transport imports by @GDYendell in #227
- Fix softioc system test by @jsouter in #229
- Fix docs build by @GDYendell in #231
- Update tutorials by @GDYendell in #234
- Improve Controller Attribute and sub controller creation with setattr by @GDYendell in #235
- Redesign attribute callbacks by @GDYendell in #237
- Split launch.py into control_system.py and controller_api.py by @GDYendell in #240
- Remove Put methods by @GDYendell in #241
- Controller disconnect by @GDYendell in #243
- Tidying by @GDYendell in #233
- Update construction of DbDevInfo by @GDYendell in #249
- Tidying by @GDYendell in #250
- Remove helm charts by @GDYendell in #251
New Contributors
- @hyperrealist made their first contribution in #220
- @gkalua made their first contribution in #225
Full Changelog: 0.10.1...0.11.0a1