Mercurial > hg-stable
diff contrib/import-checker.py @ 20386:a05d31b040d7
import-checker: show stdlib and relative imports separately
Make the output more useful for debugging problems.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Wed, 05 Feb 2014 01:43:51 +0100 |
parents | 4990abb4729d |
children | 466e4c574db0 |
line wrap: on
line diff
--- a/contrib/import-checker.py Wed Feb 05 01:41:36 2014 +0100 +++ b/contrib/import-checker.py Wed Feb 05 01:43:51 2014 +0100 @@ -139,7 +139,7 @@ http://bugs.python.org/issue19510. >>> list(verify_stdlib_on_own_line('import sys, foo')) - ['mixed stdlib and relative imports:\\n foo, sys'] + ['mixed imports\\n stdlib: sys\\n relative: foo'] >>> list(verify_stdlib_on_own_line('import sys, os')) [] >>> list(verify_stdlib_on_own_line('import foo, bar')) @@ -147,13 +147,13 @@ """ for node in ast.walk(ast.parse(source)): if isinstance(node, ast.Import): - from_stdlib = {} + from_stdlib = {False: [], True: []} for n in node.names: - from_stdlib[n.name] = n.name in stdlib_modules - num_std = len([x for x in from_stdlib.values() if x]) - if num_std not in (len(from_stdlib.values()), 0): - yield ('mixed stdlib and relative imports:\n %s' % - ', '.join(sorted(from_stdlib.iterkeys()))) + from_stdlib[n.name in stdlib_modules].append(n.name) + if from_stdlib[True] and from_stdlib[False]: + yield ('mixed imports\n stdlib: %s\n relative: %s' % + (', '.join(sorted(from_stdlib[True])), + ', '.join(sorted(from_stdlib[False])))) class CircularImport(Exception): pass