Skip to main content

Poetry workspace plugin for Python monorepos.

Project description

poetry-workspace-plugin

Poetry workspace plugin for Python monorepos. Inspired by Yarn Workspaces.

Adds a new subcommand group, poetry workspace, which is used to create, manage and inspect nested Python projects.

# Create a new python project at the specified path, tracked in the current project
poetry workspace new libs/my-library

# Add an existing python project to the current project's workspaces
poetry workspace add libs/my-existing-library

# List the current workspaces
poetry workspace list

# Run a command in every workspace:
poetry workspace run command

# Run a command in specified workspaces:
poetry workspace run --targets=my-library,my-existing-library -- command

# List dependees of a particular workspace (from among the list of workspaces).
poetry workspace dependees my-library

# Unlink a workspace from the current project
poetry remove workspace my-library

# Unlink and delete a workspace from the current project
poetry remove workspace my-library --delete

Common patterns

Testing affected workspaces

After making a change to a workspace, you can run tests for all affected workspaces like so:

poetry workspace run --targets=$(poetry workspace dependees --csv my-library) -- pytest tests/

Planned commands

The following are currently possible e.g via poetry workspace run poetry build, but this would be more succint:

# Build or publish all workspaces:
poetry workspace build
poetry workspace publish

# Build specified workspaces:
poetry workspace --targets=my-library build

# Publish specified workspaces:
poetry workspace --targets=my-library publish

Metadata regarding workspaces is stored under tool.poetry.workspaces:

[tool.poetry.workspace]
workspaces = {
    my-library = "libs/my-library"
}

Installation

This project is not currently packaged and so must be installed manually.

Clone the project with the following command:

git clone https://github.com/jacksmith15/poetry-workspace-plugin.git

Development

Install dependencies:

pyenv shell 3.9.4  # Or other 3.9.x
pre-commit install  # Configure commit hooks
poetry install  # Install Python dependencies

Run tests:

poetry run inv verify

License

This project is distributed under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

poetry-workspaces-0.1.0.tar.gz (7.2 kB view details)

Uploaded Source

Built Distribution

poetry_workspaces-0.1.0-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file poetry-workspaces-0.1.0.tar.gz.

File metadata

  • Download URL: poetry-workspaces-0.1.0.tar.gz
  • Upload date:
  • Size: 7.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.0a2 CPython/3.9.4 Linux/5.8.0-63-generic

File hashes

Hashes for poetry-workspaces-0.1.0.tar.gz
Algorithm Hash digest
SHA256 525b2563558870d138bdce1537dfcad5ec4d4bbb057a4357af64aaee548027e8
MD5 2359ca2e6ee1ba4123e5fd081fd8655c
BLAKE2b-256 3ac2d4cca1f50494deb403e97c38096f658fdfb1be2dfc9dfdbef9b90ee740d6

See more details on using hashes here.

File details

Details for the file poetry_workspaces-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: poetry_workspaces-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.0a2 CPython/3.9.4 Linux/5.8.0-63-generic

File hashes

Hashes for poetry_workspaces-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d0111277dfc6132e54dce66903cc99ea70669491c0d8b1c35e47225c22b71277
MD5 12e0bb4356f54096647b117020f8ecb4
BLAKE2b-256 9baac6513c22c9d3a6d06b70596f9372056fa53aa769f655836dff476893c91e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page