Contributing
We're always looking to improve this project! Open source contribution is encouraged so long as they adhere to these guidelines.
Pull Requestsβ
The Flagsmith team will be monitoring for pull requests. When we get one, a member of team will test the work against our internal uses and sign off on the changes. From here, we'll either merge the pull request or provide feedback suggesting the next steps.
A couple things to keep in mindβ
- If you've changed APIs, update the documentation.
- Keep the code style (indents, wrapping) consistent.
- If your PR involves a lot of commits, squash them using
git rebase -i
as this makes it easier for us to review. - Keep lines under 80 characters.
Conventional Commitsβ
Please prefix the title of your PRs with one of the following
Conventional Commit labels. E.g. feat: My great feature
:
- feat: A new feature or improvement to an existing feature
- fix: A bug fix
- infra: For Infrastructure-as-code type work
- ci: Changes to our CI/CD or build setup
- docs: Documentation only changes
- deps: Updating library dependencies
- perf: A code change that improves performance
- refactor: A code change that neither fixes a bug nor adds a feature
- test: Adding missing tests or correcting existing tests
- chore: Changes that donβt really live anywhere else (please try NOT to use this label if possible)
Pre-commitβ
The application uses pre-commit configuration ( .pre-commit-config.yaml
) to run black
, flake8
and isort
formatting before commits.
To install pre-commit:
# From the repository root
make install
pre-commit install
You can also manually run all the checks across the entire codebase with:
pre-commit run --all-files
Running Testsβ
The application uses pytest for writing (appropriate use of fixtures) and running tests. Before running tests please
make sure that DJANGO_SETTINGS_MODULE
env var is pointing to the right module, e.g. app.settings.test
.
To run tests:
DJANGO_SETTINGS_MODULE=app.settings.test pytest
Adding Dependenciesβ
We use Poetry for dependency management - please follow their docs on adding dependencies.