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

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}'") logger.error(f"Invalid version '{new_version}' for pattern '{raw_pattern}'")
return False 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("Invariant violated: New version must be greater than old version ")
logger.error(f" Failed Invariant: '{new_version}' > '{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.") logger.error("If the invariant is from vcs tags try '--ignore-vcs-tag' option.")

View file

@ -9,17 +9,18 @@ import datetime as dt
MaybeInt = typ.Optional[int] 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 # pylint: disable=import-outside-toplevel; lazy import to speed up --help
try: if not loose:
import pkg_resources try:
import pkg_resources
return pkg_resources.parse_version(version)
except (ImportError, ValueError):
pass
return pkg_resources.parse_version(version) import looseversion
except (ImportError, ValueError): return looseversion.LooseVersion(version)
import looseversion
return looseversion.LooseVersion(version)
class V1CalendarInfo(typ.NamedTuple): class V1CalendarInfo(typ.NamedTuple):