Rev 3648: Change GraphIndex to also have a _get_nodes_by_key in http://bzr.arbash-meinel.com/branches/bzr/1.7-dev/index_builder_cleanup
John Arbash Meinel
john at arbash-meinel.com
Mon Aug 25 17:29:03 BST 2008
At http://bzr.arbash-meinel.com/branches/bzr/1.7-dev/index_builder_cleanup
------------------------------------------------------------
revno: 3648
revision-id: john at arbash-meinel.com-20080825162901-1qweamxqdvv59ie9
parent: john at arbash-meinel.com-20080825162409-0766y19zjs45m87i
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: index_builder_cleanup
timestamp: Mon 2008-08-25 11:29:01 -0500
message:
Change GraphIndex to also have a _get_nodes_by_key
modified:
bzrlib/index.py index.py-20070712131115-lolkarso50vjr64s-1
-------------- next part --------------
=== modified file 'bzrlib/index.py'
--- a/bzrlib/index.py 2008-08-25 16:24:09 +0000
+++ b/bzrlib/index.py 2008-08-25 16:29:01 +0000
@@ -95,6 +95,28 @@
if not element or _whitespace_re.search(element) is not None:
raise errors.BadIndexKey(element)
+ def _get_nodes_by_key(self):
+ if self._nodes_by_key is None:
+ nodes_by_key = {}
+ if self.reference_lists:
+ for key, (absent, references, value) in self._nodes.iteritems():
+ if absent:
+ continue
+ key_dict = nodes_by_key
+ for subkey in key[:-1]:
+ key_dict = key_dict.setdefault(subkey, {})
+ key_dict[key[-1]] = key, value, references
+ else:
+ for key, (absent, references, value) in self._nodes.iteritems():
+ if absent:
+ continue
+ key_dict = nodes_by_key
+ for subkey in key[:-1]:
+ key_dict = key_dict.setdefault(subkey, {})
+ key_dict[key[-1]] = key, value
+ self._nodes_by_key = nodes_by_key
+ return self._nodes_by_key
+
def _update_nodes_by_key(self, key, value, node_refs):
"""Update the _nodes_by_key dict with a new key.
@@ -1154,14 +1176,6 @@
available - for example via a CombinedGraphIndex.
"""
- def __init__(self, reference_lists=0, key_elements=1):
- super(InMemoryGraphIndex, self).__init__(
- reference_lists=reference_lists,
- key_elements=key_elements)
- # The tests using InMemoryGraphIndex expect _nodes_by_key to be filled
- # out
- self._nodes_by_key = {}
-
def add_nodes(self, nodes):
"""Add nodes to the index.
@@ -1250,6 +1264,7 @@
else:
yield self, key, node[2]
return
+ nodes_by_key = self._get_nodes_by_key()
for key in keys:
# sanity check
if key[0] is None:
@@ -1257,7 +1272,7 @@
if len(key) != self._key_length:
raise errors.BadIndexKey(key)
# find what it refers to:
- key_dict = self._nodes_by_key
+ key_dict = nodes_by_key
elements = list(key)
# find the subdict to return
try:
More information about the bazaar-commits
mailing list