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.
So you are interested in contributing to phasecurvefit? Excellent! We love
contributions! phasecurvefit is open source, built on open source, and we'd
love to have you hang out in our community.
Most contributions to phasecurvefit are done via
pull requests
from GitHub users' forks of the
phasecurvefit 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
phasecurvefitperformance, consider adding a performance benchmark intests.
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
phasecurvefit 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
phasecurvefit? - 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?
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 pytest tests/run without failures?
Documentation:
- 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?
phasecurvefit maintainers welcome contributions, including those developed
with the assistance of generative AI tools. However, the use of such tools does
not change our expectations for contributor responsibility, engagement, or code
quality. The following apply to all contributions.
Human ownership and accountability: Contributors are responsible for all submitted content, regardless of whether generative AI tools were used. Contributors must be able to explain all changes during review.
Authentic engagement: The pull request process is collaborative and iterative. Contributors are expected to actively engage with reviewer feedback.
Consistency with phasecurvefit conventions and existing style: In the
context of generative AI, this particularly means conveying information
(comments, documentation, etc.) in a style consistent with the phasecurvefit
codebase.