Skip to content

Latest commit

 

History

History
78 lines (50 loc) · 2.69 KB

CONTRIBUTING.md

File metadata and controls

78 lines (50 loc) · 2.69 KB

Contributing

Contributions are welcome! Whether you're fixing a bug, improving documentation, or adding new features — thank you for taking the time to contribute.

Table of Contents

Code of Conduct

Please be respectful and considerate in all interactions. Constructive feedback is welcome; harassment or hostile behavior is not.

Opening Issues

We appreciate bug reports, feature requests, and general feedback.

  • Bug reports: Please include a minimal reproducible example and the Python version you're using.
  • Feature requests or larger changes: Please open an issue before starting implementation work. This allows us to discuss the scope and approach, and avoids wasted effort if the direction needs to change.
  • Questions and discussions: Issues are a good place for these too.

Pull Requests

Pull requests are welcome! Please keep the following in mind:

  • Scope: Each pull request should be focused on one thing only — one bug fix, one feature, one refactor. Mixed-purpose PRs are harder to review and will likely be asked to be split up.
  • Discuss first: For any larger refactoring or significant code changes, please open an issue to discuss the matter before submitting a PR.
  • Tests: Please ensure your changes are covered by tests. Existing tests must continue to pass.
  • Style: Follow the conventions already established in the codebase.

Local Setup

Prerequisites: Python 3.9 or newer.

  1. Clone the repository:

    git clone https://github.com/python-jsonschema/rfc3987-syntax2.git
    cd rfc3987-syntax2
  2. Install the package in editable mode together with the development dependencies:

    pip install -e ".[testing]"

Running Tests

Tests are written with pytest.

python -m pytest tests

Running Static Analysis

Type checking is done with mypy.

python -m mypy -v

The mypy configuration is in .mypy.ini.

Deployment and Publishing

Releases are managed by the maintainers. The process is:

  1. A maintainer creates a GitHub Release (including a version tag).
  2. This triggers the python-publish GitHub Actions workflow, which builds the package and publishes it to PyPI automatically.

Contributors do not need to do anything special for releases.