ccluster (Python)
Pydantic v2 models for the ccluster.nvidia.com/v1alpha1 API and for the typed values of
every chart in the catalog. The package is generated: nothing in ccluster/v1alpha1/
or ccluster/catalogs/cluster_base/ is written by hand.
uv add ccluster-py --path ../python # or: pip install ./python; released: pip install ccluster-py
from ccluster import catalogs
from ccluster.catalogs.cluster_base import gpu_operator, keda
from ccluster.v1alpha1 import CCLComponentSet, CCLComponentSetSpec, ObjectMeta
cs = CCLComponentSet(
metadata=ObjectMeta(name="local-base", namespace="ccluster-quickstart"),
spec=CCLComponentSetSpec(
components=[
catalogs.component("keda", "ccluster-local", keda.CHART, "keda"),
catalogs.component(
"gpu-operator", "ccluster-local", gpu_operator.CHART, "gpu-operator",
gpu_operator.Values(
gpu_operator=gpu_operator.ChartValues(
driver=gpu_operator.Toggle(enabled=False),
),
),
),
]
),
)
print(cs.model_dump(by_alias=True, exclude_none=True)) # kubectl apply -f this
Field names are snake_case with the wire name as the alias, so always dump with
by_alias=True, exclude_none=True. exclude_none is what keeps an unset optional out of
the values Helm sees while an explicit False stays in — the same distinction the Go
catalog makes with pointer fields.
What is generated from what
| Python | Source | Via |
|---|---|---|
ccluster/v1alpha1/*.py |
config/crd/bases/*.yaml (the CRD openAPIV3Schema) |
hack/pyschema → JSON Schema → datamodel-code-generator |
ccluster/catalogs/cluster_base/<chart>/values.py |
catalogs/cluster_base/<chart>/component.go (Values and friends) |
hack/pyschema (invopop/jsonschema reflection) → datamodel-code-generator |
every __init__.py under those two |
the same | hack/pyschema |
Three things are deliberately added on the way from the CRD: apiVersion and kind get
defaults, metadata becomes a small ObjectMeta (name, namespace, labels, annotations)
instead of an opaque dict, and a component's values is typed dict[str, Any] rather than
"anything". Everything else, including every validation constraint and doc comment, is the
CRD's.
ccluster/__init__.py, ccluster/catalogs/__init__.py (entry, component) and tests/
are hand-written.
Regenerating
make python-generate # from the repository root; needs Go and uv
make python-test
CI regenerates and fails on any diff, so edit the Go types or the CRD markers, regenerate,
and commit the result. Adding a chart to catalogs/ means adding it to the table in
hack/pyschema/main.go too.
Metadata
Release files for ccluster-py 0.0.1
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 | |
|---|---|---|---|---|
| ccluster_py-0.0.1.tar.gz | 16.4 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ccluster_py-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 70.8 kB
Release files / ccluster_py-0.0.1.tar.gz
| Download URL | ccluster_py-0.0.1.tar.gz |
|---|---|
| Size | 16.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9bcc0ce15fb7ac0ee3e365a368e3c7e89025bbcb4ea3ef1a0e24cdb527376ffe
|
|
BLAKE2b-256 checksum How to use checksums |
6338dc778cc60dc33cc6438942f6043f59d74edbebd5a5bce1788339799aec6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logRelease files / ccluster_py-0.0.1-py3-none-any.whl
| Download URL | ccluster_py-0.0.1-py3-none-any.whl |
|---|---|
| Size | 54.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f1a5b53e0a7c5fceb3bbb88db8e5f8745c60c6d4326b919112dc9a1c76cac371
|
|
BLAKE2b-256 checksum How to use checksums |
43ace8b0f1077e7f6af87f3c489e61dbf1efce43e09e328252313b5a9d7c1b79
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logSecurity for ccluster-py 0.0.1
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for ccluster_py-0.0.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.
Transparency logA 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.