Skip to main content

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.

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
pip install pre-commit
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(appropritate 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

To add a python dependency:

  • Add to requirements.in or requirements-dev.in
  • Run pip-compile or pip-compile requirements-dev.in