filecmp.cmp() cache

Steve Holden steve at holdenweb.com
Thu Feb 15 20:19:15 EST 2007


Peter Otten wrote:
> 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.
> 
It would probably be a good idea to add a clear_cache() function to the 
module API for 2.6 to avoid such issues.

regards
  Steve
-- 
Steve Holden       +44 150 684 7255  +1 800 494 3119
Holden Web LLC/Ltd          http://www.holdenweb.com
Skype: holdenweb     http://del.icio.us/steve.holden
Blog of Note:          http://holdenweb.blogspot.com
See you at PyCon?         http://us.pycon.org/TX2007




More information about the Python-list mailing list