Tegami

pip

Python workspace support and PyPI publishing.

Installation

The pip plugin discovers workspace members from pyproject.toml, bumps versions, updates workspace dependency ranges, and publishes to PyPI with uv publish.

npm install @tegami/pip
import { tegami } from "tegami";
import { pip } from "@tegami/pip";

const paper = tegami({
  plugins: [pip()],
});

Requirements

uv must be configured on your Python project.

Discovery

Tegami reads the root pyproject.toml and expands [tool.uv.workspace].members. Packages need a [project].name and version.

Workspace dependencies must be declared in both [project].dependencies and [tool.uv.sources] with { workspace = true }, matching uv's workspace rules.

Dependency bumping

Tegami only auto-bumps dependents and rewrites constraints for dependencies declared with { workspace = true } in [tool.uv.sources].

Dependency kindDefault dependent bump
dependenciespatch
optional-dependenciespatch
dependency-groupsnone

Workspace dependents are patch-bumped when a linked package is released. Constraints are rewritten only when the range no longer accepts the new version.

To release a path-linked package without { workspace = true }, add it to a changelog explicitly.

Configuration

pip({
  updateLockFile: false,
  publishIndex: "testpypi",
  bumpDep: ({ kind }) => (kind === "dependency-groups" ? false : "patch"),
});

Prop

Type

Publishing

Python has no npm-style [project].publishConfig. With uv, registry settings live under [[tool.uv.index]] in pyproject.toml:

[[tool.uv.index]]
name = "testpypi"
url = "https://test.pypi.org/simple/"
publish-url = "https://test.pypi.org/legacy/"
explicit = true

Point Tegami at a named index with publishIndex: "testpypi". When a publish-url is configured, Tegami passes it directly to uv publish so member packages can publish without duplicating the index table.

When publishIndex is unset, Tegami uses PyPI for publish-status checks and runs uv publish without an index flag.

On this page