Skip to content

Switch to Poetry for python packaging and dependency management solution. #399

@ArekKuczynski

Description

@ArekKuczynski

Is your feature request related to a problem? Please describe.
Previously, we relied on setup-*.py files to publish individual rfswarm components to PyPi. This method is now considered as outdated. The modern standard format to describe package metadata and publish them to PyPi is pyproject.toml file.
https://peps.python.org/pep-0621/
https://python-poetry.org/docs/repositories/#publishable-repositories

We can implement multiple Poetry pyproject.toml files for each rfswarm components. They will share the same version, author, readme file, etc. but will contain different dependencies, descriptions, etc.. The project dependencies are handled by poetry automatically based on the defined Python version criteria.
https://python-poetry.org/docs/pyproject/

Additionally, Poetry offers plenty of tools for advanced package management (such as: dependency grouping). Because of that we can use this tool in the regression tests environment instead of using three different requirements.txt files for each component tests. The current tests environment has already complicated dependency tree and as we already have experienced it can led to unwanted instability. In pyproject.toml file we can specify current python versions scope and poetry will define dependencies version that are the most compatible with each other in predefined python versions bounds that we are currently supporting.
Since the dependency versions are strictly specified by Poetry we will install the most suitable versions for our current environment requirements instead of downloading the most recent ones as we mostly were doing right now.
https://python-poetry.org/docs/managing-dependencies/

Describe the solution you'd like
All of the possible dependency fields and package publish processes are handled by Poetry.

Metadata

Metadata

Assignees

No one assigned

    Labels

    AgentIssue Affects the AgentMaintanceUpdates required because of dependanciesManagerIssue Affects the ManagerReporterIssue Affects the Manager (this is a planned component)TestSomething that needs an automated test caseenhancementNew feature or request

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions