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, dev 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-0.3.0.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file pep440-version-utils-0.3.0.tar.gz.

File metadata

  • Download URL: pep440-version-utils-0.3.0.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.3 CPython/3.7.7 Darwin/19.4.0

File hashes

Hashes for pep440-version-utils-0.3.0.tar.gz
Algorithm Hash digest
SHA256 ceb8c8da63b54cc555946d91829f72fe323f8d635b22fa54ef0a9800c37f50df
MD5 f6f214e99f1c3aa5814901af27920224
BLAKE2b-256 b8cffdf3501870629c1602b426f7589e09db7bce1dc97039f3f10d4d4dd767ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pep440_version_utils-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 73780b2c31adad5ca35c89eb008f51c2a47aee0318debe31391b673b90577e1b
MD5 1acfec45240ecbfff77c0b5b41126e38
BLAKE2b-256 d08bc773814460b43fa1fec8f451c2cdeb6c37af64600f44c4f529a926a9daeb

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