Skip to main content

Project Version Manager. A tool for bumping python project versions following SemVer 2.0.0

Project description

PVM — Project Version Manager

PVM is a CLI tool for managing Python project versions using Semantic Versioning 2.0.0. It automates version bumps, changelog generation, and Git tagging, all driven by your pyproject.toml.

Content

Features

  • Semantic Versioning: Bump major, minor, patch, prerelease, and build versions.
  • Git Integration: Commit and tag version changes, with optional push.
  • Changelog Generation: Automated changelog creation and updating.
  • Flexible CLI: Powered by Typer, with rich options.
  • Preserves Formatting: Updates pyproject.toml without breaking formatting.

Installation

pip install pvm
# or, with uv
uv pip install pvm

Usage

Show the Current Version

pvm show current

Predict the Next Version

pvm show next

Bump the Version

# Bump patch version (e.g., 1.2.3 → 1.2.4)
pvm bump patch

# Bump minor version and add prerelease
pvm bump minor --prerelease --prerelease-token rc

# Bump to a specific version
pvm bump 2.0.0

# Add build metadata
pvm bump patch --build --build-token build.5

# Bump and tag in Git (with prefix)
pvm bump patch --tag --tag-prefix v

# Bump and generate changelog
pvm bump patch --changelog --changelog-file CHANGELOG.md

Generate a Changelog

pvm changelog --file CHANGELOG.md

CLI Reference

Command Description
pvm --version Show PVM CLI version
pvm show current Show current project version
pvm show next Predict next version
pvm bump [target] Bump version (target: major, minor, patch, etc.)
pvm changelog Generate or update changelog

Common Options for bump:

  • --final : Force a final version (no prerelease/build)
  • --prerelease, -p : Add a prerelease (e.g., alpha, beta, rc)
  • --prerelease-token : Set prerelease token (e.g., rc, alpha)
  • --build, -b : Add build metadata
  • --build-token : Set build metadata token
  • --tag, -t : Create a Git tag for the new version
  • --tag-prefix : Prefix for tag (default: v)
  • --changelog, -c : Generate changelog after bump
  • --changelog-file : Path to changelog file

Example Workflows

Bump patch, tag, and update changelog:

pvm bump patch --tag --changelog --changelog-file CHANGELOG.md

Show next prerelease version:

pvm show next --prerelease

Development

Install Dev & Test Dependencies

uv sync --group dev --group test

Run Tests

pytest
# or, for all environments:
tox

Format, Lint, and Type-Check

uv run ruff format .
uv run ruff check --fix --exit-zero
uv run pre-commit run --all-files
uv run mypy .

Configuration

PVM reads and writes the version from your pyproject.toml. You can configure changelog file location and other options in your pyproject.toml.

Links

License

MIT License © Malvin Ndip

Download files

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

Source Distribution

project_version_manager-0.1.1.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

project_version_manager-0.1.1-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file project_version_manager-0.1.1.tar.gz.

File metadata

File hashes

Hashes for project_version_manager-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2d58a09f6ba58dc1ea8abd47aa17dfa0c3accf6619fe87f05fcd5bdbd79d6a5b
MD5 66e35ed7fd4c190962b494978bba4b1a
BLAKE2b-256 ce4442eae6953214e71982dbdbaac2da7153c030f4dee3898c433f7442b6bf49

See more details on using hashes here.

File details

Details for the file project_version_manager-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for project_version_manager-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1e3ee3b82e19a6af70db374e80b8a364d0335b7f2ab294c5d701e134ea1a216c
MD5 45f2c578b5f3732ac42f027a862cdd12
BLAKE2b-256 3350f5f146e0230ef7830c433d625485f497e1cee9171a9f5da176f4a6df45b3

See more details on using hashes here.

Supported by

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