From e7df10e709c9a847e14d1db8d744b39c0183cf8c Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 5 Jul 2014 11:57:04 -0400 Subject: Split MemoizedZipManifests from ZipManifests. Ref #154. --- pkg_resources.py | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/pkg_resources.py b/pkg_resources.py index b2631be7..f4c7f5e9 100644 --- a/pkg_resources.py +++ b/pkg_resources.py @@ -1533,22 +1533,8 @@ empty_provider = EmptyProvider() 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 def build(cls, path): @@ -1569,6 +1555,28 @@ class ZipManifests(dict): ) 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): """ -- cgit v1.2.1