Files that currently don't pass the tests are whitelisted. The goal is to not
use implicit imports, unless really necessary.
---
 sympy/utilities/tests/test_code_quality.py |   55 ++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/sympy/utilities/tests/test_code_quality.py 
b/sympy/utilities/tests/test_code_quality.py
index 6dea86c..1c7a413 100644
--- a/sympy/utilities/tests/test_code_quality.py
+++ b/sympy/utilities/tests/test_code_quality.py
@@ -1,6 +1,7 @@
 from os import walk, sep, chdir, pardir
 from os.path import split, join, abspath, exists
 from glob import glob
+import re
 
 # System path separator (usually slash or backslash)
 sepd = {"sep": sep}
@@ -14,6 +15,7 @@ EXCLUDE = set([
 
 # Error messages
 message_space = "File contains trailing whitespace: %s, line %s."
+message_implicit = "File contains an implicit import: %s, line %s."
 message_tabs = "File contains tabs instead of spaces: %s, line %s."
 message_carriage = "File contains carriage returns at end of line: %s, line %s"
 
@@ -62,3 +64,56 @@ def test_no_trailing_whitespace_and_no_tabs():
     for p in paths:
         assert exists(p)
         check_directory_tree(p)
+
+def test_implicit_imports():
+    """
+    Tests that all files except __init__.py use explicit imports.
+    """
+    path = split(abspath(__file__))[0]
+    path = path + sep + pardir + sep + pardir # go to sympy/
+    sympy_path = abspath(path)
+    examples_path = abspath(join(path + sep + pardir, "examples"))
+    paths = (sympy_path, examples_path)
+    exclude = set([
+        "%(sep)sthirdparty%(sep)s" % sepd,
+        "%(sep)s__init__.py" % sepd,
+        # these two should be fixed:
+        "%(sep)smpmath%(sep)s" % sepd,
+        "%(sep)splotting%(sep)s" % sepd,
+
+        # everything below should be fixed soon:
+        "sympy/core/tests/test_evalf.py" % sepd,
+        "sympy/functions/combinatorial/numbers.py" % sepd,
+        "sympy/physics/tests/test_units.py" % sepd,
+        "sympy/polynomials/factor_.py" % sepd,
+        "sympy/polynomials/groebner_.py" % sepd,
+        "sympy/polynomials/wrapper.py" % sepd,
+        "sympy/polynomials/base.py" % sepd,
+        "sympy/polynomials/div_.py" % sepd,
+        "sympy/polynomials/roots_.py" % sepd,
+        "sympy/polys/tests/test_polynomial.py" % sepd,
+        "sympy/solvers/tests/test_solvers.py" % sepd,
+        "sympy/statistics/distributions.py" % sepd,
+        "sympy/examples/fem_test.py" % sepd,
+        "sympy/examples/pidigits.py" % sepd,
+        "sympy/examples/print_gtk.py" % sepd,
+        "sympy/examples/print_pretty.py" % sepd,
+        "sympy/examples/fem.py" % sepd,
+        "sympy/examples/trees.py" % sepd,
+        "sympy/galgebra/GAcalc.py" % sepd,
+        "sympy/galgebra/GAsympy.py" % sepd,
+        "sympy/galgebra/latex_out.py" % sepd,
+    ])
+    for p in paths:
+        assert exists(p)
+        for root, dirs, files in walk(p):
+            for fname in glob(join(root, "*.py")):
+                if filter(lambda ex: ex in fname, exclude):
+                    continue
+                file = open(fname, "r")
+                try:
+                    for idx, line in enumerate(file):
+                        if re.match("^\s*from.*import.*\*",line):
+                            assert False, message_implicit % (fname, idx+1)
+                finally:
+                    file.close()
-- 
1.5.6.5


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy-patches" group.
To post to this group, send email to sympy-patches@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sympy-patches?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to