Commit f7f2d6f5 authored by Barry Warsaw's avatar Barry Warsaw

- 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).
parent fe4900c0
...@@ -135,19 +135,35 @@ def main(args=None): ...@@ -135,19 +135,35 @@ def main(args=None):
not specified) are compiled and the resulting bytecode is cached not specified) are compiled and the resulting bytecode is cached
in the normal manner. This function does not search a directory in the normal manner. This function does not search a directory
structure to locate source files; it only compiles files named 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: if args is None:
args = sys.argv[1:] args = sys.argv[1:]
rv = 0 rv = 0
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: for filename in args:
try: try:
compile(filename, doraise=True) compile(filename, doraise=True)
except PyCompileError, err: except PyCompileError as err:
# return value to indicate at least one failure # return value to indicate at least one failure
rv = 1 rv = 1
sys.stderr.write(err.msg) sys.stderr.write(error.msg)
return rv return rv
if __name__ == "__main__": if __name__ == "__main__":
......
...@@ -32,8 +32,13 @@ Core and Builtins ...@@ -32,8 +32,13 @@ Core and Builtins
Library Library
------- -------
- Issue #3135: Add inspect.getcallargs, which binds arguments to a function like - Issue #8233: When run as a script, py_compile.py optionally takes a single
a normal call. 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 - Backwards incompatible change: Unicode codepoints line tabulation (0x0B) and
form feed (0x0C) are now considered linebreaks, as specified in Unicode form feed (0x0C) are now considered linebreaks, as specified in Unicode
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment