[Python-checkins] r79533 - in python/trunk: Lib/py_compile.py Misc/NEWS

barry.warsaw python-checkins at python.org
Wed Mar 31 23:07:16 CEST 2010


Author: barry.warsaw
Date: Wed Mar 31 23:07:16 2010
New Revision: 79533

Log:
- 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).



Modified:
   python/trunk/Lib/py_compile.py
   python/trunk/Misc/NEWS

Modified: python/trunk/Lib/py_compile.py
==============================================================================
--- python/trunk/Lib/py_compile.py	(original)
+++ python/trunk/Lib/py_compile.py	Wed Mar 31 23:07:16 2010
@@ -135,19 +135,35 @@
     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__":

Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Wed Mar 31 23:07:16 2010
@@ -32,8 +32,13 @@
 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


More information about the Python-checkins mailing list