Unverified Commit 9528dc63 authored by Nicola Soranzo's avatar Nicola Soranzo
Browse files

Replace deprecated `distutils.version` with `packaging.version`

parent 67138181
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -3,9 +3,10 @@
# This file is appended to conf.py by the Build docs github workflow.
#
import re
from distutils.version import LooseVersion
from subprocess import check_output

from packaging.version import Version

# This is set in the Jenkins matrix config
TARGET_GIT_BRANCH = os.environ.get("TARGET_BRANCH", "dev")  # noqa: F821

@@ -17,7 +18,7 @@ BANNER_APPEND = """ You can alternatively <a href="%(stable_path)s">view this pa
exists</a> or <a href="%(stable_root)s">view the top of the latest release's documentation</a>."""

# Minimum version for linking to docs
MIN_DOC_VERSION = LooseVersion("17.05")
MIN_DOC_VERSION = Version("17.05")

# Enable simpleversioning
extensions += ["sphinxcontrib.simpleversioning"]  # noqa: F821
@@ -43,16 +44,16 @@ for _tag in reversed(tags):
        _ver = _tag[1:]
        if not _stable:
            _stable = _ver
        if LooseVersion(_ver) >= MIN_DOC_VERSION:
            simpleversioning_versions.append({"id": "release_%s" % _ver, "name": _ver})
        if Version(_ver) >= MIN_DOC_VERSION:
            simpleversioning_versions.append({"id": f"release_{_ver}", "name": _ver})

if re.fullmatch(r"release_\d{2}\.\d{2}", TARGET_GIT_BRANCH):
    if _stable:
        # The current stable release will go here but fail the next conditional, avoiding either banner.
        if TARGET_GIT_BRANCH != "release_%s" % _stable:
        if TARGET_GIT_BRANCH != f"release_{_stable}":
            simpleversioning_show_banner = True
            _target_ver = TARGET_GIT_BRANCH[len("release_") :]
            if LooseVersion(_target_ver) > LooseVersion(_stable):
            if Version(_target_ver) > Version(_stable):
                # Pre-release
                # Insert it between master and _stable
                simpleversioning_versions.insert(2, {"id": TARGET_GIT_BRANCH, "name": _target_ver})
+12 −16
Original line number Diff line number Diff line
@@ -4,7 +4,8 @@ import os
import re
import subprocess
import sys
from distutils.version import StrictVersion

from packaging.version import Version

DEV_RELEASE = os.environ.get("DEV_RELEASE", None) == "1"
PROJECT_DIRECTORY = os.getcwd()
@@ -14,19 +15,16 @@ PROJECT_NAME = PROJECT_DIRECTORY_NAME.replace("_", "-")

def main(argv):
    version = argv[1]
    version_obj = Version(version)
    if not DEV_RELEASE:
        old_version = StrictVersion(version)
        old_version_tuple = old_version.version
        new_version_tuple = list(old_version_tuple)
        new_version_tuple[2] = old_version_tuple[2] + 1
        # Discard epoch, release numbers after micro, pre-, post-, dev-release segments and local version
        new_version_tuple = list(version_obj.release[:3])
        new_version_tuple[2] += 1
        new_version = ".".join(map(str, new_version_tuple))
        new_dev_version = 0
    else:
        dev_match = re.compile(r"dev([\d]+)").search(version)
        assert dev_match
        dev_version = dev_match.group(1)
        new_dev_version = int(dev_version) + 1
        new_version = version.replace(f"dev{dev_version}", f"dev{new_dev_version}")
        dev_number = version_obj.dev
        assert dev_number is not None
        new_version = f"{version_obj.base_version}.dev{dev_number + 1}"

    history_path = os.path.join(PROJECT_DIRECTORY, "HISTORY.rst")
    if not DEV_RELEASE:
@@ -53,13 +51,11 @@ def main(argv):
    with open(setup_cfg_path) as f:
        setup_cfg = f.read()
    if not DEV_RELEASE:
        setup_cfg = re.sub(
            r"^version = [\d\.]+", f"version = {new_version}.dev0", setup_cfg, count=1, flags=re.MULTILINE
        )
        setup_cfg = re.sub(r"^version = .*$", f"version = {new_version}.dev0", setup_cfg, count=1, flags=re.MULTILINE)
    else:
        setup_cfg = re.sub(
            rf"^version = ([\d\.]+).dev{dev_version}",
            rf"version = \1.dev{new_dev_version}",
            r"^version = .*$",
            rf"version = {new_version}",
            setup_cfg,
            count=1,
            flags=re.MULTILINE,
+4 −3
Original line number Diff line number Diff line
import os
import re
from distutils.version import LooseVersion

from packaging.version import Version

_version_re = re.compile(r"^version\s+=\s+(.*)", flags=re.MULTILINE)

@@ -18,9 +19,9 @@ def main():
    version = version_match.group(1)

    if not DEV_RELEASE:
        version_obj = Version(version)
        # Strip .devN
        version_tuple = LooseVersion(version).version[0:3]
        print(".".join(map(str, version_tuple)))
        print(version_obj.base_version)
    else:
        print(version)