New module documentation sections from Moshe Zadka <moshez@math.huji.ac.il>!

This commit is contained in:
Fred Drake 1999-06-17 15:11:35 +00:00
parent 668213d3b8
commit 64bc94e3ec
6 changed files with 390 additions and 0 deletions

34
Doc/lib/libcmp.tex Normal file
View File

@ -0,0 +1,34 @@
\section{\module{cmp} ---
File comparisons}
\declaremodule{standard}{cmp}
\sectionauthor{Moshe Zadka}{mzadka@geocities.com}
\modulesynopsis{Compare files very efficiently.}
The \module{cmp} module defines a function to compare files, taking all
sort of short-cuts to make it a highly efficient operation.
The \module{cmp} module defines the following function:
\begin{funcdesc}{cmp}{f1, f2}
Compare two files given as names. The following tricks are used to
optimize the comparisons:
\begin{itemize}
\item Files with identical type, size and mtime are assumed equal.
\item Files with different type or size are never equal.
\item The module only compares files it already compared if their
signature (type, size and mtime) changed.
\item No external programs are called.
\end{itemize}
\end{funcdesc}
Example:
\begin{verbatim}
>>> import cmp
>>> cmp.cmp('libundoc.tex', 'libundoc.tex')
1
>>> cmp.cmp('libundoc.tex', 'lib.tex')
0
\end{verbatim}

36
Doc/lib/libcmpcache.tex Normal file
View File

@ -0,0 +1,36 @@
\section{\module{cmpcache} ---
Efficient file comparisons}
\declaremodule{standard}{cmpcache}
\sectionauthor{Moshe Zadka}{mzadka@geocities.com}
\modulesynopsis{Compare files very efficiently.}
The \module{cmpcache} module defines a function to compare files, taking all
sort of short-cuts to make it a highly efficient operation.
The \module{cmpcache} module defines the following function:
\begin{funcdesc}{cmp}{f1, f2}
Compare two files given as names. The following tricks are used to
optimize the comparisons:
\begin{itemize}
\item Signatures (type, size and mtime) are computed via
\refmodule{statcache}
\item Files with identical type, size and mtime are assumed equal.
\item Files with different type or size are never equal.
\item The module only compares files it already compared if their
signature changed.
\item No external programs are called.
\end{itemize}
\end{funcdesc}
Example:
\begin{verbatim}
>>> import cmpcache
>>> cmpcache.cmp('libundoc.tex', 'libundoc.tex')
1
>>> cmpcache.cmp('libundoc.tex', 'lib.tex')
0
\end{verbatim}

45
Doc/lib/libdircache.tex Normal file
View File

@ -0,0 +1,45 @@
\section{\module{dircache} ---
Cached directory listings}
\declaremodule{standard}{dircache}
\sectionauthor{Moshe Zadka}{mzadka@geocities.com}
\modulesynopsis{Return directory listing, with cache mechanism.}
The \module{dircache} module defines a function for reading directory listing
using a cache, and cache invalidation using the \var{mtime} of the directory.
Additionally, it defines a function to annotate directories by appending
a slash.
The \module{dircache} module defines the following functions:
\begin{funcdesc}{listdir}{path}
Return a directory listing of \var{path}, as gotten from
\function{os.listdir()}. Note that unless \var{path} changes, further call
to \function{listdir()} will not re-read the directory structure.
Note that the list returned should be regarded as read-only. (Perhaps
a future version should change it to return a tuple?)
\end{funcdesc}
\begin{funcdesc}{opendir}{path}
Same as \function{listdir()}. Defined for backwards compatability.
\end{funcdesc}
\begin{funcdesc}{annotate}{head, list}
Assume \var{list} is a list of pathes relative to \var{head}, and append,
in place, a \character{/} to each path which points to a directory.
\end{funcdesc}
\begin{verbatim}
>>> import dircache
>>> a=dircache.listdir('/')
>>> a=a[:] # Copy the return value so we can change 'a'
>>> a
['bin', 'boot', 'cdrom', 'dev', 'etc', 'floppy', 'home', 'initrd', 'lib', 'lost+
found', 'mnt', 'proc', 'root', 'sbin', 'tmp', 'usr', 'var', 'vmlinuz']
>>> dircache.annotate('/', a)
>>> a
['bin/', 'boot/', 'cdrom/', 'dev/', 'etc/', 'floppy/', 'home/', 'initrd/', 'lib/
', 'lost+found/', 'mnt/', 'proc/', 'root/', 'sbin/', 'tmp/', 'usr/', 'var/', 'vm
linuz']
\end{verbatim}

57
Doc/lib/libnew.tex Normal file
View File

@ -0,0 +1,57 @@
\section{\module{new} ---
Runtime implementation object creation}
\declaremodule{builtin}{new}
\sectionauthor{Moshe Zadka}{mzadka@geocities.com}
\modulesynopsis{Interface to the creation of runtime implementation objects.}
The \module{new} module allows an interface to the interpreter object
creation functions. This is for use primarily in marshal-type functions,
when a new object needs to be created ``magically'' and not by using the
regular creation functions. This module provides a low-level interface
to the interpreter, so care must be exercised when using this module.
The \module{new} module defines the following functions:
\begin{funcdesc}{instance}{class, dict}
This function creates an instance of \class{class} with dictionary
\var{dict} without calling the \method{__init__()} constructor. Note that
this means that there are no guarantees that the object will be in a
consistent state.
Arguments are \emph{not} type-checked, and an incorrectly typed argument
will result in undefined behaviour.
\end{funcdesc}
\begin{funcdesc}{instancemethod}{function, instance, class}
This function will return a method object, bound to \var{instance}, or
unbound if \var{instance} is \code{None}. It is checked that
\var{function} is callable, and that \var{instance} is an instance
object or \code{None}.
\end{funcdesc}
\begin{funcdesc}{function}{code, globals\optional{, name\optional{argdefs}}}
Returns a (Python) function with the given code and globals. If
\var{name} is given, the function will have the given name. If
\var{argdefs} is given, they will be the function defaults.
\end{funcdesc}
\begin{funcdesc}{code}{argcount, nlocals, stacksize, flags, codestring,
constants, names, varnames, filename, name, firstlineno,
lnotab}
This function is an interface to the \cfunction{PyCode_New()} internal
function.
XXX This is still undocumented!!!!!!!!!!!
\end{funcdesc}
\begin{funcdesc}{module}{name}
This function returns a new module object with name \var{name}.
\var{name} should be a string.
\end{funcdesc}
\begin{funcdesc}{classobj}{name, baseclasses, dict}
This function returns a new class object, with name \var{name}, derived
from \var{baseclasses} (which should be a tuple of classes) and with
namespace \var{dict}. All parameters are type checked.
\end{funcdesc}

53
Doc/lib/libstatcache.tex Normal file
View File

@ -0,0 +1,53 @@
\section{\module{statcache} ---
An optimization of \function{os.stat()}}
\declaremodule{standard}{statcache}
\sectionauthor{Moshe Zadka}{mzadka@geocities.com}
\modulesynopsis{Stat files, and remember results.}
The \module{statcache} module provides a simple optimization to
\function{os.stat()}: remembering the values of previous invocations.
The \module{statcache} module defines the following functions:
\begin{funcdesc}{stat}{path}
This is the main module entry-point.
Identical for \function{os.stat()}, except for remembering the result
for future invocations of the function.
\end{funcdesc}
The rest of the functions are used to clear the cache, or parts of
it.
\begin{funcdesc}{reset}{}
Clear the cache: forget all results of previous \code{stat}s.
\end{funcdesc}
\begin{funcdesc}{forget}{path}
Forget the result of \code{stat(\var{path})}, if any.
\end{funcdesc}
\begin{funcdesc}{forget_prefix}{prefix}
Forget all results of \code{stat(\var{path})} for \var{path} starting
with \var{prefix}.
\end{funcdesc}
\begin{funcdesc}{forget_dir}{prefix}
Forget all results of \code{stat(\var{path})} for \var{path} a file in
the directory \var{prefix}, including \code{stat(\var{prefix})}.
\end{funcdesc}
\begin{funcdesc}{forget_except_prefix}{prefix}
Similar to \function{forget_prefix()}, but for all \var{path}
\emph{not} starting with \var{prefix}.
\end{funcdesc}
Example:
\begin{verbatim}
>>> import os, statcache
>>> statcache.stat('.')
(16893, 2049, 772, 18, 1000, 1000, 2048, 929609777, 929609777, 929609777)
>>> os.stat('.')
(16893, 2049, 772, 18, 1000, 1000, 2048, 929609777, 929609777, 929609777)
\end{verbatim}

165
Doc/lib/libwave.tex Normal file
View File

@ -0,0 +1,165 @@
% Documentations stolen and LaTeX'ed from comments in file.
\section{\module{wave} ---
Read and write .WAV files}
\declaremodule{standard}{wave}
\sectionauthor{Moshe Zadka}{mzadka@geocities.com}
\modulesynopsis{Provide an interface to the WAV sound format.}
The \module{wave} module provides a convenient interface to the WAV sound
format. It does not support compression/decompression, but it does support
mono/stereo.
The \module{wave} module defines the following function:
\begin{funcdesc}{open}{file, mode}
If \var{file} is a string, open the file by that name, other treat it
as a seekable file-like object. \var{mode} can be any of
\begin{description}
\item[\code{'r'}, \code{'rb'}] Read only mode.
\item[\code{'w'}, \code{'wb'}] Write only mode.
\end{description}
Note that it does not allow read/write WAV files.
A \var{mode} of \code{'r'} or \code{'rb'} returns a \class{Wave_read}
object, while a \var{mode} of \code{'w'} or \code{'wb'} returns
a \class{Wave_write} object.
\end{funcdesc}
\begin{funcdesc}{openfp}{file, mode}
A synonym for \function{open()}, maintained for backwards compatibility.
\end{funcdesc}
\begin{excdesc}{Error}
An error raised when something is impossible because it violates the
WAV specification or hits an implementation deficiency.
\end{excdesc}
\subsection{Wave_read Objects \label{Wave-read-objects}}
Wave_read objects, as returned by \function{open()} above, have the
following methods:
\begin{methoddesc}[Wave_read]{getnchannels}{}
Returns number of audio channels (1 for mone, 2 for stereo).
\end{methoddesc}
\begin{methoddesc}[Wave_read]{getsampwidth}{}
Returns sample width in bytes.
\end{methoddesc}
\begin{methoddesc}[Wave_read]{getframerate}{}
Returns sampling frequency.
\end{methoddesc}
\begin{methoddesc}[Wave_read]{getnframes}{}
Returns number of audio frames.
\end{methoddesc}
\begin{methoddesc}[Wave_read]{getcomptype}{}
Returns compression type (\code{'NONE'} is the only supported type).
\end{methoddesc}
\begin{methoddesc}[Wave_read]{getcompname}{}
Human-readable version of \method{getcomptype()}.
Usually \code{'not compressed'} parallels \code{'NONE'}.
\end{methoddesc}
\begin{methoddesc}[Wave_read]{getparams}{}
Returns a tuple
\code{(nchannels, sampwidth, framerate, nframes, comptype, compname)},
equivalent to output of the \code{get} methods.
\end{methoddesc}
\begin{methoddesc}[Wave_read]{readframes}{n}
Reads and returns at most \var{n} frames of audio, as a string of bytes.
\end{methoddesc}
\begin{methoddesc}[Wave_read]{rewind}{}
Rewind the file pointer to the beginning of the audio stream.
\end{methoddesc}
The following two functions are defined for compatibility with the
\refmodule{aifc} module, and don't do anything interesting.
\begin{methoddesc}[Wave_read]{getmarkers}{}
Returns \code{None}.
\end{methoddesc}
\begin{methoddesc}[Wave_read]{getmark}{id}
Raise an error.
\end{methoddesc}
The following two methods define a term ``position'' which is compatible
between them, and is otherwise implementation dependant.
\begin{methoddesc}[Wave_read]{setpos}{pos}
Set the file pointer to the specified position.
\end{methoddesc}
\begin{methoddesc}[Wave_read]{tell}{}
Return current file pointer position.
\end{methoddesc}
\begin{methoddesc}[Wave_read]{close}{}
Close the stream, and make the instance unusable. (This is
called automatically on deletion.
\end{methoddesc}
\subsection{Wave_write Objects \label{Wave-write-objects}}
Wave_write objects, as returned by \function{open()} above, have the
following methods:
\begin{methoddesc}[Wave_write]{setnchannels}{n}
Set the number of channels.
\end{methoddesc}
\begin{methoddesc}[Wave_write]{setsampwidth}{n}
Set the sample width (in bytes.)
\end{methoddesc}
\begin{methoddesc}[Wave_write]{setframerate}{n}
Set the frame rate.
\end{methoddesc}
\begin{methoddesc}[Wave_write]{setnframes}{n}
Set the number of frames. This can be later changed, when and if more
frames are written.
\end{methoddesc}
\begin{methoddesc}[Wave_write]{setcomptype}{type, name}
Set the compression type and description.
\end{methoddesc}
\begin{methoddesc}[Wave_write]{setparams}{tuple}
The \var{tuple} should be
\code{(\var{nchannels}, \var{sampwidth}, \var{framerate},
\var{nframes}, \var{comptype}, \var{compname})}, with values valid for
the \code{set} methods. Set all parameters.
\end{methoddesc}
\begin{methoddesc}[Wave_write]{tell}{}
Return current position in the file, with the same disclaimer for
the \method{Wave_read.tell} and \method{Wave_read.setpos} methods.
\end{methoddesc}
\begin{methoddesc}[Wave_write]{writeframesraw}{data}
Write audio frames, without correcting \var{nframes}.
\end{methoddesc}
\begin{methoddesc}[Wave_write]{writeframes}{data}
Write audio frames and make sure \var{nframes} is correct.
\end{methoddesc}
\begin{methoddesc}[Wave_write]{close}{}
Make sure \var{nframes} is correct, and close the file.
This method is called upon deletion.
\end{methoddesc}
Note that it is invalid to set any parameters after calling
\method{writeframes()} or \method{writeframesraw()}, and any attempt
to do so will raise an error.