Contributing to PhysicsNeMo Curator

May 11, 2026 · View on GitHub

Getting Started

  1. Fork the upstream repository.

  2. Clone your fork and set up the development environment:

    git clone git@github.com:<you>/physicsnemo-curator.git
    cd physicsnemo-curator
    
    # Install dev dependencies + build the Rust extension
    uv sync --group dev
    uv run maturin develop
    
    # Install pre-commit hooks (required for all contributions)
    uv run pre-commit install
    
  3. Create a branch, make your changes, and open a Pull Request against main.

Quality Gates

Every commit is checked by pre-commit hooks. Run uv run pre-commit run --all-files to validate before pushing. The CI pipeline enforces the same checks.

ToolWhat it checksCommand
ruffPython linting + formattinguv run ruff check, uv run ruff format
tyPython type checkinguv run ty check
interrogateDocstring coverage (99%)uv run interrogate
cargo fmt / clippyRust formatting + lintingcargo fmt, cargo clippy
cargo denyRust dependency auditcargo deny check
markdownlintMarkdown stylevia pre-commit
pytestPython tests with coverageuv run pytest test/ --cov
cargo nextestRust testscargo nextest run

Run all checks at once:

make check   # format + lint + typecheck + interrogate + deny
make test    # Python tests with coverage

Commit Convention

All commits must follow Conventional Commits format:

<type>(<scope>): <short summary>
  • Types: feat, fix, refactor, test, docs, style, perf, ci, build, chore
  • Scopes (optional): mesh, da, atm, core, run, rust

License Headers

All source files (.py, .rs) must include SPDX headers. The CI lint job enforces this via .github/scripts/header_check.py.

Sign Your Work

We require DCO sign-off on all commits:

git commit -s -m "feat(mesh): add new VTK filter"

Communication

  • GitHub Issues — bug reports, feature requests
  • GitHub Discussions — questions, ideas, research directions