Skip to content

Release 2.0.0#86

Merged
timcnicholls merged 13 commits into
mainfrom
dev_2.0
Mar 26, 2026
Merged

Release 2.0.0#86
timcnicholls merged 13 commits into
mainfrom
dev_2.0

Conversation

@timcnicholls

Copy link
Copy Markdown
Member

This PR merges the 2.0.0 development branch back onto main in preparation for the release and closes #62

* 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

codecov Bot commented Mar 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (1cf475b) to head (834fa42).
⚠️ Report is 14 commits behind head on main.

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@timcnicholls timcnicholls moved this to 🔖 Backlog - Ready in Odin Core Development Mar 26, 2026
@timcnicholls
timcnicholls merged commit 524f263 into main Mar 26, 2026
16 checks passed
@timcnicholls timcnicholls moved this from 🔖 Backlog - Ready to ✅ Done in Odin Core Development Mar 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

odin-control 2.0 release

3 participants