Contributions are welcome and greatly appreciated. If you would like to address a bug or add a feature, please first open an issue. If we decide to move forward with the changes, please fork the repo and open a pull request.
Clone the repo and run
We use pdm to manage dependencies.
pdm add to install new packages.
Add unit tests to make sure the new functionality is covered. If your functionality falls into one of the existing classes, add your tests to the corresponding file under the tests/ directory. Otherwise, create a new file. We use
pytest to run our tests. Make sure that your test starts with the name test to ensure that it will be executed when
make test is invoked.
make formatto auto-format the code
make testto run the tests (fix any issue)
make checkto check everything (types, docs, quality, and dependencies)
- make sure that all tests pass and the source code coverage meets our criteria
Finally, in your commit message, try to use helpful keywords such as "add", "fix", "remove", "change" to describe the changes that you have proposed. This helps in generating change log documentation appropriately. You can read more about writing good commit messages here and here.
Continuous Integration and Development¶
Pacti has continuous integration and development setup with Github Actions. Some workflows are automatically run while others are manual. Instructions for all developers:
- If you are in the process of developing a feature/fixing a bug in your own development branch: Make sure that the Pacti Development workflow passes. This will automatically be run with every commit, so you should be getting notifications of what Pacti functionality failed (if any).
- If you are contributing a development feature to any branch (that is, your development has finished): Run the Pacti Development Review workflow. This will test the functionality and also code quality.
- If you are reviewing a pull-request to the main branch from another developer: Make sure to go to the "Actions" tab and run the Pacti Pre-Production workflow manually. This workflow tests the package for functionality and quality on two Python versions.
- The Pacti Production workflow makes sure that the software works with all OS and all Python versions.