diff --git a/changelog/1024.misc.rst b/changelog/1024.misc.rst new file mode 100644 index 00000000..4448c34b --- /dev/null +++ b/changelog/1024.misc.rst @@ -0,0 +1 @@ +Only require ``importlib_metadata`` on older Pythons. diff --git a/twine/__init__.py b/twine/__init__.py index 0952da38..c6147574 100644 --- a/twine/__init__.py +++ b/twine/__init__.py @@ -30,9 +30,13 @@ __copyright__ = "Copyright 2019 Donald Stufft and individual contributors" -import email +import email.utils +import sys -import importlib_metadata +if sys.version_info >= (3, 10): + import importlib.metadata as importlib_metadata +else: + import importlib_metadata metadata = importlib_metadata.metadata("twine") diff --git a/twine/cli.py b/twine/cli.py index debe6199..749a6452 100644 --- a/twine/cli.py +++ b/twine/cli.py @@ -13,9 +13,14 @@ # limitations under the License. import argparse import logging.config +import sys from typing import Any, List, Tuple -import importlib_metadata +if sys.version_info >= (3, 10): + import importlib.metadata as importlib_metadata +else: + import importlib_metadata + import rich import rich.highlighter import rich.logging @@ -70,14 +75,15 @@ def configure_output() -> None: def list_dependencies_and_versions() -> List[Tuple[str, str]]: - deps = ( - "importlib-metadata", + 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] diff --git a/twine/package.py b/twine/package.py index 7283ea47..ac8e4cf1 100644 --- a/twine/package.py +++ b/twine/package.py @@ -18,9 +18,14 @@ import os import re import subprocess +import sys from typing import Any, Dict, List, NamedTuple, Optional, Sequence, Tuple, Union, cast -import importlib_metadata +if sys.version_info >= (3, 10): + import importlib.metadata as importlib_metadata +else: + import importlib_metadata + import pkginfo from rich import print