From 51d5c18b76776c552440d4ed59995a71f20435f3 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Thu, 24 Jun 2021 16:39:44 +0200 Subject: [PATCH 1/3] Use importlib.metadata from the standard library on Python 3.10 According to the [importlib_metadata readme], all features from 4.4 were merged to Python 3.10. So, twine can have one less external dependency on the upcoming Python release. [importlib_metadata readme]: https://pypi.org/project/importlib-metadata/ --- setup.cfg | 2 +- twine/__init__.py | 7 ++++++- twine/cli.py | 9 +++++++-- twine/package.py | 7 ++++++- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/setup.cfg b/setup.cfg index dc949f20..fb2b9a27 100644 --- a/setup.cfg +++ b/setup.cfg @@ -40,7 +40,7 @@ install_requires= requests >= 2.20 requests-toolbelt >= 0.8.0, != 0.9.0 tqdm >= 4.14 - importlib_metadata >= 3.6 + importlib_metadata >= 3.6; python_version<"3.10" keyring >= 15.1 rfc3986 >= 1.4.0 colorama >= 0.4.3 diff --git a/twine/__init__.py b/twine/__init__.py index d1b590b3..4a14ce44 100644 --- a/twine/__init__.py +++ b/twine/__init__.py @@ -24,7 +24,12 @@ __copyright__ = "Copyright 2019 Donald Stufft and individual contributors" -import importlib_metadata +import sys + +if sys.version_info[:2] >= (3, 10): + from importlib import metadata as importlib_metadata +else: + import importlib_metadata metadata = importlib_metadata.metadata("twine") diff --git a/twine/cli.py b/twine/cli.py index 5f7162db..582226c8 100644 --- a/twine/cli.py +++ b/twine/cli.py @@ -12,10 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. import argparse +import sys from typing import Any, List, Tuple -from importlib_metadata import entry_points -from importlib_metadata import version +if sys.version_info[:2] >= (3, 10): + from importlib.metadata import entry_points + from importlib.metadata import version +else: + from importlib_metadata import entry_points + from importlib_metadata import version import twine diff --git a/twine/package.py b/twine/package.py index a2da7612..3d4faf45 100644 --- a/twine/package.py +++ b/twine/package.py @@ -16,9 +16,14 @@ import os import re import subprocess +import sys from typing import Dict, NamedTuple, Optional, Sequence, Tuple, Union -import importlib_metadata +if sys.version_info[:2] >= (3, 10): + import importlib.metadata as importlib_metadata +else: + import importlib_metadata + import pkginfo from twine import exceptions From 40d2e7dff0011fa5eaf955c226c6d4603cd7d0a5 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Thu, 24 Jun 2021 17:02:42 +0200 Subject: [PATCH 2/3] Add a changelog entry --- changelog/772.mics.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog/772.mics.rst diff --git a/changelog/772.mics.rst b/changelog/772.mics.rst new file mode 100644 index 00000000..07f37afd --- /dev/null +++ b/changelog/772.mics.rst @@ -0,0 +1 @@ +Remove dependency on external importlib_metadata on Python 3.10. From 002eb85fbaf9505caa94d2d04e600669db1bb9a1 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Fri, 25 Jun 2021 14:11:58 +0200 Subject: [PATCH 3/3] Use from-import for `importlib[_.]metadata` --- twine/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/twine/__init__.py b/twine/__init__.py index 4a14ce44..52d802cd 100644 --- a/twine/__init__.py +++ b/twine/__init__.py @@ -27,11 +27,11 @@ import sys if sys.version_info[:2] >= (3, 10): - from importlib import metadata as importlib_metadata + from importlib.metadata import metadata as _metadata else: - import importlib_metadata + from importlib_metadata import metadata as _metadata -metadata = importlib_metadata.metadata("twine") +metadata = _metadata("twine") __title__ = metadata["name"]