Rev 3102: Deprecate get_parents() in favor of get_parent_map() in http://bzr.arbash-meinel.com/branches/bzr/1.1-dev/graph_optimization

John Arbash Meinel john at arbash-meinel.com
Tue Dec 18 19:42:37 GMT 2007


At http://bzr.arbash-meinel.com/branches/bzr/1.1-dev/graph_optimization

------------------------------------------------------------
revno: 3102
revision-id:john at arbash-meinel.com-20071218194210-hrciq0bscpg2ge3p
parent: john at arbash-meinel.com-20071218190438-sq0itdz00lu5cm5h
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: graph_optimization
timestamp: Tue 2007-12-18 13:42:10 -0600
message:
  Deprecate get_parents() in favor of get_parent_map()
modified:
  bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
  bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
  bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
  bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
  bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
-------------- next part --------------
=== modified file 'bzrlib/graph.py'
--- a/bzrlib/graph.py	2007-12-18 17:06:42 +0000
+++ b/bzrlib/graph.py	2007-12-18 19:42:10 +0000
@@ -17,6 +17,7 @@
 from bzrlib import (
     errors,
     revision,
+    symbol_versioning,
     tsort,
     )
 from bzrlib.deprecated_graph import (node_distances, select_farthest)
@@ -52,6 +53,7 @@
     def __repr__(self):
         return 'DictParentsProvider(%r)' % self.ancestry
 
+    @symbol_versioning.deprecated_method(symbol_versioning.one_one)
     def get_parents(self, revisions):
         return [self.ancestry.get(r, None) for r in revisions]
 
@@ -69,6 +71,7 @@
     def __repr__(self):
         return "_StackedParentsProvider(%r)" % self._parent_providers
 
+    @symbol_versioning.deprecated_method(symbol_versioning.one_one)
     def get_parents(self, revision_ids):
         """Find revision ids of the parents of a list of revisions
 
@@ -122,6 +125,7 @@
     def __repr__(self):
         return "%s(%r)" % (self.__class__.__name__, self._real_provider)
 
+    @symbol_versioning.deprecated_method(symbol_versioning.one_one)
     def get_parents(self, revision_ids):
         """See _StackedParentsProvider.get_parents"""
         found = self.get_parent_map(revision_ids)
@@ -419,7 +423,7 @@
         An ancestor may sort after a descendant if the relationship is not
         visible in the supplied list of revisions.
         """
-        sorter = tsort.TopoSorter(zip(revisions, self.get_parents(revisions)))
+        sorter = tsort.TopoSorter(self.get_parent_map(revisions))
         return sorter.iter_topo_order()
 
     def is_ancestor(self, candidate_ancestor, candidate_descendant):
@@ -517,10 +521,9 @@
             self._search_revisions = self._start
         else:
             new_search_revisions = set()
-            for parents in self._parents_provider.get_parents(
-                self._search_revisions):
-                if parents is None:
-                    continue
+            parent_map = self._parents_provider.get_parent_map(
+                            self._search_revisions)
+            for parents in parent_map.itervalues():
                 new_search_revisions.update(p for p in parents if
                                             p not in self.seen)
             self._search_revisions = new_search_revisions

=== modified file 'bzrlib/index.py'
--- a/bzrlib/index.py	2007-12-18 17:06:42 +0000
+++ b/bzrlib/index.py	2007-12-18 19:42:10 +0000
@@ -35,7 +35,11 @@
 from bzrlib.revision import NULL_REVISION
 from bzrlib.trace import mutter
 """)
-from bzrlib import debug, errors
+from bzrlib import (
+    debug,
+    errors,
+    symbol_versioning,
+    )
 
 _HEADER_READV = (0, 200)
 _OPTION_KEY_ELEMENTS = "key_elements="
@@ -995,6 +999,7 @@
                 self.__class__.__name__,
                 ', '.join(map(repr, self._indices)))
 
+    @symbol_versioning.deprecated_method(symbol_versioning.one_one)
     def get_parents(self, revision_ids):
         """See graph._StackedParentsProvider.get_parents.
         

=== modified file 'bzrlib/repofmt/knitrepo.py'
--- a/bzrlib/repofmt/knitrepo.py	2007-12-18 17:06:42 +0000
+++ b/bzrlib/repofmt/knitrepo.py	2007-12-18 19:42:10 +0000
@@ -30,6 +30,7 @@
     lockable_files,
     lockdir,
     osutils,
+    symbol_versioning,
     transactions,
     xml5,
     xml6,
@@ -58,6 +59,7 @@
     def __repr__(self):
         return 'KnitParentsProvider(%r)' % self._knit
 
+    @symbol_versioning.deprecated_method(symbol_versioning.one_one)
     def get_parents(self, revision_ids):
         """See graph._StackedParentsProvider.get_parents"""
         parent_map = self.get_parent_map(revision_ids)

=== modified file 'bzrlib/repofmt/pack_repo.py'
--- a/bzrlib/repofmt/pack_repo.py	2007-12-18 19:04:38 +0000
+++ b/bzrlib/repofmt/pack_repo.py	2007-12-18 19:42:10 +0000
@@ -48,6 +48,7 @@
     lockable_files,
     lockdir,
     osutils,
+    symbol_versioning,
     transactions,
     xml5,
     xml6,
@@ -1894,6 +1895,7 @@
             pb.finished()
         return result
 
+    @symbol_versioning.deprecated_method(symbol_versioning.one_one)
     def get_parents(self, revision_ids):
         """See graph._StackedParentsProvider.get_parents."""
         parent_map = self.get_parent_map(revision_ids)

=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2007-12-18 17:06:42 +0000
+++ b/bzrlib/repository.py	2007-12-18 19:42:10 +0000
@@ -1643,6 +1643,7 @@
     def revision_parents(self, revision_id):
         return self.get_inventory_weave().parent_names(revision_id)
 
+    @deprecated_method(symbol_versioning.one_one)
     def get_parents(self, revision_ids):
         """See StackedParentsProvider.get_parents"""
         parent_map = self.get_parent_map(revision_ids)

=== modified file 'bzrlib/tests/test_graph.py'
--- a/bzrlib/tests/test_graph.py	2007-12-18 17:06:42 +0000
+++ b/bzrlib/tests/test_graph.py	2007-12-18 19:42:10 +0000
@@ -17,6 +17,7 @@
 from bzrlib import (
     errors,
     graph as _mod_graph,
+    symbol_versioning,
     tests,
     )
 from bzrlib.revision import NULL_REVISION
@@ -449,19 +450,35 @@
         self.assertEqual((set(['e']), set(['f', 'g'])),
                          graph.find_difference('e', 'f'))
 
-    def test_stacked_parents_provider(self):
-
+    def test_stacked_parents_provider_get_parents(self):
         parents1 = _mod_graph.DictParentsProvider({'rev2': ['rev3']})
         parents2 = _mod_graph.DictParentsProvider({'rev1': ['rev4']})
         stacked = _mod_graph._StackedParentsProvider([parents1, parents2])
         self.assertEqual([['rev4',], ['rev3']],
-                         stacked.get_parents(['rev1', 'rev2']))
+             self.applyDeprecated(symbol_versioning.one_one,
+                                  stacked.get_parents, ['rev1', 'rev2']))
         self.assertEqual([['rev3',], ['rev4']],
-                         stacked.get_parents(['rev2', 'rev1']))
+             self.applyDeprecated(symbol_versioning.one_one,
+                                  stacked.get_parents, ['rev2', 'rev1']))
         self.assertEqual([['rev3',], ['rev3']],
-                         stacked.get_parents(['rev2', 'rev2']))
+             self.applyDeprecated(symbol_versioning.one_one,
+                         stacked.get_parents, ['rev2', 'rev2']))
         self.assertEqual([['rev4',], ['rev4']],
-                         stacked.get_parents(['rev1', 'rev1']))
+             self.applyDeprecated(symbol_versioning.one_one,
+                         stacked.get_parents, ['rev1', 'rev1']))
+
+    def test_stacked_parents_provider(self):
+        parents1 = _mod_graph.DictParentsProvider({'rev2': ['rev3']})
+        parents2 = _mod_graph.DictParentsProvider({'rev1': ['rev4']})
+        stacked = _mod_graph._StackedParentsProvider([parents1, parents2])
+        self.assertEqual({'rev1':['rev4'], 'rev2':['rev3']},
+                         stacked.get_parent_map(['rev1', 'rev2']))
+        self.assertEqual({'rev2':['rev3'], 'rev1':['rev4']},
+                         stacked.get_parent_map(['rev2', 'rev1']))
+        self.assertEqual({'rev2':['rev3']},
+                         stacked.get_parent_map(['rev2', 'rev2']))
+        self.assertEqual({'rev1':['rev4']},
+                         stacked.get_parent_map(['rev1', 'rev1']))
 
     def test_iter_topo_order(self):
         graph = self.make_graph(ancestry_1)
@@ -676,34 +693,48 @@
     def test_get_parents(self):
         """Requesting the same revision should be returned from cache"""
         self.assertEqual({}, self.caching_pp._cache)
-        self.assertEqual([('b',)], self.caching_pp.get_parents(['a']))
-        self.assertEqual(['a'], self.inst_pp.calls)
-        self.assertEqual([('b',)], self.caching_pp.get_parents(['a']))
-        # No new call, as it should have been returned from the cache
-        self.assertEqual(['a'], self.inst_pp.calls)
-        self.assertEqual({'a':('b',)}, self.caching_pp._cache)
-
-    def test_get_parents_not_present(self):
+        self.assertEqual([('b',)],
+            self.applyDeprecated(symbol_versioning.one_one,
+            self.caching_pp.get_parents, ['a']))
+        self.assertEqual(['a'], self.inst_pp.calls)
+        self.assertEqual([('b',)],
+            self.applyDeprecated(symbol_versioning.one_one,
+            self.caching_pp.get_parents, ['a']))
+        # No new call, as it should have been returned from the cache
+        self.assertEqual(['a'], self.inst_pp.calls)
+        self.assertEqual({'a':('b',)}, self.caching_pp._cache)
+
+    def test_get_parent_map(self):
+        """Requesting the same revision should be returned from cache"""
+        self.assertEqual({}, self.caching_pp._cache)
+        self.assertEqual({'a':('b',)}, self.caching_pp.get_parent_map(['a']))
+        self.assertEqual(['a'], self.inst_pp.calls)
+        self.assertEqual({'a':('b',)}, self.caching_pp.get_parent_map(['a']))
+        # No new call, as it should have been returned from the cache
+        self.assertEqual(['a'], self.inst_pp.calls)
+        self.assertEqual({'a':('b',)}, self.caching_pp._cache)
+
+    def test_get_parent_map_not_present(self):
         """The cache should also track when a revision doesn't exist"""
-        self.assertEqual([None], self.caching_pp.get_parents(['b']))
+        self.assertEqual({}, self.caching_pp.get_parent_map(['b']))
         self.assertEqual(['b'], self.inst_pp.calls)
-        self.assertEqual([None], self.caching_pp.get_parents(['b']))
+        self.assertEqual({}, self.caching_pp.get_parent_map(['b']))
         # No new calls
         self.assertEqual(['b'], self.inst_pp.calls)
         self.assertEqual({'b':None}, self.caching_pp._cache)
 
-    def test_get_parents_mixed(self):
+    def test_get_parent_map_mixed(self):
         """Anything that can be returned from cache, should be"""
-        self.assertEqual([None], self.caching_pp.get_parents(['b']))
+        self.assertEqual({}, self.caching_pp.get_parent_map(['b']))
         self.assertEqual(['b'], self.inst_pp.calls)
-        self.assertEqual([('b',), None],
-                         self.caching_pp.get_parents(['a', 'b']))
+        self.assertEqual({'a':('b',)},
+                         self.caching_pp.get_parent_map(['a', 'b']))
         self.assertEqual(['b', 'a'], self.inst_pp.calls)
 
-    def test_get_parents_repeated(self):
+    def test_get_parent_map_repeated(self):
         """Asking for the same parent 2x will only forward 1 request."""
-        self.assertEqual([None, ('b',), None],
-                         self.caching_pp.get_parents(['b', 'a', 'b']))
+        self.assertEqual({'a':('b',)},
+                         self.caching_pp.get_parent_map(['b', 'a', 'b']))
         # Use sorted because we don't care about the order, just that each is
         # only present 1 time.
         self.assertEqual(['a', 'b'], sorted(self.inst_pp.calls))



More information about the bazaar-commits mailing list