Update import mode documentation to not refer to __import__() anymore. (#10747)

Nowadays, the prepend and append import modes use importlib.import_module() instead of __import__().

There was a phrase “which avoids having to use `__import__`”, in which I couldn’t just replace `__import__` by `importlib.import_module` because the latter is used (in insert_missing_modules()) also when using importlib mode. Therefore I removed the part from the sentence.
This commit is contained in:
Manuel Jacob 2023-02-18 22:55:46 +01:00 committed by GitHub
parent 051f8f1f0f
commit da626e7186
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 6 deletions

View File

@ -16,7 +16,7 @@ import process can be controlled through the ``--import-mode`` command-line flag
these values: these values:
* ``prepend`` (default): the directory path containing each module will be inserted into the *beginning* * ``prepend`` (default): the directory path containing each module will be inserted into the *beginning*
of :py:data:`sys.path` if not already there, and then imported with the :func:`__import__ <__import__>` builtin. of :py:data:`sys.path` if not already there, and then imported with the :func:`importlib.import_module <importlib.import_module>` function.
This requires test module names to be unique when the test directory tree is not arranged in This requires test module names to be unique when the test directory tree is not arranged in
packages, because the modules will put in :py:data:`sys.modules` after importing. packages, because the modules will put in :py:data:`sys.modules` after importing.
@ -24,7 +24,7 @@ these values:
This is the classic mechanism, dating back from the time Python 2 was still supported. This is the classic mechanism, dating back from the time Python 2 was still supported.
* ``append``: the directory containing each module is appended to the end of :py:data:`sys.path` if not already * ``append``: the directory containing each module is appended to the end of :py:data:`sys.path` if not already
there, and imported with ``__import__``. there, and imported with :func:`importlib.import_module <importlib.import_module>`.
This better allows to run test modules against installed versions of a package even if the This better allows to run test modules against installed versions of a package even if the
package under test has the same import root. For example: package under test has the same import root. For example:
@ -43,7 +43,7 @@ these values:
Same as ``prepend``, requires test module names to be unique when the test directory tree is Same as ``prepend``, requires test module names to be unique when the test directory tree is
not arranged in packages, because the modules will put in :py:data:`sys.modules` after importing. not arranged in packages, because the modules will put in :py:data:`sys.modules` after importing.
* ``importlib``: new in pytest-6.0, this mode uses :mod:`importlib` to import test modules. This gives full control over the import process, and doesn't require changing :py:data:`sys.path`. * ``importlib``: new in pytest-6.0, this mode uses more fine control mechanisms provided by :mod:`importlib` to import test modules. This gives full control over the import process, and doesn't require changing :py:data:`sys.path`.
For this reason this doesn't require test module names to be unique. For this reason this doesn't require test module names to be unique.

View File

@ -477,14 +477,14 @@ def import_path(
* `mode == ImportMode.prepend`: the directory containing the module (or package, taking * `mode == ImportMode.prepend`: the directory containing the module (or package, taking
`__init__.py` files into account) will be put at the *start* of `sys.path` before `__init__.py` files into account) will be put at the *start* of `sys.path` before
being imported with `__import__. being imported with `importlib.import_module`.
* `mode == ImportMode.append`: same as `prepend`, but the directory will be appended * `mode == ImportMode.append`: same as `prepend`, but the directory will be appended
to the end of `sys.path`, if not already in `sys.path`. to the end of `sys.path`, if not already in `sys.path`.
* `mode == ImportMode.importlib`: uses more fine control mechanisms provided by `importlib` * `mode == ImportMode.importlib`: uses more fine control mechanisms provided by `importlib`
to import the module, which avoids having to use `__import__` and muck with `sys.path` to import the module, which avoids having to muck with `sys.path` at all. It effectively
at all. It effectively allows having same-named test modules in different places. allows having same-named test modules in different places.
:param root: :param root:
Used as an anchor when mode == ImportMode.importlib to obtain Used as an anchor when mode == ImportMode.importlib to obtain