Contributing¶
Bug reports, questions and pull requests are welcome on GitHub. For a larger change, open an issue first to agree on the approach.
Set up¶
dpm-xbrl uses uv:
Check a change¶
uv run pytest # tests, including every docs example
uv run ruff check
uv run ruff format --check
uv run ty check
uv run python scripts/build_docs.py # strict docs build into site/
uv run zensical serve previews the documentation while you edit it.
Conventions¶
- Every behaviour has a test. Fixtures are built in code by
tests/support.py; keep them small. - Public functions and classes have Google-style docstrings; they are the API reference.
- The core package has no runtime dependencies. Optional ones go in an extra.
- Keep
__all__, the docs and the changelog in step with the code. Examples in the docs are run bytests/test_docs.py, so show real output. - The sample reports in
docs/samplesare generated bytests/docs_samples.py; regenerate them withuv run python -m tests.docs_samplesafter changing it. - Commit messages follow Conventional Commits,
such as
fix(csv): reject an empty table header.
AGENTS.md in the repository holds the same information for coding
agents.