equal
deleted
inserted
replaced
96 self.p.load(pos) |
96 self.p.load(pos) |
97 def __contains__(self, key): |
97 def __contains__(self, key): |
98 self.p.load() |
98 self.p.load() |
99 return key in self.p.map |
99 return key in self.p.map |
100 def __iter__(self): |
100 def __iter__(self): |
|
101 yield nullid |
101 for i in xrange(self.p.l): |
102 for i in xrange(self.p.l): |
102 try: |
103 try: |
103 yield self.p.index[i][6] |
104 yield self.p.index[i][6] |
104 except: |
105 except: |
105 self.p.load(i) |
106 self.p.load(i) |
190 return c |
191 return c |
191 |
192 |
192 def lookup(self, id): |
193 def lookup(self, id): |
193 try: |
194 try: |
194 rev = int(id) |
195 rev = int(id) |
195 if str(rev) != id: raise "mismatch" |
196 if str(rev) != id: raise ValueError |
|
197 if rev < 0: rev = self.count() + rev |
|
198 if rev < 0 or rev >= self.count: raise ValueError |
196 return self.node(rev) |
199 return self.node(rev) |
197 except: |
200 except (ValueError, OverflowError): |
198 c = [] |
201 c = [] |
199 for n in self.nodemap: |
202 for n in self.nodemap: |
200 if id in hex(n): |
203 if hex(n).startswith(id): |
201 c.append(n) |
204 c.append(n) |
202 if len(c) > 1: raise KeyError("Ambiguous identifier") |
205 if len(c) > 1: raise KeyError("Ambiguous identifier") |
203 if len(c) < 1: raise KeyError("No match found") |
206 if len(c) < 1: raise KeyError("No match found") |
204 return c[0] |
207 return c[0] |
205 |
208 |