kabinet
The python client for kabinet, the Arkitekt service that manages the installable apps of a deployment: the repositories they come from, their releases and flavours, and the deployments and pods that run them. It is the successor to the port spec.
Installation
pip install kabinet
With arkitekt, pip install "arkitekt[rekuest,kabinet]" brings it in.
Usage
Every kabinet operation is a method of the Kabinet client, in a blocking and an a-prefixed async
flavour (kabinet.get_pod(id), await kabinet.aget_pod(id)). Nothing is looked up ambiently.
In an arkitekt app
Add the service to your app and ask for kabinet: Kabinet; the client is injected by annotation.
Pods, deployments, releases, approvals, definitions and flavours travel between actions by id
(@kabinet/pod, @kabinet/deployment, @kabinet/release, @kabinet/approval,
@kabinet/definition, @kabinet/flavour), so an action can take and return them directly:
from arkitekt import App, run
from kabinet import Kabinet, kabinet_service
from kabinet.api.schema import Pod
app = App("pod-status", "0.1.0", services=[kabinet_service])
@app.action
def pod_status(pod: Pod, kabinet: Kabinet) -> str:
"""Pod Status
Fetches the current status of a pod.
"""
return kabinet.get_pod(pod.id).status.value
if __name__ == "__main__":
run(app)
From a script
from arkitekt import easy
from kabinet import kabinet_service
with easy("my-script", kabinet_service) as kabinet:
repo = kabinet.create_github_repo(
name="A new repo",
identifier="jhnnsrs/kabinet:main",
)
print(repo) # the repo with all the app images found in it
Testing
uv run pytest -m "not integration" # fast unit layer: no docker, <1s
uv run pytest # full suite: spins the dokker compose stack
The unit layer proves the wire contract through a rath AsyncMockLink
(camelCase aliases, @oneOf ordering variants, the six-kind selector union,
the PodEvent subscription shape) and the arkitekt service wiring via a
hot-plugged fakts.testing.TestingFakts. The integration-marked tests
run the same operations against the composed server image; until a
new-generation jhnnsrs/kabinet:next is pushed, point them at a locally
built image with KABINET_SERVICE_IMAGE=next-kabinet:latest uv run pytest.
See RELEASING.md for how versions are cut.
Metadata
Release files for kabinet 5.3.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 | Provenance | |
|---|---|---|---|---|
| kabinet-5.3.0.tar.gz | 83.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kabinet-5.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 168.9 kB
Release files / kabinet-5.3.0.tar.gz
| Download URL | kabinet-5.3.0.tar.gz |
|---|---|
| Size | 83.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
99695224b03f5306b21ae210ae9a1d3f0f76268a26e98595e83ba48316663083
|
|
BLAKE2b-256 checksum How to use checksums |
f8445e9d258be614790b4de143e1bfb6f5ba2cdc44e37023c429332f1c9d8a26
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.3 {"installer":{"name":"uv","version":"0.13.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / kabinet-5.3.0-py3-none-any.whl
| Download URL | kabinet-5.3.0-py3-none-any.whl |
|---|---|
| Size | 85.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8973dad31ec49ea32d205fceb74bab333fc6c7e2b40f05e1a5c6715bb8cf40ae
|
|
BLAKE2b-256 checksum How to use checksums |
0c898a9e61b6782124eaf3e05529fd8030b27867dc78637725e739c72557e198
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.3 {"installer":{"name":"uv","version":"0.13.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for kabinet 5.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.