[kernel] r13397 - dists/trunk/linux-2.6/debian/lib/python/debian_linux

Bastian Blank waldi at alioth.debian.org
Sun Apr 12 10:28:00 UTC 2009


Author: waldi
Date: Sun Apr 12 10:27:59 2009
New Revision: 13397

Log:
debian/lib/python/debian_linux/utils.py
- Don't implement the complete dict interface.
- Fix get behaviour on non-existant entries.

Modified:
   dists/trunk/linux-2.6/debian/lib/python/debian_linux/utils.py

Modified: dists/trunk/linux-2.6/debian/lib/python/debian_linux/utils.py
==============================================================================
--- dists/trunk/linux-2.6/debian/lib/python/debian_linux/utils.py	Sun Apr 12 10:26:17 2009	(r13396)
+++ dists/trunk/linux-2.6/debian/lib/python/debian_linux/utils.py	Sun Apr 12 10:27:59 2009	(r13397)
@@ -33,15 +33,17 @@
         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 @@
 
         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):



More information about the Kernel-svn-changes mailing list