Thank you for your interest in contributing! We welcome bug reports, feature requests, and pull requests.
git clone https://github.com/sthitaprajnas/pyjolt.git
cd pyjolt
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"# All tests
pytest
# With coverage
pytest --cov=pyjolt --cov-report=term-missing
# Single file
pytest tests/test_shift.py -vtests/conformance/ runs the reference Java JOLT test fixtures
(from bazaarvoice/jolt) against pyjolt,
so behaviour stays identical to the Java library and the
JOLT demo site.
pytest tests/conformance -qCases pyjolt does not pass yet are listed in
tests/conformance/known_failures.txt and run as strict xfails:
- Fixing a known failure: the case starts passing, so the suite fails with
XPASS(strict). Delete its line fromknown_failures.txt. - Never add new entries to make a change pass. A case that used to pass and now fails is a regression.
- Fixing a bug report: add the reporter's spec, input and expected output (from the JOLT demo site) as a regression test.
# Lint + auto-fix
ruff check src/pyjolt --fix
# Type check
mypy src/pyjoltBoth must pass with zero errors before a PR is merged.
- Fork the repository and create a branch from
main. - Add or update tests that cover your change.
- Ensure
pytest,ruff check, andmypyall pass. - Open a pull request with a clear description and reference any related issues.
Use GitHub Issues. For security vulnerabilities, see SECURITY.md.
- Follow existing code style (enforced by ruff).
- Full type annotations on all public functions.
- Docstrings on public classes and methods.
- No runtime dependencies beyond the Python standard library.
By contributing you agree that your contributions will be licensed under the Apache License 2.0.