From b9a8465ce465039f1913becb6455f3bc34213a12 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Thu, 4 Jul 2019 21:46:43 -0300 Subject: [PATCH] Replace importlib_metadata with importlib.metadata on Python 3.8+ (#5539) --- changelog/5523.bugfix.rst | 1 + changelog/5537.bugfix.rst | 2 ++ setup.py | 2 +- src/_pytest/compat.py | 6 ++++++ src/_pytest/config/__init__.py | 2 +- testing/acceptance_test.py | 2 +- testing/test_assertion.py | 3 ++- testing/test_config.py | 3 +-- testing/test_entry_points.py | 2 +- 9 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 changelog/5523.bugfix.rst create mode 100644 changelog/5537.bugfix.rst diff --git a/changelog/5523.bugfix.rst b/changelog/5523.bugfix.rst new file mode 100644 index 000000000..5155b92b1 --- /dev/null +++ b/changelog/5523.bugfix.rst @@ -0,0 +1 @@ +Fixed using multiple short options together in the command-line (for example ``-vs``) in Python 3.8+. diff --git a/changelog/5537.bugfix.rst b/changelog/5537.bugfix.rst new file mode 100644 index 000000000..0263e8cdf --- /dev/null +++ b/changelog/5537.bugfix.rst @@ -0,0 +1,2 @@ +Replace ``importlib_metadata`` backport with ``importlib.metadata`` from the +standard library on Python 3.8+. diff --git a/setup.py b/setup.py index 18d32201c..491a6f554 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ INSTALL_REQUIRES = [ 'pathlib2>=2.2.0;python_version<"3.6"', 'colorama;sys_platform=="win32"', "pluggy>=0.12,<1.0", - "importlib-metadata>=0.12", + 'importlib-metadata>=0.12;python_version<"3.8"', "wcwidth", ] diff --git a/src/_pytest/compat.py b/src/_pytest/compat.py index 38531a9d4..d0add5302 100644 --- a/src/_pytest/compat.py +++ b/src/_pytest/compat.py @@ -62,6 +62,12 @@ else: return None +if sys.version_info >= (3, 8): + from importlib import metadata as importlib_metadata # noqa +else: + import importlib_metadata # noqa + + def _format_args(func): return str(signature(func)) diff --git a/src/_pytest/config/__init__.py b/src/_pytest/config/__init__.py index 6d44bf3d7..b35faffb9 100644 --- a/src/_pytest/config/__init__.py +++ b/src/_pytest/config/__init__.py @@ -13,7 +13,6 @@ import sys import types import warnings -import importlib_metadata import py import six from packaging.version import Version @@ -31,6 +30,7 @@ from .findpaths import exists from _pytest import deprecated from _pytest._code import ExceptionInfo from _pytest._code import filter_traceback +from _pytest.compat import importlib_metadata from _pytest.compat import lru_cache from _pytest.compat import safe_str from _pytest.outcomes import fail diff --git a/testing/acceptance_test.py b/testing/acceptance_test.py index 4079cddb6..9b33930a0 100644 --- a/testing/acceptance_test.py +++ b/testing/acceptance_test.py @@ -9,11 +9,11 @@ import textwrap import types import attr -import importlib_metadata import py import six import pytest +from _pytest.compat import importlib_metadata from _pytest.main import EXIT_NOTESTSCOLLECTED from _pytest.main import EXIT_USAGEERROR from _pytest.warnings import SHOW_PYTEST_WARNINGS_ARG diff --git a/testing/test_assertion.py b/testing/test_assertion.py index a94dcd701..225362e64 100644 --- a/testing/test_assertion.py +++ b/testing/test_assertion.py @@ -180,7 +180,8 @@ class TestImportHookInstallation(object): return check """, "mainwrapper.py": """\ - import pytest, importlib_metadata + import pytest + from _pytest.compat import importlib_metadata class DummyEntryPoint(object): name = 'spam' diff --git a/testing/test_config.py b/testing/test_config.py index 7cf37bf30..217879038 100644 --- a/testing/test_config.py +++ b/testing/test_config.py @@ -6,10 +6,9 @@ from __future__ import print_function import sys import textwrap -import importlib_metadata - import _pytest._code import pytest +from _pytest.compat import importlib_metadata from _pytest.config import _iter_rewritable_modules from _pytest.config.exceptions import UsageError from _pytest.config.findpaths import determine_setup diff --git a/testing/test_entry_points.py b/testing/test_entry_points.py index ad64d004f..95ebc415b 100644 --- a/testing/test_entry_points.py +++ b/testing/test_entry_points.py @@ -3,7 +3,7 @@ from __future__ import absolute_import from __future__ import division from __future__ import print_function -import importlib_metadata +from _pytest.compat import importlib_metadata def test_pytest_entry_points_are_identical():