Supported charms¶
Whether hyrum can run a charm depends on three things: how the charm declares its dependencies, what it can be asked to patch, and whether the repository has a target hyrum can run.
Dependency declarations¶
Format |
Detected by |
|---|---|
pip |
|
Poetry |
|
uv |
|
PEP 621 extras |
|
PEP 735 groups |
|
The ops[testing] and ops[tracing] extras are handled, including the companion packages they pull from subdirectories of the operator monorepo.
What can be patched¶
Subject |
Patcher |
Form |
|---|---|---|
|
ops-source |
Branch, tag, commit, PyPI version, or local path |
Any other package |
generic |
|
|
charmlibs |
Branch of the charmlibs monorepo |
Vendored |
vendored-library |
Replaced by the published package, with the charm’s imports rewritten |
Most charms use neither a given charm library nor its vendored ancestor, so charm-library runs report the bulk of the fleet as skipped rather than as an error.
Detectable frameworks¶
Values accepted by hyrum check --framework:
Framework |
Detected by |
|---|---|
|
An |
|
A |
Jubilant is detectable, but hyrum does not run integration tests, so only charms with a unit or lint target are useful subjects.
Runner backends¶
Backend |
Detected by |
Invocation |
|---|---|---|
tox |
|
|
make |
|
|
When both are present, hyrum prefers tox. When the requested target is missing, it falls back to the other backend. GNU make’s missing-target behaviour is ambiguous (non-zero exit or a warning), so hyrum probes with make -nq before running.