Commit e7df10e7 authored by Jason R. Coombs's avatar Jason R. Coombs

Split MemoizedZipManifests from ZipManifests. Ref #154.

parent 8ef8b53e
...@@ -1533,22 +1533,8 @@ empty_provider = EmptyProvider() ...@@ -1533,22 +1533,8 @@ empty_provider = EmptyProvider()
class ZipManifests(dict): class ZipManifests(dict):
""" """
Memoized zipfile manifests. zip manifest builder
""" """
manifest_mod = collections.namedtuple('manifest_mod', 'manifest mtime')
def load(self, path):
"""
Load a manifest at path or return a suitable manifest already loaded.
"""
path = os.path.normpath(path)
mtime = os.stat(path).st_mtime
if path not in self or self[path].mtime != mtime:
manifest = self.build(path)
self[path] = self.manifest_mod(manifest, mtime)
return self[path].manifest
@classmethod @classmethod
def build(cls, path): def build(cls, path):
...@@ -1569,6 +1555,28 @@ class ZipManifests(dict): ...@@ -1569,6 +1555,28 @@ class ZipManifests(dict):
) )
return dict(items) return dict(items)
load = build
class MemoizedZipManifests(ZipManifests):
"""
Memoized zipfile manifests.
"""
manifest_mod = collections.namedtuple('manifest_mod', 'manifest mtime')
def load(self, path):
"""
Load a manifest at path or return a suitable manifest already loaded.
"""
path = os.path.normpath(path)
mtime = os.stat(path).st_mtime
if path not in self or self[path].mtime != mtime:
manifest = self.build(path)
self[path] = self.manifest_mod(manifest, mtime)
return self[path].manifest
class ContextualZipFile(zipfile.ZipFile): class ContextualZipFile(zipfile.ZipFile):
""" """
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment