Thanks for your interest in contributing! This guide helps you get started.
- Report bugs via GitHub Issues (use the Bug Report template)
- Propose features or enhancements (Feature Request template)
- Improve documentation or examples
- Add tests or improve coverage
- Optimize performance or fix bugs
We use uv for dependency management.
Clone and install:
git clone https://github.com/spectralDNS/jaxfun.git
cd jaxfun
uv sync
uv run pre-commit installRun tests:
uv run pytest -qRun pre-commit checks locally before pushing:
uv run pre-commit run --all-files- Create a descriptive feature branch:
feature/<short-description>orfix/<short-description> - Keep commits focused; rebase/squash before opening a PR if needed
- Open a Pull Request against
mainusing the provided template - Ensure CI passes (lint, format, tests, coverage)
- Follow Ruff for linting & formatting (configured via pre-commit)
- Add type hints
- Keep functions small and focused
- Prefer explicit over implicit
- Add tests for new features or bug fixes
- Aim for coverage >= existing module average; avoid regressions
- Use parametrization for concise test cases
- Update README or examples for user-facing changes
- Add docstrings for public classes/functions
Include:
- Steps to reproduce
- Expected vs actual behaviour
- Environment details (OS, Python, JAX, jaxfun commit)
- Minimal code sample if possible
If your change affects users, add a bullet to the Unreleased section in CHANGELOG.md (create it if absent).
Use GitHub Discussions for questions or design proposals.