deckr-controller
deckr-controller is the Python controller runtime for the Deckr ecosystem.
It owns the controller-specific parts of the system:
- configuration loading and runtime services
- device management and remote hardware integration
- command routing, navigation, and persistence
- rendering and plugin execution context
The shared contracts it depends on live in the sibling deckr repository:
https://github.com/kws/deckr
Repository Layout
src/deckr/controller/
config/ Configuration models and file-backed services
invariant/ Rendering helpers and invariant integrations
mqtt/ MQTT host integration
plugin/ Controller-side plugin runtime and builtins
tests/
Requirements
- Python 3.11+
uv
Quick Start
Install the project and development tooling:
uv sync
Run the default validation suite:
uv run ruff check .
uv run pytest
Build distributables:
uv build
Relationship To deckr
deckr-controller depends on deckr.
Keep the boundary clean:
- shared contracts and reusable wire models belong in
deckr - controller orchestration and runtime policy belong here
If a controller change needs a new shared contract, release deckr first, then
update the deckr dependency range in this repo before cutting the controller
release.
Releases
This repository releases a single distribution: deckr-controller.
- The source of truth for the published version is the root
pyproject.toml. - Use package tags in the form
deckr-controller-vX.Y.Z. - Stable releases use normal PEP 440 versions such as
0.3.0. - After each stable release, bump immediately to the next development line,
e.g.
0.4.0.dev0, in a separate follow-up commit.
Release Flow
-
Update
versioninpyproject.tomlto the stable release number. -
If needed, update the
deckrdependency constraint to the newly released core version. -
Run the validation suite:
uv run ruff check . uv run pytest
-
Refresh the lockfile:
uv lock --refresh
-
Commit the release, for example:
git commit -am "chore(deckr-controller): release v0.3.0"
-
Tag the release commit:
git tag deckr-controller-v0.3.0
-
Build from the tag so the artifacts match the stable version exactly:
git checkout deckr-controller-v0.3.0 uv build git checkout -
-
Publish the wheel and sdist using your usual PyPI workflow.
-
Immediately bump
pyproject.tomlto the next development version, refresh the lockfile, and commit that separately:uv lock --refresh git commit -am "chore(deckr-controller): bump to development release 0.4.0.dev0"
Release files for deckr-controller 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| deckr_controller-0.1.0.tar.gz | 144.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| deckr_controller-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 207.4 kB
Release files / deckr_controller-0.1.0.tar.gz
| Download URL | deckr_controller-0.1.0.tar.gz |
|---|---|
| Size | 144.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4901c01f947323190eec6e19bf11ac5a0b1c35edffaf88cd26976b737875e9cb
|
|
BLAKE2b-256 checksum How to use checksums |
eaf7ed7643cf77ee6b9bc00289c8d171adef5811eedbf662df4b5226cbbcb459
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / deckr_controller-0.1.0-py3-none-any.whl
| Download URL | deckr_controller-0.1.0-py3-none-any.whl |
|---|---|
| Size | 63.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f350c57145aa6b6aeb37e4c0ecab2e16fc949bf272a07d6b89212972744fcc48
|
|
BLAKE2b-256 checksum How to use checksums |
f13d435e72f292607c8dffc084cacd68f51761854c1877b9d77d42a76473fc69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|