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!

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.1.0.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: pep440_version_utils-1.1.0.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.6 Darwin/23.5.0

File hashes

Hashes for pep440_version_utils-1.1.0.tar.gz
Algorithm Hash digest
SHA256 a49de127db0363b3c0b9116c92fb394756779e90d061be19b938366acd163032
MD5 c9003c3661fd5feb95f81e551789c99d
BLAKE2b-256 cfd195f78f2b9350d0c64712c6f6569b36f78a1a8d73c478ba1c1996192b5076

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pep440_version_utils-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0f2fa61c2051db438ece8b1b94d364e52cb531b94061d5dbec1b7a6a5937cbfa
MD5 259436b04d0308d67c505cebef70bc83
BLAKE2b-256 a5139f5f788bf60349e2f6c3879509d679a35db2dab01f50657da19aef092488

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