aequitas
aequitas copied to clipboard
Add poetry
I'm creating this request to start a conversation about adding Poetry to the project for dependency management.
Poetry allows for easy dependency management while ensuring there are no clashes. I've added the dependencies mentioned in requirements/management.txt
as dev dependencies to poetry. Dependencies in requirements/cli.txt
and requirements/webapp.txt
have been added as optional extras dependencies. And finally, the dependencies in requirements/main.txt
have been added as the main dependencies for the project.
You can test this locally through the following steps
- Install Poetry
- Run
poetry install --all-extras
from project root to set up a poetry venv and install all dependencies - Commands can be run in this venv from project root by adding
poetry run
in front of the command
We can do the following things easily through poetry
- Run unit tests - We can run unit tests using just a single line of code instead of having to use a script like we currently do.
poetry run coverage run -m pytest --cov-report xml:cov.xml --cov-report term
-
Build dist files - We can easily build dist files using
poetry build
-
Publish the package - Packages can be published to PyPI using
poetry publish
. This will require configuring poetry with PyPI credentials.
In addition to all this, we can also automate testing when a PR is made using GitHub Actions
. Using this method, we can block PRs from being merged if the unit tests fail. `GitHub Actions will also allow us to automatically build and publish packages when a PR is merged. Doing all this setup requires us to add PyPI credentials to GitHub secrets at minimum, and we might need to change some GitHub settings, too.
I wanted to start a conversation using this MR so we can get some opinions from the original maintainers. We will need someone with admin access to the repo to help us add secrets and block PRs from merging when the unit tests fail.
@sgpjesus FYI