Skip to content

Commit

Permalink
Replace importlib_metadata with importlib.metadata on Python 3.8+
Browse files Browse the repository at this point in the history
  • Loading branch information
hroncok committed Jul 2, 2019
1 parent 50b846e commit 14f4bf0
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 16 deletions.
2 changes: 2 additions & 0 deletions changelog/5537.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Replace ``importlib_metadata`` backport with ``importlib.metadata`` from the
standard library on Python 3.8+.
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
'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",
]

Expand Down
8 changes: 6 additions & 2 deletions src/_pytest/config/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import warnings
from functools import lru_cache

import importlib_metadata
import py
from packaging.version import Version
from pluggy import HookimplMarker
Expand All @@ -29,6 +28,11 @@
from _pytest.outcomes import Skipped
from _pytest.warning_types import PytestConfigWarning

if sys.version_info >= (3, 8):
from importlib import metadata
else:
import importlib_metadata as metadata

hookimpl = HookimplMarker("pytest")
hookspec = HookspecMarker("pytest")

Expand Down Expand Up @@ -772,7 +776,7 @@ def _mark_plugins_for_rewrite(self, hook):

package_files = (
str(file)
for dist in importlib_metadata.distributions()
for dist in metadata.distributions()
if any(ep.group == "pytest11" for ep in dist.entry_points)
for file in dist.files or []
)
Expand Down
8 changes: 6 additions & 2 deletions testing/acceptance_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,17 @@
import types

import attr
import importlib_metadata
import py

import pytest
from _pytest.main import ExitCode
from _pytest.warnings import SHOW_PYTEST_WARNINGS_ARG

if sys.version_info >= (3, 8):
from importlib import metadata
else:
import importlib_metadata as metadata


def prepend_pythonpath(*dirs):
cur = os.getenv("PYTHONPATH")
Expand Down Expand Up @@ -137,7 +141,7 @@ class DummyDist:
def my_dists():
return (DummyDist(entry_points),)

monkeypatch.setattr(importlib_metadata, "distributions", my_dists)
monkeypatch.setattr(metadata, "distributions", my_dists)
params = ("-p", "mycov") if load_cov_early else ()
testdir.runpytest_inprocess(*params)
if load_cov_early:
Expand Down
8 changes: 6 additions & 2 deletions testing/test_assertion.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,11 @@ def check(values, value):
return check
""",
"mainwrapper.py": """\
import pytest, importlib_metadata
import pytest, sys
if sys.version_info >= (3, 8):
from importlib import metadata
else:
import importlib_metadata as metadata
class DummyEntryPoint(object):
name = 'spam'
Expand All @@ -192,7 +196,7 @@ class DummyDistInfo(object):
def distributions():
return (DummyDistInfo(),)
importlib_metadata.distributions = distributions
metadata.distributions = distributions
pytest.main()
""",
"test_foo.py": """\
Expand Down
17 changes: 10 additions & 7 deletions testing/test_config.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import sys
import textwrap

import importlib_metadata

import _pytest._code
import pytest
from _pytest.config import _iter_rewritable_modules
Expand All @@ -12,6 +10,11 @@
from _pytest.config.findpaths import getcfg
from _pytest.main import ExitCode

if sys.version_info >= (3, 8):
from importlib import metadata
else:
import importlib_metadata as metadata


class TestParseIni:
@pytest.mark.parametrize(
Expand Down Expand Up @@ -540,7 +543,7 @@ class Dist:
def my_dists():
return (Dist,)

monkeypatch.setattr(importlib_metadata, "distributions", my_dists)
monkeypatch.setattr(metadata, "distributions", my_dists)
testdir.makeconftest(
"""
pytest_plugins = "mytestplugin",
Expand Down Expand Up @@ -570,7 +573,7 @@ class Distribution:
def distributions():
return (Distribution(),)

monkeypatch.setattr(importlib_metadata, "distributions", distributions)
monkeypatch.setattr(metadata, "distributions", distributions)
with pytest.raises(ImportError):
testdir.parseconfig()

Expand All @@ -594,7 +597,7 @@ class Distribution:
def distributions():
return (Distribution(),)

monkeypatch.setattr(importlib_metadata, "distributions", distributions)
monkeypatch.setattr(metadata, "distributions", distributions)
testdir.parseconfig()


Expand All @@ -619,7 +622,7 @@ class Distribution:
def distributions():
return (Distribution(),)

monkeypatch.setattr(importlib_metadata, "distributions", distributions)
monkeypatch.setattr(metadata, "distributions", distributions)
args = ("-p", "no:mytestplugin") if block_it else ()
config = testdir.parseconfig(*args)
config.pluginmanager.import_plugin("mytestplugin")
Expand Down Expand Up @@ -655,7 +658,7 @@ def distributions():
return (Distribution(),)

monkeypatch.setenv("PYTEST_DISABLE_PLUGIN_AUTOLOAD", "1")
monkeypatch.setattr(importlib_metadata, "distributions", distributions)
monkeypatch.setattr(metadata, "distributions", distributions)
monkeypatch.setitem(sys.modules, "mytestplugin", PseudoPlugin())
config = testdir.parseconfig(*parse_args)
has_loaded = config.pluginmanager.get_plugin("mytestplugin") is not None
Expand Down
9 changes: 7 additions & 2 deletions testing/test_entry_points.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
import importlib_metadata
import sys

if sys.version_info >= (3, 8):
from importlib import metadata
else:
import importlib_metadata as metadata


def test_pytest_entry_points_are_identical():
dist = importlib_metadata.distribution("pytest")
dist = metadata.distribution("pytest")
entry_map = {ep.name: ep for ep in dist.entry_points}
assert entry_map["pytest"].value == entry_map["py.test"].value

0 comments on commit 14f4bf0

Please sign in to comment.