Comment 10 for bug 1192966

Revision history for this message
Chuck Thier (cthier) wrote :

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.

Thoughts?