forked from venetoarpa/Arpav-PPCV-backend
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #23 from ricardogsilva/5-decide-on-package-manager
Add ADR referring to the usage of poetry for python dependency management
- Loading branch information
Showing
1 changed file
with
48 additions
and
0 deletions.
There are no files selected for viewing
48 changes: 48 additions & 0 deletions
48
docs/decisions/0001-use-poetry-for-python-dependency-management.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# Use Poetry for Python dependency management | ||
|
||
## Context and Problem Statement | ||
|
||
We want to use a tool to both manage project Python dependencies and packaging. Given the number of alternatives that | ||
currently exist and the project requirements, which would be an appropriate choice? | ||
|
||
|
||
## Considered Options | ||
|
||
- [poetry](https://python-poetry.org/) | ||
- [pdm](https://pdm-project.org/latest/) | ||
- [pipenv](https://pipenv.pypa.io/en/latest/) | ||
- [rye](https://rye-up.com/) | ||
|
||
|
||
## Decision Outcome | ||
|
||
Chosen option: "poetry", because it meets the needs of the project and introduces minimal friction | ||
|
||
|
||
### Consequences | ||
|
||
- Good, because it is already known by the project development team | ||
- Good, because it covers all relevant use cases related to development and deployment for the project: | ||
- uses pinned versions for dependencies | ||
- allows defining user scripts, for building custom commands | ||
- specify development-only dependencies, which can be kept off the docker image | ||
- allows installing only dependencies if needed, which is good for preserving the docker cache | ||
|
||
|
||
### pdm | ||
|
||
- Good, because it covers project use cases | ||
- Bad, because the development team does not have experience using it | ||
|
||
|
||
### pipenv | ||
|
||
- Good, because it covers project use cases | ||
- Bad, because the development team does not have experience using it | ||
|
||
|
||
### rye | ||
|
||
- Good, because it covers project use cases | ||
- Bad, because the development team does not have experience using it | ||
- Bad, because it is a very new tool, which may not be as stable as desired for the current project |