Deckr controller runtime with config, routing, rendering, and device management
Project description
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"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file deckr_controller-0.1.0.tar.gz.
File metadata
- Download URL: deckr_controller-0.1.0.tar.gz
- Upload date:
- Size: 144.4 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4901c01f947323190eec6e19bf11ac5a0b1c35edffaf88cd26976b737875e9cb
|
|
| MD5 |
fce5f86443651cb06941ba7ad6c78ff6
|
|
| BLAKE2b-256 |
eaf7ed7643cf77ee6b9bc00289c8d171adef5811eedbf662df4b5226cbbcb459
|
File details
Details for the file deckr_controller-0.1.0-py3-none-any.whl.
File metadata
- Download URL: deckr_controller-0.1.0-py3-none-any.whl
- Upload date:
- Size: 63.1 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f350c57145aa6b6aeb37e4c0ecab2e16fc949bf272a07d6b89212972744fcc48
|
|
| MD5 |
64d1292692a1805b6cfc80d866e5278a
|
|
| BLAKE2b-256 |
f13d435e72f292607c8dffc084cacd68f51761854c1877b9d77d42a76473fc69
|