revset: don't import discovery at module level
authorGregory Szorc <gregory.szorc@gmail.com>
Tue, 14 Apr 2015 12:54:16 -0400
changeset 24722 02a5618e2fbf
parent 24721 774ee9800146
child 24723 467a33142425
revset: don't import discovery at module level discovery.py imports a lot of the world. Pierre-Yves told me to move it to a function-level import to avoid an import cycle in a future patch.
mercurial/revset.py
tests/test-module-imports.t
--- a/mercurial/revset.py	Tue Apr 14 10:59:26 2015 -0400
+++ b/mercurial/revset.py	Tue Apr 14 12:54:16 2015 -0400
@@ -6,7 +6,7 @@
 # GNU General Public License version 2 or any later version.
 
 import re
-import parser, util, error, discovery, hbisect, phases
+import parser, util, error, hbisect, phases
 import node
 import heapq
 import match as matchmod
@@ -1372,7 +1372,9 @@
     Changesets not found in the specified destination repository, or the
     default push location.
     """
-    import hg # avoid start-up nasties
+    # Avoid cycles.
+    import discovery
+    import hg
     # i18n: "outgoing" is a keyword
     l = getargs(x, 0, 1, _("outgoing takes one or no arguments"))
     # i18n: "outgoing" is a keyword
--- a/tests/test-module-imports.t	Tue Apr 14 10:59:26 2015 -0400
+++ b/tests/test-module-imports.t	Tue Apr 14 12:54:16 2015 -0400
@@ -32,7 +32,7 @@
      relative:  error, merge, util
   mercurial/revset.py mixed imports
      stdlib:    parser
-     relative:  discovery, error, hbisect, phases, util
+     relative:  error, hbisect, phases, util
   mercurial/templater.py mixed imports
      stdlib:    parser
      relative:  config, error, templatefilters, templatekw, util