summaryrefslogtreecommitdiffstats
path: root/Lib/filecmp.py
diff options
context:
space:
mode:
authorNed Deily <nad@acm.org>2013-06-14 22:19:11 (GMT)
committerNed Deily <nad@acm.org>2013-06-14 22:19:11 (GMT)
commit7bff3cbe3de7bc96575396ad3fd7bfc6058eaa94 (patch)
tree946c2fb6a2f593ece017c84bc8adf9cd3f1214d2 /Lib/filecmp.py
parent3fe35e65034de82c45e2d8fe1ebe4a2929c68453 (diff)
downloadcpython-7bff3cbe3de7bc96575396ad3fd7bfc6058eaa94.zip
cpython-7bff3cbe3de7bc96575396ad3fd7bfc6058eaa94.tar.gz
cpython-7bff3cbe3de7bc96575396ad3fd7bfc6058eaa94.tar.bz2
Issue #18149: Add filecmp.clear_cache() to manually clear the filecmp cache.
Patch by Mark Levitt
Diffstat (limited to 'Lib/filecmp.py')
-rw-r--r--Lib/filecmp.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/Lib/filecmp.py b/Lib/filecmp.py
index 014c0d0..3285288 100644
--- a/Lib/filecmp.py
+++ b/Lib/filecmp.py
@@ -6,6 +6,7 @@ Classes:
Functions:
cmp(f1, f2, shallow=True) -> int
cmpfiles(a, b, common) -> ([], [], [])
+ clear_cache()
"""
@@ -13,7 +14,7 @@ import os
import stat
from itertools import filterfalse
-__all__ = ['cmp', 'dircmp', 'cmpfiles', 'DEFAULT_IGNORES']
+__all__ = ['clear_cache', 'cmp', 'dircmp', 'cmpfiles', 'DEFAULT_IGNORES']
_cache = {}
BUFSIZE = 8*1024
@@ -21,6 +22,9 @@ BUFSIZE = 8*1024
DEFAULT_IGNORES = [
'RCS', 'CVS', 'tags', '.git', '.hg', '.bzr', '_darcs', '__pycache__']
+def clear_cache():
+ """Clear the filecmp cache."""
+ _cache.clear()
def cmp(f1, f2, shallow=True):
"""Compare two files.
@@ -39,7 +43,8 @@ def cmp(f1, f2, shallow=True):
True if the files are the same, False otherwise.
This function uses a cache for past comparisons and the results,
- with a cache invalidation mechanism relying on stale signatures.
+ with a cache invalidation mechanism relying on stale signatures
+ or by explicitly calling clear_cache().
"""
@@ -56,7 +61,7 @@ def cmp(f1, f2, shallow=True):
if outcome is None:
outcome = _do_cmp(f1, f2)
if len(_cache) > 100: # limit the maximum size of the cache
- _cache.clear()
+ clear_cache()
_cache[f1, f2, s1, s2] = outcome
return outcome