Skip to content

Commit

Permalink
Merge pull request #8503 from pytest-dev/require_setuptools
Browse files Browse the repository at this point in the history
 monkeypatch.syspath_prepend: Skip fixup_namespace_packages if pkg_resources not imported
  • Loading branch information
RonnyPfannschmidt committed Apr 1, 2021
2 parents 0061ec5 + 778d2b2 commit 9c151a6
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
4 changes: 4 additions & 0 deletions changelog/8503.trivial.rst
@@ -0,0 +1,4 @@
:meth:`pytest.MonkeyPatch.syspath_prepend` no longer fails when
``setuptools`` is not installed.
It now only calls :func:`pkg_resources.fixup_namespace_packages` if
``pkg_resources`` was previously imported, because it is not needed otherwise.
7 changes: 5 additions & 2 deletions src/_pytest/monkeypatch.py
Expand Up @@ -312,14 +312,17 @@ def delenv(self, name: str, raising: bool = True) -> None:

def syspath_prepend(self, path) -> None:
"""Prepend ``path`` to ``sys.path`` list of import locations."""
from pkg_resources import fixup_namespace_packages

if self._savesyspath is None:
self._savesyspath = sys.path[:]
sys.path.insert(0, str(path))

# https://github.com/pypa/setuptools/blob/d8b901bc/docs/pkg_resources.txt#L162-L171
fixup_namespace_packages(str(path))
# this is only needed when pkg_resources was already loaded by the namespace package
if "pkg_resources" in sys.modules:
from pkg_resources import fixup_namespace_packages

fixup_namespace_packages(str(path))

# A call to syspathinsert() usually means that the caller wants to
# import some dynamically created files, thus with python3 we
Expand Down

0 comments on commit 9c151a6

Please sign in to comment.