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

Bastian Blank waldi at alioth.debian.org
Fri Jan 18 22:45:56 UTC 2008


Author: waldi
Date: Fri Jan 18 22:45:56 2008
New Revision: 10135

Log:
debian/lib/python/debian_linux/utils.py (Templates)
- Add get method.
- Handle KeyError like dict.


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	(original)
+++ dists/trunk/linux-2.6/debian/lib/python/debian_linux/utils.py	Fri Jan 18 22:45:56 2008
@@ -1,5 +1,7 @@
 import debian, re, os, textwrap
 
+_marker = object
+
 class SortedDict(dict):
     __slots__ = '_list',
 
@@ -36,12 +38,7 @@
         self.dirs = dirs
 
     def __getitem__(self, key):
-        try:
-            return super(Templates, self).__getitem__(key)
-        except KeyError: pass
-        value = self._read(key)
-        super(Templates, self).__setitem__(key, value)
-        return value
+        return self.get(key)
 
     def __setitem__(self, key, value):
         raise NotImplemented()
@@ -56,7 +53,6 @@
                 if prefix == 'control':
                     return self._read_control(f)
                 return f.read()
-        raise KeyError(name)
 
     def _read_control(self, f):
         entries = []
@@ -93,6 +89,18 @@
 
         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)
+        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):
     wordsep_re = re.compile(
         r'(\s+|'                                  # any whitespace



More information about the Kernel-svn-changes mailing list