]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-123085: _compile_importlib: Avoid copying sources before compilation (GH...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 7 Jan 2025 11:28:03 +0000 (12:28 +0100)
committerGitHub <noreply@github.com>
Tue, 7 Jan 2025 11:28:03 +0000 (12:28 +0100)
gh-123085: _compile_importlib: Avoid copying sources before compilation (GH-124131)
(cherry picked from commit 42c8b0556c02d29e32f4c7c95e7128a343716250)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>
Lib/test/test_importlib/resources/test_files.py

index d34ea51b150f1efa8a5f1115837126cc59814991..489cc95d1d6fa5ab745c7ec8c952eadb9df355d5 100644 (file)
@@ -150,18 +150,17 @@ class ImplicitContextFilesTests(SiteDir, unittest.TestCase):
     def _compile_importlib(self):
         """
         Make a compiled-only copy of the importlib resources package.
+
+        Currently only code is copied, as importlib resources doesn't itself
+        have any resources.
         """
         bin_site = self.fixtures.enter_context(os_helper.temp_dir())
         c_resources = pathlib.Path(bin_site, 'c_resources')
         sources = pathlib.Path(resources.__file__).parent
-        shutil.copytree(sources, c_resources, ignore=lambda *_: ['__pycache__'])
-
-        for dirpath, _, filenames in os.walk(c_resources):
-            for filename in filenames:
-                source_path = pathlib.Path(dirpath) / filename
-                cfile = source_path.with_suffix('.pyc')
-                py_compile.compile(source_path, cfile)
-                pathlib.Path.unlink(source_path)
+
+        for source_path in sources.glob('**/*.py'):
+            c_path = c_resources.joinpath(source_path.relative_to(sources)).with_suffix('.pyc')
+            py_compile.compile(source_path, c_path)
         self.fixtures.enter_context(import_helper.DirsOnSysPath(bin_site))
 
     def test_implicit_files_with_compiled_importlib(self):