comparison mercurial/revlog.py @ 86:1b945e8ba67b

Friendlier exceptions for unknown node errors
author mpm@selenic.com
date Tue, 17 May 2005 12:20:29 -0800
parents b2e3528115da
children 7daef883134f
comparison
equal deleted inserted replaced
85:58a1a0425c9b 86:1b945e8ba67b
76 class lazymap: 76 class lazymap:
77 def __init__(self, parser): 77 def __init__(self, parser):
78 self.p = parser 78 self.p = parser
79 def load(self, key): 79 def load(self, key):
80 n = self.p.data.find(key) 80 n = self.p.data.find(key)
81 if n < 0: raise KeyError(key) 81 if n < 0: raise KeyError("node " + hex(key))
82 pos = n / self.p.s 82 pos = n / self.p.s
83 self.p.load(pos) 83 self.p.load(pos)
84 def __contains__(self, key): 84 def __contains__(self, key):
85 try: 85 try:
86 self[key] 86 self[key]
89 return False 89 return False
90 def __getitem__(self, key): 90 def __getitem__(self, key):
91 try: 91 try:
92 return self.p.map[key] 92 return self.p.map[key]
93 except KeyError: 93 except KeyError:
94 self.load(key) 94 try:
95 return self.p.map[key] 95 self.load(key)
96 return self.p.map[key]
97 except KeyError:
98 raise KeyError("node " + hex(key))
96 def __setitem__(self, key, val): 99 def __setitem__(self, key, val):
97 self.p.map[key] = val 100 self.p.map[key] = val
98 101
99 class revlog: 102 class revlog:
100 def __init__(self, opener, indexfile, datafile): 103 def __init__(self, opener, indexfile, datafile):