Skip to main content

kabinet

codecov PyPI version Maintenance Maintainer PyPI pyversions PyPI download month Ruff

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)

Source distribution for kabinet 5.3.0
File Size Uploaded Provenance
kabinet-5.3.0.tar.gz 83.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for kabinet 5.3.0
File Interpreter ABI Platform
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.

Release history Release notifications | RSS feed

This release

5.3.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page