Thank you for taking your time to consider to contribute to PyQMRI, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
If you want to contribute please first contact the owner of this repository (e.g. via opening an Issue) and discuss the changes you want to change. By contributing you accept and adhere to our Code of Conduct Development and code contributaions should be done at our GitLab_ site to facilitate the CI integration and GPU availability there. Please contact us for further information.
- Search if someone else already reported that bug
- If not, open a new GitHub Issue_ and describe the steps that lead to the issue as detailed as possible. Use a clear title and add as much information as possible to reproduce the issue.
We Use Github Flow, So All Code Changes Happen Through Pull Requests
Pull requests are the best way to propose changes to the codebase (we use Github Flow). We actively welcome your pull requests:
- Fork the repo and create your branch from master.
- If you've added code that should be tested, add tests.
- If you've changed APIs, update the documentation.
- Ensure the test suite passes.
- Make sure your code lints.
- Issue that pull request!
By contributing you accept that any contributions you make will be under the Apache-2 license. Feel free to contact the maintainers if that's a concern to you.
For code contributions, it is mandatory that you make sure that all current unittests and integrationtest pass after your changes.
Prior to running the tests it is necessary to start an ipcluster.
An exemplary workflow would be:
ipcluster start &
followed by typing
pytest test
in the PyQMRI root folder. It is advised to run unit and integration tests after each other as OUT_OF_MEMORY exceptions can occur if both are in one session, e.g.:
pytest test/unittests
pytest test/integrationtests
If you add new functionality it is also mandatory to provide unit/integrationtests to make sure that the new code provides the expected behaviour. Also make sure that the code you submit adherse to the PEP8 coding style for python and all public functions are documented.
This document was adapted from the open-source contribution guidelines for Facebook's Draft.