]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-141081: Revert "Add a `.gitignore` file to `__pycache__` folders (#141162)" (...
authorHugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Mon, 15 Dec 2025 19:27:06 +0000 (21:27 +0200)
committerGitHub <noreply@github.com>
Mon, 15 Dec 2025 19:27:06 +0000 (21:27 +0200)
Doc/whatsnew/3.15.rst
Lib/importlib/_bootstrap_external.py
Lib/py_compile.py
Lib/test/test_compileall.py
Lib/test/test_importlib/source/test_file_loader.py
Lib/test/test_py_compile.py
Misc/NEWS.d/next/Library/2025-11-06-17-37-51.gh-issue-141081.NJtULs.rst [deleted file]

index 19762584ef798c709af131fd7c0d502e7160f6fb..a67b7153e238de8ad3cfa85cfad192c92d0cbd8b 100644 (file)
@@ -74,8 +74,6 @@ Summary -- Release highlights
 * :pep:`782`: :ref:`A new PyBytesWriter C API to create a Python bytes object
   <whatsnew315-pep782>`
 * :ref:`Improved error messages <whatsnew315-improved-error-messages>`
-* :ref:`__pycache__ directories now contain a .gitignore file
-  <whatsnew315-pycache-gitignore>`
 
 
 New features
@@ -399,12 +397,6 @@ Other language changes
   for any class.
   (Contributed by Serhiy Storchaka in :gh:`41779`.)
 
-.. _whatsnew315-pycache-gitignore:
-
-* :file:`__pycache__` directories now contain a :file:`.gitignore` file for Git
-  that ignores their contents.
-  (Contributed by Stan Ulbrych in :gh:`141081`.)
-
 
 New modules
 ===========
index a3089de4705f730166c22911241c256ccb04f841..b576ceb1ce9f6e9b1a0bf7e199fee3b57d328fc8 100644 (file)
@@ -967,19 +967,6 @@ class SourceFileLoader(FileLoader, SourceLoader):
                 _bootstrap._verbose_message('could not create {!r}: {!r}',
                                             parent, exc)
                 return
-
-            if part == _PYCACHE:
-                gitignore = _path_join(parent, '.gitignore')
-                try:
-                    _path_stat(gitignore)
-                except FileNotFoundError:
-                    gitignore_content = b'# Created by CPython\n*\n'
-                    try:
-                        _write_atomic(gitignore, gitignore_content, _mode)
-                    except OSError:
-                        pass
-                except OSError:
-                    pass
         try:
             _write_atomic(path, data, _mode)
             _bootstrap._verbose_message('created {!r}', path)
index b8324e7256a566ad045714139161052f3e67bcd9..43d8ec90ffb6b1d3f5456dd3bbfe37f3f800a20a 100644 (file)
@@ -155,14 +155,6 @@ def compile(file, cfile=None, dfile=None, doraise=False, optimize=-1,
         dirname = os.path.dirname(cfile)
         if dirname:
             os.makedirs(dirname)
-            if os.path.basename(dirname) == '__pycache__':
-                gitignore = os.path.join(dirname, '.gitignore')
-                if not os.path.exists(gitignore):
-                    try:
-                        with open(gitignore, 'wb') as f:
-                            f.write(b'# Created by CPython\n*\n')
-                    except OSError:
-                        pass
     except FileExistsError:
         pass
     if invalidation_mode == PycInvalidationMode.TIMESTAMP:
index c7c44299c5a82988b85b4d3f1626bc3569485bec..8384c183dd92ddd754536d0873e5bb0bc4eebe61 100644 (file)
@@ -625,10 +625,8 @@ class CommandLineTestsBase:
                 ['-m', 'compileall', '-q', self.pkgdir]))
             # Verify the __pycache__ directory contents.
             self.assertTrue(os.path.exists(self.pkgdir_cachedir))
-            expected = ['.gitignore'] + sorted(
-                base.format(sys.implementation.cache_tag, ext)
-                for base in ('__init__.{}.{}', 'bar.{}.{}')
-            )
+            expected = sorted(base.format(sys.implementation.cache_tag, ext)
+                              for base in ('__init__.{}.{}', 'bar.{}.{}'))
             self.assertEqual(sorted(os.listdir(self.pkgdir_cachedir)), expected)
             # Make sure there are no .pyc files in the source directory.
             self.assertFalse([fn for fn in os.listdir(self.pkgdir)
index 5e88f0dbed081e4ac38eb014465c8106b59d7af6..5d5d4722171a8eaaf0665332918c54e7bbabeadd 100644 (file)
@@ -180,21 +180,6 @@ class SimpleTest:
                 data[8:16],
             )
 
-    @util.writes_bytecode_files
-    def test_gitignore_in_pycache(self):
-        with util.create_modules('_temp') as mapping:
-            source = mapping['_temp']
-            loader = self.machinery.SourceFileLoader('_temp', source)
-            mod = types.ModuleType('_temp')
-            mod.__spec__ = self.util.spec_from_loader('_temp', loader)
-            loader.exec_module(mod)
-            pyc = os.path.dirname(self.util.cache_from_source(source))
-            gitignore = os.path.join(pyc, '.gitignore')
-            self.assertTrue(os.path.exists(gitignore))
-            with open(gitignore, 'rb') as f:
-                t = f.read()
-            self.assertEqual(t, b'# Created by CPython\n*\n')
-
 
 (Frozen_SimpleTest,
  Source_SimpleTest
index fdfb124c0518840b1c42d1fc4d69efa9ea0d9828..64387296e8462133e8976784a5f868c10471fc88 100644 (file)
@@ -207,16 +207,6 @@ class PyCompileTestsBase:
             with self.assertRaises(py_compile.PyCompileError):
                 py_compile.compile(bad_coding, doraise=True, quiet=1)
 
-    def test_gitignore_created(self):
-        py_compile.compile(self.source_path)
-        self.assertTrue(os.path.exists(self.cache_path))
-        pyc = os.path.dirname(self.cache_path)
-        gitignore = os.path.join(pyc, '.gitignore')
-        self.assertTrue(os.path.exists(gitignore))
-        with open(gitignore, 'rb') as f:
-            text = f.read()
-        self.assertEqual(text, b'# Created by CPython\n*\n')
-
 
 class PyCompileTestsWithSourceEpoch(PyCompileTestsBase,
                                     unittest.TestCase,
diff --git a/Misc/NEWS.d/next/Library/2025-11-06-17-37-51.gh-issue-141081.NJtULs.rst b/Misc/NEWS.d/next/Library/2025-11-06-17-37-51.gh-issue-141081.NJtULs.rst
deleted file mode 100644 (file)
index 2b64f68..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-When ``__pycache__`` directories are created, they now contain a
-``.gitignore`` file that ignores their contents.