diff options
author | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@localhost> | 2011-05-03 11:25:13 +0000 |
commit | 458120dd40db6b4df55a4e96b650e16798ef06a0 (patch) | |
tree | 8f82685be24fef97e715c6f5ca4c68d34d5074ee /sys/src/cmd/python/Doc/lib/libuser.tex | |
parent | 3a742c699f6806c1145aea5149bf15de15a0afd7 (diff) |
add hg and python
Diffstat (limited to 'sys/src/cmd/python/Doc/lib/libuser.tex')
-rw-r--r-- | sys/src/cmd/python/Doc/lib/libuser.tex | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/sys/src/cmd/python/Doc/lib/libuser.tex b/sys/src/cmd/python/Doc/lib/libuser.tex new file mode 100644 index 000000000..4e915a22c --- /dev/null +++ b/sys/src/cmd/python/Doc/lib/libuser.tex @@ -0,0 +1,71 @@ +\section{\module{user} --- + User-specific configuration hook} + +\declaremodule{standard}{user} +\modulesynopsis{A standard way to reference user-specific modules.} + + +\indexii{.pythonrc.py}{file} +\indexiii{user}{configuration}{file} + +As a policy, Python doesn't run user-specified code on startup of +Python programs. (Only interactive sessions execute the script +specified in the \envvar{PYTHONSTARTUP} 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 + +\begin{verbatim} +import user +\end{verbatim} + +The \module{user} module looks for a file \file{.pythonrc.py} in the user's +home directory and if it can be opened, executes it (using +\function{execfile()}\bifuncindex{execfile}) in its own (the +module \module{user}'s) global namespace. Errors during this phase +are not caught; that's up to the program that imports the +\module{user} module, if it wishes. The home directory is assumed to +be named by the \envvar{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 \file{.pythonrc.py} file that you test in +your module. For example, a module \module{spam} that has a verbosity +level can look for a variable \code{user.spam_verbose}, as follows: + +\begin{verbatim} +import user + +verbose = bool(getattr(user, "spam_verbose", 0)) +\end{verbatim} + +(The three-argument form of \function{getattr()} is used in case +the user has not defined \code{spam_verbose} in their +\file{.pythonrc.py} file.) + +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 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. + +\begin{seealso} + \seemodule{site}{Site-wide customization mechanism.} +\end{seealso} |