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.8.0 - 21-12-2025¶
Removed¶
- Removed the overall dependency on
pyzmqandmsgspec: - The original idea was to create a local network of document dispatch via the
inprocprotocol. - This idea is now discarded and will be reworked in favor of a more consistent approach using multiple processes controlled centrally by the application.
Changed¶
- Expose signals registered to the
VirtualBusthrough thesignalsproperty.
Added¶
- Add the ability to register callbacks in the
VirtualBusfor other components to retrieve (primarely other run engines). - Expose callbacks via the
callbacksproperty.
0.7.0 - 15-12-2025¶
Changed¶
- Remove
__init__from common protocols - Make parameters of
__init__as read-write protocol attributes - Rename all protocols to make them shorter
- Remove the socket implementation from the RunEngine
- Unused and not accurate feature
0.6.3 - 14-12-2025¶
Added¶
- Add appropriate
resumemethod to theRunEnginewrapper - Ensure that it does not block the main thread
- Requires better documentation
0.6.2 - 06-10-2025¶
Changed¶
- Synchronize all dependencies correctly via
uv - Bump
blueskyversion to1.14.5 - Fix type hints accordingly
- Trigger CI for docs deployment and PyPI publishing from GitHub release page
- Previously new tag had to be manually pushed from CLI
- Add support for Python 3.13
- Add
noxfile.pyto run tests vianoxfor multiple Python versions locally
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 plans - Provided 4 functions
register/get_plansregister/get_protocols
- Plan signatures are unwrapped within
PlanSignaturedataclass object- The signatures can be retrieved via
get_signatures
- The signatures can be retrieved via
- 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
OptionalandUnion - Replaced with built-in
|instead - Switch to
uvfor dependency management - Added
uv.lockfile - Removed
enginefield fromRedsunSessionInfo - Not really meaningful, was part of old concept
- Renamed
Widgetcomponents toView - Ex-
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 hook - now returns the object when it's not of type
np.ndarray - fixed
RunEnginedocument emission emitwas failing to parse the document name
0.5.3 - 25-03-2025¶
Changed¶
- Reworked
log.py - When calling
obj.debug, the line where the call was emitted redirected toLoggable - using a
logging.LoggerAdapterprevents this - it 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.configuresignature - Previous 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_configuration read_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
pyzmq - Added initial support for
msgspec - Added mixin classes for creating publisher/subscribers
- Added mixin classes for
Signal-enabled controllers - Added 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 Sunflare - Added more tests, both for existing and new code
0.3.5 - 11-02-2025¶
Added¶
- Added protocol equivalent for
ModelInfo - Currently 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
Controller - Added 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
WidgetInfoclass - Provides information for widgets
- Redsun uses it to correctly allocate dock widgets in the main view
- Currently adapted to be used with
PyQtandPySide- For web-based frameworks may require adjustments somehow
- Added
RedSunSessionInfo.store_yamlto save the configuration file elsewhere - We 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 inRedSunSessionInfo- used as main window title and as bluesky metadata
- added
**kwargstoconfiguremethod - need investigation on how to actually use it
- added optional
shutdownmethod inModelProtocol - it still must be implemented although not mandatory
Removed¶
- removed built-in protocols
DetectorandMotor - each 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 removeEngineHandler - Use
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;