Brett Cannon added the comment:

So let's see what options we have on the table.

Status quo: picks up mutated modules as long as the mtime is granular enough. 
Fails in the face of added fails under the same conditions. Need to call 
importlib.invalidate_caches() to avoid this problem.

Add st_nlinks: Would help in the situation of an added/removed file. Doesn't 
fix mtime granularity problem. Still might need to call 
importlib.invalidate_caches() if doing more than adding files.

Drop implicit cache validation entirely: Force people to call 
importlib.invalidate_caches() no matter what (so no more accidental "it worked 
on my machine but not that other one"). Cuts down on stat call overhead by 1 
per file-based import (which benchmarking suggests doesn't get us anything).

I'm leaning towards just dropping the implicit cache invalidation and forcing 
people to call importlib.invalidate_caches() when they muck with the underlying 
modules on sys.path/__path__. This probably would have helped when we started 
to run into similar problems in the stdlib's test suite when this whole caching 
mechanism was added. Since this lowers the chance of mistakenly thinking code 
will work when deployed on other filesystems and speed things up in the 
majority of cases where people are not dynamically generating files in sys.path.

I don't know if backporting is a good idea, though, as it might catch people by 
surprise who are not trying to run on different filesystems in 3.3.1. Then 
again, being lucky in not needing to call importlib.invalidate_caches() doesn't 
mean that starting to call it properly is a bad thing in a bugfix release.

Re-opening the bug under a different name while we think about this.

----------
components: +Interpreter Core -None
resolution: wont fix -> 
stage:  -> needs patch
status: closed -> open
title: Check st_nlink in addition to st_mtime to invalidate FileFinder cache -> 
Stop checking for directory cache invalidation in importlib
versions: +Python 3.4 -Python 3.3
Added file: 
http://bugs.python.org/file29288/drop_implicit_cache_invalidation.diff

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue17330>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to