A Poetry plugin that makes it possible to use relative package includes.
Project description
Poetry Multiproject Plugin
This is a Python Poetry
plugin, adding the build-project
and check-project
commands.
The build-project
command will make it possible to use relative package includes.
This feature is very useful for monorepos and when sharing code between projects.
The check-project
command is useful to check that dependencies are added properly in a project.
It uses the MyPy
tool under the hood, and will output any errors from the static type checker.
Usage
Navigate to the project folder (where the pyproject.toml
file is).
Build a project:
poetry build-project
Check the code used in a project:
poetry check-project
Check the code, with a custom MyPy
configuration to override the defaults:
poetry check-project --config-file <PATH-TO-MYPY.INI-CONFIG-FILE>
Installation
This plugin can be installed according to the official Poetry docs.
poetry self add poetry-multiproject-plugin
What does it do?
the poetry build-project
command will:
- copy the actual project into a temporary folder.
- collect relative includes - such as
include = "foo/bar", from = "../../shared"
- and copy them into the temprary folder. - generate a new pyproject.toml.
- run the
poetry build
command in the temporary folder. - copy the built
dist
folder (containing the wheel and sdist) into the actual project folder. - remove the temporary folder.
the poetry check-project
command will:
- copy the actual project into a temporary folder.
- collect relative includes - such as
include = "foo/bar", from = "../../shared"
- and copy them into the temprary folder. - generate a new pyproject.toml.
- run
poetry install
in the temporary folder. - run
poetry run mypy
in the temporary folder. - remove the temporary folder.
How is it different from the "poetry build" command?
Poetry does not allow package includes outside of the project root.
# Note the structure of the shared folder: namespace/package
packages = [
{ include = "my_namespace/my_package", from = "../../shared" }
{ include = "my_namespace/my_other_package", from = "../../shared" }
]
This plugin will allow relative package includes. You will now be able to share code between projects.
An suggested Monorepo structure, with the shared code extracted into a separate folder structure:
projects/
my_app/
pyproject.toml (including a shared package)
my_service/
pyproject.toml (including other shared packages)
shared/
my_namespace/
my_package/
__init__.py
code.py
my_other_package/
__init__.py
code.py
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for poetry_multiproject_plugin-1.1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f37dd9052d25eef1b997b9c293ac66c7d6a297602ca913e112aa00a5d63f8b7 |
|
MD5 | 91f83a9179c0537f1cb3f32ffacd9117 |
|
BLAKE2b-256 | c11e4f06c5da04cfef035f3426225ab0d25f2fb89b78bea003e8856f82683f76 |
Hashes for poetry_multiproject_plugin-1.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e4188d4f2dd0eac8de9270b152d07229698c7e3026872ea2cd237b7a72eef487 |
|
MD5 | f2330020e2f20c57d829531b17afdaee |
|
BLAKE2b-256 | 54ecd44cb0c9981c9a0d9ac6d0c53a5ada9249613562f26e9ce14594c402d781 |