summaryrefslogtreecommitdiffstats
path: root/Lib/importlib/util.py
diff options
context:
space:
mode:
authorEric Snow <ericsnowcurrently@gmail.com>2023-06-08 18:19:58 (GMT)
committerGitHub <noreply@github.com>2023-06-08 18:19:58 (GMT)
commit34c63b86d3c33a85acf55a0c5c118304754e145d (patch)
tree51cc4d5fcd0e1c58394d458ccc472a680ad9132b /Lib/importlib/util.py
parent7799c8e678f759c7787785c6287140abe641d1b9 (diff)
downloadcpython-34c63b86d3c33a85acf55a0c5c118304754e145d.zip
cpython-34c63b86d3c33a85acf55a0c5c118304754e145d.tar.gz
cpython-34c63b86d3c33a85acf55a0c5c118304754e145d.tar.bz2
gh-104310: Rename the New Function in importlib.util (gh-105255)
The original name wasn't as clear as it could have been. This change includes the following: * rename the function * change the default value for "disable_check" to False * add clues to the docstring that folks should probably not use the function --------- Co-authored-by: Kirill Podoprigora <kirill.bast9@mail.ru>
Diffstat (limited to 'Lib/importlib/util.py')
-rw-r--r--Lib/importlib/util.py26
1 files changed, 21 insertions, 5 deletions
diff --git a/Lib/importlib/util.py b/Lib/importlib/util.py
index b1d9271..f4d6e82 100644
--- a/Lib/importlib/util.py
+++ b/Lib/importlib/util.py
@@ -116,12 +116,24 @@ def find_spec(name, package=None):
# is imported by runpy, which means we want to avoid any unnecessary
# dependencies. Thus we use a class.
-class allowing_all_extensions:
- """A context manager that lets users skip the compatibility check.
+class _incompatible_extension_module_restrictions:
+ """A context manager that can temporarily skip the compatibility check.
+
+ NOTE: 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.
+
+ 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.
+
+ If "disable_check" is True then the compatibility check will not
+ happen while the context manager is active. Otherwise the check
+ *will* happen.
Normally, extensions that do not support multiple interpreters
may not be imported in a subinterpreter. That implies modules
- that do not implement multi-phase init.
+ that do not implement multi-phase init or that explicitly of out.
Likewise for modules import in a subinterpeter with its own GIL
when the extension does not support a per-interpreter GIL. This
@@ -130,10 +142,14 @@ class allowing_all_extensions:
In both cases, this context manager may be used to temporarily
disable the check for compatible extension modules.
+
+ 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).
"""
- def __init__(self, disable_check=True):
- self.disable_check = disable_check
+ def __init__(self, *, disable_check):
+ self.disable_check = bool(disable_check)
def __enter__(self):
self.old = _imp._override_multi_interp_extensions_check(self.override)