Skip to content

Commit 3724ddd

Browse files
committed
Import packaging.version only if required
1 parent 97a4f23 commit 3724ddd

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

setuptools_git_versioning.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,15 @@
1313
from datetime import datetime
1414
from pathlib import Path
1515
from pprint import pformat
16-
from typing import Any, Callable
16+
from typing import TYPE_CHECKING, Any, Callable
1717

18-
from packaging.version import Version
19-
from setuptools.dist import Distribution
18+
if TYPE_CHECKING:
19+
# avoid importing 'packaging' because setuptools-git-versioning can be installed using sdist
20+
# without this package installed
21+
from packaging.version import Version
22+
23+
# used only for mypy check
24+
from setuptools.dist import Distribution
2025

2126
DEFAULT_TEMPLATE = "{tag}"
2227
DEFAULT_DEV_TEMPLATE = "{tag}.post{ccount}+git.{sha}"
@@ -480,6 +485,8 @@ def _get_version_from_callback(
480485

481486

482487
def _sanitize_version(version: str) -> str:
488+
from packaging.version import Version
489+
483490
log.log(INFO, "Before sanitization %r", version)
484491

485492
public, sep, local = version.partition("+")
@@ -524,7 +531,7 @@ def version_from_git(
524531
if line.startswith("Version:"):
525532
result = line[8:].strip()
526533
log.log(INFO, "Return %r", result)
527-
return _sanitize_version(result)
534+
return result
528535

529536
if version_callback is not None:
530537
if version_file is not None:
@@ -638,6 +645,8 @@ def version_from_git(
638645

639646

640647
def get_version(config: dict | None = None, root: str | os.PathLike | None = None) -> Version:
648+
from packaging.version import Version
649+
641650
if not config:
642651
log.log(INFO, "No explicit config passed")
643652
log.log(INFO, "Searching for config files in '%s' folder", root or os.getcwd())

0 commit comments

Comments
 (0)