filecmp.cmp() cache
Peter Otten
__peter__ at web.de
Thu Feb 15 17:43:06 EST 2007
Mattias Brändström wrote:
> On Feb 15, 5:56 pm, Peter Otten <__pete... at web.de> wrote:
>> You can clear the cache with
>>
>> filecmp._cache = {}
>>
>> as a glance into the filecmp module would have shown.
>
> You are right, a quick glance would have enlighten me. Next time I
> will RTFS first. :-)
>
>> If you don't want to use the cache at all (untested):
>>
>> class NoCache:
>> def __setitem__(self, key, value):
>> pass
>> def get(self, key):
>> return None
>> filecmp._cache = NoCache()
>>
>
> Just one small tought/question. How likely am I to run into trouble
> because of this? I mean, by setting _cache to another value I'm
> mucking about in filecmp's implementation details. Is this generally
> considered OK when dealing with Python's standard library?
I think it's a feature that Python lends itself to monkey-patching, but
still there are a few things to consider:
- Every hack increases the likelihood that your app will break in the next
version of Python.
- You take some responsibility for the "patched" code. It's no longer the
tried and tested module as provided by the core developers.
- The module may be used elsewhere in the standard library or third-party
packages, and failures (or in the above example: performance degradation)
may ensue.
For a script and a relatively obscure module like 'filecmp' monkey-patching
is probably OK, but for a larger app or a module like 'os' that is heavily
used throughout the standard lib I would play it safe and reimplement.
Peter
More information about the Python-list
mailing list