Added a main() function and support to run this module as a script.
Closes SF feature request #588768.
diff --git a/Doc/lib/libpycompile.tex b/Doc/lib/libpycompile.tex
index ebbc9b9..a28b4fe 100644
--- a/Doc/lib/libpycompile.tex
+++ b/Doc/lib/libpycompile.tex
@@ -10,8 +10,9 @@
\indexii{file}{byte-code}
-The \module{py_compile} module provides a single function to generate
-a byte-code file from a source file.
+The \module{py_compile} module provides a function to generate a
+byte-code file from a source file, and another function used when the
+module source file is invoked as a script.
Though not often needed, this function can be useful when installing
modules for shared use, especially if some of the users may not have
@@ -29,6 +30,17 @@
\end{funcdesc}
+\begin{funcdesc}{main}{\optional{args}}
+ Compile several source files. The files named in \var{args} (or on
+ the command line, if \var{args} is 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.
+\end{funcdesc}
+
+When this module is run as a script, the \function{main()} is used to
+compile all the files named on the command line.
+
\begin{seealso}
\seemodule{compileall}{Utilities to compile all Python source files
in a directory tree.}
diff --git a/Lib/py_compile.py b/Lib/py_compile.py
index 4a3a8a0..2d5c36a 100644
--- a/Lib/py_compile.py
+++ b/Lib/py_compile.py
@@ -12,7 +12,7 @@
MAGIC = imp.get_magic()
-__all__ = ["compile"]
+__all__ = ["compile", "main"]
# Define an internal helper according to the platform
if os.name == "mac":
@@ -86,3 +86,21 @@
fc.write(MAGIC)
fc.close()
set_creator_type(cfile)
+
+def main(args=None):
+ """Compile several source files.
+
+ The files named in 'args' (or on the command line, if 'args' is
+ 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.
+
+ """
+ if args is None:
+ args = sys.argv[1:]
+ for filename in args:
+ compile(filename)
+
+if __name__ == "__main__":
+ main()