From dab74691cd1cd55621c943fc869f8ee821746ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= Date: Mon, 8 Jul 2019 19:08:17 +0200 Subject: [PATCH] Use importlib.metadata from the standard library on Python 3.8+ Fixes https://github.com/tox-dev/tox/issues/1367 --- CONTRIBUTORS | 1 + setup.cfg | 2 +- src/tox/config/__init__.py | 2 +- src/tox/session/commands/show_config.py | 2 +- src/tox/util/stdlib.py | 5 +++++ tox.ini | 2 +- 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 39d848b..ad0168f 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -58,6 +58,7 @@ Mattieu Agopian Michael Manganiello Mickaël Schoentgen Mikhail Kyshtymov +Miro Hrončok Monty Taylor Morgan Fainberg Nick Douma diff --git a/setup.cfg b/setup.cfg index 3950ea3..c2bb1c2 100644 --- a/setup.cfg +++ b/setup.cfg @@ -37,7 +37,7 @@ classifiers = packages = find: python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.* install_requires = - importlib-metadata >= 0.12, <1 + importlib-metadata >= 0.12, <1;python_version<"3.8" packaging >= 14 pluggy >= 0.12.0, <1 py >= 1.4.17, <2 diff --git a/src/tox/config/__init__.py b/src/tox/config/__init__.py index c1a3239..849b31f 100644 --- a/src/tox/config/__init__.py +++ b/src/tox/config/__init__.py @@ -15,7 +15,6 @@ from fnmatch import fnmatchcase from subprocess import list2cmdline from threading import Thread -import importlib_metadata import pluggy import py import toml @@ -34,6 +33,7 @@ from tox.reporter import ( verbosity1, ) from tox.util.path import ensure_empty_dir +from tox.util.stdlib import importlib_metadata from .parallel import ENV_VAR_KEY as PARALLEL_ENV_VAR_KEY from .parallel import add_parallel_config, add_parallel_flags diff --git a/src/tox/session/commands/show_config.py b/src/tox/session/commands/show_config.py index 11c5cf2..efb713a 100644 --- a/src/tox/session/commands/show_config.py +++ b/src/tox/session/commands/show_config.py @@ -1,13 +1,13 @@ import sys from collections import OrderedDict -import importlib_metadata from packaging.requirements import Requirement from packaging.utils import canonicalize_name from six import StringIO from six.moves import configparser from tox import reporter +from tox.util.stdlib import importlib_metadata DO_NOT_SHOW_CONFIG_ATTRIBUTES = ( "interpreters", diff --git a/src/tox/util/stdlib.py b/src/tox/util/stdlib.py index 0b25859..5f687b7 100644 --- a/src/tox/util/stdlib.py +++ b/src/tox/util/stdlib.py @@ -3,6 +3,11 @@ import threading from contextlib import contextmanager from tempfile import TemporaryFile +if sys.version_info >= (3, 8): + from importlib import metadata as importlib_metadata # noqa +else: + import importlib_metadata # noqa + def is_main_thread(): """returns true if we are within the main thread""" diff --git a/tox.ini b/tox.ini index fa5b321..fcb1418 100644 --- a/tox.ini +++ b/tox.ini @@ -139,7 +139,7 @@ include_trailing_comma = True force_grid_wrap = 0 line_length = 99 known_first_party = tox,tests -known_third_party = apiclient,docutils,filelock,flaky,freezegun,git,httplib2,importlib_metadata,oauth2client,packaging,pathlib2,pluggy,py,pytest,setuptools,six,sphinx,toml +known_third_party = apiclient,docutils,filelock,flaky,freezegun,git,httplib2,oauth2client,packaging,pathlib2,pluggy,py,pytest,setuptools,six,sphinx,toml [testenv:release] description = do a release, required posarg of the version number -- 2.21.0