lazy import pkg_resources for faster cli

This commit is contained in:
Manuel Barkhau 2021-03-18 18:40:13 +00:00
parent 8f437ef9c7
commit 92213162c2
2 changed files with 10 additions and 6 deletions

View file

@ -14,7 +14,6 @@ import subprocess as sp
import click import click
import colorama import colorama
import pkg_resources
from . import vcs from . import vcs
from . import config from . import config
@ -509,7 +508,7 @@ 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 pkg_resources.parse_version(new_version) <= pkg_resources.parse_version(old_version): if version.parse_version(new_version) <= version.parse_version(old_version):
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}'")
return False return False
@ -651,7 +650,7 @@ def get_latest_vcs_version_tag(cfg: config.Config, fetch: bool) -> typ.Optional[
version_tags = [tag for tag in all_tags if v1version.is_valid(tag, cfg.version_pattern)] version_tags = [tag for tag in all_tags if v1version.is_valid(tag, cfg.version_pattern)]
if version_tags: if version_tags:
version_tags.sort(key=pkg_resources.parse_version, reverse=True) version_tags.sort(key=version.parse_version, reverse=True)
_debug_tags = ", ".join(version_tags[:3]) _debug_tags = ", ".join(version_tags[:3])
logger.debug(f"found tags: {_debug_tags} ... ({len(version_tags)} in total)") logger.debug(f"found tags: {_debug_tags} ... ({len(version_tags)} in total)")
return version_tags[0] return version_tags[0]

View file

@ -6,9 +6,14 @@
import typing as typ import typing as typ
import datetime as dt import datetime as dt
MaybeInt = typ.Optional[int]
def parse_version(version: str) -> typ.Any:
# pylint: disable=import-outside-toplevel; lazy import to speed up --help
import pkg_resources import pkg_resources
MaybeInt = typ.Optional[int] return pkg_resources.parse_version(version)
class V1CalendarInfo(typ.NamedTuple): class V1CalendarInfo(typ.NamedTuple):
@ -171,4 +176,4 @@ def to_pep440(version: str) -> str:
>>> to_pep440("v201811.0007-beta") >>> to_pep440("v201811.0007-beta")
'201811.7b0' '201811.7b0'
""" """
return str(pkg_resources.parse_version(version)) return str(parse_version(version))