Releases: DiamondLightSource/FastCS
Releases · DiamondLightSource/FastCS
0.12.0a1
What's Changed
- Escape
<in logging extras so they aren't treated as colour tags by @GDYendell in #279 - Improve Attribute hint validation and add Controller hint validation by @GDYendell in #281
- Log exceptions in failed scan tasks by @GDYendell in #282
- Add AttrR wait_for_value by @GDYendell in #284
- Correctly implement DType and DType_T by @GDYendell in #285
- Add DataType equal and all_equal helpers by @GDYendell in #289
- Fix command buttons in pva transport by @GDYendell in #294
- Refactor Methods to allow overridding
@commandmethods by @GDYendell in #293 - Implement Waveform by @GDYendell in #247
- Pass precision to widget for Int and Float by @GDYendell in #299
Full Changelog: 0.11.3...0.12.0a1
0.11.3
What's Changed
- Update AttrR.update to take value: Any by @GDYendell in #278
Full Changelog: 0.11.2...0.11.3
0.11.2
What's Changed
- Move snake_to_pascal back to root util by @GDYendell in #277
Full Changelog: 0.11.1...0.11.2
0.11.1
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
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 textControllerVectoradded 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]
- 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
- Controller
- Attempting to overwrite an
Attributenow raises aRuntimeError, even if the type and access mode match. To statically type hint anAttributeto be validated during initialisation, only specify the type hint on the class - do not create a default instance, e.g.attr: AttrRW[int], notattr = AttrRW(Int()). Controller.attributesis now a read-only view. UseController.add_attribute("<attr_name>", <attr>)or direct assignment (controller.<attr_name> = <attr>) to createAttributes, which will perform validation and attach them to the controller to use in the interactive shell.
- Attempting to overwrite an
- Imports
from fastcs.attribute_io->from fastcs.attributesfrom fastcs.attribute_io_ref->from fastcs.attributesfrom fastcs.controller->from fastcs.controllersfrom fastcs.cs_methods->from fastcs.methodsfrom fastcs.transport->from fastcs.transportsfrom fastcs.wrappers->from fastcs.methodsfrom fastcs.attributes import ONCE->from fastcs.util import ONCEfastcs.transport.epics.options import EpicsGUIOptions, EpicsIOCOptions->from fastcs.transports.epics import EpicsGUIOptions, EpicsIOCOptionsfrom 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
- 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
- fastcs-odin developments by @GDYendell in #258
- Pass bool record *NAM fields for Bool() Attributes by @GDYendell in #261
- Implement SubControllerVector by @shihab-dls in #192
- Make sure initial values are respected in CA transport by @jsouter in #257
- Fix EpicsCATransport to pass length with initial_value for string records by @GDYendell in #262
- Match Transport keys to toolnames by @hyperrealist in #263
- Remove EpicsCAOptions class by @GDYendell in #264
- validate hinted attributes on subcontrollers by @jsouter in #209
- Add timeouts to tests by @hyperrealist in #266
- Fix warnings in tests by @hyperrealist in #267
- Hinted attribute validation by @GDYendell in #268
- Add logging to tutorial by @GDYendell in #269
- Increase docs snippet test timeout by @GDYendell in #270
- Fix alarm status on Command PVs by @GDYendell in #265
- Do not error when rendering edl files by @jsouter in #271
- Logging fixes by @GDYendell in #273
- Move PvaEpicsGUI to pva/gui.py by @GDYendell in #274
- Improve module structure by @GDYendell in #275
New Contributors
- @hyperrealist made their first contribution in #220
- @gkalua made their first contribution in #225
Full Changelog: 0.10.1...0.11.0
0.11.0a4
Breaking Changes
- Attempting to overwrite an
Attributenow raises aRuntimeError, even if the type and access mode match. To statically type hint anAttributeto be validated during initialisation, only specify the type hint on the class - do not create a default instance, e.g.attr: AttrRW[int], notattr = AttrRW(Int()). Controller.attributesis now a read-only view. UseController.add_attribute("<attr_name>", <attr>)or direct assignment (controller.<attr_name> = <attr>) to createAttributes, which will perform validation and attach them to the controller to use in the interactive shell.
What's Changed
- validate hinted attributes on subcontrollers by @jsouter in #209
- Add timeouts to tests by @hyperrealist in #266
- Fix warnings in tests by @hyperrealist in #267
- Hinted attribute validation by @GDYendell in #268
- Add logging to tutorial by @GDYendell in #269
- Increase docs snippet test timeout by @GDYendell in #270
- Fix alarm status on Command PVs by @GDYendell in #265
Full Changelog: 0.11.0a3...0.11.0a4
0.11.0a3
What's Changed
- Pass bool record *NAM fields for Bool() Attributes by @GDYendell in #261
- Implement SubControllerVector by @shihab-dls in #192
- Make sure initial values are respected in CA transport by @jsouter in #257
- Fix EpicsCATransport to pass length with initial_value for string records by @GDYendell in #262
- Match Transport keys to toolnames by @hyperrealist in #263
- Remove EpicsCAOptions class by @GDYendell in #264
Full Changelog: 0.11.0a2...0.11.0a3
0.11.0a2
0.11.0a1
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
1.10.2-beta.6
Full Changelog: 1.10.2-beta.5...1.10.2-beta.6