The API reference under docs/api/ is generated from the public source of
src/qca and committed to the repository. Do not hand-edit files under
docs/api/ — they are overwritten on every regeneration.
Regenerate and verify:
make docs # regenerate docs/api/ from src/qca
make docs-check # regenerate + drift/link/snippet checks (offline)- Tool:
pydoc-markdown>=4,<5(locked inuv.lock), run throughuvon a pinned Python 3.12 for a reproducible interpreter. - Loader
pythonuses static docspec parsing — it never importssrc/qca, soif TYPE_CHECKING:forward-ref field types cannot cause import errors. - The
markdownrenderer emits a singledocs/api/reference.md(itsfilename:option), not a multi-page tree. filter.documented_only: falseis required: the Stainless-style client classes (Forward/AsyncForward/Managed/AsyncManaged) and the field-only pydantic models carry no class docstring, sodocumented_only: truewould drop the entire real surface. The filterexpressiondrops imported-nameIndirections (datetime,Optional,TYPE_CHECKING, ...) that would otherwise render as spurious## <name>headers on every module page.- The GitHub
source_linkernatively emitsblob/<HEAD-sha>/<path>#L<line>.scripts/generate-docs.pynormalizes every link toblob/main/<path>(no commit SHA, no line anchor) so regenerating after a commit produces no churn. - Determinism: on a fixed commit + pinned version, two raw runs are
byte-identical; the only per-commit variance is the source-link SHA / line
anchor, which normalization collapses. This is what the
docs-checkdrift gate (git diff --exit-code -- docs/api) relies on.