From: Barry Warsaw Date: Wed, 31 Mar 2010 21:07:16 +0000 (+0000) Subject: - Issue #8233: When run as a script, py_compile.py optionally takes a single X-Git-Tag: v2.7b1~173 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f7f2d6f51e8ea429b9db44eed0dcc6a4e22708df;p=python - Issue #8233: When run as a script, py_compile.py optionally takes a single argument `-` which tells it to read files to compile from stdin. Each line is read on demand and the named file is compiled immediately. (Original patch by Piotr Ożarowski). --- diff --git a/Lib/py_compile.py b/Lib/py_compile.py index 24b58374c0..f88cfbb5af 100644 --- a/Lib/py_compile.py +++ b/Lib/py_compile.py @@ -135,19 +135,35 @@ def main(args=None): not specified) are compiled and the resulting bytecode is cached in the normal manner. This function does not search a directory structure to locate source files; it only compiles files named - explicitly. + explicitly. If '-' is the only parameter in args, the list of + files is taken from standard input. """ if args is None: args = sys.argv[1:] rv = 0 - for filename in args: - try: - compile(filename, doraise=True) - except PyCompileError, err: - # return value to indicate at least one failure - rv = 1 - sys.stderr.write(err.msg) + if args == ['-']: + while True: + filename = sys.stdin.readline() + if not filename: + break + filename = filename.rstrip('\n') + try: + compile(filename, doraise=True) + except PyCompileError as error: + rv = 1 + sys.stderr.write("%s\n" % error.msg) + except IOError as error: + rv = 1 + sys.stderr.write("%s\n" % error) + else: + for filename in args: + try: + compile(filename, doraise=True) + except PyCompileError as err: + # return value to indicate at least one failure + rv = 1 + sys.stderr.write(error.msg) return rv if __name__ == "__main__": diff --git a/Misc/NEWS b/Misc/NEWS index e74d4acfdf..09d07f2c3b 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -32,8 +32,13 @@ Core and Builtins Library ------- -- Issue #3135: Add inspect.getcallargs, which binds arguments to a function like - a normal call. +- Issue #8233: When run as a script, py_compile.py optionally takes a single + argument `-` which tells it to read files to compile from stdin. Each line + is read on demand and the named file is compiled immediately. (Original + patch by Piotr Ożarowski). + +- Issue #3135: Add inspect.getcallargs, which binds arguments to a function + like a normal call. - Backwards incompatible change: Unicode codepoints line tabulation (0x0B) and form feed (0x0C) are now considered linebreaks, as specified in Unicode