From 5f1a2f33daeab6a8efdc43bda8e5053a87aa47a8 Mon Sep 17 00:00:00 2001 From: Bruno Oliveira Date: Fri, 4 Feb 2022 18:50:48 -0300 Subject: [PATCH] Fix invalid importing of `importlib.reader` in Python 3.9 Fix #9608 --- changelog/9608.bugfix.rst | 1 + src/_pytest/assertion/rewrite.py | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 changelog/9608.bugfix.rst diff --git a/changelog/9608.bugfix.rst b/changelog/9608.bugfix.rst new file mode 100644 index 0000000000..f6b02ef53f --- /dev/null +++ b/changelog/9608.bugfix.rst @@ -0,0 +1 @@ +Fix invalid importing of ``importlib.reader`` in Python 3.9. diff --git a/src/_pytest/assertion/rewrite.py b/src/_pytest/assertion/rewrite.py index cc11e1d16a..ac461ba39b 100644 --- a/src/_pytest/assertion/rewrite.py +++ b/src/_pytest/assertion/rewrite.py @@ -44,6 +44,8 @@ if TYPE_CHECKING: from _pytest.assertion import AssertionState +if sys.version_info >= (3, 10): + from importlib.readers import FileReader assertstate_key = StashKey["AssertionState"]() @@ -276,10 +278,7 @@ def get_data(self, pathname: Union[str, bytes]) -> bytes: if sys.version_info >= (3, 10): def get_resource_reader(self, name: str) -> importlib.abc.TraversableResources: # type: ignore - from types import SimpleNamespace - from importlib.readers import FileReader - - return FileReader(SimpleNamespace(path=self._rewritten_names[name])) + return FileReader(types.SimpleNamespace(path=self._rewritten_names[name])) def _write_pyc_fp(