Files
computer-playbook/cli/administration/deploy/development/inventory/__init__.py
T
kevinveenbirkenbachandClaude Opus 5 7fee974c7f fix(cli): stop declaring a re-exported class in __all__
autodoc documents whatever __all__ lists, including a name the module only
imported, so sphinx found two targets for every annotation: nine for
ImageRef and one for DevInventorySpec.

mirror/model is a five-line shim whose whole purpose is the local name, so
it drops __all__ entirely. The inventory package keeps its own, which also
declares private helpers, and loses only that one entry; the reason sits in
the module docstring so nobody re-adds it innocently.

Both names stay importable from their packages, because the import binds
them regardless of __all__. Every importer in the repository was enumerated
and none uses a wildcard.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-25 19:32:49 +02:00

62 lines
2.5 KiB
Python

"""SPOT for development inventory creation.
Anything that wants to materialise the development inventory MUST go
through :func:`build_dev_inventory` (single folder) or
:func:`build_dev_inventory_matrix` (one folder per matrix-deploy round).
Both flow through :class:`~.spec.DevInventorySpec` and own:
* the SPOT vars-file (``DEV_INVENTORY_VARS_FILE``),
* per-app variant baking (each role's ``meta/variants.yml`` is resolved
at build time and emitted as ``applications.<app>`` overrides into
the inventory's ``host_vars``, with variant 0 as the fallback for
every role that is not a primary in the current matrix round),
* the vault password file.
The deploy wrapper consumes :func:`plan_dev_inventory_matrix` to know
which folder to deploy against in each round; the planner is a pure
function so wrapper and init step compute the same plan independently.
Internal layout (one module per responsibility):
* :mod:`.spec` — :class:`~.spec.DevInventorySpec` + ``PlanEntry`` type
* :mod:`.payload` — variant payload pick + ``--vars`` bake
* :mod:`.legacy_resolver` — ``CombinedResolver``-driven include resolution
* :mod:`.planner` — :func:`plan_dev_inventory_matrix`
* :mod:`.builder` — :func:`build_dev_inventory` + matrix orchestrator
The private helpers (``_resolve_round_include`` and friends) are
re-exported below because unit tests historically patch them under this
package path. New tests SHOULD patch the submodule path directly
(e.g. ``inventory.legacy_resolver._resolve_round_include``).
``DevInventorySpec`` is imported but deliberately absent from ``__all__``:
listing a re-exported class makes autodoc document it here as well as in
:mod:`.spec`, and sphinx then finds two targets for every annotation. Importing
it from this package keeps working either way.
"""
from __future__ import annotations
from .builder import build_dev_inventory, build_dev_inventory_matrix
from .legacy_resolver import (
_build_services_overrides_for_round,
_resolve_round_include,
prune_orphans_after_disable,
)
from .payload import _bake_overrides, _resolve_variant_payloads
from .planner import filter_plan_to_variants, plan_dev_inventory_matrix
from .spec import DevInventorySpec, PlanEntry
__all__ = [
"PlanEntry",
"_bake_overrides",
"_build_services_overrides_for_round",
"_resolve_round_include",
"_resolve_variant_payloads",
"build_dev_inventory",
"build_dev_inventory_matrix",
"filter_plan_to_variants",
"plan_dev_inventory_matrix",
"prune_orphans_after_disable",
]