diff options
author | Fred Drake <fdrake@acm.org> | 1999-01-27 17:20:33 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 1999-01-27 17:20:33 (GMT) |
commit | 9d814c6805eefb21ddc8139b35158f0b8103761c (patch) | |
tree | 433b188a324cdcb1f32d0f145fc5756e63e2697f /Doc | |
parent | c80baa3365d0c87f419020e3e1f0488d8bae8eb5 (diff) | |
download | cpython-9d814c6805eefb21ddc8139b35158f0b8103761c.zip cpython-9d814c6805eefb21ddc8139b35158f0b8103761c.tar.gz cpython-9d814c6805eefb21ddc8139b35158f0b8103761c.tar.bz2 |
Document the repr module. This removes the entire "Code objects and
files, debugger etc." section from "Undocumented Modules"!
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/lib/lib.tex | 1 | ||||
-rw-r--r-- | Doc/lib/librepr.tex | 125 | ||||
-rw-r--r-- | Doc/lib/libundoc.tex | 9 |
3 files changed, 126 insertions, 9 deletions
diff --git a/Doc/lib/lib.tex b/Doc/lib/lib.tex index 020a932..87c63c9 100644 --- a/Doc/lib/lib.tex +++ b/Doc/lib/lib.tex @@ -88,6 +88,7 @@ add new extensions to Python and how to embed it in other applications. \input{libkeyword} \input{libcode} \input{libpprint} +\input{librepr} \input{libpycompile} % really py_compile \input{libcompileall} \input{libdis} diff --git a/Doc/lib/librepr.tex b/Doc/lib/librepr.tex new file mode 100644 index 0000000..76bf942 --- /dev/null +++ b/Doc/lib/librepr.tex @@ -0,0 +1,125 @@ +\section{\module{repr} --- + Alternate \function{repr()} implementation.} + +\declaremodule{standard}{repr} + + +The \module{repr} module provides a means for producing object +representations with limits on the size of the resulting strings. +This is used in the Python debugger and may be useful in other +contexts as well. + +This module provides a class, an instance, and a function: + + +\begin{classdesc}{Repr}{} + Class which provides formatting services useful in implementing + functions similar to the built-in \function{repr()}; size limits for + different object types are added to avoid the generation of + representations which are excessively long. +\end{classdesc} + + +\begin{datadesc}{aRepr} + This is an instance of \class{Repr} which is used to provide the + \function{repr()} function described below. Changing the attributes + of this object will affect the size limits used by \function{repr()} + and the Python debugger. +\end{datadesc} + + +\begin{funcdesc}{repr}{obj} + This is the \method{repr()} method of \code{aRepr}. It returns a + string similar to that returned by the built-in function of the same + name, but with limits on most sizes. +\end{funcdesc} + + +\subsection{Repr Objects \label{Repr-objects}} + +\class{Repr} instances provide several members which can be used to +provide size limits for the representations of different object types, +and methods which format specific object types. + + +\begin{memberdesc}{maxlevel} + Depth limit on the creation of recursive representations. The + default is \code{6}. +\end{memberdesc} + +\begin{memberdesc}{maxdict} +\memberline{maxlist} +\memberline{maxtuple} + Limits on the number of entries represented for the named object + type. The default for \member{maxdict} is \code{4}, for the others, + \code{6}. +\end{memberdesc} + +\begin{memberdesc}{maxlong} + Maximum number of characters in the representation for a long + integer. Digits are dropped from the middle. The default is + \code{40}. +\end{memberdesc} + +\begin{memberdesc}{maxstring} + Limit on the number of characters in the representation of the + string. Note that the ``normal'' representation of the string is + used as the character source: if escape sequences are needed in the + representation, these may be mangled when the representation is + shortened. The default is \code{30}. +\end{memberdesc} + +\begin{memberdesc}{maxother} + This limit is used to control the size of object types for which no + specific formatting method is available on the \class{Repr} object. + It is applied in a similar manner as \member{maxstring}. The + default is \code{20}. +\end{memberdesc} + +\begin{methoddesc}{repr}{obj} + The equivalent to the built-in \function{repr()} that uses the + formatting imposed by the instance. +\end{methoddesc} + +\begin{methoddesc}{repr1}{obj, level} + Recursive implementation used by \method{repr()}. This uses the + type of \var{obj} to determine which formatting method to call, + passing it \var{obj} and \var{level}. The type-specific methods + should call \method{repr1()} to perform recursive formatting, with + \code{\var{level} - 1} for the value of \var{level} in the recursive + call. +\end{methoddesc} + +\begin{methoddescni}{repr_\var{type}}{obj, level} + Formatting methods for specific types are implemented as methods + with a name based on the type name. In the method name, \var{type} + is replaced by + \code{string.join(string.split(type(\var{obj}).__name__, '_')}. + Dispatch to these methods is handled by \method{repr1()}. + Type-specific methods which need to recursively format a value + should call \samp{self.repr1(\var{subobj}, \var{level} - 1)}. +\end{methoddescni} + + +\subsection{Subclassing Repr Objects \label{subclassing-reprs}} + +The use of dynamic dispatching by \method{Repr.repr1()} allows +subclasses of \class{Repr} to add support for additional built-in +object types or to modify the handling of types already supported. +This example shows how special support for file objects could be +added: + +\begin{verbatim} +import repr +import sys + +class MyRepr(repr.Repr): + def repr_file(self, obj, level): + if obj.name in ['<stdin>', '<stdout>', '<stderr>']: + return obj.name + else: + return `obj` + +aRepr = MyRepr() +print aRepr.repr(sys.stdin) # prints '<stdin>' +\end{verbatim} diff --git a/Doc/lib/libundoc.tex b/Doc/lib/libundoc.tex index bb7274d..d60abc0 100644 --- a/Doc/lib/libundoc.tex +++ b/Doc/lib/libundoc.tex @@ -116,15 +116,6 @@ contains helper code for colorizing Python source code. \end{description} -\section{Code objects and files, debugger etc.} - -\begin{description} -\item[repr.py] ---- Redo the `...` (representation) but with limits on most -sizes (used by pdb) -\end{description} - - \section{Multimedia} \begin{description} |