π Contributing#
This page covers contribution expectations and pull request readiness. For the practical local development workflow, including environment setup and the day-to-day uv and nox commands used in this repository, see dev.md. Maintainer-only operational tasks are summarized separately in maintainers.md.
Reporting Issues#
When opening an issue to report a problem, please try to provide:
a minimal code example that reproduces the issue
and details of the operating system and the dependency versions you are using.
Contributing Code and Documentation#
So you are interested in contributing to coordinax? Excellent! We love contributions! coordinax is open source, built on open source, and weβd love to have you hang out in our community.
How to Contribute, Best Practices#
Most contributions to coordinax are done via pull requests from GitHub usersβ forks of the coordinax repository. If you are new to this style of development, check out astropyβs development workflow.
Once you open a pull request (which should be opened against the main branch, not against any of the other branches), please make sure to include the following:
Code: the code you are adding.
Tests: these are usually tests to ensure code that previously failed now works (regression tests), or tests that cover as much as possible of the new functionality to make sure it does not break in the future and also returns consistent results on all platforms (since we run these tests on many platforms/configurations).
Documentation: if you are adding new functionality, be sure to include a description in the main documentation (in
docs/).Performance improvements: if you are making changes that impact
coordinaxperformance, consider adding a performance benchmark intests. A maintainer will also be able to run comparative benchmarks to catch performance changes. The PR needs to have therun-benchmarkslabel to run the workflow.
Before You Open A Pull Request#
Before opening or updating a pull request, contributors should normally make sure that:
the relevant spec still matches the implementation
behavior changes come with tests
public changes come with documentation updates
the local validation gate has been run for the scope of the change
In most cases, the practical local gate is:
uv run nox -s lint
uv run nox -s test
uv run nox -s docs
For smaller changes, it is fine to iterate with narrower checks first, as described in dev.md, before running the broader gate.
Checklist for Contributed Code#
Before being merged, a pull request for a new feature will be reviewed to see if it meets the following requirements. If you are unsure about how to meet all of these requirements, please submit the PR and ask for help and/or guidance. A coordinax maintainer will collaborate with you to make sure that the pull request meets the requirements for inclusion in the package:
Relevance:
Is the submission relevant to
coordinax?Does the code perform as expected?
If applicable, are references included to the origin source for the algorithm?
Has the code been tested against previously existing implementations?
Code Quality:
Are the coding guidelines followed?
Is the code compatible with the supported versions of Python?
Are there dependencies other than the run-time dependencies listed in
pyproject.toml?Does the implementation match the relevant spec in
docs/spec.mdor the package-localdocs/spec.md?
Testing:
Are the testing guidelines followed?
Are the inputs to the functions sufficiently tested?
Are there tests for any exceptions raised?
Are there tests for the expected performance?
Are the sources for the tests documented?
Does
uv run nox -s testrun without failures?
Documentation:
If the public behavior changed, was the relevant documentation updated?
Is there a docstring in the function describing:
What the code does?
The format of the inputs of the function?
The format of the outputs of the function?
References to the original algorithms?
Any exceptions which are raised?
An example of running the code?
Is there any information needed to be added to the docs to describe the function?
Does the documentation build without errors or warnings?