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 -~----------~----~----~----~------~----~------~--~---