Python tooling support for the Polylith Architecture
Project description
Python tooling for Polylith
A command line interface that adds tooling support for the Polylith Architecture in Python.
Documentation
Have a look at the documentation. You will find installation, setup, usage guides and more.
Quick start
Poetry user? For Poetry, the recommended setup is to install the poetry-polylith-plugin.
Read more about Poetry in the documentation.
Setup for Hatch users
Create a directory for your code, initialize it with git and setup the basics with hatch:
git init
hatch new --init
Add the Polylith CLI as a dev dependency in pyproject.toml:
[tool.hatch.envs.default]
dependencies = ["polylith-cli"]
Add configuration for a local virtual environment in the pyproject.toml:
[tool.hatch.envs.default]
type = "virtual"
path = ".venv"
python = "3.12" # your preferred version here
Make Hatch aware of the Polylith structure, by adding this to the pyproject.toml:
[tool.hatch.build]
dev-mode-dirs = ["components", "bases", "development", "."]
Next: create a Polylith workspace, with a basic Polylith folder structure.
The poly command is now available in the local virtual environment.
You can run commands in the context of hatch run to make Polylith aware of the development environment.
hatch run poly create workspace --name my_namespace --theme loose
Ready for coding!
Add components, bases and projects:
hatch run poly create component --name my_component
hatch run poly create base --name my_example_endpoint
hatch run poly create project --name my_example_project
For details, have a look at the documentation. There, you will find guides for setup, migration, packaging, available commands, code examples and more.
Setup for PDM users
Create a directory for your code, initialize it with git and setup the basics with PDM.
git init
pdm init -n --backend pdm-backend minimal
Add a workspace hook
Make PDM aware of the Polylith structure, by adding the pdm-polylith-workspace hook to the newly created pyproject.toml.
The build hook will add an additional pth file to the virtual environment,
with paths to the Polylith source code folders (bases, components).
[build-system]
requires = ["pdm-backend", "pdm-polylith-workspace"]
build-backend = "pdm.backend"
Add the polylith-cli
Add the Polylith CLI as a dev dependency and setup the virtual environment paths.
touch README.md
pdm add -d polylith-cli
pdm install
Next: create a Polylith workspace, with a basic Polylith folder structure.
The poly command is now available in the local virtual environment.
You can run commands in the context of pdm run to make Polylith aware of the development environment.
pdm run poly create workspace --name my_namespace --theme loose
Ready for coding!
Add components, bases and projects:
pdm run poly create component --name my_component
pdm run poly create base --name my_example_endpoint
pdm run poly create project --name my_example_project
Setup for Rye users
rye init my_repo # name your repo
cd my_repo
rye add polylith-cli --dev
rye sync # create a virtual environment and lock files
Create a workspace, with a basic Polylith folder structure.
rye run poly create workspace --name my_namespace --theme loose
Edit the configuration
The default build backend for Rye is Hatch. Add the hatch-polylith-bricks build hook plugin to the pyproject.toml file.
[build-system]
requires = ["hatchling", "hatch-polylith-bricks"]
build-backend = "hatchling.build"
[tool.hatch.build.hooks.polylith-bricks]
# this section is needed to enable the hook in the build process, even if empty.
Make Rye (and Hatch) aware of the way Polylith organizes source code:
[tool.hatch.build]
dev-mode-dirs = ["components", "bases", "development", "."]
Remove the [project.scripts] and [tool.hatch.build.targets.wheel] sections.
Run the sync command to update the virtual environment:
rye sync
Finally, remove the src boilerplate code that was added by Rye in the first step:
rm -r src
Ready for coding!
Add components, bases and projects:
rye run poly create component --name my_component
rye run poly create base --name my_example_endpoint
rye run poly create project --name my_example_project
For details, have a look at the documentation. There, you will find guides for setup, migration, packaging, available commands, code examples and more.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file polylith_cli-1.5.4.tar.gz.
File metadata
- Download URL: polylith_cli-1.5.4.tar.gz
- Upload date:
- Size: 26.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a76c5b5a41f931b1964f2c5b799fffa8142c4217376a20a8f6b0afb24beba3e
|
|
| MD5 |
03848207bb3f35337ce65e6619cfb0ed
|
|
| BLAKE2b-256 |
f54238b1ccc1753490eb83d0f7919926a875464578c0013b8915e7c4f5d660b6
|
File details
Details for the file polylith_cli-1.5.4-py3-none-any.whl.
File metadata
- Download URL: polylith_cli-1.5.4-py3-none-any.whl
- Upload date:
- Size: 45.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4036e829a8600fe266c04a926f30314331774034a4506d305d8543e1cfdcd11d
|
|
| MD5 |
0c64ca5bf320b1dcf6f91a8521e65d96
|
|
| BLAKE2b-256 |
c6cf18f952fdbeb5fe21176d34eb4d04e1266af7ae4e5d527d4be1e7688d9e35
|