mercurial/revlog.py
changeset 86 1b945e8ba67b
parent 84 b2e3528115da
child 94 7daef883134f
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):