All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
- daemon servers no longer keep all recieved messages in memory
- removed asyncio syntax that was removed in python 3.14
- type hints for IsSensor attributes are appropriate for n-dimensional data
- Fixed memory leak in daemon server that scaled with number of connections
- fake-has-transformed-position for testing purposes
- has-transformed-position can read native_limits as a config option
- Fixes has_transformed_position which had inheiritance issue
- Upgraded appdirs to platformdirs
- moved to hatchling build system
- Text for two methods for has-transformed-position for pedagogical reasons
- Wrapped call to
start_serverincreate_taskfor Python 3.11 compatibility
- behavior of measurement_id for has-measure-trigger has been implemented incorrectly since beginning
- has-transformed-position
- has-dependents ABC
- New home at https://github.com/yaq-project/yaq-python
- measurement_id in memory was off by one from measured_dict
- Use tomli[-w] for toml reading/writing rather than toml
is-discretenow implementsget_position_identifier_options, an extra method that returns the keys rather than full mapping
- Update for fastavro 1.4, pin version
- is-sensor now implements get_measurement_id as defined in YEP-302
- access of incorrect attribute when exception raised on restart
- updated has-turret trait for string identifiers rather than int
- ASerial now supports eol configuration, used during areadline
- HasMapping trait support, see YEP-311
- HasMeasureTrigger: measurement_id updates even while looping
- Handling of incomming requests is now asynchronous and non blocking
- state file is only written if state changes
- state file is written even if busy is never toggled
- Fixed bug where HasMeasureTrigger _runner loop escaped garbage collection during restart
- Named types used within compound types in config and state
- Shared Settings properly escaped, log message corrected
- Apply type defined defaults for config and state
- major refactor: each trait is now represented by one class
- Support for nested named types
- changed logging location to user log directory
- Updated to fastavro 0.24.0 named schema behavior
- new testing submodule: provides decorators to run daemons in context of single function
- Now handle schema-defined types (e.g. ndarray)
- fixed tuple handling (e.g. get_channel_shapes) by pinning to fastavro>=0.23.6
There are no actual code changes, this release is to update the release pipeline
- New repo home: https://gitlab.com/yaq/yaq-python
- distribute with
-instead of_
- Unpacking of union types as message request parameters
- Correct python requires, allowing python 3.7
- migrated to flit build system
- Less verbose log messages for avro unpacking and performing message calls
--protocolentry point to print the avro protocol
- removed
pkg_resourcesin favor of path manipulation when accessing .avpr files - Behavior of
VERSIONentry point, now prints module and package version, no individual daemon version
- Remove msgpack based rpc, replace with Apache Avro
- This is a breaking change which requires updates to daemon
- now explicity testing against Python 3.7, 3.8 and latest
- remove old (now incorrect) references to abstract daemons in README
- remove task.get_name feature which was introduced in Python 3.8 (fixing broken 3.7)
- added DiscreteHardware class, implementing new trait is-discrete
- required methods for subclasses now raise NotImplementedError rather than having default fallbacks with undesired behavior
hardwareclass futureproofed in case base daemon ever has state to save or load
- entry points for
hardwareandcontinuous-hardware: use yaqd-fakes instead
- correctly handle shared-settings at startup
- Add CHANGELOG to MANIFEST.in
- correctly await and return
areadandareadline
- added git branch information to daemon, package version
- added gitlab-ci testing stage for entry points
- refactored gitlab-ci
- fixed _version attribute mypy type for abstract daemons
- added
get_versionas described in YEP-105 - added changelog
- logging level can be set with the
--log-leveland--verbosecli options YEP-106 - default configuration options for "log-level" and "log-to-file"
- added version entry point
- updated README
- from now on, yaqd-core-python will use calendar-based versioning
- logging is now done with separate loggers per daemon (rather than per file) YEP-106
- Add handling of ndarray type msgpack extension, see YEP-110
- Uses msgpack RPC as described by YEP-100 rather than JSON-RPC
- Locks for aserial operations
awrite_then_readmethod- Restarting over the RPC interface
config_filepathchanged toget_config_filepath
- yaqd-base and yaqd-sensor entry points
- hardware have
get_unitsmethod - new method
get_traits(and associated class variable for defining implemented traits) - hardware now have
set_relativemethod aserialsubpackage for asyncronous serial I/O
- Limits now have a single range, rather than a list of ranges
out_of_limitsdefaults to "closest", rather than "error"defaultsnow properly get preserved when subclassing
get_lineagemethod
- Fix bug in sensor assertion
- yaqd-sensor entry point
- Doc building using pdoc (https://yaqd-core-python.yaq.fyi)
- Ability to shutdown individual daemons over the RPC
- Clean up implementation of RPC protocol
- Channel information now three separate fields for "name", "units", and "shape", new methods to access each
- "entry" top level configuration parameter no longer respected
- Manifest file for distribution of the LICENSE and README
- Communicate type annotations
- Ensure parsing of multiple incomming requests at the same time
- Improved testing infrastructure
set_actiondecorator
- Handling of UNIX Signals SIGTERM, SIGHUP, SIGINT
- PEP-484 Type Hints
- Correct calls when running files directly
- Fix inf usage without importing
- Update distribution information
- pre-commit hooks
- Add continuous integration
- Add version attribute
- Sensor daemon
get_lineagemethod to see parents- Hooks for connecting and disconnecting clients
- Logging infrastructure
- Use "method" rather than "command"
- Use consistent names for classes, entry points
- Client (see yaqc-python instead)
- The base daemon implementation
- JSON-RPC implementation
- Generic Client
- Continuous hardware base daemon