debian/lib/python/debian_linux/utils.py (Templates)

- Add get method.
- Handle KeyError like dict.

svn path=/dists/trunk/linux-2.6/; revision=10135
This commit is contained in:
Bastian Blank 2008-01-18 22:45:56 +00:00
parent de44b72c27
commit 4b462b2692
1 changed files with 15 additions and 7 deletions

View File

@ -1,5 +1,7 @@
import debian, re, os, textwrap
_marker = object
class SortedDict(dict):
__slots__ = '_list',
@ -36,12 +38,7 @@ class Templates(dict):
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 @@ class Templates(dict):
if prefix == 'control':
return self._read_control(f)
return f.read()
raise KeyError(name)
def _read_control(self, f):
entries = []
@ -93,6 +89,18 @@ 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)
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