Changelog#
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Dates are specified in the format DD-MM-YYYY.
0.6.1 - 04-07-2025#
Fixed#
Inject
ViewInfoProtocoland not the base class in the view base classes
0.6.0 - 04-07-2025#
Added#
Added
sunflare.containersmodule for dynamically registering protocols and plansProvided 4 functions
register/get_plansregister/get_protocols
Plan signatures are unwrapped within
PlanSignaturedataclass objectThe signatures can be retrieved via
get_signatures
Registered plans must be type annotated to be correctly registered and used by other plugins
Added initial testing
Changed#
Dropped support for 3.9
Removed usage of
OptionalandUnionReplaced with built-in
|instead
Switch to
uvfor dependency managementAdded
uv.lockfile
Removed
enginefield fromRedsunSessionInfoNot really meaningful, was part of old concept
Renamed
Widgetcomponents toViewEx-
Widgetclasses are now injected withViewInfoin initializer rather thanRedSunSessionInfo
0.5.5 - 02-04-2025#
Fixed#
catch exception when
RunEngine.stop()is called from main thread
0.5.4 - 31-03-2025#
Fixed#
fixed
msgspecdecoding hooknow returns the object when it’s not of type
np.ndarray
fixed
RunEnginedocument emissionemitwas failing to parse the document name
0.5.3 - 25-03-2025#
Changed#
Reworked
log.pyWhen calling
obj.debug, the line where the call was emitted redirected toLoggableusing a
logging.LoggerAdapterprevents thisit also make the usage of
Loggablemore consistent by simply returning acached_property, which now enforces usage ofobj.logger.debugwhich is less confusing
0.5.2 - 13-03-2025#
Changed#
Enhanced
sunflare.login order to separate log calls between two handlers.
0.5.1 - 06-03-2025#
Changed#
Dropped upper bound limit for
numpydependency
0.5.0 - 03-03-2025#
Changed#
Rearranged the structure of virtual-related classes
Everything related to creating connections with the virtual bus have been brought to the
sunflare.virtualmodule
Set the default log level to
INFO(wasDEBUGbefore)Reworked
sunflare.configto accomodate for new plugin system
Added#
Added a
Modelbase class for quicker development.
Removed#
configureprotocol is not part of theModelProtocolanymore; see this PR
0.4.2 - 24-02-2025#
Changed#
Changed
ModelProtocol.configuresignaturePrevious signature was not consistent with the command issued by the
RunEngine
0.4.1 - 23-02-2025#
Added#
Added support for
Mappingtypes (i.e.dict) inModelInfomethods (read/describe_configuration)Added optional parameters for
read/describe_configurationread_configuration:timestamp(i.e. usetime.time()for a timestamp of the last reading time)describe_configuration:source, to specify the source of the configuration parameter
0.4.0 - 22-02-2025#
Added#
Implemented support for ZMQ messaging via
pyzmqAdded initial support for
msgspecAdded mixin classes for creating publisher/subscribers
Added mixin classes for
Signal-enabled controllersAdded more documentation for the virtual module
Reorganized code in different modules to avoid circular imports
Split controller in different protocols
Added
ModelInfoProtocolto deploy models from packages that don’t have a strict dependency with SunflareAdded more tests, both for existing and new code
0.3.5 - 11-02-2025#
Added#
Added protocol equivalent for
ModelInfoCurrently untested
This can be used in combination with
ModelProtocolto define a Model interface from an external package without direct dependency to thesunflarepackage.
Added documentation for
ControllerAdded tests for
RunEnginewrapper
Changed#
Minor docstring and renaming fixes
engineandfrontendfields ofRedSunSessionInfoare not optional anymore
Fixed#
RunEngine.__call__fails in Python 3.9 unless explictly setting the event loop in the executor
0.3.4 - 05-02-2025#
Fixed#
Fixed bug in
RedSunSessionInfo.store_yamlwhich was not correctly parsingEnumandtupletypes
0.3.3 - 04-02-2025#
Changed#
Minor renaming
RedSun -> Redsun
SunFlare -> Sunflare
Added#
Added documentation
Notions of O.O.P.
Minimal model doc
Added test for VirtualBus connection mechanism
Added
WidgetInfoclassProvides information for widgets
Redsun uses it to correctly allocate dock widgets in the main view
Currently adapted to be used with
PyQtandPySideFor web-based frameworks may require adjustments somehow
Added
RedSunSessionInfo.store_yamlto save the configuration file elsewhereWe could think of supporting dynamic plugin loading; this would mean changing the content of
RedSunSessionInfoon the fly.
0.3.2 - 29-01-2025#
Added#
sessionfield inRedSunSessionInfoused as main window title and as bluesky metadata
added
**kwargstoconfiguremethodneed investigation on how to actually use it
added optional
shutdownmethod inModelProtocolit still must be implemented although not mandatory
Removed#
removed built-in protocols
DetectorandMotoreach plugin should take care of deciding what they are
Changed#
fixed metaclass error in
BaseQtWidget
0.3.1 - 27-01-2025#
Added#
Added parts of
Configurableprotocol inModelInfofor easier handling
0.3.0 - 27-01-2025#
Changed#
Refactor: simplify
virtualmodule and removeEngineHandlerUse
typing_extensions.Protocolin case ofPython < 3.11
Added#
Added a wrapper of
RunEnginewhich leaves the main thread unblocked
0.2.2 - 02-01-2025#
Changed#
Correct engine handler API.
Update CI action versions.
0.2.1 - 02-01-2025#
Changed#
Engine handler now stores plans as dictionary of dictionaries.
The key of the main dictionary is the controller name which holds the plans;
The values are dictionaries:
Keys are the plan names;
Values are plans built with
functools.partial
0.2.0 - 31-12-2024#
Added#
Change configuration classes to use attrs in https://github.com/redsun-acquisition/sunflare/pull/8
Model API rework in https://github.com/redsun-acquisition/sunflare/pull/9
0.1.1 - 26-12-2024#
Same changes as [v0.1.1a1]
Some typo adjustments
0.1.1a1 - 25-12-2024#
(Only available on TestPyPI)
Added#
Rework handler by @jacopoabramo in #6
Reworked a lot of logic
Models are now subclassed in Models for easier type hinting management
Using RedSunInstanceInfo in handler
RedSunInstance info now holds logic to load and check yaml file as static method
0.1.0 - 23-12-2024#
Added#
First release on PyPI;
Reached above 90% coverage;
0.1.0a1 - 22-12-2024#
(Only available on TestPyPI)
Added#
Alpha release;
Basic project infrastructure;