summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorNick Coghlan <ncoghlan@gmail.com>2006-03-24 13:36:33 (GMT)
committerNick Coghlan <ncoghlan@gmail.com>2006-03-24 13:36:33 (GMT)
commit98bcb7081513eda72d4623e11ddb8cba66310561 (patch)
treeeb26948a23fd9fb03c7140f00f0039ad8b42aa56 /Doc
parentc841bb6b638b34639d1371fd870839787cfd6ba1 (diff)
downloadcpython-98bcb7081513eda72d4623e11ddb8cba66310561.zip
cpython-98bcb7081513eda72d4623e11ddb8cba66310561.tar.gz
cpython-98bcb7081513eda72d4623e11ddb8cba66310561.tar.bz2
Add documentation for PEP 338
Diffstat (limited to 'Doc')
-rw-r--r--Doc/Makefile.deps1
-rw-r--r--Doc/lib/lib.tex1
-rw-r--r--Doc/lib/librunpy.tex74
3 files changed, 76 insertions, 0 deletions
diff --git a/Doc/Makefile.deps b/Doc/Makefile.deps
index 832402d..20c0688 100644
--- a/Doc/Makefile.deps
+++ b/Doc/Makefile.deps
@@ -126,6 +126,7 @@ LIBFILES= $(MANSTYLES) $(INDEXSTYLES) $(COMMONTEX) \
lib/libwarnings.tex \
lib/libimp.tex \
lib/libzipimport.tex \
+ lib/librunpy.tex \
lib/libpkgutil.tex \
lib/libparser.tex \
lib/libbltin.tex \
diff --git a/Doc/lib/lib.tex b/Doc/lib/lib.tex
index ff9c391..b588048 100644
--- a/Doc/lib/lib.tex
+++ b/Doc/lib/lib.tex
@@ -394,6 +394,7 @@ and how to embed it in other applications.
\input{libzipimport}
\input{libpkgutil}
\input{libmodulefinder}
+\input{librunpy}
% =============
diff --git a/Doc/lib/librunpy.tex b/Doc/lib/librunpy.tex
new file mode 100644
index 0000000..4be9901
--- /dev/null
+++ b/Doc/lib/librunpy.tex
@@ -0,0 +1,74 @@
+\section{\module{runpy} ---
+ Locating and executing Python modules.}
+
+\declaremodule{standard}{runpy} % standard library, in Python
+
+\moduleauthor{Nick Coghlan}{ncoghlan@gmail.com}
+
+\modulesynopsis{Locate and execute Python modules as scripts}
+
+\versionadded{2.5}
+
+The \module{runpy} module is used to locate and run Python modules
+without importing them first. It's main use is to implement the
+\programopt{-m} command line switch that allows scripts to be located
+using the Python module namespace rather than the filesystem.
+
+When executed as a script, the module effectively operates as follows:
+\begin{verbatim}
+ del sys.argv[0] # Remove the runpy module from the arguments
+ run_module(sys.argv[0], run_name="__main__", alter_sys=True)
+\end{verbatim}
+
+The \module{runpy} module provides a single function:
+
+\begin{funcdesc}{run_module}{mod_name\optional{, init_globals}
+\optional{, run_name}\optional{, alter_sys}}
+Execute the code of the specified module and return the resulting
+module globals dictionary. The module's code is first located using
+the standard import mechanism (refer to PEP 302 for details) and
+then executed in a fresh module namespace.
+
+The optional dictionary argument \var{init_globals} may be used to
+pre-populate the globals dictionary before the code is executed.
+The supplied dictionary will not be modified. If any of the special
+global variables below are defined in the supplied dictionary, those
+definitions are overridden by the \code{run_module} function.
+
+The special global variables \code{__name__}, \code{__file__},
+\code{__loader__} and \code{__builtins__} are set in the globals
+dictionary before the module code is executed.
+
+\code{__name__} is set to \var{run_name} if this optional argument is
+supplied, and the \var{mod_name} argument otherwise.
+
+\code{__loader__} is set to the PEP 302 module loader used to retrieve
+the code for the module (This loader may be a wrapper around the
+standard import mechanism).
+
+\code{__file__} is set to the name provided by the module loader. If
+the loader does not make filename information available, this
+variable is set to \code{None}.
+
+\code{__builtins__} is automatically initialised with a reference to
+the top level namespace of the \module{__builtin__} module.
+
+If the argument \var{alter_sys} is supplied and evaluates to
+\code{True}, then \code{sys.argv[0]} is updated with the value of
+\code{__file__} and \code{sys.modules[__name__]} is updated with a
+temporary module object for the module being executed. Both
+\code{sys.argv[0]} and \code{sys.modules[__name__]} are restored to
+their original values before the function returns.
+
+Note that this manipulation of \module{sys} is not thread-safe. Other
+threads may see the partially initialised module, as well as the
+altered list of arguments. It is recommended that the \module{sys}
+module be left alone when invoking this function from threaded code.
+\end{funcdesc}
+
+\begin{seealso}
+
+\seepep{338}{Executing modules as scripts}{PEP written and
+implemented by Nick Coghlan.}
+
+\end{seealso}