Contributing

Thanks for your interest in pyxsd!

Reporting issues

Please open a GitHub issue for bugs and feature requests. Include the schema and instance document (or a minimal reproduction), the pyxsd version (pyxsd --version), and the Python version. Bug reports alone are not contributions under the terms below — but they are greatly appreciated.

Development setup

git clone https://github.com/knorby/pyxsd
cd pyxsd
uv sync --group dev          # runtime + dev/test dependencies
uv run pytest --cov          # full suite with coverage
uvx ruff@0.16.6 check .      # lint
uvx ruff@0.16.6 format --check .
uv run mypy src/pyxsd        # type check
uv run python tests/report_conformance.py  # conformance report

pre-commit install sets up the repo’s lint/secret hooks. Python 3.11 is the floor; CI tests 3.11–3.14.

Pull requests

  1. Fork, make a feature branch, keep changes focused.

  2. Tests, type hints, and lint must pass (the same gates CI runs).

  3. Public-facing behavior changes should include tests and, where applicable, a note in the documentation (schema features belong in Supported features and the conformance corpus).

  4. Every commit in the history should build and pass the suite.

Contribution terms

By submitting a change to this repository (pull request, patch, or other means) you agree that your contribution is provided under the project’s BSD 3-Clause license, and you confirm you have the right to submit it under those terms. The project’s BSD license, including its ORNL provenance note, is preserved in the LICENSE file.

Project direction

The 1.0 roadmap (XSD coverage tiers, conformance corpus, docs) has been delivered; ongoing direction is tracked in the issue tracker and CHANGELOG.md. Working design notes are kept outside the published docs tree. The 0.1 TODO list is of historical interest only — most of it (Python 3, test suite, metaclass-style construction, regex pattern facets) is now done.