Release 2.0.0#86
Merged
Merged
Conversation
* Rename package: odin -> odin_control (package namespace) * Add migrate_adapter utility to allow easy adapter migration to new package name
* Remove legacy asyncio.ensure_future support from AsyncParameterTree * Refactor API handlers to remove python 2.7 support This commit refactors the API handlers to remove python 2.7 support by no longer requiring separate sync/async implementations. The underlying BaseApiHandler class is also merged into a single ApiHandler that provides async verb methods compatible with both sync and async adapters. Test cases are also refactored and simplified to match. * Refactor routes/api.py to separate adapter list and API version handlers * Remove redundant python 2.7 code from utils.py and refactor * Rename remaining py3 test modules * Remove singleton behaviour from system status and info adapters Allows the legacy future package to be dropped from dependencies. * Remove version conditonal import from config/parser.py * Remove remaining python version checks from test suite * Fix remaining missing test coverage on BaseParameterTree Test branch replace fails on immutable tree (and remove excessive caps from exception. Tsk, tsk Alan ;-) ) * Extend support and test envs to include python 3.13
* Remove global API versioning by default. Removes the global API version e.g. /api/0.1/adapter_name from API-related routes. The original behaviour can be restored by setting the api_version configuration option accordingly. * Refactor ApiAdapterListHandler to ApiAdapterInfoHandler Handler now returns a structured response containing module and version information for each loaded adapter. Update base ApiAdapter classes and core adapters to add a version field which can return per-adapter version information.
* Make ParameterTree leaf node responses symmetric with and without metadata. This change makes the parameter tree treatment of leaf nodes symmetric with and without metadata, i.e. a get() call to a leaf node will return a dict with a single 'value' entry. The behaviour for higher subtrees is also modified so that the last level of the subtree path is not repeated for the key of the response. The set() behaviour is also improved, allowing single leaf node values to be set with a payload that is a dict with a single 'value' entry. * Remove reserved tree-level metadata fields. This commit removes the reserved tree-level metadata fields 'name' and 'description', allowing those to be used as parameter keys and preventing issues with explicit gets. * Remove stray print() statements and replace commented asserts in tests * Remove redundant level check when populating tree Closes #71 Closes #58
* Refactor the ApiAdapter class to support the adapter-controller pattern. This commit refactors the ApiAdapter class to support the adapter-controller pattern while retaining backward-compatiblity with adapters that implement their own HTTP verb handler methods. The adapter-controller pattern allows a derived adapter to simply define a controller class and error class and exploit the default behaviour of ApiAdapter to handle all requests and call the appropriate methods in the controller. The BaseController provides an abstract base class that defines the interface a derived controller must implement. Also refactored the structure of support classes and decorator methods, along with associated test classes and cases. * Refactor system info and status adapters to use adapter-controller pattern * Fix typing in BaseController for 3.8 and tweak comments of class vars in ApiAdapter * Add tests for base controller * Refactor AsyncApiAdapter to support the adapter-controller pattern * Fix docstrings and typos
* Migrate to properdocs and mkdocs-materialx theme * Extended getting started doc * Update docs workflow for * Fix docs link in README.md * Increase size of topbar logo for visiblity
* Add PyPI publisher workflow file * Migrate coverage tool config to pyproject.toml and remove legacy reference to python 2.7 in CI * Remove .codecov.yml to stop Slack notifications * Remove Slack notifications from test CI job * Remove disabled travis-ci config * Update action versions in test CI workflow * Update action versions in pypi publisher workflow
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #86 +/- ##
===========================================
+ Coverage 98.10% 100.00% +1.89%
===========================================
Files 25 30 +5
Lines 1582 1674 +92
===========================================
+ Hits 1552 1674 +122
+ Misses 30 0 -30 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
ajgdls
approved these changes
Mar 26, 2026
JamesOHeaDLS
approved these changes
Mar 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR merges the 2.0.0 development branch back onto main in preparation for the release and closes #62