comparison mercurial/revlog.py @ 43574:02802fa87b74

revlog: deprecate direct `nodemap` access Now that all in-core user have been updated to the new API, we can deprecated direct access to nodemap. Differential Revision: https://phab.mercurial-scm.org/D7362
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sat, 09 Nov 2019 13:23:55 +0100
parents d3df05bab081
children f5991fd7cca7
comparison
equal deleted inserted replaced
43573:d3df05bab081 43574:02802fa87b74
203 indexformatv0_pack = indexformatv0.pack 203 indexformatv0_pack = indexformatv0.pack
204 indexformatv0_unpack = indexformatv0.unpack 204 indexformatv0_unpack = indexformatv0.unpack
205 205
206 206
207 class revlogoldindex(list): 207 class revlogoldindex(list):
208 @property
209 def nodemap(self):
210 msg = "index.nodemap is deprecated, " "use index.[has_node|rev|get_rev]"
211 util.nouideprecwarn(msg, b'5.3', stacklevel=2)
212 return self._nodemap
213
208 @util.propertycache 214 @util.propertycache
209 def nodemap(self): 215 def _nodemap(self):
210 nodemap = revlogutils.NodeMap({nullid: nullrev}) 216 nodemap = revlogutils.NodeMap({nullid: nullrev})
211 for r in range(0, len(self)): 217 for r in range(0, len(self)):
212 n = self[r][7] 218 n = self[r][7]
213 nodemap[n] = r 219 nodemap[n] = r
214 return nodemap 220 return nodemap
215 221
216 def has_node(self, node): 222 def has_node(self, node):
217 """return True if the node exist in the index""" 223 """return True if the node exist in the index"""
218 return node in self.nodemap 224 return node in self._nodemap
219 225
220 def rev(self, node): 226 def rev(self, node):
221 """return a revision for a node 227 """return a revision for a node
222 228
223 If the node is unknown, raise a RevlogError""" 229 If the node is unknown, raise a RevlogError"""
224 return self.nodemap[node] 230 return self._nodemap[node]
225 231
226 def get_rev(self, node): 232 def get_rev(self, node):
227 """return a revision for a node 233 """return a revision for a node
228 234
229 If the node is unknown, return None""" 235 If the node is unknown, return None"""
230 return self.nodemap.get(node) 236 return self._nodemap.get(node)
231 237
232 def append(self, tup): 238 def append(self, tup):
233 self.nodemap[tup[7]] = len(self) 239 self._nodemap[tup[7]] = len(self)
234 super(revlogoldindex, self).append(tup) 240 super(revlogoldindex, self).append(tup)
235 241
236 def __delitem__(self, i): 242 def __delitem__(self, i):
237 if not isinstance(i, slice) or not i.stop == -1 or i.step is not None: 243 if not isinstance(i, slice) or not i.stop == -1 or i.step is not None:
238 raise ValueError(b"deleting slices only supports a:-1 with step 1") 244 raise ValueError(b"deleting slices only supports a:-1 with step 1")
239 for r in pycompat.xrange(i.start, len(self)): 245 for r in pycompat.xrange(i.start, len(self)):
240 del self.nodemap[self[r][7]] 246 del self._nodemap[self[r][7]]
241 super(revlogoldindex, self).__delitem__(i) 247 super(revlogoldindex, self).__delitem__(i)
242 248
243 def clearcaches(self): 249 def clearcaches(self):
244 self.__dict__.pop('nodemap', None) 250 self.__dict__.pop('_nodemap', None)
245 251
246 def __getitem__(self, i): 252 def __getitem__(self, i):
247 if i == -1: 253 if i == -1:
248 return (0, 0, 0, -1, -1, -1, -1, nullid) 254 return (0, 0, 0, -1, -1, -1, -1, nullid)
249 return list.__getitem__(self, i) 255 return list.__getitem__(self, i)
577 except (ValueError, IndexError): 583 except (ValueError, IndexError):
578 raise error.RevlogError( 584 raise error.RevlogError(
579 _(b"index %s is corrupted") % self.indexfile 585 _(b"index %s is corrupted") % self.indexfile
580 ) 586 )
581 self.index, self._chunkcache = d 587 self.index, self._chunkcache = d
582 self.nodemap = self.index.nodemap
583 if not self._chunkcache: 588 if not self._chunkcache:
584 self._chunkclear() 589 self._chunkclear()
585 # revnum -> (chain-length, sum-delta-length) 590 # revnum -> (chain-length, sum-delta-length)
586 self._chaininfocache = {} 591 self._chaininfocache = {}
587 # revlog header -> revlog compressor 592 # revlog header -> revlog compressor
648 653
649 def revs(self, start=0, stop=None): 654 def revs(self, start=0, stop=None):
650 """iterate over all rev in this revlog (from start to stop)""" 655 """iterate over all rev in this revlog (from start to stop)"""
651 return storageutil.iterrevs(len(self), start=start, stop=stop) 656 return storageutil.iterrevs(len(self), start=start, stop=stop)
652 657
653 @util.propertycache 658 @property
654 def nodemap(self): 659 def nodemap(self):
660 msg = (
661 "revlog.nodemap is deprecated, "
662 "use revlog.index.[has_node|rev|get_rev]"
663 )
664 util.nouideprecwarn(msg, b'5.3', stacklevel=2)
655 return self.index.nodemap 665 return self.index.nodemap
656 666
657 @property 667 @property
658 def _nodecache(self): 668 def _nodecache(self):
659 msg = "revlog._nodecache is deprecated, use revlog.index.nodemap" 669 msg = "revlog._nodecache is deprecated, use revlog.index.nodemap"