Skip to content

Commit

Permalink
[3.12] gh-107307: Update the importlib Docs for PEP 684 (gh-107400) (g…
Browse files Browse the repository at this point in the history
…h-107413)

gh-107307: Update the importlib Docs for PEP 684 (gh-107400)
(cherry picked from commit cf63df8)

Co-authored-by: Eric Snow <ericsnowcurrently@gmail.com>
  • Loading branch information
miss-islington and ericsnowcurrently committed Jul 28, 2023
1 parent b4355de commit e5ca2aa
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions Doc/library/importlib.rst
Original file line number Diff line number Diff line change
Expand Up @@ -941,8 +941,15 @@ find and load modules.
The *fullname* argument specifies the name of the module the loader is to
support. The *path* argument is the path to the extension module's file.

Note that, by default, importing an extension module will fail
in subinterpreters if it doesn't implement multi-phase init
(see :pep:`489`), even if it would otherwise import successfully.

.. versionadded:: 3.3

.. versionchanged:: 3.12
Multi-phase init is now required for use in subinterpreters.

.. attribute:: name

Name of the module the loader supports.
Expand Down Expand Up @@ -1248,6 +1255,30 @@ an :term:`importer`.

.. versionadded:: 3.7

.. function:: _incompatible_extension_module_restrictions(*, disable_check)

A context manager that can temporarily skip the compatibility check
for extension modules. By default the check is enabled and will fail
when a single-phase init module is imported in a subinterpreter.
It will also fail for a multi-phase init module that doesn't
explicitly support a per-interpreter GIL, when imported
in an interpreter with its own GIL.

Note that this function is meant to accommodate an unusual case;
one which is likely to eventually go away. There's is a pretty good
chance this is not what you were looking for.

You can get the same effect as this function by implementing the
basic interface of multi-phase init (:pep:`489`) and lying about
support for mulitple interpreters (or per-interpreter GIL).

.. warning::
Using this function to disable the check can lead to
unexpected behavior and even crashes. It should only be used during
extension module development.

.. versionadded:: 3.12

.. class:: LazyLoader(loader)

A class which postpones the execution of the loader of a module until the
Expand Down

0 comments on commit e5ca2aa

Please sign in to comment.