]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
bpo-45324: Capture data in FrozenImporter.find_spec() to use in exec_module(). (gh...
authorEric Snow <ericsnowcurrently@gmail.com>
Tue, 5 Oct 2021 16:01:27 +0000 (10:01 -0600)
committerGitHub <noreply@github.com>
Tue, 5 Oct 2021 16:01:27 +0000 (10:01 -0600)
commitc3d9ac8b340fcbf54cee865737e67f11fcd70ed3
tree71171709f9a44e02cca8ffee4a0fe2c49335b59a
parentb9bb74871b27d9226df2dd3fce9d42bda8b43c2b
bpo-45324: Capture data in FrozenImporter.find_spec() to use in exec_module(). (gh-28633)

Before this change we end up duplicating effort and throwing away data in FrozenImporter.find_spec().  Now we do the work once in find_spec() and the only thing we do in FrozenImporter.exec_module() is turn the raw frozen data into a code object and then exec it.

We've added _imp.find_frozen(), add an arg to _imp.get_frozen_object(), and updated FrozenImporter.  We've also moved some code around to reduce duplication, get a little more consistency in outcomes, and be more efficient.

Note that this change is mostly necessary if we want to set __file__ on frozen stdlib modules. (See https://bugs.python.org/issue21736.)

https://bugs.python.org/issue45324
Lib/importlib/_bootstrap.py
Lib/test/test_importlib/frozen/test_finder.py
Lib/test/test_importlib/frozen/test_loader.py
Misc/NEWS.d/next/Core and Builtins/2021-09-29-12-02-39.bpo-45324.BTQElX.rst [new file with mode: 0644]
Python/clinic/import.c.h
Python/import.c