comparison mercurial/pure/parsers.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 b56de57c45ce
children c207c46a86b9
comparison
equal deleted inserted replaced
43573:d3df05bab081 43574:02802fa87b74
45 def offset_type(offset, type): 45 def offset_type(offset, type):
46 return int(int(offset) << 16 | type) 46 return int(int(offset) << 16 | type)
47 47
48 48
49 class BaseIndexObject(object): 49 class BaseIndexObject(object):
50 @property
51 def nodemap(self):
52 msg = "index.nodemap is deprecated, " "use index.[has_node|rev|get_rev]"
53 util.nouideprecwarn(msg, b'5.3', stacklevel=2)
54 return self._nodemap
55
50 @util.propertycache 56 @util.propertycache
51 def nodemap(self): 57 def _nodemap(self):
52 nodemap = revlogutils.NodeMap({nullid: nullrev}) 58 nodemap = revlogutils.NodeMap({nullid: nullrev})
53 for r in range(0, len(self)): 59 for r in range(0, len(self)):
54 n = self[r][7] 60 n = self[r][7]
55 nodemap[n] = r 61 nodemap[n] = r
56 return nodemap 62 return nodemap
57 63
58 def has_node(self, node): 64 def has_node(self, node):
59 """return True if the node exist in the index""" 65 """return True if the node exist in the index"""
60 return node in self.nodemap 66 return node in self._nodemap
61 67
62 def rev(self, node): 68 def rev(self, node):
63 """return a revision for a node 69 """return a revision for a node
64 70
65 If the node is unknown, raise a RevlogError""" 71 If the node is unknown, raise a RevlogError"""
66 return self.nodemap[node] 72 return self._nodemap[node]
67 73
68 def get_rev(self, node): 74 def get_rev(self, node):
69 """return a revision for a node 75 """return a revision for a node
70 76
71 If the node is unknown, return None""" 77 If the node is unknown, return None"""
72 return self.nodemap.get(node) 78 return self._nodemap.get(node)
73 79
74 def _stripnodes(self, start): 80 def _stripnodes(self, start):
75 if 'nodemap' in vars(self): 81 if '_nodemap' in vars(self):
76 for r in range(start, len(self)): 82 for r in range(start, len(self)):
77 n = self[r][7] 83 n = self[r][7]
78 del self.nodemap[n] 84 del self._nodemap[n]
79 85
80 def clearcaches(self): 86 def clearcaches(self):
81 self.__dict__.pop('nodemap', None) 87 self.__dict__.pop('_nodemap', None)
82 88
83 def __len__(self): 89 def __len__(self):
84 return self._lgt + len(self._extra) 90 return self._lgt + len(self._extra)
85 91
86 def append(self, tup): 92 def append(self, tup):
87 if 'nodemap' in vars(self): 93 if '_nodemap' in vars(self):
88 self.nodemap[tup[7]] = len(self) 94 self._nodemap[tup[7]] = len(self)
89 self._extra.append(tup) 95 self._extra.append(tup)
90 96
91 def _check_index(self, i): 97 def _check_index(self, i):
92 if not isinstance(i, int): 98 if not isinstance(i, int):
93 raise TypeError(b"expecting int indexes") 99 raise TypeError(b"expecting int indexes")