]> granicus.if.org Git - python/commitdiff
Added docs for 'user' customization module. Renamed libuser.tex
authorGuido van Rossum <guido@python.org>
Sat, 30 Aug 1997 20:02:25 +0000 (20:02 +0000)
committerGuido van Rossum <guido@python.org>
Sat, 30 Aug 1997 20:02:25 +0000 (20:02 +0000)
(which had UserDict/UserList) to libuserdict.tex.

Doc/Makefile
Doc/lib.tex
Doc/lib/lib.tex
Doc/lib/libuser.tex [new file with mode: 0644]
Doc/libuser.tex [new file with mode: 0644]

index 8bf2caca84ea3547a0e754c26fc0e920ef68b8bc..ad05cea676ca189bf8a8172abf264b68bf5db3f2 100644 (file)
@@ -112,7 +112,8 @@ LIBFILES = lib.tex \
     libuser.tex libanydbm.tex librandom.tex libsite.tex libwhichdb.tex \
     libbase64.tex libfnmatch.tex libquopri.tex libzlib.tex libsocksvr.tex \
     libmailbox.tex libcommands.tex libcmath.tex libni.tex libgzip.tex \
-    libpprint.tex libcode.tex libmimify.tex libre.tex libmacic.tex
+    libpprint.tex libcode.tex libmimify.tex libre.tex libmacic.tex \
+    libuserdict.tex
 
 # Library document
 lib.dvi: $(LIBFILES)
index b2d596fe8c54721efe05959f34b132e1de8b928d..4db67fb8a7a8d4f5fda7fc8cb4e44534428e042c 100644 (file)
@@ -77,7 +77,7 @@ to Python and how to embed it in other applications.
 \input{libpython}              % Python Services
 \input{libsys}
 \input{libtypes2}              % types is already taken :-(
-\input{libuser}
+\input{libuserdict}
 \input{liboperator}
 \input{libtraceback}
 \input{libpickle}
@@ -90,6 +90,7 @@ to Python and how to embed it in other applications.
 \input{libpprint}
 \input{libcode}
 \input{libsite}
+\input{libuser}
 \input{libbltin}               % really __builtin__
 \input{libmain}                        % really __main__
 
index b2d596fe8c54721efe05959f34b132e1de8b928d..4db67fb8a7a8d4f5fda7fc8cb4e44534428e042c 100644 (file)
@@ -77,7 +77,7 @@ to Python and how to embed it in other applications.
 \input{libpython}              % Python Services
 \input{libsys}
 \input{libtypes2}              % types is already taken :-(
-\input{libuser}
+\input{libuserdict}
 \input{liboperator}
 \input{libtraceback}
 \input{libpickle}
@@ -90,6 +90,7 @@ to Python and how to embed it in other applications.
 \input{libpprint}
 \input{libcode}
 \input{libsite}
+\input{libuser}
 \input{libbltin}               % really __builtin__
 \input{libmain}                        % really __main__
 
diff --git a/Doc/lib/libuser.tex b/Doc/lib/libuser.tex
new file mode 100644 (file)
index 0000000..d90132c
--- /dev/null
@@ -0,0 +1,60 @@
+\section{Standard Module \sectcode{user}}
+\label{module-user}
+\stmodindex{user}
+\kwindex{.pythonrc.py}
+
+As a policy, Python doesn't run user-specified code on startup of
+Python programs.  (Only interactive sessions execute the script
+specified in the \code{PYTHONPATH} environment variable if it exists).
+
+However, some programs or sites may find it convenient to allow users
+to have a standard customization file, which gets run when a program
+requests it.  This module implements such a mechanism.  A program
+that wishes to use the mechanism must execute the statement
+
+\bcode\begin{verbatim}
+import user
+\end{verbatim}\ecode
+
+The user module looks for a file \file{.pythonrc.py} in the user's
+home directory and if it can be opened, exececutes it (using
+\code{execfile()}) in its own (i.e. the module \code{user}'s) global
+namespace.  Errors during this phase are not caught; that's up to the
+program that imports the user module, if it wishes.  The home
+directory is assumed to be named by the \code{HOME} environment
+variable; if this is not set, the current directory is used.
+
+The user's \file{.pythonrc.py} could conceivably test for
+\code{sys.version} if it wishes to do different things depending on
+the Python version.
+
+A warning to users: be very conservative in what you place in your
+\file{.pythonrc.py} file.  Since you don't know which programs will
+use it, changing the behavior of standard modules or functions is
+generally not a good idea.
+
+A suggestion for programmers who wish to use this mechanism: a simple
+way to let users specify options for your package is to have them
+define variables in their \var{.pythonrc.py} file that you test in
+your module.  For example, a module \code{spam} that has a verbosity
+level can look for a variable \code{user.spam_verbose}, as follows:
+
+\bcode\begin{verbatim}
+import user
+try:
+    verbose = user.spam_verbose  # user's verbosity preference
+except AttributeError:
+    verbose = 0                  # default verbosity
+\end{verbatim}\ecode
+
+Programs with extensive customization needs are better off reading a
+program-specific customization file.
+
+Programs with security or privacy concerns should \emph{not} import
+this module; a user can easily break into a a program by placing
+arbitrary code in the \file{.pythonrc.py} file.
+
+Modules for general use should \emph{not} import this module; it may
+interfere with the operation of the importing program.
+
+For a site-wide customization mechanism, see module \code{site}.
diff --git a/Doc/libuser.tex b/Doc/libuser.tex
new file mode 100644 (file)
index 0000000..d90132c
--- /dev/null
@@ -0,0 +1,60 @@
+\section{Standard Module \sectcode{user}}
+\label{module-user}
+\stmodindex{user}
+\kwindex{.pythonrc.py}
+
+As a policy, Python doesn't run user-specified code on startup of
+Python programs.  (Only interactive sessions execute the script
+specified in the \code{PYTHONPATH} environment variable if it exists).
+
+However, some programs or sites may find it convenient to allow users
+to have a standard customization file, which gets run when a program
+requests it.  This module implements such a mechanism.  A program
+that wishes to use the mechanism must execute the statement
+
+\bcode\begin{verbatim}
+import user
+\end{verbatim}\ecode
+
+The user module looks for a file \file{.pythonrc.py} in the user's
+home directory and if it can be opened, exececutes it (using
+\code{execfile()}) in its own (i.e. the module \code{user}'s) global
+namespace.  Errors during this phase are not caught; that's up to the
+program that imports the user module, if it wishes.  The home
+directory is assumed to be named by the \code{HOME} environment
+variable; if this is not set, the current directory is used.
+
+The user's \file{.pythonrc.py} could conceivably test for
+\code{sys.version} if it wishes to do different things depending on
+the Python version.
+
+A warning to users: be very conservative in what you place in your
+\file{.pythonrc.py} file.  Since you don't know which programs will
+use it, changing the behavior of standard modules or functions is
+generally not a good idea.
+
+A suggestion for programmers who wish to use this mechanism: a simple
+way to let users specify options for your package is to have them
+define variables in their \var{.pythonrc.py} file that you test in
+your module.  For example, a module \code{spam} that has a verbosity
+level can look for a variable \code{user.spam_verbose}, as follows:
+
+\bcode\begin{verbatim}
+import user
+try:
+    verbose = user.spam_verbose  # user's verbosity preference
+except AttributeError:
+    verbose = 0                  # default verbosity
+\end{verbatim}\ecode
+
+Programs with extensive customization needs are better off reading a
+program-specific customization file.
+
+Programs with security or privacy concerns should \emph{not} import
+this module; a user can easily break into a a program by placing
+arbitrary code in the \file{.pythonrc.py} file.
+
+Modules for general use should \emph{not} import this module; it may
+interfere with the operation of the importing program.
+
+For a site-wide customization mechanism, see module \code{site}.