-
David Runge authored
CONTRIBUTING.md: Add information on how and where to add changelog entries.
David Runge authoredCONTRIBUTING.md: Add information on how and where to add changelog entries.
Contributing
These are the contribution guidelines for repod.
Development of repod takes place on Arch Linux' Gitlab: https://gitlab.archlinux.org/archlinux/repod.
Please read our distribution-wide Code of Conduct before contributing, to understand what actions will and will not be tolerated.
License
All code contributions fall under the terms of the GPL-3.0-or-later (see LICENSE).
All documentation contributions fall under the terms of the GFDL-1.3-or-later (see docs/LICENSE).
All past and present authors of repod are listed in AUTHORS.md.
Discussion
Discussion around repod takes place on the arch-projects mailing list and in #archlinux-projects on Libera Chat.
Writing code
The project is written in typed Python. Please refer to issue tracker for open tickets and ongoing development.
Tox and poetry need to be installed to be able to test the project's code and to generate its user facing documentation.
The code base is type checked, linted and formatted using standardized tooling.
Please make sure to run tox
before providing a merge request.
For all notable changes to the code base make sure to add a
changelog entry in the [Unreleased]
section. The changelog
style follows the "keep a changelog"
methodology. Valid subsection topics are:
- Added for new features.
- Changed for changes in existing functionality.
- Deprecated for soon-to-be removed features.
- Removed for now removed features.
- Fixed for any bug fixes.
- Security in case of vulnerabilities.
Integration for text editors
An editorconfig file is provided in this repository and the text editor in use should be configured to make use of it.
Additional helpful integrations for linting and type checking are:
Documentation
All code is documented following numpydoc (see the accompanying style guide for further info).
Writing tests
Test cases are developed per module in the tests directory using pytest and should consist of atomic single expectation tests. Huge test cases asserting various different expectations are discouraged and should be split into finer grained test cases or covered using parametrized tests.
New code additions are not accepted below 100% test coverage.
The tests are distinguished between coverage tests and integration tests. While the former are meant to target what is commonly referred to as unit tests, the latter are meant to test more complex scenarios, involving actual repository actions, etc.
To execute all coverage tests use
tox -e coverage
To run all integration tests use
tox -e integration
Writing documentation
Documentation is written in reStructuredText and assembled using sphinx in the docs directory.
To build the documentation use
tox -e docs