aboutsummaryrefslogtreecommitdiffstats
path: root/debian/lib
diff options
context:
space:
mode:
Diffstat (limited to 'debian/lib')
-rw-r--r--debian/lib/python/debian_linux/utils.py25
1 files changed, 12 insertions, 13 deletions
diff --git a/debian/lib/python/debian_linux/utils.py b/debian/lib/python/debian_linux/utils.py
index b0ff1a6e2617..077d7008e95a 100644
--- a/debian/lib/python/debian_linux/utils.py
+++ b/debian/lib/python/debian_linux/utils.py
@@ -33,15 +33,17 @@ class SortedDict(dict):
for i in iter(self._list):
yield self[i]
-class Templates(dict):
+class Templates(object):
def __init__(self, dirs = ["debian/templates"]):
self.dirs = dirs
- def __getitem__(self, key):
- return self.get(key)
+ self._cache = {}
- def __setitem__(self, key, value):
- raise NotImplemented()
+ def __getitem__(self, key):
+ ret = self.get(key)
+ if ret is not None:
+ return ret
+ raise KeyError(key)
def _read(self, name):
prefix, id = name.split('.', 1)
@@ -89,16 +91,13 @@ class Templates(dict):
return entries
- def get(self, key, default = _marker):
- ret = super(Templates, self).get(key, _marker)
- if ret is not _marker:
- return ret
- value = self._read(key)
+ def get(self, key, default=None):
+ if key in self._cache:
+ return self._cache[key]
+
+ value = self._cache.setdefault(key, self._read(key))
if value is None:
- if default is _marker:
- raise KeyError(key)
return default
- super(Templates, self).__setitem__(key, value)
return value
class TextWrapper(textwrap.TextWrapper):