So I took a peek at the setuptools code this morning and this function gets called every time it looks at the cached content:
def _is_current(self, file_path, zip_path):
"""
Return True if the file_path is current for this zip_path
"""
timestamp, size = self._get_date_and_size(self.zipinfo[zip_path])
if not os.path.isfile(file_path):
return False
stat = os.stat(file_path)
if stat.st_size!=size or stat.st_mtime!=timestamp:
return False
# check that the contents match zip_contents = self.loader.get_data(zip_path)
f = open(file_path, 'rb') file_contents = f.read()
f.close()
return zip_contents == file_contents
Notice that it checks the size and timestamp (as suggested by the bug report) but also checks the contents. So even if the file is modified, it will get replaced before being loaded.
So I took a peek at the setuptools code this morning and this function gets called every time it looks at the cached content:
def _is_current(self, file_path, zip_path): date_and_ size(self. zipinfo[ zip_path] ) isfile( file_path) : mtime!= timestamp:
zip_contents = self.loader. get_data( zip_path)
file_contents = f.read()
"""
Return True if the file_path is current for this zip_path
"""
timestamp, size = self._get_
if not os.path.
return False
stat = os.stat(file_path)
if stat.st_size!=size or stat.st_
return False
# check that the contents match
f = open(file_path, 'rb')
f.close()
return zip_contents == file_contents
Notice that it checks the size and timestamp (as suggested by the bug report) but also checks the contents. So even if the file is modified, it will get replaced before being loaded.
Thoughts?