Package: pyflakes Version: 0.2.1-2 Severity: normal Tags: patch -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi, here are some patches that fix various usability issues with the current pyflakes program. add_main_function - add a main() function for easier argument processing always_close_fd - make sure all open()'d files are also closed again check_encoding_errors - catch encoding errors; same patch as in bug#440750, but within this series of patches set_exit_status - set exit status code when errors or warnings are found series - order in which patches must be applied I have also written a man page for pyflakes, which is based upon those patches. Will send that to the according bug report. Kind regards, Bastian - -- System Information: Debian Release: lenny/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: i386 (i686) Kernel: Linux 2.6.22-ck1treasure4 (PREEMPT) Locale: [EMAIL PROTECTED], [EMAIL PROTECTED] (charmap=ISO-8859-15) Shell: /bin/sh linked to /bin/bash Versions of packages pyflakes depends on: ii python 2.4.4-6 An interactive high-level object-o ii python-central 0.5.15 register and build utility for Pyt pyflakes recommends no packages. - -- no debconf information -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFHBRoZeBwlBDLsbz4RAksiAKCaMuSHCuhb0WvvjCT9vy1xy4EbZwCgm+aQ aTii/BjuwGQlHKw5qfY1vWY= =BSHY -----END PGP SIGNATURE-----
add_main_function always_close_fd set_exit_status check_encoding_errors
Index: pyflakes-calvin/pyflakes =================================================================== --- pyflakes-calvin.orig/pyflakes 2007-10-04 14:35:09.619485702 +0200 +++ pyflakes-calvin/pyflakes 2007-10-04 14:36:13.621856822 +0200 @@ -26,15 +26,21 @@ def check(codeString, filename): def checkPath(filename): return check(file(filename).read(), filename) -args = sys.argv[1:] -if args: - for arg in args: - if os.path.isdir(arg): - for dirpath, dirnames, filenames in os.walk(arg): - for filename in filenames: - if filename.endswith('.py'): - checkPath(os.path.join(dirpath, filename)) - else: - checkPath(arg) -else: - check(sys.stdin.read(), '<stdin>') + +def main (args): + if args: + for arg in args: + if os.path.isdir(arg): + for dirpath, dirnames, filenames in os.walk(arg): + for filename in filenames: + if filename.endswith('.py'): + checkPath(os.path.join(dirpath, filename)) + else: + checkPath(arg) + else: + check(sys.stdin.read(), '<stdin>') + + +if __name__ == '__main__': + main(sys.argv[1:]) +
Index: pyflakes-calvin/pyflakes =================================================================== --- pyflakes-calvin.orig/pyflakes 2007-10-04 14:38:16.126395183 +0200 +++ pyflakes-calvin/pyflakes 2007-10-04 14:38:51.127691645 +0200 @@ -24,7 +24,11 @@ def check(codeString, filename): def checkPath(filename): - return check(file(filename).read(), filename) + fd = file(filename) + try: + return check(fd.read(), filename) + finally: + fd.close() def main (args):
Index: pyflakes-calvin/pyflakes =================================================================== --- pyflakes-calvin.orig/pyflakes 2007-10-04 14:42:48.636453416 +0200 +++ pyflakes-calvin/pyflakes 2007-10-04 14:44:22.639905673 +0200 @@ -20,6 +20,9 @@ def check(codeString, filename): print >> sys.stderr, line print >> sys.stderr, " " * (offset-2), "^" status = 2 + except UnicodeError, msg: + print >> sys.stderr, 'encoding error at %r: %s' % (filename, msg) + status = 2 else: w = pyflakes.Checker(tree, filename) w.messages.sort(lambda a, b: cmp(a.lineno, b.lineno))
Index: pyflakes-calvin/pyflakes =================================================================== --- pyflakes-calvin.orig/pyflakes 2007-10-04 14:39:54.130025588 +0200 +++ pyflakes-calvin/pyflakes 2007-10-04 14:42:28.135700655 +0200 @@ -4,8 +4,11 @@ import compiler, sys import os import pyflakes +# exit status +status = 0 def check(codeString, filename): + global status try: tree = compiler.parse(codeString) except (SyntaxError, IndentationError): @@ -16,11 +19,15 @@ def check(codeString, filename): print >> sys.stderr, 'could not compile %r:%d:' % (filename, lineno) print >> sys.stderr, line print >> sys.stderr, " " * (offset-2), "^" + status = 2 else: w = pyflakes.Checker(tree, filename) w.messages.sort(lambda a, b: cmp(a.lineno, b.lineno)) - for warning in w.messages: - print warning + if w.messages: + if status == 0: + status = 1 + for warning in w.messages: + print warning def checkPath(filename): @@ -47,4 +54,5 @@ def main (args): if __name__ == '__main__': main(sys.argv[1:]) + sys.exit(status)