From 61cf4407be9c726c935e1fe82b06a2617b15287e Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Wed, 21 Aug 2002 20:56:21 +0000 Subject: [PATCH] Added a main() function and support to run this module as a script. Closes SF feature request #588768. --- Doc/lib/libpycompile.tex | 16 ++++++++++++++-- Lib/py_compile.py | 20 +++++++++++++++++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/Doc/lib/libpycompile.tex b/Doc/lib/libpycompile.tex index ebbc9b907b..a28b4fe5e0 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 @@ containing the source code. \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 4a3a8a0528..2d5c36a2b2 100644 --- a/Lib/py_compile.py +++ b/Lib/py_compile.py @@ -12,7 +12,7 @@ import traceback 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 @@ def compile(file, cfile=None, dfile=None): 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() -- 2.40.0