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.
The default setting for the underlying MyPy
configuration is:
--explicit-package-bases --namespace-packages --no-error-summary --no-color-output
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.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 448509f563f04ed0e1edf75d01b81fc43b7e33e57a1ce766b9051cf1ea0a649f |
|
MD5 | 2bfcfc68dc334e7eba5b85e1918719d2 |
|
BLAKE2b-256 | 81a03441ece4a762360a189fc719c515577d64319ebb1ebd11aee8bf7fc0dee8 |
Hashes for poetry_multiproject_plugin-1.1.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 311c44579c244b7c14062c02683436034bae3eb6edba553199f9af3144058a2c |
|
MD5 | 7872ee40d4c52349ed9898e1517a365c |
|
BLAKE2b-256 | 6291f9ad7d1c26a812388675747b9a69eebf3ce43a7f8abec941410cc94b3adb |