diff options
Diffstat (limited to 'Tools/scripts/findnocoding.py')
-rwxr-xr-x | Tools/scripts/findnocoding.py | 91 |
1 files changed, 45 insertions, 46 deletions
diff --git a/Tools/scripts/findnocoding.py b/Tools/scripts/findnocoding.py index 6c16b1c..79ea7e5 100755 --- a/Tools/scripts/findnocoding.py +++ b/Tools/scripts/findnocoding.py @@ -1,8 +1,8 @@ -#!/usr/bin/env python3 +#!/usr/bin/env python """List all those Python files that require a coding directive -Usage: findnocoding.py dir1 [dir2...] +Usage: nocoding.py dir1 [dir2...] """ __author__ = "Oleg Broytmann, Georg Brandl" @@ -28,12 +28,12 @@ except ImportError: pysource = pysource() - print("The pysource module is not available; " - "no sophisticated Python source file search will be done.", file=sys.stderr) + print >>sys.stderr, ("The pysource module is not available; " + "no sophisticated Python source file search will be done.") -decl_re = re.compile(rb'^[ \t\f]*#.*?coding[:=][ \t]*([-\w.]+)') -blank_re = re.compile(rb'^[ \t\f]*(?:[#\r\n]|$)') +decl_re = re.compile(r'^[ \t\f]*#.*?coding[:=][ \t]*([-\w.]+)') +blank_re = re.compile(r'^[ \t\f]*(?:[#\r\n]|$)') def get_declaration(line): match = decl_re.match(line) @@ -43,7 +43,7 @@ def get_declaration(line): def has_correct_encoding(text, codec): try: - str(text, codec) + unicode(text, codec) except UnicodeDecodeError: return False else: @@ -51,23 +51,24 @@ def has_correct_encoding(text, codec): def needs_declaration(fullpath): try: - infile = open(fullpath, 'rb') + infile = open(fullpath, 'rU') except IOError: # Oops, the file was removed - ignore it return None - with infile: - line1 = infile.readline() - line2 = infile.readline() + line1 = infile.readline() + line2 = infile.readline() - if (get_declaration(line1) or - blank_re.match(line1) and get_declaration(line2)): - # the file does have an encoding declaration, so trust it - return False + if (get_declaration(line1) or + blank_re.match(line1) and get_declaration(line2)): + # the file does have an encoding declaration, so trust it + infile.close() + return False - # check the whole file for non utf-8 characters - rest = infile.read() + # check the whole file for non-ASCII characters + rest = infile.read() + infile.close() - if has_correct_encoding(line1+line2+rest, "utf-8"): + if has_correct_encoding(line1+line2+rest, "ascii"): return False return True @@ -77,31 +78,29 @@ usage = """Usage: %s [-cd] paths... -c: recognize Python source files trying to compile them -d: debug output""" % sys.argv[0] -if __name__ == '__main__': - - try: - opts, args = getopt.getopt(sys.argv[1:], 'cd') - except getopt.error as msg: - print(msg, file=sys.stderr) - print(usage, file=sys.stderr) - sys.exit(1) - - is_python = pysource.looks_like_python - debug = False - - for o, a in opts: - if o == '-c': - is_python = pysource.can_be_compiled - elif o == '-d': - debug = True - - if not args: - print(usage, file=sys.stderr) - sys.exit(1) - - for fullpath in pysource.walk_python_files(args, is_python): - if debug: - print("Testing for coding: %s" % fullpath) - result = needs_declaration(fullpath) - if result: - print(fullpath) +try: + opts, args = getopt.getopt(sys.argv[1:], 'cd') +except getopt.error, msg: + print >>sys.stderr, msg + print >>sys.stderr, usage + sys.exit(1) + +is_python = pysource.looks_like_python +debug = False + +for o, a in opts: + if o == '-c': + is_python = pysource.can_be_compiled + elif o == '-d': + debug = True + +if not args: + print >>sys.stderr, usage + sys.exit(1) + +for fullpath in pysource.walk_python_files(args, is_python): + if debug: + print "Testing for coding: %s" % fullpath + result = needs_declaration(fullpath) + if result: + print fullpath |