Close #15442: Expand the list of default directories ignored by filecmp.dircmp and expose it as a module attribute
This commit is contained in:
parent
60a0c71031
commit
eb2884a875
|
@ -55,10 +55,10 @@ The :class:`dircmp` class
|
|||
|
||||
.. class:: dircmp(a, b, ignore=None, hide=None)
|
||||
|
||||
Construct a new directory comparison object, to compare the directories *a* and
|
||||
*b*. *ignore* is a list of names to ignore, and defaults to ``['RCS', 'CVS',
|
||||
'tags']``. *hide* is a list of names to hide, and defaults to ``[os.curdir,
|
||||
os.pardir]``.
|
||||
Construct a new directory comparison object, to compare the directories *a*
|
||||
and *b*. *ignore* is a list of names to ignore, and defaults to
|
||||
:attr:`filecmp.DEFAULT_IGNORES`. *hide* is a list of names to hide, and
|
||||
defaults to ``[os.curdir, os.pardir]``.
|
||||
|
||||
The :class:`dircmp` class compares files by doing *shallow* comparisons
|
||||
as described for :func:`filecmp.cmp`.
|
||||
|
@ -164,6 +164,12 @@ The :class:`dircmp` class
|
|||
A dictionary mapping names in :attr:`common_dirs` to :class:`dircmp`
|
||||
objects.
|
||||
|
||||
.. attribute:: DEFAULT_IGNORES
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
||||
List of directories ignored by :class:`dircmp` by default.
|
||||
|
||||
|
||||
Here is a simplified example of using the ``subdirs`` attribute to search
|
||||
recursively through two directories to show common different files::
|
||||
|
|
|
@ -13,11 +13,15 @@ import os
|
|||
import stat
|
||||
from itertools import filterfalse
|
||||
|
||||
__all__ = ["cmp", "dircmp", "cmpfiles"]
|
||||
__all__ = ['cmp', 'dircmp', 'cmpfiles', 'DEFAULT_IGNORES']
|
||||
|
||||
_cache = {}
|
||||
BUFSIZE = 8*1024
|
||||
|
||||
DEFAULT_IGNORES = [
|
||||
'RCS', 'CVS', 'tags', '.git', '.hg', '.bzr', '_darcs', '__pycache__']
|
||||
|
||||
|
||||
def cmp(f1, f2, shallow=True):
|
||||
"""Compare two files.
|
||||
|
||||
|
@ -80,7 +84,7 @@ class dircmp:
|
|||
dircmp(a, b, ignore=None, hide=None)
|
||||
A and B are directories.
|
||||
IGNORE is a list of names to ignore,
|
||||
defaults to ['RCS', 'CVS', 'tags'].
|
||||
defaults to DEFAULT_IGNORES.
|
||||
HIDE is a list of names to hide,
|
||||
defaults to [os.curdir, os.pardir].
|
||||
|
||||
|
@ -116,7 +120,7 @@ class dircmp:
|
|||
else:
|
||||
self.hide = hide
|
||||
if ignore is None:
|
||||
self.ignore = ['RCS', 'CVS', 'tags'] # Names ignored in comparison
|
||||
self.ignore = DEFAULT_IGNORES
|
||||
else:
|
||||
self.ignore = ignore
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
import os, filecmp, shutil, tempfile
|
||||
import unittest
|
||||
from test import support
|
||||
|
@ -46,9 +45,14 @@ class DirCompareTestCase(unittest.TestCase):
|
|||
self.dir = os.path.join(tmpdir, 'dir')
|
||||
self.dir_same = os.path.join(tmpdir, 'dir-same')
|
||||
self.dir_diff = os.path.join(tmpdir, 'dir-diff')
|
||||
|
||||
# Another dir is created under dir_same, but it has a name from the
|
||||
# ignored list so it should not affect testing results.
|
||||
self.dir_ignored = os.path.join(self.dir_same, '.hg')
|
||||
|
||||
self.caseinsensitive = os.path.normcase('A') == os.path.normcase('a')
|
||||
data = 'Contents of file go here.\n'
|
||||
for dir in [self.dir, self.dir_same, self.dir_diff]:
|
||||
for dir in (self.dir, self.dir_same, self.dir_diff, self.dir_ignored):
|
||||
shutil.rmtree(dir, True)
|
||||
os.mkdir(dir)
|
||||
if self.caseinsensitive and dir is self.dir_same:
|
||||
|
@ -64,9 +68,11 @@ class DirCompareTestCase(unittest.TestCase):
|
|||
output.close()
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.dir)
|
||||
shutil.rmtree(self.dir_same)
|
||||
shutil.rmtree(self.dir_diff)
|
||||
for dir in (self.dir, self.dir_same, self.dir_diff):
|
||||
shutil.rmtree(dir)
|
||||
|
||||
def test_default_ignores(self):
|
||||
self.assertIn('.hg', filecmp.DEFAULT_IGNORES)
|
||||
|
||||
def test_cmpfiles(self):
|
||||
self.assertTrue(filecmp.cmpfiles(self.dir, self.dir, ['file']) ==
|
||||
|
|
|
@ -1387,6 +1387,10 @@ Documentation
|
|||
- Issue #15250: Document that `filecmp.dircmp()` compares files shallowly. Patch
|
||||
contributed by Chris Jerdonek.
|
||||
|
||||
- Issue #15442: Expose the default list of directories ignored by
|
||||
`filecmp.dircmp()` as a module attribute, and expand the list to more modern
|
||||
values.
|
||||
|
||||
Tests
|
||||
-----
|
||||
|
||||
|
|
Loading…
Reference in New Issue