chore: force looseversion when it is used on either old or new

This commit is contained in:
Technofab 2023-06-17 15:01:11 +02:00
parent 0955cb2e22
commit c9af1fdcf5
No known key found for this signature in database
GPG key ID: A0AA746B951C8830
3 changed files with 18 additions and 17 deletions

View file

@ -8,16 +8,10 @@
# should see if there is a conda package that suits your needs.
pathlib2
typing; python_version < "3.5"
click<8.0; python_version < "3.6"
click; python_version >= "3.6"
click
toml
lexid
colorama>=0.4
# looseversion is needed to parse non PEP440 versions
looseversion; python_version >= "3.5"
# setuptools is needed for pkg_resources.parse_version
# Support for Python 2 was dropped with v45
setuptools<45.0.0; python_version < "3.5"
looseversion

View file

@ -517,7 +517,13 @@ def _is_valid_version(raw_pattern: str, old_version: str, new_version: str) -> b
logger.error(f"Invalid version '{new_version}' for pattern '{raw_pattern}'")
return False
if version.parse_version(new_version) <= version.parse_version(old_version):
force_loose = not isinstance(
version.parse_version(new_version), type(version.parse_version(old_version))
)
if (
version.parse_version(new_version, force_loose)
<= version.parse_version(old_version, force_loose)
):
logger.error("Invariant violated: New version must be greater than old version ")
logger.error(f" Failed Invariant: '{new_version}' > '{old_version}'")
logger.error("If the invariant is from vcs tags try '--ignore-vcs-tag' option.")

View file

@ -9,16 +9,17 @@ import datetime as dt
MaybeInt = typ.Optional[int]
def parse_version(version: str) -> typ.Any:
def parse_version(version: str, loose: bool = False) -> typ.Any:
# pylint: disable=import-outside-toplevel; lazy import to speed up --help
if not loose:
try:
import pkg_resources
return pkg_resources.parse_version(version)
except (ImportError, ValueError):
import looseversion
pass
import looseversion
return looseversion.LooseVersion(version)