Skip to content

Latest commit

 

History

History
52 lines (40 loc) · 2.13 KB

File metadata and controls

52 lines (40 loc) · 2.13 KB

Contributing to Modern Python

Thanks for your interest in contributing! These guidelines apply across all repositories in the modern-python org unless a repository overrides them with its own CONTRIBUTING.md.

Ways to contribute

  • Report bugs and request features via the issue templates.
  • Ask questions in GitHub Discussions.
  • Improve docs — typo fixes and clarifications are very welcome.
  • Send pull requests — see the workflow below.

Development setup

Every repo follows the modern-python standard: uv for packaging, ruff for lint/format, ty for type checking, uv_build as the build backend, and a justfile with fixed recipe names as the only task entry point.

# Clone your fork, then from the repo root:
uv sync                 # install dependencies into a local venv
just --list             # see available tasks (lint, test, etc.)

Pull request workflow

  1. Fork the repository and create a topic branch from main.
  2. Make your change. Keep it focused — one logical change per PR.
  3. Run lint, type check, and tests locally before pushing:
    just lint-ci           # read-only lint, format, and type checks
    just test
    just lint runs the same checks and applies fixes. The templates and chat-app have only just lint. that-depends also runs mypy and pyrefly in both recipes.
  4. Update docs if you changed behavior or public API.
  5. Open the PR using the template. Link the issue it resolves.

CI note

GitHub occasionally type-checks a stale refs/pull/<n>/merge after a push, so a PR can show an old lint/test failure that no longer matches the branch. Confirm by running the failing check locally at the branch HEAD with the pinned tool version; if it's clean, push a fresh commit to force GitHub to recompute the merge ref.

Code of Conduct

By participating you agree to abide by our Code of Conduct.