/poetry_workspace_plugin

A workspace plugin for the Poetry dependency manager

Primary LanguagePython

Poetry Workspace Plugin

This experimental tool is a Poetry Plugin to support workflows in a multi-project repository.

Installation

Make sure you are using at least Poetry 1.2.0b3. To install this preview release, run:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python - --preview

Install this plugin:

poetry plugin add poetry-workspace-plugin2

Why plugin2?

The original package was released by Martin Liu, a former OpenDoor employee. Before he left, he re-released the project under the OpenDoor PyPI account.

Workspace

A workspace is a collection of Poetry projects that share a single environment.

Example config to place at the root

[tool.poetry]
name = "code"
version = "0.1.0"
description = "Opendoor Python workspace"
authors = ["Developers <developers@opendoor.com>"]

[[tool.poetry.source]]
name = "pypi-local"
url = "https://opendoor.jfrog.io/opendoor/api/pypi/pip/simple"
secondary = true

[tool.poetry.workspace]
include = [
  "lib/**",
  "workspace/**",
]
exclude = [
  "lib/dev-tools",
  "lib/legacy",
  "lib/template/**",
]

# IMPORTANT: This pyproject.toml file declares dependencies for the shared Python
# workspace. If your app does not belong to the
# workspace (i.e. not included in the `include` section above) then do not add your
# app dependencies here, it will have no effect. Even if your app does belong to
# the workspace, prefer adding app specific dependencies in your app's project. This
# section is reserved for workspace level constraints.
[tool.poetry.dependencies]
python = "~3.9"
virtualenv = "^20.10.0"

[tool.poetry.dev-dependencies]
"opendoor.dev-tools" = {path = "lib/dev-tools", develop = true}
"opendoor.tools" = {path = "tools", develop = true}