Skip to main content

Utilities to deal with pep440 versioning

Project description

Continuous Integration Coverage Status

pep440-version-utils

This package regroups utilities to deal with pep440 versioning. It is based on the PyPA's packaging project and extends it.

It makes it easier to handle version bumps and strictly follows PEP440 specification.

Release cycle

Installation

Use pip or poetry to install this package:

$ pip install pep440-version-utils

# or alternatively
$ poetry add pep440-version-utils

Usage

Since this package extends the packaging library, so it supports version parsing and ordering as described in this documentation.

To bump to a new release version:

from pep440_version_utils import Version

version = Version("1.10.2")
version.next_micro()  # 1.10.3
version.next_minor()  # 1.11.0
version.next_major()  # 2.0.0

To bump to a new prerelease version:

from pep440_version_utils import Version

version = Version("1.10.2")
version.next_alpha()  # 1.10.3a1
version.next_beta()  # 1.10.3b1
version.next_release_candidate()  # 1.10.3rc1

version.next_alpha("minor")  # 1.11.0a1
version.next_beta("mior")  # 1.11.0b1
version.next_release_candidate("major")  # 2.0.0rc1

And it implements the full release cycle:

from pep440_version_utils import Version

version = Version("1.10.2")
alpha1 = version.next_alpha()  # 1.10.3a1
alpha2 = alpha1.next_alpha()  # 1.10.3a2
beta1 = alpha2.next_beta()  # 1.10.3b1
rc1 = beta1.next_release_candidate()  # 1.10.3rc1
rc2 = rc1.next_release_candidate()  # 1.10.3rc2
new_version = rc2.next_micro()  # 1.10.3

You can also check if a version is a specific type of prerelease:

from pep440_version_utils import Version

Version("1.10.2a1").is_alpha  # True
Version("1.10.2b2").is_beta  # True
Version("1.10.2rc1").is_release_candidate  # True

Limitations

This package doesn't support post and local versions yet. Contributions are welcome 😊

How to contribute

This package is fairly simple, here is how you can contribute:

  1. ⚙️ Install poetry
  2. 📦 In the repository folder, run poetry install
  3. ✍️ Implement the desired changes
  4. ✅ Run test, type checking and code quality checks:
$ poetry run black . --check
$ poetry run mypy */**.py --ignore-missing-imports
$ poetry run pytest --cov=pep440_version_utils
  1. ➡️ Submit a new pull request

Do not hesitate to contribue, even for very small changes!

How to release new versions

  1. Update CHANGELOG
  2. Update project version in pyproject.toml
  3. poetry build
  4. poetry publish

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

pep440_version_utils-1.2.0.tar.gz (4.1 kB view details)

Uploaded Source

Built Distribution

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

pep440_version_utils-1.2.0-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file pep440_version_utils-1.2.0.tar.gz.

File metadata

  • Download URL: pep440_version_utils-1.2.0.tar.gz
  • Upload date:
  • Size: 4.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.6 Darwin/24.6.0

File hashes

Hashes for pep440_version_utils-1.2.0.tar.gz
Algorithm Hash digest
SHA256 9a663947b7323e75cda489ed7df0c7b6b4eb2d55ce9d123f2f81f89e66bb2c0d
MD5 d6ebcfeab45be6245eb5165ac9795c3e
BLAKE2b-256 06795b894a33db703971ef6fa70804f6c5e3194425d67d1a13097c8c0963ccfc

See more details on using hashes here.

File details

Details for the file pep440_version_utils-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pep440_version_utils-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 35215cb9b799b2aef67e769936b3d99a38247e8c81fe90e6407b31d994b6a2a6
MD5 52551e6c834c65282293c81052f4cec6
BLAKE2b-256 ca5615da8dd21294d3e2a86e40299f76278ccf984625f63555cb6e9dba4eaac1

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