diff --git a/twine/__init__.py b/twine/__init__.py index c6147574..f302829e 100644 --- a/twine/__init__.py +++ b/twine/__init__.py @@ -31,14 +31,10 @@ __copyright__ = "Copyright 2019 Donald Stufft and individual contributors" import email.utils -import sys -if sys.version_info >= (3, 10): - import importlib.metadata as importlib_metadata -else: - import importlib_metadata +from .compat.py39 import importlib -metadata = importlib_metadata.metadata("twine") +metadata = importlib.metadata.metadata("twine") __title__ = metadata["name"] diff --git a/twine/cli.py b/twine/cli.py index 749a6452..28930462 100644 --- a/twine/cli.py +++ b/twine/cli.py @@ -13,14 +13,8 @@ # limitations under the License. import argparse import logging.config -import sys from typing import Any, List, Tuple -if sys.version_info >= (3, 10): - import importlib.metadata as importlib_metadata -else: - import importlib_metadata - import rich import rich.highlighter import rich.logging @@ -28,6 +22,9 @@ import twine +from .compat import py39 +from .compat.py39 import importlib + args = argparse.Namespace() @@ -75,16 +72,14 @@ def configure_output() -> None: def list_dependencies_and_versions() -> List[Tuple[str, str]]: - deps = [ + deps = ( "keyring", "pkginfo", "requests", "requests-toolbelt", "urllib3", - ] - if sys.version_info < (3, 10): - deps.append("importlib-metadata") - return [(dep, importlib_metadata.version(dep)) for dep in deps] + ) + py39.deps + return [(dep, importlib.metadata.version(dep)) for dep in deps] def dep_versions() -> str: @@ -94,7 +89,7 @@ def dep_versions() -> str: def dispatch(argv: List[str]) -> Any: - registered_commands = importlib_metadata.entry_points( + registered_commands = importlib.metadata.entry_points( group="twine.registered_commands" ) diff --git a/twine/compat/__init__.py b/twine/compat/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/twine/compat/py39.py b/twine/compat/py39.py new file mode 100644 index 00000000..ae111b5b --- /dev/null +++ b/twine/compat/py39.py @@ -0,0 +1,15 @@ +import sys + +if sys.version_info >= (3, 10): + import importlib.metadata + + deps = () +else: + + class importlib: + import importlib_metadata as metadata # noqa: F401 + + deps = ("importlib_metadata",) + + +__all__ = ["importlib", "deps"] diff --git a/twine/package.py b/twine/package.py index ac8e4cf1..d32c9357 100644 --- a/twine/package.py +++ b/twine/package.py @@ -18,14 +18,8 @@ import os import re import subprocess -import sys from typing import Any, Dict, List, NamedTuple, Optional, Sequence, Tuple, Union, cast -if sys.version_info >= (3, 10): - import importlib.metadata as importlib_metadata -else: - import importlib_metadata - import pkginfo from rich import print @@ -33,6 +27,8 @@ from twine import wheel from twine import wininst +from .compat.py39 import importlib + DIST_TYPES = { "bdist_wheel": wheel.Wheel, "bdist_wininst": wininst.WinInst, @@ -131,7 +127,7 @@ def from_filename(cls, filename: str, comment: Optional[str]) -> "PackageFile": py_version: Optional[str] if dtype == "bdist_egg": - (dist,) = importlib_metadata.Distribution.discover(path=[filename]) + (dist,) = importlib.metadata.Distribution.discover(path=[filename]) py_version = dist.metadata["Version"] elif dtype == "bdist_wheel": py_version = cast(wheel.Wheel, meta).py_version