Add support for packaging version >= 26 on the version bump script (#160858)

This commit is contained in:
Robert Resch
2026-01-13 18:14:46 +01:00
committed by GitHub
parent d173d25072
commit e900bb9770

View File

@@ -2,15 +2,19 @@
"""Helper script to bump the current version."""
import argparse
from copy import replace
from pathlib import Path
import re
import subprocess
import packaging
from packaging.version import Version
from homeassistant import const
from homeassistant.util import dt as dt_util
_PACKAGING_VERSION_BELOW_26 = Version(packaging.__version__) < Version("26.0dev0")
def _bump_release(release, bump_type):
"""Bump a release tuple consisting of 3 numbers."""
@@ -25,6 +29,13 @@ def _bump_release(release, bump_type):
return major, minor, patch
def _get_dev_change(dev: int) -> int | tuple[str, int]:
"""Return the dev change based on packaging version."""
if _PACKAGING_VERSION_BELOW_26:
return ("dev", dev)
return dev
def bump_version(
version: Version, bump_type: str, *, nightly_version: str | None = None
) -> Version:
@@ -58,9 +69,10 @@ def bump_version(
# Convert 0.67.3.b5 to 0.67.4.dev0
# Convert 0.67.3.dev0 to 0.67.3.dev1
if version.is_devrelease:
to_change["dev"] = ("dev", version.dev + 1)
to_change["dev"] = _get_dev_change(version.dev + 1)
else:
to_change["pre"] = ("dev", 0)
to_change["dev"] = _get_dev_change(0)
to_change["pre"] = None
to_change["release"] = _bump_release(version.release, "minor")
elif bump_type == "beta":
@@ -99,14 +111,19 @@ def bump_version(
raise ValueError("Nightly version must be a dev version")
new_dev = new_version.dev
to_change["dev"] = ("dev", new_dev)
if not isinstance(new_dev, int):
new_dev = int(new_dev)
to_change["dev"] = _get_dev_change(new_dev)
else:
raise ValueError(f"Unsupported type: {bump_type}")
temp = Version("0")
temp._version = version._version._replace(**to_change) # noqa: SLF001
return Version(str(temp))
if _PACKAGING_VERSION_BELOW_26:
temp = Version("0")
temp._version = version._version._replace(**to_change) # noqa: SLF001
return Version(str(temp))
return replace(version, **to_change)
def write_version(version):