diff options
author | Guido van Rossum <guido@python.org> | 1994-01-02 01:22:07 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1994-01-02 01:22:07 (GMT) |
commit | 5fdeeeae2a12b9956cc84d62eae82f72cabc8664 (patch) | |
tree | ac0053479e10099850c8e0d06e31cb3afbf632bb /Doc | |
parent | 0b0719866e8a32d0a787e73bca9e79df1d1a74f8 (diff) | |
download | cpython-5fdeeeae2a12b9956cc84d62eae82f72cabc8664.zip cpython-5fdeeeae2a12b9956cc84d62eae82f72cabc8664.tar.gz cpython-5fdeeeae2a12b9956cc84d62eae82f72cabc8664.tar.bz2 |
Restructured library documentation
Diffstat (limited to 'Doc')
101 files changed, 12244 insertions, 0 deletions
diff --git a/Doc/lib/libal.tex b/Doc/lib/libal.tex new file mode 100644 index 0000000..708c54e --- /dev/null +++ b/Doc/lib/libal.tex @@ -0,0 +1,177 @@ +\section{Built-in Module \sectcode{al}} +\bimodindex{al} + +This module provides access to the audio facilities of the Indigo and +4D/35 workstations, described in section 3A of the IRIX 4.0 man pages +(and also available as an option in IRIX 3.3). You'll need to read +those man pages to understand what these functions do! +Some of the functions are not available in releases below 4.0.5. +Again, see the manual to check whether a specific function is +available on your platform. + +Symbolic constants from the C header file \file{<audio.h>} are defined +in the standard module \code{AL}, see below. + +\strong{Warning:} the current version of the audio library may dump core +when bad argument values are passed rather than returning an error +status. Unfortunately, since the precise circumstances under which +this may happen are undocumented and hard to check, the Python +interface can provide no protection against this kind of problems. +(One example is specifying an excessive queue size --- there is no +documented upper limit.) + +Module \code{al} defines the following functions: + +\renewcommand{\indexsubitem}{(in module al)} +\begin{funcdesc}{openport}{name\, direction\, config} +Equivalent to the C function ALopenport(). The name and direction +arguments are strings. The optional config argument is an opaque +configuration object as returned by \code{al.newconfig()}. The return +value is an opaque port object; methods of port objects are described +below. +\end{funcdesc} + +\begin{funcdesc}{newconfig}{} +Equivalent to the C function ALnewconfig(). The return value is a new +opaque configuration object; methods of configuration objects are +described below. +\end{funcdesc} + +\begin{funcdesc}{queryparams}{device} +Equivalent to the C function ALqueryparams(). The device argument is +an integer. The return value is a list of integers containing the +data returned by ALqueryparams(). +\end{funcdesc} + +\begin{funcdesc}{getparams}{device\, list} +Equivalent to the C function ALgetparams(). The device argument is an +integer. The list argument is a list such as returned by +\code{queryparams}; it is modified in place (!). +\end{funcdesc} + +\begin{funcdesc}{setparams}{device\, list} +Equivalent to the C function ALsetparams(). The device argument is an +integer.The list argument is a list such as returned by +\code{al.queryparams}. +\end{funcdesc} + +Configuration objects (returned by \code{al.newconfig()} have the +following methods: + +\renewcommand{\indexsubitem}{(audio configuration object method)} +\begin{funcdesc}{getqueuesize}{} +Return the queue size; equivalent to the C function ALgetqueuesize(). +\end{funcdesc} + +\begin{funcdesc}{setqueuesize}{size} +Set the queue size; equivalent to the C function ALsetqueuesize(). +\end{funcdesc} + +\begin{funcdesc}{getwidth}{} +Get the sample width; equivalent to the C function ALgetwidth(). +\end{funcdesc} + +\begin{funcdesc}{getwidth}{width} +Set the sample width; equivalent to the C function ALsetwidth(). +\end{funcdesc} + +\begin{funcdesc}{getchannels}{} +Get the channel count; equivalent to the C function ALgetchannels(). +\end{funcdesc} + +\begin{funcdesc}{setchannels}{nchannels} +Set the channel count; equivalent to the C function ALsetchannels(). +\end{funcdesc} + +\begin{funcdesc}{getsampfmt}{} +Get the sample format; equivalent to the C function ALgetsampfmt(). +\end{funcdesc} + +\begin{funcdesc}{setsampfmt}{sampfmt} +Set the sample format; equivalent to the C function ALsetsampfmt(). +\end{funcdesc} + +\begin{funcdesc}{getfloatmax}{} +Get the maximum value for floating sample formats; +equivalent to the C function ALgetfloatmax(). +\end{funcdesc} + +\begin{funcdesc}{setfloatmax}{floatmax} +Set the maximum value for floating sample formats; +equivalent to the C function ALsetfloatmax(). +\end{funcdesc} + +Port objects (returned by \code{al.openport()} have the following +methods: + +\renewcommand{\indexsubitem}{(audio port object method)} +\begin{funcdesc}{closeport}{} +Close the port; equivalent to the C function ALcloseport(). +\end{funcdesc} + +\begin{funcdesc}{getfd}{} +Return the file descriptor as an int; equivalent to the C function +ALgetfd(). +\end{funcdesc} + +\begin{funcdesc}{getfilled}{} +Return the number of filled samples; equivalent to the C function +ALgetfilled(). +\end{funcdesc} + +\begin{funcdesc}{getfillable}{} +Return the number of fillable samples; equivalent to the C function +ALgetfillable(). +\end{funcdesc} + +\begin{funcdesc}{readsamps}{nsamples} +Read a number of samples from the queue, blocking if necessary; +equivalent to the C function ALreadsamples. The data is returned as a +string containing the raw data (e.g. 2 bytes per sample in big-endian +byte order (high byte, low byte) if you have set the sample width to 2 +bytes. +\end{funcdesc} + +\begin{funcdesc}{writesamps}{samples} +Write samples into the queue, blocking if necessary; equivalent to the +C function ALwritesamples. The samples are encoded as described for +the \code{readsamps} return value. +\end{funcdesc} + +\begin{funcdesc}{getfillpoint}{} +Return the `fill point'; equivalent to the C function ALgetfillpoint(). +\end{funcdesc} + +\begin{funcdesc}{setfillpoint}{fillpoint} +Set the `fill point'; equivalent to the C function ALsetfillpoint(). +\end{funcdesc} + +\begin{funcdesc}{getconfig}{} +Return a configuration object containing the current configuration of +the port; equivalent to the C function ALgetconfig(). +\end{funcdesc} + +\begin{funcdesc}{setconfig}{config} +Set the configuration from the argument, a configuration object; +equivalent to the C function ALsetconfig(). +\end{funcdesc} + +\begin{funcdesc}{getstatus}{list} +Get status information on last error +equivalent to C function ALgetstatus(). +\end{funcdesc} + +\section{Standard Module \sectcode{AL}} +\nodename{AL (uppercase)} +\stmodindex{AL} + +This module defines symbolic constants needed to use the built-in +module \code{al} (see above); they are equivalent to those defined in +the C header file \file{<audio.h>} except that the name prefix +\samp{AL_} is omitted. Read the module source for a complete list of +the defined names. Suggested use: + +\bcode\begin{verbatim} +import al +from AL import * +\end{verbatim}\ecode diff --git a/Doc/lib/libamoeba.tex b/Doc/lib/libamoeba.tex new file mode 100644 index 0000000..db4fefd --- /dev/null +++ b/Doc/lib/libamoeba.tex @@ -0,0 +1,128 @@ +\chapter{AMOEBA ONLY} + +\section{Built-in Module \sectcode{amoeba}} + +\bimodindex{amoeba} +This module provides some object types and operations useful for +Amoeba applications. It is only available on systems that support +Amoeba operations. RPC errors and other Amoeba errors are reported as +the exception \code{amoeba.error = 'amoeba.error'}. + +The module \code{amoeba} defines the following items: + +\renewcommand{\indexsubitem}{(in module amoeba)} +\begin{funcdesc}{name_append}{path\, cap} +Stores a capability in the Amoeba directory tree. +Arguments are the pathname (a string) and the capability (a capability +object as returned by +\code{name_lookup()}). +\end{funcdesc} + +\begin{funcdesc}{name_delete}{path} +Deletes a capability from the Amoeba directory tree. +Argument is the pathname. +\end{funcdesc} + +\begin{funcdesc}{name_lookup}{path} +Looks up a capability. +Argument is the pathname. +Returns a +\dfn{capability} +object, to which various interesting operations apply, described below. +\end{funcdesc} + +\begin{funcdesc}{name_replace}{path\, cap} +Replaces a capability in the Amoeba directory tree. +Arguments are the pathname and the new capability. +(This differs from +\code{name_append()} +in the behavior when the pathname already exists: +\code{name_append()} +finds this an error while +\code{name_replace()} +allows it, as its name suggests.) +\end{funcdesc} + +\begin{datadesc}{capv} +A table representing the capability environment at the time the +interpreter was started. +(Alas, modifying this table does not affect the capability environment +of the interpreter.) +For example, +\code{amoeba.capv['ROOT']} +is the capability of your root directory, similar to +\code{getcap("ROOT")} +in C. +\end{datadesc} + +\begin{excdesc}{error} +The exception raised when an Amoeba function returns an error. +The value accompanying this exception is a pair containing the numeric +error code and the corresponding string, as returned by the C function +\code{err_why()}. +\end{excdesc} + +\begin{funcdesc}{timeout}{msecs} +Sets the transaction timeout, in milliseconds. +Returns the previous timeout. +Initially, the timeout is set to 2 seconds by the Python interpreter. +\end{funcdesc} + +\subsection{Capability Operations} + +Capabilities are written in a convenient ASCII format, also used by the +Amoeba utilities +{\it c2a}(U) +and +{\it a2c}(U). +For example: + +\bcode\begin{verbatim} +>>> amoeba.name_lookup('/profile/cap') +aa:1c:95:52:6a:fa/14(ff)/8e:ba:5b:8:11:1a +>>> +\end{verbatim}\ecode + +The following methods are defined for capability objects. + +\renewcommand{\indexsubitem}{(capability method)} +\begin{funcdesc}{dir_list}{} +Returns a list of the names of the entries in an Amoeba directory. +\end{funcdesc} + +\begin{funcdesc}{b_read}{offset\, maxsize} +Reads (at most) +\var{maxsize} +bytes from a bullet file at offset +\var{offset.} +The data is returned as a string. +EOF is reported as an empty string. +\end{funcdesc} + +\begin{funcdesc}{b_size}{} +Returns the size of a bullet file. +\end{funcdesc} + +\begin{funcdesc}{dir_append}{} +\funcline{dir_delete}{}\ +\funcline{dir_lookup}{}\ +\funcline{dir_replace}{} +Like the corresponding +\samp{name_}* +functions, but with a path relative to the capability. +(For paths beginning with a slash the capability is ignored, since this +is the defined semantics for Amoeba.) +\end{funcdesc} + +\begin{funcdesc}{std_info}{} +Returns the standard info string of the object. +\end{funcdesc} + +\begin{funcdesc}{tod_gettime}{} +Returns the time (in seconds since the Epoch, in UCT, as for POSIX) from +a time server. +\end{funcdesc} + +\begin{funcdesc}{tod_settime}{t} +Sets the time kept by a time server. +\end{funcdesc} diff --git a/Doc/lib/libarray.tex b/Doc/lib/libarray.tex new file mode 100644 index 0000000..21122f0 --- /dev/null +++ b/Doc/lib/libarray.tex @@ -0,0 +1,109 @@ +\section{Built-in module \sectcode{array}} +\bimodindex{array} +\index{arrays} + +This module defines a new object type which can efficiently represent +an array of basic values: characters, integers, floating point +numbers. Arrays are sequence types and behave very much like lists, +except that the type of objects stored in them is constrained. The +type is specified at object creation time by using a \dfn{type code}, +which is a single character. The following type codes are defined: + +\begin{tableiii}{|c|c|c|}{code}{Typecode}{Type}{Minimal size in bytes} +\lineiii{'c'}{character}{1} +\lineiii{'b'}{signed integer}{1} +\lineiii{'h'}{signed integer}{2} +\lineiii{'i'}{signed integer}{2} +\lineiii{'l'}{signed integer}{4} +\lineiii{'f'}{floating point}{4} +\lineiii{'d'}{floating point}{8} +\end{tableiii} + +The actual representation of values is determined by the machine +architecture (strictly spoken, by the C implementation). The actual +size can be accessed through the \var{typecode} attribute. + +The module defines the following function: + +\renewcommand{\indexsubitem}{(in module array)} + +\begin{funcdesc}{array}{typecode\, initializer} +Return a new array whose items are restricted by \var{typecode}, and +initialized from the optional \var{initializer} value, which must be a +list or a string. The list or string is passed to the new array's +\code{fromlist()} or \code{fromstring()} method (see below) to add +initial items to the array. +\end{funcdesc} + +Array objects support the following data items and methods: + +\begin{datadesc}{typecode} +The typecode character used to create the array. +\end{datadesc} + +\begin{datadesc}{itemsize} +The length in bytes of one array item in the internal representation. +\end{datadesc} + +\begin{funcdesc}{append}{x} +Append a new item with value \var{x} to the end of the array. +\end{funcdesc} + +\begin{funcdesc}{byteswap}{x} +``Byteswap'' all items of the array. This is only supported for +integer values. It is useful when reading data ffrom a file written +on a machine with a different byte order. +\end{funcdesc} + +\begin{funcdesc}{fromfile}{f\, n} +Read \var{n} items (as machine values) from the file object \var{f} +and append them to the end of the array. If less than \var{n} items +are available, \code{EOFError} is raised, but the items that were +available are still inserted into the array. +\end{funcdesc} + +\begin{funcdesc}{fromlist}{list} +Appends items from the list. This is equivalent to +\code{for x in \var{list}: a.append(x)} +except that if there is a type error, the array is unchanged. +\end{funcdesc} + +\begin{funcdesc}{fromstring}{s} +Appends items from the string, interpreting the string as an +array of machine values (i.e. as if it had been read from a +file using the \code{fromfile()} method). +\end{funcdesc} + +\begin{funcdesc}{insert}{i\, x} +Insert a new item with value \var{x} in the array before position +\var{i}. +\end{funcdesc} + +\begin{funcdesc}{tofile}{f} +Write all items (as machine values) to the file object \var{f}. +\end{funcdesc} + +\begin{funcdesc}{tolist}{} +Convert the array to an ordinary list with the same items. +\end{funcdesc} + +\begin{funcdesc}{tostring}{} +Convert the array to an array of machine values and return the +string representation (the same sequence of bytes that would +be written to a file by the \code{tofile()} method.) +\end{funcdesc} + +When an array object is printed or converted to a string, it is +represented as \code{array(\var{typecode}, \var{initializer})}. The +\var{initializer} is omitted if the array is empty, otherwise it is a +string if the \var{typecode} is \code{'c'}, otherwise it is a list of +numbers. The string is guaranteed to be able to be converted back to +an array with the same type and value using reverse quotes +(\code{``}). Examples: + +\bcode\begin{verbatim} +array('l') +array('c', 'hello world') +array('l', [1, 2, 3, 4, 5]) +array('d', [1.0, 2.0, 3.14]) +\end{verbatim}\ecode diff --git a/Doc/lib/libaudioop.tex b/Doc/lib/libaudioop.tex new file mode 100644 index 0000000..734065a --- /dev/null +++ b/Doc/lib/libaudioop.tex @@ -0,0 +1,241 @@ +\section{Built-in module \sectcode{audioop}} +\bimodindex{audioop} + +The audioop module contains some useful operations on sound fragments. +It operates on sound fragments consisting of signed integer samples of +8, 16 or 32 bits wide, stored in Python strings. This is the same +format as used by the \code{al} and \code{sunaudiodev} modules. All +scalar items are integers, unless specified otherwise. + +A few of the more complicated operations only take 16-bit samples, +otherwise the sample size (in bytes) is always a parameter of the operation. + +The module defines the following variables and functions: + +\renewcommand{\indexsubitem}{(in module audioop)} +\begin{excdesc}{error} +This exception is raised on all errors, such as unknown number of bytes +per sample, etc. +\end{excdesc} + +\begin{funcdesc}{add}{fragment1\, fragment2\, width} +This function returns a fragment that is the addition of the two samples +passed as parameters. \var{width} is the sample width in bytes, either +\code{1}, \code{2} or \code{4}. Both fragments should have the same length. +\end{funcdesc} + +\begin{funcdesc}{adpcm2lin}{adpcmfragment\, width\, state} +This routine decodes an Intel/DVI ADPCM coded fragment to a linear +fragment. See the description of \code{lin2adpcm} for details on ADPCM +coding. The routine returns a tuple +\code{(\var{sample}, \var{newstate})} +where the sample has the width specified in \var{width}. +\end{funcdesc} + +\begin{funcdesc}{adpcm32lin}{adpcmfragment\, width\, state} +This routine decodes an alternative 3-bit ADPCM code. See +\code{lin2adpcm3} for details. +\end{funcdesc} + +\begin{funcdesc}{avg}{fragment\, width} +This function returns the average over all samples in the fragment. +\end{funcdesc} + +\begin{funcdesc}{avgpp}{fragment\, width} +This function returns the average peak-peak value over all samples in +the fragment. No filtering is done, so the useability of this routine +is questionable. +\end{funcdesc} + +\begin{funcdesc}{bias}{fragment\, width\, bias} +This function returns a fragment that is the original fragment with a +bias added to each sample. +\end{funcdesc} + +\begin{funcdesc}{cross}{fragment\, width} +This function returns the number of zero crossings in the fragment +passed as an argument. +\end{funcdesc} + +\begin{funcdesc}{findfactor}{fragment\, reference} +This routine (which only accepts 2-byte sample fragments) calculates a +factor \var{F} such that \code{rms(add(fragment, mul(reference, -F)))} +is minimal, i.e. it calculates the factor with which you should +multiply \var{reference} to make it match as good as possible to +\var{fragment}. The fragments should be the same size. + +The time taken by this routine is proportional to \code{len(fragment)}. +\end{funcdesc} + +\begin{funcdesc}{findfit}{fragment\, reference} +This routine (which only accepts 2-byte sample fragments) tries to +match \var{reference} as good as possible to a portion of +\var{fragment} (which should be the longer fragment). It +(conceptually) does this by taking slices out of \var{fragment}, using +\code{findfactor} to compute the best match, and minimizing the +result. +It returns a tuple \code{(\var{offset}, \var{factor})} with offset the +(integer) offset into \var{fragment} where the optimal match started +and \var{factor} the floating-point factor as per findfactor. +\end{funcdesc} + +\begin{funcdesc}{findmax}{fragment\, length} +This routine (which only accepts 2-byte sample fragments) searches +\var{fragment} for a slice of length \var{length} samples (not bytes!) +with maximum energy, i.e. it returns \var{i} for which +\code{rms(fragment[i*2:(i+length)*2])} is maximal. + +The routine takes time proportional to \code{len(fragment)}. +\end{funcdesc} + +\begin{funcdesc}{getsample}{fragment\, width\, index} +This function returns the value of sample \var{index} from the +fragment. +\end{funcdesc} + +\begin{funcdesc}{lin2lin}{fragment\, width\, newwidth} +This function converts samples between 1-, 2- and 4-byte formats. +\end{funcdesc} + +\begin{funcdesc}{lin2adpcm}{fragment\, width\, state} +This function converts samples to 4 bit Intel/DVI ADPCM encoding. +ADPCM coding is an adaptive coding scheme, whereby each 4 bit number +is the difference between one sample and the next, divided by a +(varying) step. The Intel/DVI ADPCM algorythm has been selected for +use by the IMA, so may well become a standard. + +\code{State} is a tuple containing the state of the coder. The coder +returns a tuple \code{(\var{adpcmfrag}, \var{newstate})}, and the +\var{newstate} should be passed to the next call of lin2adpcm. In the +initial call \code{None} can be passed as the state. \var{adpcmfrag} is +the ADPCM coded fragment packed 2 4-bit values per byte. +\end{funcdesc} + +\begin{funcdesc}{lin2adpcm3}{fragment\, width\, state} +This is an alternative ADPCM coder that uses only 3 bits per sample. +It is not compatible with the Intel/DVI ADPCM coder and its output is +not packed (due to laziness on the side of the author). Its use is +discouraged. +\end{funcdesc} + +\begin{funcdesc}{lin2ulaw}{fragment\, width} +This function converts samples in the audio fragment to U-LAW encoding +and returns this as a python string. U-LAW is an audio encoding format +whereby you get a dynamic range of about 14 bits using only 8 bit +samples. It is used by the Sun audio hardware, among others. +\end{funcdesc} + +\begin{funcdesc}{minmax}{fragment\, width} +This function returns a tuple consisting of the minimum and maximum +values of all samples in the sound fragment. +\end{funcdesc} + +\begin{funcdesc}{max}{fragment\, width} +This function returns the maximum of the {\em absolute value} of all +samples in a fragment. +\end{funcdesc} + +\begin{funcdesc}{maxpp}{fragment\, width} +This function returns the maximum peak-peak value in the sound fragment. +\end{funcdesc} + +\begin{funcdesc}{mul}{fragment\, width\, factor} +Mul returns a fragment that has all samples in the original framgent +multiplied by the floating-point value \var{factor}. Overflow is +silently ignored. +\end{funcdesc} + +\begin{funcdesc}{reverse}{fragment\, width} +This function reverses the samples in a fragment and returns the +modified fragment. +\end{funcdesc} + +\begin{funcdesc}{tomono}{fragment\, width\, lfactor\, rfactor} +This function converts a stereo fragment to a mono fragment. The left +channel is multiplied by \var{lfactor} and the right channel by +\var{rfactor} before adding the two channels to give a mono signal. +\end{funcdesc} + +\begin{funcdesc}{tostereo}{fragment\, width\, lfactor\, rfactor} +This function generates a stereo fragment from a mono fragment. Each +pair of samples in the stereo fragment are computed from the mono +sample, whereby left channel samples are multiplied by \var{lfactor} +and right channel samples by \var{rfactor}. +\end{funcdesc} + +\begin{funcdesc}{mul}{fragment\, width\, factor} +Mul returns a fragment that has all samples in the original framgent +multiplied by the floating-point value \var{factor}. Overflow is +silently ignored. +\end{funcdesc} + +\begin{funcdesc}{rms}{fragment\, width\, factor} +Returns the root-mean-square of the fragment, i.e. +\iftexi +the square root of the quotient of the sum of all squared sample value, +divided by the sumber of samples. +\else +% in eqn: sqrt { sum S sub i sup 2 over n } +\begin{displaymath} +\catcode`_=8 +\sqrt{\frac{\sum{{S_{i}}^{2}}}{n}} +\end{displaymath} +\fi +This is a measure of the power in an audio signal. +\end{funcdesc} + +\begin{funcdesc}{ulaw2lin}{fragment\, width} +This function converts sound fragments in ULAW encoding to linearly +encoded sound fragments. ULAW encoding always uses 8 bits samples, so +\var{width} refers only to the sample width of the output fragment here. +\end{funcdesc} + +Note that operations such as \code{mul} or \code{max} make no +distinction between mono and stereo fragments, i.e. all samples are +treated equal. If this is a problem the stereo fragment should be split +into two mono fragments first and recombined later. Here is an example +of how to do that: +\bcode\begin{verbatim} +def mul_stereo(sample, width, lfactor, rfactor): + lsample = audioop.tomono(sample, width, 1, 0) + rsample = audioop.tomono(sample, width, 0, 1) + lsample = audioop.mul(sample, width, lfactor) + rsample = audioop.mul(sample, width, rfactor) + lsample = audioop.tostereo(lsample, width, 1, 0) + rsample = audioop.tostereo(rsample, width, 0, 1) + return audioop.add(lsample, rsample, width) +\end{verbatim}\ecode + +If you use the ADPCM coder to build network packets and you want your +protocol to be stateless (i.e. to be able to tolerate packet loss) +you should not only transmit the data but also the state. Note that +you should send the \var{initial} state (the one you passed to +lin2adpcm) along to the decoder, not the final state (as returned by +the coder). If you want to use \code{struct} to store the state in +binary you can code the first element (the predicted value) in 16 bits +and the second (the delta index) in 8. + +The ADPCM coders have never been tried against other ADPCM coders, +only against themselves. It could well be that I misinterpreted the +standards in which case they will not be interoperable with the +respective standards. + +The \code{find...} routines might look a bit funny at first sight. +They are primarily meant for doing echo cancellation. A reasonably +fast way to do this is to pick the most energetic piece of the output +sample, locate that in the input sample and subtract the whole output +sample from the input sample: +\bcode\begin{verbatim} +def echocancel(outputdata, inputdata): + pos = audioop.findmax(outputdata, 800) # one tenth second + out_test = outputdata[pos*2:] + in_test = inputdata[pos*2:] + ipos, factor = audioop.findfit(in_test, out_test) + # Optional (for better cancellation): + # factor = audioop.findfactor(in_test[ipos*2:ipos*2+len(out_test)], + # out_test) + prefill = '\0'*(pos+ipos)*2 + postfill = '\0'*(len(inputdata)-len(prefill)-len(outputdata)) + outputdata = prefill + audioop.mul(outputdata,2,-factor) + postfill + return audioop.add(inputdata, outputdata, 2) +\end{verbatim}\ecode diff --git a/Doc/lib/libbltin.tex b/Doc/lib/libbltin.tex new file mode 100644 index 0000000..04cea20 --- /dev/null +++ b/Doc/lib/libbltin.tex @@ -0,0 +1,6 @@ +\section{Built-in Module \sectcode{__builtin__}} +\bimodindex{__builtin__} + +This module provides direct access to all `built-in' identifier of +Python; e.g. \code{__builtin__.open} is the full name for the built-in +function \code{open}. diff --git a/Doc/lib/libcrypto.tex b/Doc/lib/libcrypto.tex new file mode 100644 index 0000000..467bee4 --- /dev/null +++ b/Doc/lib/libcrypto.tex @@ -0,0 +1,5 @@ +\chapter{CRYPTOGRAPHIC EXTENSIONS} + +The modules described in this chapter implement various algorithms of +a cryptographic nature. They are available at the discretion of the +installation. diff --git a/Doc/lib/libdbm.tex b/Doc/lib/libdbm.tex new file mode 100644 index 0000000..7ff4ee5 --- /dev/null +++ b/Doc/lib/libdbm.tex @@ -0,0 +1,24 @@ +\section{Built-in Module \sectcode{dbm}} +\bimodindex{dbm} + +Dbm provides python programs with an interface to the unix \code{ndbm} +database library. Dbm objects are of the mapping type, so they can be +handled just like objects of the built-in \dfn{dictionary} type, +except that keys and values are always strings, and printing a dbm +object doesn't print the keys and values. + +The module defines the following constant and functions: + +\renewcommand{\indexsubitem}{(in module dbm)} +\begin{excdesc}{error} +Raised on dbm-specific errors, such as I/O errors. \code{KeyError} is +raised for general mapping errors like specifying an incorrect key. +\end{excdesc} + +\begin{funcdesc}{open}{filename\, rwmode\, filemode} +Open a dbm database and return a mapping object. \var{filename} is +the name of the database file (without the \file{.dir} or \file{.pag} +extensions), \var{rwmode} is \code{'r'}, \code{'w'} or \code{'rw'} as for +\code{open}, and \var{filemode} is the unix mode of the file, used only +when the database has to be created. +\end{funcdesc} diff --git a/Doc/lib/libexcs.tex b/Doc/lib/libexcs.tex new file mode 100644 index 0000000..33083cd --- /dev/null +++ b/Doc/lib/libexcs.tex @@ -0,0 +1,172 @@ +\section{Built-in Exceptions} + +Exceptions are string objects. Two distinct string objects with the +same value are different exceptions. This is done to force programmers +to use exception names rather than their string value when specifying +exception handlers. The string value of all built-in exceptions is +their name, but this is not a requirement for user-defined exceptions +or exceptions defined by library modules. + +The following exceptions can be generated by the interpreter or +built-in functions. Except where mentioned, they have an `associated +value' indicating the detailed cause of the error. This may be a +string or a tuple containing several items of information (e.g., an +error code and a string explaining the code). + +User code can raise built-in exceptions. This can be used to test an +exception handler or to report an error condition `just like' the +situation in which the interpreter raises the same exception; but +beware that there is nothing to prevent user code from raising an +inappropriate error. + +\renewcommand{\indexsubitem}{(built-in exception)} + +\begin{excdesc}{AttributeError} +% xref to attribute reference? + Raised when an attribute reference or assignment fails. (When an + object does not support attributes references or attribute assignments + at all, \code{TypeError} is raised.) +\end{excdesc} + +\begin{excdesc}{EOFError} +% XXXJH xrefs here + Raised when one of the built-in functions (\code{input()} or + \code{raw_input()}) hits an end-of-file condition (\EOF{}) without + reading any data. +% XXXJH xrefs here + (N.B.: the \code{read()} and \code{readline()} methods of file + objects return an empty string when they hit \EOF{}.) No associated value. +\end{excdesc} + +\begin{excdesc}{IOError} +% XXXJH xrefs here + Raised when an I/O operation (such as a \code{print} statement, the + built-in \code{open()} function or a method of a file object) fails + for an I/O-related reason, e.g., `file not found', `disk full'. +\end{excdesc} + +\begin{excdesc}{ImportError} +% XXXJH xref to import statement? + Raised when an \code{import} statement fails to find the module + definition or when a \code{from {\rm \ldots} import} fails to find a + name that is to be imported. +\end{excdesc} + +\begin{excdesc}{IndexError} +% XXXJH xref to sequences + Raised when a sequence subscript is out of range. (Slice indices are + silently truncated to fall in the allowed range; if an index is not a + plain integer, \code{TypeError} is raised.) +\end{excdesc} + +\begin{excdesc}{KeyError} +% XXXJH xref to mapping objects? + Raised when a mapping (dictionary) key is not found in the set of + existing keys. +\end{excdesc} + +\begin{excdesc}{KeyboardInterrupt} + Raised when the user hits the interrupt key (normally + \kbd{Control-C} or +\key{DEL}). During execution, a check for interrupts is made regularly. +% XXXJH xrefs here + Interrupts typed when a built-in function \code{input()} or + \code{raw_input()}) is waiting for input also raise this exception. No + associated value. +\end{excdesc} + +\begin{excdesc}{MemoryError} + Raised when an operation runs out of memory but the situation may + still be rescued (by deleting some objects). The associated value is + a string indicating what kind of (internal) operation ran out of memory. + Note that because of the underlying memory management architecture + (\C{}'s \code{malloc()} function), the interpreter may not always be able + to completely recover from this situation; it nevertheless raises an + exception so that a stack traceback can be printed, in case a run-away + program was the cause. +\end{excdesc} + +\begin{excdesc}{NameError} + Raised when a local or global name is not found. This applies only + to unqualified names. The associated value is the name that could + not be found. +\end{excdesc} + +\begin{excdesc}{OverflowError} +% XXXJH reference to long's and/or int's? + Raised when the result of an arithmetic operation is too large to be + represented. This cannot occur for long integers (which would rather + raise \code{MemoryError} than give up). Because of the lack of + standardization of floating point exception handling in \C{}, most + floating point operations also aren't checked. For plain integers, + all operations that can overflow are checked except left shift, where + typical applications prefer to drop bits than raise an exception. +\end{excdesc} + +\begin{excdesc}{RuntimeError} + Raised when an error is detected that doesn't fall in any of the + other categories. The associated value is a string indicating what + precisely went wrong. (This exception is a relic from a previous + version of the interpreter; it is not used any more except by some + extension modules that haven't been converted to define their own + exceptions yet.) +\end{excdesc} + +\begin{excdesc}{SyntaxError} +% XXXJH xref to these functions? + Raised when the parser encounters a syntax error. This may occur in + an \code{import} statement, in an \code{exec} statement, in a call + to the built-in function \code{eval()} or \code{input()}, or + when reading the initial script or standard input (also + interactively). +\end{excdesc} + +\begin{excdesc}{SystemError} + Raised when the interpreter finds an internal error, but the + situation does not look so serious to cause it to abandon all hope. + The associated value is a string indicating what went wrong (in + low-level terms). + + You should report this to the author or maintainer of your Python + interpreter. Be sure to report the version string of the Python + interpreter (\code{sys.version}; it is also printed at the start of an + interactive Python session), the exact error message (the exception's + associated value) and if possible the source of the program that + triggered the error. +\end{excdesc} + +\begin{excdesc}{SystemExit} +% XXXJH xref to module sys? + This exception is raised by the \code{sys.exit()} function. When it + is not handled, the Python interpreter exits; no stack traceback is + printed. If the associated value is a plain integer, it specifies the + system exit status (passed to \C{}'s \code{exit()} function); if it is + \code{None}, the exit status is zero; if it has another type (such as + a string), the object's value is printed and the exit status is one. + + A call to \code{sys.exit} is translated into an exception so that + clean-up handlers (\code{finally} clauses of \code{try} statements) + can be executed, and so that a debugger can execute a script without + running the risk of losing control. The \code{posix._exit()} function + can be used if it is absolutely positively necessary to exit + immediately (e.g., after a \code{fork()} in the child process). +\end{excdesc} + +\begin{excdesc}{TypeError} + Raised when a built-in operation or function is applied to an object + of inappropriate type. The associated value is a string giving + details about the type mismatch. +\end{excdesc} + +\begin{excdesc}{ValueError} + Raised when a built-in operation or function receives an argument + that has the right type but an inappropriate value, and the + situation is not described by a more precise exception such as + \code{IndexError}. +\end{excdesc} + +\begin{excdesc}{ZeroDivisionError} + Raised when the second argument of a division or modulo operation is + zero. The associated value is a string indicating the type of the + operands and the operation. +\end{excdesc} diff --git a/Doc/lib/libfl.tex b/Doc/lib/libfl.tex new file mode 100644 index 0000000..b705a6b --- /dev/null +++ b/Doc/lib/libfl.tex @@ -0,0 +1,483 @@ +\section{Built-in Module \sectcode{fl}} +\bimodindex{fl} + +This module provides an interface to the FORMS Library by Mark +Overmars, version 2.0b. For more info about FORMS, write to +{\tt markov@cs.ruu.nl}. + +Most functions are literal translations of their C equivalents, +dropping the initial \samp{fl_} from their name. Constants used by the +library are defined in module \code{FL} described below. + +The creation of objects is a little different in Python than in C: +instead of the `current form' maintained by the library to which new +FORMS objects are added, all functions that add a FORMS object to a +button are methods of the Python object representing the form. +Consequently, there are no Python equivalents for the C functions +\code{fl_addto_form} and \code{fl_end_form}, and the equivalent of +\code{fl_bgn_form} is called \code{fl.make_form}. + +Watch out for the somewhat confusing terminology: FORMS uses the word +\dfn{object} for the buttons, sliders etc. that you can place in a form. +In Python, `object' means any value. The Python interface to FORMS +introduces two new Python object types: form objects (representing an +entire form) and FORMS objects (representing one button, slider etc.). +Hopefully this isn't too confusing... + +There are no `free objects' in the Python interface to FORMS, nor is +there an easy way to add object classes written in Python. The FORMS +interface to GL event handling is avaiable, though, so you can mix +FORMS with pure GL windows. + +\strong{Please note:} importing \code{fl} implies a call to the GL function +\code{foreground()} and to the FORMS routine \code{fl_init()}. + +\subsection{Functions defined in module \sectcode{fl}} + +Module \code{fl} defines the following functions. For more information +about what they do, see the description of the equivalent C function +in the FORMS documentation: + +\renewcommand{\indexsubitem}{(in module fl)} +\begin{funcdesc}{make_form}{type\, width\, height} +Create a form with given type, width and height. This returns a +\dfn{form} object, whose methods are described below. +\end{funcdesc} + +\begin{funcdesc}{do_forms}{} +The standard FORMS main loop. Returns a Python object representing +the FORMS object needing interaction, or the special value +\code{FL.EVENT}. +\end{funcdesc} + +\begin{funcdesc}{check_forms}{} +Check for FORMS events. Returns what \code{do_forms} above returns, +or \code{None} if there is no event that immediately needs +interaction. +\end{funcdesc} + +\begin{funcdesc}{set_event_call_back}{function} +Set the event callback function. +\end{funcdesc} + +\begin{funcdesc}{set_graphics_mode}{rgbmode\, doublebuffering} +Set the graphics modes. +\end{funcdesc} + +\begin{funcdesc}{get_rgbmode}{} +Return the current rgb mode. This is the value of the C global +variable \code{fl_rgbmode}. +\end{funcdesc} + +\begin{funcdesc}{show_message}{str1\, str2\, str3} +Show a dialog box with a three-line message and an OK button. +\end{funcdesc} + +\begin{funcdesc}{show_question}{str1\, str2\, str3} +Show a dialog box with a three-line message and YES and NO buttons. +It returns \code{1} if the user pressed YES, \code{0} if NO. +\end{funcdesc} + +\begin{funcdesc}{show_choice}{str1\, str2\, str3\, but1\, but2\, but3} +Show a dialog box with a three-line message and up to three buttons. +It returns the number of the button clicked by the user +(\code{1}, \code{2} or \code{3}). +The \var{but2} and \var{but3} arguments are optional. +\end{funcdesc} + +\begin{funcdesc}{show_input}{prompt\, default} +Show a dialog box with a one-line prompt message and text field in +which the user can enter a string. The second argument is the default +input string. It returns the string value as edited by the user. +\end{funcdesc} + +\begin{funcdesc}{show_file_selector}{message\, directory\, pattern\, default} +Show a dialog box inm which the user can select a file. It returns +the absolute filename selected by the user, or \code{None} if the user +presses Cancel. +\end{funcdesc} + +\begin{funcdesc}{get_directory}{} +\funcline{get_pattern}{} +\funcline{get_filename}{} +These functions return the directory, pattern and filename (the tail +part only) selected by the user in the last \code{show_file_selector} +call. +\end{funcdesc} + +\begin{funcdesc}{qdevice}{dev} +\funcline{unqdevice}{dev} +\funcline{isqueued}{dev} +\funcline{qtest}{} +\funcline{qread}{} +%\funcline{blkqread}{?} +\funcline{qreset}{} +\funcline{qenter}{dev\, val} +\funcline{get_mouse}{} +\funcline{tie}{button\, valuator1\, valuator2} +These functions are the FORMS interfaces to the corresponding GL +functions. Use these if you want to handle some GL events yourself +when using \code{fl.do_events}. When a GL event is detected that +FORMS cannot handle, \code{fl.do_forms()} returns the special value +\code{FL.EVENT} and you should call \code{fl.qread()} to read the +event from the queue. Don't use the equivalent GL functions! +\end{funcdesc} + +\begin{funcdesc}{color}{} +\funcline{mapcolor}{} +\funcline{getmcolor}{} +See the description in the FORMS documentation of \code{fl_color}, +\code{fl_mapcolor} and \code{fl_getmcolor}. +\end{funcdesc} + +\subsection{Form object methods and data attributes} + +Form objects (returned by \code{fl.make_form()} above) have the +following methods. Each method corresponds to a C function whose name +is prefixed with \samp{fl_}; and whose first argument is a form +pointer; please refer to the official FORMS documentation for +descriptions. + +All the \samp{add_{\rm \ldots}} functions return a Python object representing +the FORMS object. Methods of FORMS objects are described below. Most +kinds of FORMS object also have some methods specific to that kind; +these methods are listed here. + +\begin{flushleft} +\renewcommand{\indexsubitem}{(form object method)} +\begin{funcdesc}{show_form}{placement\, bordertype\, name} + Show the form. +\end{funcdesc} + +\begin{funcdesc}{hide_form}{} + Hide the form. +\end{funcdesc} + +\begin{funcdesc}{redraw_form}{} + Redraw the form. +\end{funcdesc} + +\begin{funcdesc}{set_form_position}{x\, y} +Set the form's position. +\end{funcdesc} + +\begin{funcdesc}{freeze_form}{} +Freeze the form. +\end{funcdesc} + +\begin{funcdesc}{unfreeze_form}{} + Unfreeze the form. +\end{funcdesc} + +\begin{funcdesc}{activate_form}{} + Activate the form. +\end{funcdesc} + +\begin{funcdesc}{deactivate_form}{} + Deactivate the form. +\end{funcdesc} + +\begin{funcdesc}{bgn_group}{} + Begin a new group of objects; return a group object. +\end{funcdesc} + +\begin{funcdesc}{end_group}{} + End the current group of objects. +\end{funcdesc} + +\begin{funcdesc}{find_first}{} + Find the first object in the form. +\end{funcdesc} + +\begin{funcdesc}{find_last}{} + Find the last object in the form. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_box}{type\, x\, y\, w\, h\, name} +Add a box object to the form. +No extra methods. +\end{funcdesc} + +\begin{funcdesc}{add_text}{type\, x\, y\, w\, h\, name} +Add a text object to the form. +No extra methods. +\end{funcdesc} + +%\begin{funcdesc}{add_bitmap}{type\, x\, y\, w\, h\, name} +%Add a bitmap object to the form. +%\end{funcdesc} + +\begin{funcdesc}{add_clock}{type\, x\, y\, w\, h\, name} +Add a clock object to the form. \\ +Method: +\code{get_clock}. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_button}{type\, x\, y\, w\, h\, name} +Add a button object to the form. \\ +Methods: +\code{get_button}, +\code{set_button}. +\end{funcdesc} + +\begin{funcdesc}{add_lightbutton}{type\, x\, y\, w\, h\, name} +Add a lightbutton object to the form. \\ +Methods: +\code{get_button}, +\code{set_button}. +\end{funcdesc} + +\begin{funcdesc}{add_roundbutton}{type\, x\, y\, w\, h\, name} +Add a roundbutton object to the form. \\ +Methods: +\code{get_button}, +\code{set_button}. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_slider}{type\, x\, y\, w\, h\, name} +Add a slider object to the form. \\ +Methods: +\code{set_slider_value}, +\code{get_slider_value}, +\code{set_slider_bounds}, +\code{get_slider_bounds}, +\code{set_slider_return}, +\code{set_slider_size}, +\code{set_slider_precision}, +\code{set_slider_step}. +\end{funcdesc} + +\begin{funcdesc}{add_valslider}{type\, x\, y\, w\, h\, name} +Add a valslider object to the form. \\ +Methods: +\code{set_slider_value}, +\code{get_slider_value}, +\code{set_slider_bounds}, +\code{get_slider_bounds}, +\code{set_slider_return}, +\code{set_slider_size}, +\code{set_slider_precision}, +\code{set_slider_step}. +\end{funcdesc} + +\begin{funcdesc}{add_dial}{type\, x\, y\, w\, h\, name} +Add a dial object to the form. \\ +Methods: +\code{set_dial_value}, +\code{get_dial_value}, +\code{set_dial_bounds}, +\code{get_dial_bounds}. +\end{funcdesc} + +\begin{funcdesc}{add_positioner}{type\, x\, y\, w\, h\, name} +Add a positioner object to the form. \\ +Methods: +\code{set_positioner_xvalue}, +\code{set_positioner_yvalue}, +\code{set_positioner_xbounds}, +\code{set_positioner_ybounds}, +\code{get_positioner_xvalue}, +\code{get_positioner_yvalue}, +\code{get_positioner_xbounds}, +\code{get_positioner_ybounds}. +\end{funcdesc} + +\begin{funcdesc}{add_counter}{type\, x\, y\, w\, h\, name} +Add a counter object to the form. \\ +Methods: +\code{set_counter_value}, +\code{get_counter_value}, +\code{set_counter_bounds}, +\code{set_counter_step}, +\code{set_counter_precision}, +\code{set_counter_return}. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_input}{type\, x\, y\, w\, h\, name} +Add a input object to the form. \\ +Methods: +\code{set_input}, +\code{get_input}, +\code{set_input_color}, +\code{set_input_return}. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_menu}{type\, x\, y\, w\, h\, name} +Add a menu object to the form. \\ +Methods: +\code{set_menu}, +\code{get_menu}, +\code{addto_menu}. +\end{funcdesc} + +\begin{funcdesc}{add_choice}{type\, x\, y\, w\, h\, name} +Add a choice object to the form. \\ +Methods: +\code{set_choice}, +\code{get_choice}, +\code{clear_choice}, +\code{addto_choice}, +\code{replace_choice}, +\code{delete_choice}, +\code{get_choice_text}, +\code{set_choice_fontsize}, +\code{set_choice_fontstyle}. +\end{funcdesc} + +\begin{funcdesc}{add_browser}{type\, x\, y\, w\, h\, name} +Add a browser object to the form. \\ +Methods: +\code{set_browser_topline}, +\code{clear_browser}, +\code{add_browser_line}, +\code{addto_browser}, +\code{insert_browser_line}, +\code{delete_browser_line}, +\code{replace_browser_line}, +\code{get_browser_line}, +\code{load_browser}, +\code{get_browser_maxline}, +\code{select_browser_line}, +\code{deselect_browser_line}, +\code{deselect_browser}, +\code{isselected_browser_line}, +\code{get_browser}, +\code{set_browser_fontsize}, +\code{set_browser_fontstyle}, +\code{set_browser_specialkey}. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_timer}{type\, x\, y\, w\, h\, name} +Add a timer object to the form. \\ +Methods: +\code{set_timer}, +\code{get_timer}. +\end{funcdesc} +\end{flushleft} + +Form objects have the following data attributes; see the FORMS +documentation: + +\begin{tableiii}{|l|c|l|}{code}{Name}{Type}{Meaning} + \lineiii{window}{int (read-only)}{GL window id} + \lineiii{w}{float}{form width} + \lineiii{h}{float}{form height} + \lineiii{x}{float}{form x origin} + \lineiii{y}{float}{form y origin} + \lineiii{deactivated}{int}{nonzero if form is deactivated} + \lineiii{visible}{int}{nonzero if form is visible} + \lineiii{frozen}{int}{nonzero if form is frozen} + \lineiii{doublebuf}{int}{nonzero if double buffering on} +\end{tableiii} + +\subsection{FORMS object methods and data attributes} + +Besides methods specific to particular kinds of FORMS objects, all +FORMS objects also have the following methods: + +\renewcommand{\indexsubitem}{(FORMS object method)} +\begin{funcdesc}{set_call_back}{function\, argument} +Set the object's callback function and argument. When the object +needs interaction, the callback function will be called with two +arguments: the object, and the callback argument. (FORMS objects +without a callback function are returned by \code{fl.do_forms()} or +\code{fl.check_forms()} when they need interaction.) Call this method +without arguments to remove the callback function. +\end{funcdesc} + +\begin{funcdesc}{delete_object}{} + Delete the object. +\end{funcdesc} + +\begin{funcdesc}{show_object}{} + Show the object. +\end{funcdesc} + +\begin{funcdesc}{hide_object}{} + Hide the object. +\end{funcdesc} + +\begin{funcdesc}{redraw_object}{} + Redraw the object. +\end{funcdesc} + +\begin{funcdesc}{freeze_object}{} + Freeze the object. +\end{funcdesc} + +\begin{funcdesc}{unfreeze_object}{} + Unfreeze the object. +\end{funcdesc} + +%\begin{funcdesc}{handle_object}{} XXX +%\end{funcdesc} + +%\begin{funcdesc}{handle_object_direct}{} XXX +%\end{funcdesc} + +FORMS objects have these data attributes; see the FORMS documentation: + +\begin{tableiii}{|l|c|l|}{code}{Name}{Type}{Meaning} + \lineiii{objclass}{int (read-only)}{object class} + \lineiii{type}{int (read-only)}{object type} + \lineiii{boxtype}{int}{box type} + \lineiii{x}{float}{x origin} + \lineiii{y}{float}{y origin} + \lineiii{w}{float}{width} + \lineiii{h}{float}{height} + \lineiii{col1}{int}{primary color} + \lineiii{col2}{int}{secondary color} + \lineiii{align}{int}{alignment} + \lineiii{lcol}{int}{label color} + \lineiii{lsize}{float}{label font size} + \lineiii{label}{string}{label string} + \lineiii{lstyle}{int}{label style} + \lineiii{pushed}{int (read-only)}{(see FORMS docs)} + \lineiii{focus}{int (read-only)}{(see FORMS docs)} + \lineiii{belowmouse}{int (read-only)}{(see FORMS docs)} + \lineiii{frozen}{int (read-only)}{(see FORMS docs)} + \lineiii{active}{int (read-only)}{(see FORMS docs)} + \lineiii{input}{int (read-only)}{(see FORMS docs)} + \lineiii{visible}{int (read-only)}{(see FORMS docs)} + \lineiii{radio}{int (read-only)}{(see FORMS docs)} + \lineiii{automatic}{int (read-only)}{(see FORMS docs)} +\end{tableiii} + +\section{Standard Module \sectcode{FL}} +\nodename{FL (uppercase)} +\stmodindex{FL} + +This module defines symbolic constants needed to use the built-in +module \code{fl} (see above); they are equivalent to those defined in +the C header file \file{<forms.h>} except that the name prefix +\samp{FL_} is omitted. Read the module source for a complete list of +the defined names. Suggested use: + +\bcode\begin{verbatim} +import fl +from FL import * +\end{verbatim}\ecode + +\section{Standard Module \sectcode{flp}} +\stmodindex{flp} + +This module defines functions that can read form definitions created +by the `form designer' (\code{fdesign}) program that comes with the +FORMS library (see module \code{fl} above). + +For now, see the file \file{flp.doc} in the Python library source +directory for a description. + +XXX A complete description should be inserted here! diff --git a/Doc/lib/libfm.tex b/Doc/lib/libfm.tex new file mode 100644 index 0000000..acbc05d --- /dev/null +++ b/Doc/lib/libfm.tex @@ -0,0 +1,86 @@ +\section{Built-in Module \sectcode{fm}} +\bimodindex{fm} + +This module provides access to the IRIS {\em Font Manager} library. +It is available only on Silicon Graphics machines. +See also: 4Sight User's Guide, Section 1, Chapter 5: Using the IRIS +Font Manager. + +This is not yet a full interface to the IRIS Font Manager. +Among the unsupported features are: matrix operations; cache +operations; character operations (use string operations instead); some +details of font info; individual glyph metrics; and printer matching. + +It supports the following operations: + +\renewcommand{\indexsubitem}{(in module fm)} +\begin{funcdesc}{init}{} +Initialization function. +Calls \code{fminit()}. +It is normally not necessary to call this function, since it is called +automatically the first time the \code{fm} module is imported. +\end{funcdesc} + +\begin{funcdesc}{findfont}{fontname} +Return a font handle object. +Calls \code{fmfindfont(\var{fontname})}. +\end{funcdesc} + +\begin{funcdesc}{enumerate}{} +Returns a list of available font names. +This is an interface to \code{fmenumerate()}. +\end{funcdesc} + +\begin{funcdesc}{prstr}{string} +Render a string using the current font (see the \code{setfont()} font +handle method below). +Calls \code{fmprstr(\var{string})}. +\end{funcdesc} + +\begin{funcdesc}{setpath}{string} +Sets the font search path. +Calls \code{fmsetpath(string)}. +(XXX Does not work!?!) +\end{funcdesc} + +\begin{funcdesc}{fontpath}{} +Returns the current font search path. +\end{funcdesc} + +Font handle objects support the following operations: + +\renewcommand{\indexsubitem}{(font handle method)} +\begin{funcdesc}{scalefont}{factor} +Returns a handle for a scaled version of this font. +Calls \code{fmscalefont(\var{fh}, \var{factor})}. +\end{funcdesc} + +\begin{funcdesc}{setfont}{} +Makes this font the current font. +Note: the effect is undone silently when the font handle object is +deleted. +Calls \code{fmsetfont(\var{fh})}. +\end{funcdesc} + +\begin{funcdesc}{getfontname}{} +Returns this font's name. +Calls \code{fmgetfontname(\var{fh})}. +\end{funcdesc} + +\begin{funcdesc}{getcomment}{} +Returns the comment string associated with this font. +Raises an exception if there is none. +Calls \code{fmgetcomment(\var{fh})}. +\end{funcdesc} + +\begin{funcdesc}{getfontinfo}{} +Returns a tuple giving some pertinent data about this font. +This is an interface to \code{fmgetfontinfo()}. +The returned tuple contains the following numbers: +\code{(\var{printermatched}, \var{fixed_width}, \var{xorig}, \var{yorig}, \var{xsize}, \var{ysize}, \var{height}, \var{nglyphs})}. +\end{funcdesc} + +\begin{funcdesc}{getstrwidth}{string} +Returns the width, in pixels, of the string when drawn in this font. +Calls \code{fmgetstrwidth(\var{fh}, \var{string})}. +\end{funcdesc} diff --git a/Doc/lib/libfuncs.tex b/Doc/lib/libfuncs.tex new file mode 100644 index 0000000..e0b36f3 --- /dev/null +++ b/Doc/lib/libfuncs.tex @@ -0,0 +1,356 @@ +\section{Built-in Functions} + +The Python interpreter has a number of functions built into it that +are always available. They are listed here in alphabetical order. + + +\renewcommand{\indexsubitem}{(built-in function)} +\begin{funcdesc}{abs}{x} + Return the absolute value of a number. The argument may be a plain + or long integer or a floating point number. +\end{funcdesc} + +\begin{funcdesc}{apply}{function\, args} +The \var{function} argument must be a callable object (a user-defined or +built-in function or method, or a class object) and the \var{args} +argument must be a tuple. The \var{function} is called with +\var{args} as argument list; the number of arguments is the the length +of the tuple. (This is different from just calling +\code{\var{func}(\var{args})}, since in that case there is always +exactly one argument.) +\end{funcdesc} + +\begin{funcdesc}{chr}{i} + Return a string of one character whose \ASCII{} code is the integer + \var{i}, e.g., \code{chr(97)} returns the string \code{'a'}. This is the + inverse of \code{ord()}. The argument must be in the range [0..255], + inclusive. +\end{funcdesc} + +\begin{funcdesc}{cmp}{x\, y} + Compare the two objects \var{x} and \var{y} and return an integer + according to the outcome. The return value is negative if \code{\var{x} + < \var{y}}, zero if \code{\var{x} == \var{y}} and strictly positive if + \code{\var{x} > \var{y}}. +\end{funcdesc} + +\begin{funcdesc}{coerce}{x\, y} + Return a tuple consisting of the two numeric arguments converted to + a common type, using the same rules as used by arithmetic + operations. +\end{funcdesc} + +\begin{funcdesc}{compile}{string\, filename\, kind} + Compile the \var{string} into a code object. Code objects can be + executed by a \code{exec()} statement or evaluated by a call to + \code{eval()}. The \var{filename} argument should + give the file from which the code was read; pass e.g. \code{'<string>'} + if it wasn't read from a file. The \var{kind} argument specifies + what kind of code must be compiled; it can be \code{'exec'} if + \var{string} consists of a sequence of statements, or \code{'eval'} + if it consists of a single expression. +\end{funcdesc} + +\begin{funcdesc}{dir}{} + Without arguments, return the list of names in the current local + symbol table. With a module, class or class instance object as + argument (or anything else that has a \code{__dict__} attribute), + returns the list of names in that object's attribute dictionary. + The resulting list is sorted. For example: + +\bcode\begin{verbatim} +>>> import sys +>>> dir() +['sys'] +>>> dir(sys) +['argv', 'exit', 'modules', 'path', 'stderr', 'stdin', 'stdout'] +>>> +\end{verbatim}\ecode +\end{funcdesc} + +\begin{funcdesc}{divmod}{a\, b} + Take two numbers as arguments and return a pair of integers + consisting of their integer quotient and remainder. With mixed + operand types, the rules for binary arithmetic operators apply. For + plain and long integers, the result is the same as + \code{(\var{a} / \var{b}, \var{a} \%{} \var{b})}. + For floating point numbers the result is the same as + \code{(math.floor(\var{a} / \var{b}), \var{a} \%{} \var{b})}. +\end{funcdesc} + +\begin{funcdesc}{eval}{s\, globals\, locals} + The arguments are a string and two optional dictionaries. The + string argument is parsed and evaluated as a Python expression + (technically speaking, a condition list) using the dictionaries as + global and local name space. The string must not contain null bytes + or newline characters. The return value is the + result of the expression. If the third argument is omitted it + defaults to the second. If both dictionaries are omitted, the + expression is executed in the environment where \code{eval} is + called. Syntax errors are reported as exceptions. Example: + +\bcode\begin{verbatim} +>>> x = 1 +>>> print eval('x+1') +2 +>>> +\end{verbatim}\ecode + + This function can also be used to execute arbitrary code objects + (e.g. created by \code{compile()}). In this case pass a code + object instead of a string. The code object must have been compiled + passing \code{'eval'} to the \var{kind} argument. + + Note: dynamic execution of statements is supported by the + \code{exec} statement. + +\end{funcdesc} + +\begin{funcdesc}{filter}{function\, list} +Construct a list from those elements of \var{list} for which +\var{function} returns true. If \var{list} is a string or a tuple, +the result also has that type; otherwise it is always a list. If +\var{function} is \code{None}, the identity function is assumed, +i.e. all elements of \var{list} that are false (zero or empty) are +removed. +\end{funcdesc} + +\begin{funcdesc}{float}{x} + Convert a number to floating point. The argument may be a plain or + long integer or a floating point number. +\end{funcdesc} + +\begin{funcdesc}{getattr}{object\, name} + The arguments are an object and a string. The string must be the + name + of one of the object's attributes. The result is the value of that + attribute. For example, \code{getattr(\var{x}, '\var{foobar}')} is equivalent to + \code{\var{x}.\var{foobar}}. +\end{funcdesc} + +\begin{funcdesc}{hasattr}{object\, name} + The arguments are an object and a string. The result is 1 if the + string is the name of one of the object's attributes, 0 if not. + (This is implemented by calling \code{getattr(object, name)} and + seeing whether it raises an exception or not.) +\end{funcdesc} + +\begin{funcdesc}{hash}{object} + Return the hash value of the object (if it has one). Hash values + are 32-bit integers. They are used to quickly compare dictionary + keys during a dictionary lookup. Numeric values that compare equal + have the same hash value (even if they are of different types, e.g. + 1 and 1.0). +\end{funcdesc} + +\begin{funcdesc}{hex}{x} + Convert a number to a hexadecimal string. The result is a valid + Python expression. +\end{funcdesc} + +\begin{funcdesc}{id}{object} + Return the `identity' of an object. This is an integer which is + guaranteed to be unique and constant for this object during its + lifetime. (Two objects whose lifetimes are disjunct may have the + same id() value.) (Implementation note: this is the address of the + object.) +\end{funcdesc} + +\begin{funcdesc}{input}{prompt} + Almost equivalent to \code{eval(raw_input(\var{prompt}))}. As for + \code{raw_input()}, the prompt argument is optional. The difference is + that a long input expression may be broken over multiple lines using the + backslash convention. +\end{funcdesc} + +\begin{funcdesc}{int}{x} + Convert a number to a plain integer. The argument may be a plain or + long integer or a floating point number. +\end{funcdesc} + +\begin{funcdesc}{len}{s} + Return the length (the number of items) of an object. The argument + may be a sequence (string, tuple or list) or a mapping (dictionary). +\end{funcdesc} + +\begin{funcdesc}{long}{x} + Convert a number to a long integer. The argument may be a plain or + long integer or a floating point number. +\end{funcdesc} + +\begin{funcdesc}{map}{function\, list\, ...} +Apply \var{function} to every item of \var{list} and return a list +of the results. If additional \var{list} arguments are passed, +\var{function} must take that many arguments and is applied to +the items of all lists in parallel; if a list is shorter than another +it is assumed to be extended with \code{None} items. If +\var{function} is \code{None}, the identity function is assumed; if +there are multiple list arguments, \code{map} returns a list +consisting of tuples containing the corresponding items from all lists +(i.e. a kind of transpose operation). The \var{list} arguments may be +any kind of sequence; the result is always a list. +\end{funcdesc} + +\begin{funcdesc}{max}{s} + Return the largest item of a non-empty sequence (string, tuple or + list). +\end{funcdesc} + +\begin{funcdesc}{min}{s} + Return the smallest item of a non-empty sequence (string, tuple or + list). +\end{funcdesc} + +\begin{funcdesc}{oct}{x} + Convert a number to an octal string. The result is a valid Python + expression. +\end{funcdesc} + +\begin{funcdesc}{open}{filename\, mode} + % XXXJH xrefs here to Built-in types? + Return a new file object (described earlier under Built-in Types). + The string arguments are the same as for \code{stdio}'s + \code{fopen()}: \var{filename} is the file name to be opened, + \var{mode} indicates how the file is to be opened: \code{'r'} for + reading, \code{'w'} for writing (truncating an existing file), and + \code{'a'} opens it for appending. Modes \code{'r+'}, \code{'w+'} and + \code{'a+'} open the file for updating, provided the underlying + \code{stdio} library understands this. On systems that differentiate + between binary and text files, \code{'b'} appended to the mode opens + the file in binary mode. If the file cannot be opened, \code{IOError} + is raised. +\end{funcdesc} + +\begin{funcdesc}{ord}{c} + Return the \ASCII{} value of a string of one character. E.g., + \code{ord('a')} returns the integer \code{97}. This is the inverse of + \code{chr()}. +\end{funcdesc} + +\begin{funcdesc}{pow}{x\, y} + Return \var{x} to the power \var{y}. The arguments must have + numeric types. With mixed operand types, the rules for binary + arithmetic operators apply. The effective operand type is also the + type of the result; if the result is not expressible in this type, the + function raises an exception; e.g., \code{pow(2, -1)} is not allowed. +\end{funcdesc} + +\begin{funcdesc}{range}{start\, end\, step} + This is a versatile function to create lists containing arithmetic + progressions. It is most often used in \code{for} loops. The + arguments must be plain integers. If the \var{step} argument is + omitted, it defaults to \code{1}. If the \var{start} argument is + omitted, it defaults to \code{0}. The full form returns a list of + plain integers \code{[\var{start}, \var{start} + \var{step}, + \var{start} + 2 * \var{step}, \ldots]}. If \var{step} is positive, + the last element is the largest \code{\var{start} + \var{i} * + \var{step}} less than \var{end}; if \var{step} is negative, the last + element is the largest \code{\var{start} + \var{i} * \var{step}} + greater than \var{end}. \var{step} must not be zero. Example: + +\bcode\begin{verbatim} +>>> range(10) +[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +>>> range(1, 11) +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +>>> range(0, 30, 5) +[0, 5, 10, 15, 20, 25] +>>> range(0, 10, 3) +[0, 3, 6, 9] +>>> range(0, -10, -1) +[0, -1, -2, -3, -4, -5, -6, -7, -8, -9] +>>> range(0) +[] +>>> range(1, 0) +[] +>>> +\end{verbatim}\ecode +\end{funcdesc} + +\begin{funcdesc}{raw_input}{prompt} + The string argument is optional; if present, it is written to + standard + output without a trailing newline. The function then reads a line + from input, converts it to a string (stripping a trailing newline), + and returns that. When \EOF{} is read, \code{EOFError} is raised. + Example: + +\bcode\begin{verbatim} +>>> s = raw_input('--> ') +--> Monty Python's Flying Circus +>>> s +'Monty Python\'s Flying Circus' +>>> +\end{verbatim}\ecode +\end{funcdesc} + +\begin{funcdesc}{reduce}{function\, list\, initializer} +Apply the binary \var{function} to the items of \var{list} so as to +reduce the list to a single value. E.g., +\code{reduce(lambda x, y: x*y, \var{list}, 1)} returns the product of +the elements of \var{list}. The optional \var{initializer} can be +thought of as being prepended to \var{list} so as to allow reduction +of an empty \var{list}. The \var{list} arguments may be any kind of +sequence. +\end{funcdesc} + +\begin{funcdesc}{reload}{module} + Re-parse and re-initialize an already imported \var{module}. The + argument must be a module object, so it must have been successfully + imported before. This is useful if you have edited the module source + file using an external editor and want to try out the new version + without leaving the Python interpreter. Note that if a module is + syntactically correct but its initialization fails, the first + \code{import} statement for it does not import the name, but does + create a (partially initialized) module object; to reload the module + you must first \code{import} it again (this will just make the + partially initialized module object available) before you can + \code{reload()} it. +\end{funcdesc} + +\begin{funcdesc}{repr}{object} +Return a string containing a printable representation of an object. +This is the same value yielded by conversions (reverse quotes). +It is sometimes useful to be able to access this operation as an +ordinary function. For many types, this function makes an attempt +to return a string that would yield an object with the same value +when passed to \code{eval()}. +\end{funcdesc} + +\begin{funcdesc}{round}{x\, n} + Return the floating point value \var{x} rounded to \var{n} digits + after the decimal point. If \var{n} is omitted, it defaults to zero. + The result is a floating point number. Values are rounded to the + closest multiple of 10 to the power minus \var{n}; if two multiples + are equally close, rounding is done away from 0 (so e.g. + \code{round(0.5)} is \code{1.0} and \code{round(-0.5)} is \code{-1.0}). +\end{funcdesc} + +\begin{funcdesc}{setattr}{object\, name\, value} + This is the counterpart of \code{getattr}. The arguments are an + object, a string and an arbitrary value. The string must be the name + of one of the object's attributes. The function assigns the value to + the attribute, provided the object allows it. For example, + \code{setattr(\var{x}, '\var{foobar}', 123)} is equivalent to + \code{\var{x}.\var{foobar} = 123}. +\end{funcdesc} + +\begin{funcdesc}{str}{object} +Return a string containing a nicely printable representation of an +object. For strings, this returns the string itself. The difference +with \code{repr(\var{object}} is that \code{str(\var{object}} does not +always attempt to return a string that is acceptable to \code{eval()}; +its goal is to return a printable string. +\end{funcdesc} + +\begin{funcdesc}{type}{object} +% XXXJH xref to buil-in objects here? + Return the type of an \var{object}. The return value is a type + object. There is not much you can do with type objects except compare + them to other type objects; e.g., the following checks if a variable + is a string: + +\bcode\begin{verbatim} +>>> if type(x) == type(''): print 'It is a string' +\end{verbatim}\ecode +\end{funcdesc} diff --git a/Doc/lib/libgetopt.tex b/Doc/lib/libgetopt.tex new file mode 100644 index 0000000..250d31f --- /dev/null +++ b/Doc/lib/libgetopt.tex @@ -0,0 +1,55 @@ +\section{Standard Module \sectcode{getopt}} + +\stmodindex{getopt} +This module helps scripts to parse the command line arguments in +\code{sys.argv}. +It uses the same conventions as the \UNIX{} +\code{getopt()} +function. +It defines the function +\code{getopt.getopt(args, options)} +and the exception +\code{getopt.error}. + +The first argument to +\code{getopt()} +is the argument list passed to the script with its first element +chopped off (i.e., +\code{sys.argv[1:]}). +The second argument is the string of option letters that the +script wants to recognize, with options that require an argument +followed by a colon (i.e., the same format that \UNIX{} +\code{getopt()} +uses). +The return value consists of two elements: the first is a list of +option-and-value pairs; the second is the list of program arguments +left after the option list was stripped (this is a trailing slice of the +first argument). +Each option-and-value pair returned has the option as its first element, +prefixed with a hyphen (e.g., +\code{'-x'}), +and the option argument as its second element, or an empty string if the +option has no argument. +The options occur in the list in the same order in which they were +found, thus allowing multiple occurrences. +Example: + +\bcode\begin{verbatim} +>>> import getopt, string +>>> args = string.split('-a -b -cfoo -d bar a1 a2') +>>> args +['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2'] +>>> optlist, args = getopt.getopt(args, 'abc:d:') +>>> optlist +[('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')] +>>> args +['a1', 'a2'] +>>> +\end{verbatim}\ecode + +The exception +\code{getopt.error = 'getopt error'} +is raised when an unrecognized option is found in the argument list or +when an option requiring an argument is given none. +The argument to the exception is a string indicating the cause of the +error. diff --git a/Doc/lib/libgl.tex b/Doc/lib/libgl.tex new file mode 100644 index 0000000..e86c04b --- /dev/null +++ b/Doc/lib/libgl.tex @@ -0,0 +1,197 @@ +\section{Built-in Module \sectcode{gl}} +\bimodindex{gl} + +This module provides access to the Silicon Graphics +{\em Graphics Library}. +It is available only on Silicon Graphics machines. + +\strong{Warning:} +Some illegal calls to the GL library cause the Python interpreter to dump +core. +In particular, the use of most GL calls is unsafe before the first +window is opened. + +The module is too large to document here in its entirety, but the +following should help you to get started. +The parameter conventions for the C functions are translated to Python as +follows: + +\begin{itemize} +\item +All (short, long, unsigned) int values are represented by Python +integers. +\item +All float and double values are represented by Python floating point +numbers. +In most cases, Python integers are also allowed. +\item +All arrays are represented by one-dimensional Python lists. +In most cases, tuples are also allowed. +\item +\begin{sloppypar} +All string and character arguments are represented by Python strings, +for instance, +\code{winopen('Hi There!')} +and +\code{rotate(900, 'z')}. +\end{sloppypar} +\item +All (short, long, unsigned) integer arguments or return values that are +only used to specify the length of an array argument are omitted. +For example, the C call + +\bcode\begin{verbatim} +lmdef(deftype, index, np, props) +\end{verbatim}\ecode + +is translated to Python as + +\bcode\begin{verbatim} +lmdef(deftype, index, props) +\end{verbatim}\ecode + +\item +Output arguments are omitted from the argument list; they are +transmitted as function return values instead. +If more than one value must be returned, the return value is a tuple. +If the C function has both a regular return value (that is not omitted +because of the previous rule) and an output argument, the return value +comes first in the tuple. +Examples: the C call + +\bcode\begin{verbatim} +getmcolor(i, &red, &green, &blue) +\end{verbatim}\ecode + +is translated to Python as + +\bcode\begin{verbatim} +red, green, blue = getmcolor(i) +\end{verbatim}\ecode + +\end{itemize} + +The following functions are non-standard or have special argument +conventions: + +\renewcommand{\indexsubitem}{(in module gl)} +\begin{funcdesc}{varray}{argument} +%JHXXX the argument-argument added +Equivalent to but faster than a number of +\code{v3d()} +calls. +The \var{argument} is a list (or tuple) of points. +Each point must be a tuple of coordinates +\code{(\var{x}, \var{y}, \var{z})} or \code{(\var{x}, \var{y})}. +The points may be 2- or 3-dimensional but must all have the +same dimension. +Float and int values may be mixed however. +The points are always converted to 3D double precision points +by assuming \code{\var{z} = 0.0} if necessary (as indicated in the man page), +and for each point +\code{v3d()} +is called. +\end{funcdesc} + +\begin{funcdesc}{nvarray}{} +Equivalent to but faster than a number of +\code{n3f} +and +\code{v3f} +calls. +The argument is an array (list or tuple) of pairs of normals and points. +Each pair is a tuple of a point and a normal for that point. +Each point or normal must be a tuple of coordinates +\code{(\var{x}, \var{y}, \var{z})}. +Three coordinates must be given. +Float and int values may be mixed. +For each pair, +\code{n3f()} +is called for the normal, and then +\code{v3f()} +is called for the point. +\end{funcdesc} + +\begin{funcdesc}{vnarray}{} +Similar to +\code{nvarray()} +but the pairs have the point first and the normal second. +\end{funcdesc} + +\begin{funcdesc}{nurbssurface}{s_k\, t_k\, ctl\, s_ord\, t_ord\, type} +% XXX s_k[], t_k[], ctl[][] +%\itembreak +Defines a nurbs surface. +The dimensions of +\code{\var{ctl}[][]} +are computed as follows: +\code{[len(\var{s_k}) - \var{s_ord}]}, +\code{[len(\var{t_k}) - \var{t_ord}]}. +\end{funcdesc} + +\begin{funcdesc}{nurbscurve}{knots\, ctlpoints\, order\, type} +Defines a nurbs curve. +The length of ctlpoints is +\code{len(\var{knots}) - \var{order}}. +\end{funcdesc} + +\begin{funcdesc}{pwlcurve}{points\, type} +Defines a piecewise-linear curve. +\var{points} +is a list of points. +\var{type} +must be +\code{N_ST}. +\end{funcdesc} + +\begin{funcdesc}{pick}{n} +\funcline{select}{n} +The only argument to these functions specifies the desired size of the +pick or select buffer. +\end{funcdesc} + +\begin{funcdesc}{endpick}{} +\funcline{endselect}{} +These functions have no arguments. +They return a list of integers representing the used part of the +pick/select buffer. +No method is provided to detect buffer overrun. +\end{funcdesc} + +Here is a tiny but complete example GL program in Python: + +\bcode\begin{verbatim} +import gl, GL, time + +def main(): + gl.foreground() + gl.prefposition(500, 900, 500, 900) + w = gl.winopen('CrissCross') + gl.ortho2(0.0, 400.0, 0.0, 400.0) + gl.color(GL.WHITE) + gl.clear() + gl.color(GL.RED) + gl.bgnline() + gl.v2f(0.0, 0.0) + gl.v2f(400.0, 400.0) + gl.endline() + gl.bgnline() + gl.v2f(400.0, 0.0) + gl.v2f(0.0, 400.0) + gl.endline() + time.sleep(5) + +main() +\end{verbatim}\ecode + +\section{Standard Modules \sectcode{GL} and \sectcode{DEVICE}} +\stmodindex{GL} +\stmodindex{DEVICE} + +These modules define the constants used by the Silicon Graphics +{\em Graphics Library} +that C programmers find in the header files +\file{<gl/gl.h>} +and +\file{<gl/device.h>}. +Read the module source files for details. diff --git a/Doc/lib/libgrp.tex b/Doc/lib/libgrp.tex new file mode 100644 index 0000000..1c4dd15 --- /dev/null +++ b/Doc/lib/libgrp.tex @@ -0,0 +1,32 @@ +\section{Built-in Module \sectcode{grp}} + +\bimodindex{grp} +This module provides access to the \UNIX{} group database. +It is available on all \UNIX{} versions. + +Group database entries are reported as 4-tuples containing the +following items from the group database (see \file{<grp.h>}), in order: +\code{gr_name}, +\code{gr_passwd}, +\code{gr_gid}, +\code{gr_mem}. +The gid is an integer, name and password are strings, and the member +list is a list of strings. +(Note that most users are not explicitly listed as members of the +group(s) they are in.) +An exception is raised if the entry asked for cannot be found. + +It defines the following items: + +\renewcommand{\indexsubitem}{(in module grp)} +\begin{funcdesc}{getgrgid}{gid} +Return the group database entry for the given numeric group ID. +\end{funcdesc} + +\begin{funcdesc}{getgrnam}{name} +Return the group database entry for the given group name. +\end{funcdesc} + +\begin{funcdesc}{getgrall}{} +Return a list of all available group entries entries, in arbitrary order. +\end{funcdesc} diff --git a/Doc/lib/libimageop.tex b/Doc/lib/libimageop.tex new file mode 100644 index 0000000..c1cdac4 --- /dev/null +++ b/Doc/lib/libimageop.tex @@ -0,0 +1,87 @@ +\section{Built-in module \sectcode{imageop}} +\bimodindex{imageop} + +The imageop module contains some useful operations on images. +It operates on images consisting of 8 or 32 bit pixels +stored in python strings. This is the same format as used +by \code{gl.lrectwrite} and the \code{imgfile} module. + +The module defines the following variables and functions: + +\renewcommand{\indexsubitem}{(in module imageop)} + +\begin{excdesc}{error} +This exception is raised on all errors, such as unknown number of bits +per pixel, etc. +\end{excdesc} + + +\begin{funcdesc}{crop}{image\, psize\, width\, height\, x0\, y0\, x1\, y1} +This function takes the image in \code{image}, which should by +\code{width} by \code{height} in size and consist of pixels of +\code{psize} bytes, and returns the selected part of that image. \code{X0}, +\code{y0}, \code{x1} and \code{y1} are like the \code{lrectread} +parameters, i.e. the boundary is included in the new image. +The new boundaries need not be inside the picture. Pixels that fall +outside the old image will have their value set to zero. +If \code{x0} is bigger than \code{x1} the new image is mirrored. The +same holds for the y coordinates. +\end{funcdesc} + +\begin{funcdesc}{scale}{image\, psize\, width\, height\, newwidth\, newheight} +This function returns a \code{image} scaled to size \code{newwidth} by +\code{newheight}. No interpolation is done, scaling is done by +simple-minded pixel duplication or removal. Therefore, computer-generated +images or dithered images will not look nice after scaling. +\end{funcdesc} + +\begin{funcdesc}{tovideo}{image\, psize\, width\, height} +This function runs a vertical low-pass filter over an image. It does +so by computing each destination pixel as the average of two +vertically-aligned source pixels. The main use of this routine is to +forestall excessive flicker if the image is displayed on a video +device that uses interlacing, hence the name. +\end{funcdesc} + +\begin{funcdesc}{grey2mono}{image\, width\, height\, threshold} +This function converts a 8-bit deep greyscale image to a 1-bit deep +image by tresholding all the pixels. The resulting image is tightly +packed and is probably only useful as an argument to \code{mono2grey}. +\end{funcdesc} + +\begin{funcdesc}{dither2mono}{image\, width\, height} +This function also converts an 8-bit greyscale image to a 1-bit +monochrome image but it uses a (simple-minded) dithering algorithm. +\end{funcdesc} + +\begin{funcdesc}{mono2grey}{image\, width\, height\, p0\, p1} +This function converts a 1-bit monochrome image to an 8 bit greyscale +or color image. All pixels that are zero-valued on input get value +\code{p0} on output and all one-value input pixels get value \code{p1} +on output. To convert a monochrome black-and-white image to greyscale +pass the values \code{0} and \code{255} respectively. +\end{funcdesc} + +\begin{funcdesc}{grey2grey4}{image\, width\, height} +Convert an 8-bit greyscale image to a 4-bit greyscale image without +dithering. +\end{funcdesc} + +\begin{funcdesc}{grey2grey2}{image\, width\, height} +Convert an 8-bit greyscale image to a 2-bit greyscale image without +dithering. +\end{funcdesc} + +\begin{funcdesc}{dither2grey2}{image\, width\, height} +Convert an 8-bit greyscale image to a 2-bit greyscale image with +dithering. As for \code{dither2mono}, the dithering algorithm is +currently very simple. +\end{funcdesc} + +\begin{funcdesc}{grey42grey}{image\, width\, height} +Convert a 4-bit greyscale image to an 8-bit greyscale image. +\end{funcdesc} + +\begin{funcdesc}{grey22grey}{image\, width\, height} +Convert a 2-bit greyscale image to an 8-bit greyscale image. +\end{funcdesc} diff --git a/Doc/lib/libimgfile.tex b/Doc/lib/libimgfile.tex new file mode 100644 index 0000000..99efaf4 --- /dev/null +++ b/Doc/lib/libimgfile.tex @@ -0,0 +1,63 @@ +\section{Built-in module \sectcode{imgfile}} +\bimodindex{imgfile} + +The imgfile module allows python programs to access SGI imglib image +files (also known as \file{.rgb} files). The module is far from +complete, but is provided anyway since the functionality that there is +is enough in some cases. Currently, colormap files are not supported. + +The module defines the following variables and functions: + +\renewcommand{\indexsubitem}{(in module imgfile)} +\begin{excdesc}{error} +This exception is raised on all errors, such as unsupported file type, etc. +\end{excdesc} + +\begin{funcdesc}{getsizes}{file} +This function returns a tuple \code{(\var{x}, \var{y}, \var{z})} where +\var{x} and \var{y} are the size of the image in pixels and +\var{z} is the number of +bytes per pixel. Only 3 byte RGB pixels and 1 byte greyscale pixels +are currently supported. +\end{funcdesc} + +\begin{funcdesc}{read}{file} +This function reads and decodes the image on the specified file, and +returns it as a python string. The string has either 1 byte greyscale +pixels or 4 byte RGBA pixels. The bottom left pixel is the first in +the string. This format is suitable to pass to \code{gl.lrectwrite}, +for instance. +\end{funcdesc} + +\begin{funcdesc}{readscaled}{file\, x\, y\, filter\, blur} +This function is identical to read but it returns an image that is +scaled to the given \var{x} and \var{y} sizes. If the \var{filter} and +\var{blur} parameters are omitted scaling is done by +simply dropping or duplicating pixels, so the result will be less than +perfect, especially for computer-generated images. + +Alternatively, you can specify a filter to use to smoothen the image +after scaling. The filter forms supported are \code{'impulse'}, +\code{'box'}, \code{'triangle'}, \code{'quadratic'} and +\code{'gaussian'}. If a filter is specified \var{blur} is an optional +parameter specifying the blurriness of the filter. It defaults to \code{1.0}. + +Readscaled makes no +attempt to keep the aspect ratio correct, so that is the users' +responsibility. +\end{funcdesc} + +\begin{funcdesc}{ttob}{flag} +This function sets a global flag which defines whether the scan lines +of the image are read or written from bottom to top (flag is zero, +compatible with SGI GL) or from top to bottom(flag is one, +compatible with X). The default is zero. +\end{funcdesc} + +\begin{funcdesc}{write}{file\, data\, x\, y\, z} +This function writes the RGB or greyscale data in \var{data} to image +file \var{file}. \var{x} and \var{y} give the size of the image, +\var{z} is 1 for 1 byte greyscale images or 3 for RGB images (which are +stored as 4 byte values of which only the lower three bytes are used). +These are the formats returned by \code{gl.lrectread}. +\end{funcdesc} diff --git a/Doc/lib/libintro.tex b/Doc/lib/libintro.tex new file mode 100644 index 0000000..fa591ec --- /dev/null +++ b/Doc/lib/libintro.tex @@ -0,0 +1,17 @@ +\chapter{Introduction} + +The Python library consists of three parts, with different levels of +integration with the interpreter. +Closest to the interpreter are built-in types, exceptions and functions. +Next are built-in modules, which are written in \C{} and linked statically +with the interpreter. +Finally there are standard modules that are implemented entirely in +Python, but are always available. +For efficiency, some standard modules may become built-in modules in +future versions of the interpreter. +\indexii{built-in}{types} +\indexii{built-in}{exceptions} +\indexii{built-in}{functions} +\indexii{built-in}{modules} +\indexii{standard}{modules} +\indexii{\C{}}{language} diff --git a/Doc/lib/libjpeg.tex b/Doc/lib/libjpeg.tex new file mode 100644 index 0000000..d0c1604 --- /dev/null +++ b/Doc/lib/libjpeg.tex @@ -0,0 +1,51 @@ +\section{Built-in Module \sectcode{jpeg}} +\bimodindex{jpeg} + +The module jpeg provides access to the jpeg compressor and +decompressor written by the Independent JPEG Group. JPEG is a (draft?) +standard for compressing pictures. For details on jpeg or the +Indepent JPEG Group software refer to the JPEG standard or the +documentation provided with the software. + +The jpeg module defines these functions: + +\renewcommand{\indexsubitem}{(in module jpeg)} +\begin{funcdesc}{compress}{data\, w\, h\, b} +Treat data as a pixmap of width w and height h, with b bytes per +pixel. The data is in sgi gl order, so the first pixel is in the +lower-left corner. This means that lrectread return data can +immedeately be passed to compress. Currently only 1 byte and 4 byte +pixels are allowed, the former being treaded as greyscale and the +latter as RGB color. Compress returns a string that contains the +compressed picture, in JFIF format. +\end{funcdesc} + +\begin{funcdesc}{decompress}{data} +Data is a string containing a picture in JFIF format. It returns a +tuple +\code{(\var{data}, \var{width}, \var{height}, \var{bytesperpixel})}. +Again, the data is suitable to pass to lrectwrite. +\end{funcdesc} + +\begin{funcdesc}{setoption}{name\, value} +Set various options. Subsequent compress and decompress calls +will use these options. The following options are available: +\begin{description} +\item[\code{'forcegray'}] +Force output to be grayscale, even if input is RGB. + +\item[\code{'quality'}] +Set the quality of the compressed image to a +value between \code{0} and \code{100} (default is \code{75}). Compress only. + +\item[\code{'optimize'}] +Perform huffman table optimization. Takes longer, but results in +smaller compressed image. Compress only. + +\item[\code{'smooth'}] +Perform inter-block smoothing on uncompressed image. Only useful for +low-quality images. Decompress only. +\end{description} +\end{funcdesc} + +Compress and uncompress raise the error jpeg.error in case of errors. diff --git a/Doc/lib/libmain.tex b/Doc/lib/libmain.tex new file mode 100644 index 0000000..c730a03 --- /dev/null +++ b/Doc/lib/libmain.tex @@ -0,0 +1,6 @@ +\section{Built-in Module \sectcode{__main__}} + +\bimodindex{__main__} +This module represents the (otherwise anonymous) scope in which the +interpreter's main program executes --- commands read either from +standard input or from a script file. diff --git a/Doc/lib/libmarshal.tex b/Doc/lib/libmarshal.tex new file mode 100644 index 0000000..2b0a400 --- /dev/null +++ b/Doc/lib/libmarshal.tex @@ -0,0 +1,59 @@ +\section{Built-in Module \sectcode{marshal}} + +\bimodindex{marshal} +This module contains functions that can read and write Python +values in a binary format. The format is specific to Python, but +independent of machine architecture issues (e.g., you can write a +Python value to a file on a VAX, transport the file to a Mac, and read +it back there). Details of the format not explained here; read the +source if you're interested.% +\footnote{The name of this module stems from a bit of terminology used +by the designers of Modula-3 (amongst others), who use the term +``marshalling'' for shipping of data around in a self-contained form. +Strictly speaking, ``to marshal'' means to convert some data from +internal to external form (in an RPC buffer for instance) and +``unmarshalling'' for the reverse process.} + + +Not all Python object types are supported; in general, only objects +whose value is independent from a particular invocation of Python can +be written and read by this module. The following types are supported: +\code{None}, integers, long integers, floating point numbers, +strings, tuples, lists, dictionaries, and code objects, where it +should be understood that tuples, lists and dictionaries are only +supported as long as the values contained therein are themselves +supported; and recursive lists and dictionaries should not be written +(they will cause an infinite loop). + +There are functions that read/write files as well as functions +operating on strings. + +The module defines these functions: + +\renewcommand{\indexsubitem}{(in module marshal)} +\begin{funcdesc}{dump}{value\, file} + Write the value on the open file. The value must be a supported + type. The file must be an open file object such as + \code{sys.stdout} or returned by \code{open()} or + \code{posix.popen()}. + + If the value has an unsupported type, garbage is written which cannot + be read back by \code{load()}. +\end{funcdesc} + +\begin{funcdesc}{load}{file} + Read one value from the open file and return it. If no valid value + is read, raise \code{EOFError}, \code{ValueError} or + \code{TypeError}. The file must be an open file object. +\end{funcdesc} + +\begin{funcdesc}{dumps}{value} + Return the string that would be written to a file by + \code{dump(value, file)}. The value must be a supported type. +\end{funcdesc} + +\begin{funcdesc}{loads}{string} + Convert the string to a value. If no valid value is found, raise + \code{EOFError}, \code{ValueError} or \code{TypeError}. Extra + characters in the string are ignored. +\end{funcdesc} diff --git a/Doc/lib/libmath.tex b/Doc/lib/libmath.tex new file mode 100644 index 0000000..62da689 --- /dev/null +++ b/Doc/lib/libmath.tex @@ -0,0 +1,70 @@ +\section{Built-in Module \sectcode{math}} + +\bimodindex{math} +\renewcommand{\indexsubitem}{(in module math)} +This module is always available. +It provides access to the mathematical functions defined by the C +standard. +They are: +\iftexi +\begin{funcdesc}{acos}{x} +\funcline{asin}{x} +\funcline{atan}{x} +\funcline{atan2}{x, y} +\funcline{ceil}{x} +\funcline{cos}{x} +\funcline{cosh}{x} +\funcline{exp}{x} +\funcline{fabs}{x} +\funcline{floor}{x} +\funcline{fmod}{x, y} +\funcline{frexp}{x} +\funcline{ldexp}{x, y} +\funcline{log}{x} +\funcline{log10}{x} +\funcline{modf}{x} +\funcline{pow}{x, y} +\funcline{sin}{x} +\funcline{sinh}{x} +\funcline{sqrt}{x} +\funcline{tan}{x} +\funcline{tanh}{x} +\end{funcdesc} +\else +\code{acos(\varvars{x})}, +\code{asin(\varvars{x})}, +\code{atan(\varvars{x})}, +\code{atan2(\varvars{x\, y})}, +\code{ceil(\varvars{x})}, +\code{cos(\varvars{x})}, +\code{cosh(\varvars{x})}, +\code{exp(\varvars{x})}, +\code{fabs(\varvars{x})}, +\code{floor(\varvars{x})}, +\code{fmod(\varvars{x\, y})}, +\code{frexp(\varvars{x})}, +\code{ldexp(\varvars{x\, y})}, +\code{log(\varvars{x})}, +\code{log10(\varvars{x})}, +\code{modf(\varvars{x})}, +\code{pow(\varvars{x\, y})}, +\code{sin(\varvars{x})}, +\code{sinh(\varvars{x})}, +\code{sqrt(\varvars{x})}, +\code{tan(\varvars{x})}, +\code{tanh(\varvars{x})}. +\fi + +Note that \code{frexp} and \code{modf} have a different call/return +pattern than their C equivalents: they take a single argument and +return a pair of values, rather than returning their second return +value through an `output parameter' (there is no such thing in Python). + +The module also defines two mathematical constants: +\iftexi +\begin{datadesc}{pi} +\dataline{e} +\end{datadesc} +\else +\code{pi} and \code{e}. +\fi diff --git a/Doc/lib/libmd5.tex b/Doc/lib/libmd5.tex new file mode 100644 index 0000000..29e4b31 --- /dev/null +++ b/Doc/lib/libmd5.tex @@ -0,0 +1,53 @@ +\section{Built-in module \sectcode{md5}} +\bimodindex{md5} + +This module implements the interface to RSA's MD5 message digest +algorithm (see also the file \file{md5.doc}). It's use is very +straightforward: use the function \code{md5} to create an +\dfn{md5}-object. You can now ``feed'' this object with arbitrary +strings. + +At any time you can ask the ``final'' digest of the object. Internally, +a temorary copy of the object is made and the digest is computed and +returned. Because of the copy, the digest operation is not desctructive +for the object. Before a more exact description of the use, a small +example: to obtain the digest of the string \code{'abc'}, use \ldots + +\bcode\begin{verbatim} +>>> from md5 import md5 +>>> m = md5() +>>> m.update('abc') +>>> m.digest() +'\220\001P\230<\322O\260\326\226?}(\341\177r' +\end{verbatim}\ecode + +More condensed: + +\bcode\begin{verbatim} +>>> md5('abc').digest() +'\220\001P\230<\322O\260\326\226?}(\341\177r' +\end{verbatim}\ecode + +\renewcommand{\indexsubitem}{(in module md5)} +\begin{funcdesc}{md5}{arg} + Create a new md5-object. \var{arg} is optional: if present, an initial + \code{update} method is called with \var{arg} as argument. +\end{funcdesc} + +An md5-object has the following methods: + +\renewcommand{\indexsubitem}{(md5 method)} +\begin{funcdesc}{update}{arg} + Update this md5-object with the string \var{arg}. +\end{funcdesc} + +\begin{funcdesc}{digest}{} + Return the \dfn{digest} of this md5-object. Internally, a copy is made + and the \C-function \code{MD5Final} is called. Finally the digest is + returned. +\end{funcdesc} + +\begin{funcdesc}{copy}{} + Return a separate copy of this md5-object. An \code{update} to this + copy won't affect the original object. +\end{funcdesc} diff --git a/Doc/lib/libmm.tex b/Doc/lib/libmm.tex new file mode 100644 index 0000000..c17aa55 --- /dev/null +++ b/Doc/lib/libmm.tex @@ -0,0 +1,5 @@ +\chapter{MULTIMEDIA EXTENSIONS} + +The modules described in this chapter implement various algorithms +that are mainly useful for multimedia applications. They are +available at the discretion of the installation. diff --git a/Doc/lib/libmpz.tex b/Doc/lib/libmpz.tex new file mode 100644 index 0000000..ea0d1b7 --- /dev/null +++ b/Doc/lib/libmpz.tex @@ -0,0 +1,74 @@ +\section{Built-in module \sectcode{mpz}} +\bimodindex{mpz} + +This module implements the interface to part of the GNU MP library. +This library contains arbitrary precision integer and rational number +arithmetic routines. Only the interfaces to the \emph{integer} +(\samp{mpz_{\rm \ldots}}) routines are provided. If not stated +otherwise, the description in the GNU MP documentation can be applied. + +In general, \dfn{mpz}-numbers can be used just like other standard +Python numbers, e.g. you can use the built-in operators like \code{+}, +\code{*}, etc., as well as the standard built-in functions like +\code{abs}, \code{int}, \ldots, \code{divmod}, \code{pow}. +\strong{Please note:} the {\it bitwise-xor} operation has been implemented as +a bunch of {\it and}s, {\it invert}s and {\it or}s, because the library +lacks an \code{mpz_xor} function, and I didn't need one. + +You create an mpz-number, by calling the function called \code{mpz} (see +below for an excact description). An mpz-number is printed like this: +\code{mpz(\var{value})}. + +\renewcommand{\indexsubitem}{(in module mpz)} +\begin{funcdesc}{mpz}{value} + Create a new mpz-number. \var{value} can be an integer, a long, + another mpz-number, or even a string. If it is a string, it is + interpreted as an array of radix-256 digits, least significant digit + first, resulting in a positive number. See also the \code{binary} + method, described below. +\end{funcdesc} + +A number of {\em extra} functions are defined in this module. Non +mpz-arguments are converted to mpz-values first, and the functions +return mpz-numbers. + +\begin{funcdesc}{powm}{base\, exponent\, modulus} + Return \code{pow(\var{base}, \var{exponent}) \%{} \var{modulus}}. If + \code{\var{exponent} == 0}, return \code{mpz(1)}. In contrast to the + \C-library function, this version can handle negative exponents. +\end{funcdesc} + +\begin{funcdesc}{gcd}{op1\, op2} + Return the greatest common divisor of \var{op1} and \var{op2}. +\end{funcdesc} + +\begin{funcdesc}{gcdext}{a\, b} + Return a tuple \code{(\var{g}, \var{s}, \var{t})}, such that + \code{\var{a}*\var{s} + \var{b}*\var{t} == \var{g} == gcd(\var{a}, \var{b})}. +\end{funcdesc} + +\begin{funcdesc}{sqrt}{op} + Return the square root of \var{op}. The result is rounded towards zero. +\end{funcdesc} + +\begin{funcdesc}{sqrtrem}{op} + Return a tuple \code{(\var{root}, \var{remainder})}, such that + \code{\var{root}*\var{root} + \var{remainder} == \var{op}}. +\end{funcdesc} + +\begin{funcdesc}{divm}{numerator\, denominator\, modulus} + Returns a number \var{q}. such that + \code{\var{q} * \var{denominator} \%{} \var{modulus} == \var{numerator}}. + One could also implement this function in python, using \code{gcdext}. +\end{funcdesc} + +An mpz-number has one method: + +\renewcommand{\indexsubitem}{(mpz method)} +\begin{funcdesc}{binary}{} + Convert this mpz-number to a binary string, where the number has been + stored as an array of radix-256 digits, least significant digit first. + + The mpz-number must have a value greater than- or equal to zero, + otherwise a \code{ValueError}-exception will be raised. +\end{funcdesc} diff --git a/Doc/lib/libobjs.tex b/Doc/lib/libobjs.tex new file mode 100644 index 0000000..49a86fc --- /dev/null +++ b/Doc/lib/libobjs.tex @@ -0,0 +1,19 @@ +\chapter{Built-in Types, Exceptions and Functions} + +\nodename{Built-in Objects} + +Names for built-in exceptions and functions are found in a separate +symbol table. This table is searched last, so local and global +user-defined names can override built-in names. Built-in types have +no names but are created easily by constructing an object of the +desired type (e.g., using a literal) and applying the built-in +function \code{type()} to it. They are described together here for +easy reference.% +\footnote{Some descriptions sorely lack explanations of the exceptions + that may be raised --- this will be fixed in a future version of + this document.} +\indexii{built-in}{types} +\indexii{built-in}{exceptions} +\indexii{built-in}{functions} +\index{symbol table} +\bifuncindex{type} diff --git a/Doc/lib/libos.tex b/Doc/lib/libos.tex new file mode 100644 index 0000000..6763ed4 --- /dev/null +++ b/Doc/lib/libos.tex @@ -0,0 +1,77 @@ +\section{Standard Module \sectcode{os}} + +\stmodindex{os} +This module provides a more portable way of using operating system +(OS) dependent functionality than importing an OS dependent built-in +module like \code{posix}. + +When the optional built-in module \code{posix} is available, this +module exports the same functions and data as \code{posix}; otherwise, +it searches for an OS dependent built-in module like \code{mac} and +exports the same functions and data as found there. The design of all +Python's built-in OS dependen modules is such that as long as the same +functionality is available, it uses the same interface; e.g., the +function \code{os.stat(\var{file})} returns stat info about a \var{file} in a +format compatible with the POSIX interface. + +Extensions peculiar to a particular OS are also available through the +\code{os} module, but using them is of course a threat to portability! + +Note that after the first time \code{os} is imported, there is \emph{no} +performance penalty in using functions from \code{os} instead of +directly from the OS dependent built-in module, so there should be +\emph{no} reason not to use \code{os}! + +In addition to whatever the correct OS dependent module exports, the +following variables and functions are always exported by \code{os}: + +\renewcommand{\indexsubitem}{(in module os)} +\begin{datadesc}{name} +The name of the OS dependent module imported, e.g. \code{'posix'} or +\code{'mac'}. +\end{datadesc} + +\begin{datadesc}{path} +The corresponding OS dependent standard module for pathname +operations, e.g., \code{posixpath} or \code{macpath}. Thus, (given +the proper imports), \code{os.path.split(\var{file})} is equivalent to but +more portable than \code{posixpath.split(\var{file})}. +\end{datadesc} + +\begin{datadesc}{curdir} +The constant string used by the OS to refer to the current directory, +e.g. \code{'.'} for POSIX or \code{':'} for the Mac. +\end{datadesc} + +\begin{datadesc}{pardir} +The constant string used by the OS to refer to the parent directory, +e.g. \code{'..'} for POSIX or \code{'::'} for the Mac. +\end{datadesc} + +\begin{datadesc}{sep} +The character used by the OS to separate pathname components, e.g. +\code{'/'} for POSIX or \code{':'} for the Mac. Note that knowing this +is not sufficient to be able to parse or concatenate pathnames---better +use \code{os.path.split()} and \code{os.path.join()}---but it is +occasionally useful. +\end{datadesc} + +\begin{funcdesc}{execl}{path\, arg0\, arg1\, ...} +This is equivalent to a call to \code{os.execv} with an \var{argv} +of \code{[\var{arg0}, \var{arg1}, ...]}. +\end{funcdesc} + +\begin{funcdesc}{execle}{path\, arg0\, arg1\, ...\, env} +This is equivalent to a call to \code{os.execve} with an \var{argv} +of \code{[\var{arg0}, \var{arg1}, ...]}. +\end{funcdesc} + +\begin{funcdesc}{execlp}{path\, arg0\, arg1\, ...} +This is like \code{execl} but duplicates the shell's actions in +searching for an executable file in a list of directories. The +directory list is obtained from \code{environ['PATH']}. +\end{funcdesc} + +\begin{funcdesc}{execvp}{path\, arg0\, arg1\, ...} +\code{execvp} is for \code{execv} what \code{execlp} is for \code{execl}. +\end{funcdesc} diff --git a/Doc/lib/libpanel.tex b/Doc/lib/libpanel.tex new file mode 100644 index 0000000..b82bf98 --- /dev/null +++ b/Doc/lib/libpanel.tex @@ -0,0 +1,66 @@ +\section{Standard Module \sectcode{panel}} +\stmodindex{panel} + +\strong{Please note:} The FORMS library, to which the \code{fl} module described +above interfaces, is a simpler and more accessible user interface +library for use with GL than the Panel Module (besides also being by a +Dutch author). + +This module should be used instead of the built-in module +\code{pnl} +to interface with the +{\em Panel Library}. + +The module is too large to document here in its entirety. +One interesting function: + +\renewcommand{\indexsubitem}{(in module panel)} +\begin{funcdesc}{defpanellist}{filename} +Parses a panel description file containing S-expressions written by the +{\em Panel Editor} +that accompanies the Panel Library and creates the described panels. +It returns a list of panel objects. +\end{funcdesc} + +\strong{Warning:} +the Python interpreter will dump core if you don't create a GL window +before calling +\code{panel.mkpanel()} +or +\code{panel.defpanellist()}. + +\section{Standard Module \sectcode{panelparser}} +\stmodindex{panelparser} + +This module defines a self-contained parser for S-expressions as output +by the Panel Editor (which is written in Scheme so it can't help writing +S-expressions). +The relevant function is +\code{panelparser.parse_file(\var{file})} +which has a file object (not a filename!) as argument and returns a list +of parsed S-expressions. +Each S-expression is converted into a Python list, with atoms converted +to Python strings and sub-expressions (recursively) to Python lists. +For more details, read the module file. +% XXXXJH should be funcdesc, I think + +\section{Built-in Module \sectcode{pnl}} +\bimodindex{pnl} + +This module provides access to the +{\em Panel Library} +built by NASA Ames (to get it, send e-mail to +{\tt panel-request@nas.nasa.gov}). +All access to it should be done through the standard module +\code{panel}, +which transparantly exports most functions from +\code{pnl} +but redefines +\code{pnl.dopanel()}. + +\strong{Warning:} +the Python interpreter will dump core if you don't create a GL window +before calling +\code{pnl.mkpanel()}. + +The module is too large to document here in its entirety. diff --git a/Doc/lib/libposix.tex b/Doc/lib/libposix.tex new file mode 100644 index 0000000..737ddb1 --- /dev/null +++ b/Doc/lib/libposix.tex @@ -0,0 +1,306 @@ +\section{Built-in Module \sectcode{posix}} + +\bimodindex{posix} + +This module provides access to operating system functionality that is +standardized by the C Standard and the POSIX standard (a thinly diguised +\UNIX{} interface). +It is available in all Python versions except on the Macintosh; +the MS-DOS version does not support certain functions. +The descriptions below are very terse; refer to the +corresponding \UNIX{} manual entry for more information. + +Errors are reported as exceptions; the usual exceptions are given +for type errors, while errors reported by the system calls raise +\code{posix.error}, described below. + +Module \code{posix} defines the following data items: + +\renewcommand{\indexsubitem}{(data in module posix)} +\begin{datadesc}{environ} +A dictionary representing the string environment at the time +the interpreter was started. +(Modifying this dictionary does not affect the string environment of the +interpreter.) +For example, +\code{posix.environ['HOME']} +is the pathname of your home directory, equivalent to +\code{getenv("HOME")} +in C. +\end{datadesc} + +\renewcommand{\indexsubitem}{(exception in module posix)} +\begin{excdesc}{error} +This exception is raised when an POSIX function returns a +POSIX-related error (e.g., not for illegal argument types). Its +string value is \code{'posix.error'}. The accompanying value is a +pair containing the numeric error code from \code{errno} and the +corresponding string, as would be printed by the C function +\code{perror()}. +\end{excdesc} + +It defines the following functions: + +\renewcommand{\indexsubitem}{(in module posix)} +\begin{funcdesc}{chdir}{path} +Change the current working directory to \var{path}. +\end{funcdesc} + +\begin{funcdesc}{chmod}{path\, mode} +Change the mode of \var{path} to the numeric \var{mode}. +\end{funcdesc} + +\begin{funcdesc}{close}{fd} +Close file descriptor \var{fd}. +\end{funcdesc} + +\begin{funcdesc}{dup}{fd} +Return a duplicate of file descriptor \var{fd}. +\end{funcdesc} + +\begin{funcdesc}{dup2}{fd\, fd2} +Duplicate file descriptor \var{fd} to \var{fd2}, closing the latter +first if necessary. Return \code{None}. +\end{funcdesc} + +\begin{funcdesc}{execv}{path\, args} +Execute the executable \var{path} with argument list \var{args}, +replacing the current process (i.e., the Python interpreter). +The argument list may be a tuple or list of strings. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{execve}{path\, args\, env} +Execute the executable \var{path} with argument list \var{args}, +and environment \var{env}, +replacing the current process (i.e., the Python interpreter). +The argument list may be a tuple or list of strings. +The environment must be a dictionary mapping strings to strings. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{_exit}{n} +Exit to the system with status \var{n}, without calling cleanup +handlers, flushing stdio buffers, etc. +(Not on MS-DOS.) + +Note: the standard way to exit is \code{sys.exit(\var{n})}. +\code{posix._exit()} should normally only be used in the child process +after a \code{fork()}. +\end{funcdesc} + +\begin{funcdesc}{fork}{} +Fork a child process. Return 0 in the child, the child's process id +in the parent. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{fstat}{fd} +Return status for file descriptor \var{fd}, like \code{stat()}. +\end{funcdesc} + +\begin{funcdesc}{getcwd}{} +Return a string representing the current working directory. +\end{funcdesc} + +\begin{funcdesc}{getegid}{} +Return the current process's effective group id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{geteuid}{} +Return the current process's effective user id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{getgid}{} +Return the current process's group id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{getpid}{} +Return the current process id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{getppid}{} +Return the parent's process id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{getuid}{} +Return the current process's user id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{kill}{pid\, sig} +Kill the process \var{pid} with signal \var{sig}. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{link}{src\, dst} +Create a hard link pointing to \var{src} named \var{dst}. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{listdir}{path} +Return a list containing the names of the entries in the directory. +The list is in arbitrary order. It includes the special entries +\code{'.'} and \code{'..'} if they are present in the directory. +\end{funcdesc} + +\begin{funcdesc}{lseek}{fd\, pos\, how} +Set the current position of file descriptor \var{fd} to position +\var{pos}, modified by \var{how}: 0 to set the position relative to +the beginning of the file; 1 to set it relative to the current +position; 2 to set it relative to the end of the file. +\end{funcdesc} + +\begin{funcdesc}{lstat}{path} +Like \code{stat()}, but do not follow symbolic links. (On systems +without symbolic links, this is identical to \code{posix.stat}.) +\end{funcdesc} + +\begin{funcdesc}{mkdir}{path\, mode} +Create a directory named \var{path} with numeric mode \var{mode}. +\end{funcdesc} + +\begin{funcdesc}{nice}{increment} +Add \var{incr} to the process' ``niceness''. Return the new niceness. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{open}{file\, flags\, mode} +Open the file \var{file} and set various flags according to +\var{flags} and possibly its mode according to \var{mode}. +Return the file descriptor for the newly opened file. +\end{funcdesc} + +\begin{funcdesc}{pipe}{} +Create a pipe. Return a pair of file descriptors \code{(r, w)} +usable for reading and writing, respectively. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{popen}{command\, mode} +Open a pipe to or from \var{command}. The return value is an open +file object connected to the pipe, which can be read or written +depending on whether \var{mode} is \code{'r'} or \code{'w'}. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{read}{fd\, n} +Read at most \var{n} bytes from file descriptor \var{fd}. +Return a string containing the bytes read. +\end{funcdesc} + +\begin{funcdesc}{readlink}{path} +Return a string representing the path to which the symbolic link +points. (On systems without symbolic links, this always raises +\code{posix.error}.) +\end{funcdesc} + +\begin{funcdesc}{rename}{src\, dst} +Rename the file or directory \var{src} to \var{dst}. +\end{funcdesc} + +\begin{funcdesc}{rmdir}{path} +Remove the directory \var{path}. +\end{funcdesc} + +\begin{funcdesc}{setgid}{gid} +Set the current process's group id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{setuid}{uid} +Set the current process's user id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{stat}{path} +Perform a {\em stat} system call on the given path. The return value +is a tuple of at least 10 integers giving the most important (and +portable) members of the {\em stat} structure, in the order +\code{st_mode}, +\code{st_ino}, +\code{st_dev}, +\code{st_nlink}, +\code{st_uid}, +\code{st_gid}, +\code{st_size}, +\code{st_atime}, +\code{st_mtime}, +\code{st_ctime}. +More items may be added at the end by some implementations. +(On MS-DOS, some items are filled with dummy values.) + +Note: The standard module \code{stat} defines functions and constants +that are useful for extracting information from a stat structure. +\end{funcdesc} + +\begin{funcdesc}{symlink}{src\, dst} +Create a symbolic link pointing to \var{src} named \var{dst}. (On +systems without symbolic links, this always raises +\code{posix.error}.) +\end{funcdesc} + +\begin{funcdesc}{system}{command} +Execute the command (a string) in a subshell. This is implemented by +calling the Standard C function \code{system()}, and has the same +limitations. Changes to \code{posix.environ}, \code{sys.stdin} etc. are +not reflected in the environment of the executed command. The return +value is the exit status of the process as returned by Standard C +\code{system()}. +\end{funcdesc} + +\begin{funcdesc}{times}{} +Return a 4-tuple of floating point numbers indicating accumulated CPU +times, in seconds. The items are: user time, system time, children's +user time, and children's system time, in that order. See the \UNIX{} +manual page {\it times}(2). (Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{umask}{mask} +Set the current numeric umask and returns the previous umask. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{uname}{} +Return a 5-tuple containing information identifying the current +operating system. The tuple contains 5 strings: +\code{(\var{sysname}, \var{nodename}, \var{release}, \var{version}, \var{machine})}. +Some systems truncate the nodename to 8 +characters or to the leading component; an better way to get the +hostname is \code{socket.gethostname()}. (Not on MS-DOS, nor on older +\UNIX{} systems.) +\end{funcdesc} + +\begin{funcdesc}{unlink}{path} +Unlink \var{path}. +\end{funcdesc} + +\begin{funcdesc}{utime}{path\, \(atime\, mtime\)} +Set the access and modified time of the file to the given values. +(The second argument is a tuple of two items.) +\end{funcdesc} + +\begin{funcdesc}{wait}{} +Wait for completion of a child process, and return a tuple containing +its pid and exit status indication (encoded as by \UNIX{}). +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{waitpid}{pid\, options} +Wait for completion of a child process given by proces id, and return +a tuple containing its pid and exit status indication (encoded as by +\UNIX{}). The semantics of the call are affected by the value of +the integer options, which should be 0 for normal operation. (If the +system does not support waitpid(), this always raises +\code{posix.error}. Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{write}{fd\, str} +Write the string \var{str} to file descriptor \var{fd}. +Return the number of bytes actually written. +\end{funcdesc} diff --git a/Doc/lib/libppath.tex b/Doc/lib/libppath.tex new file mode 100644 index 0000000..e6430be --- /dev/null +++ b/Doc/lib/libppath.tex @@ -0,0 +1,128 @@ +\section{Standard Module \sectcode{posixpath}} + +\stmodindex{posixpath} +This module implements some useful functions on POSIX pathnames. + +\renewcommand{\indexsubitem}{(in module posixpath)} +\begin{funcdesc}{basename}{p} +Return the base name of pathname +\var{p}. +This is the second half of the pair returned by +\code{posixpath.split(\var{p})}. +\end{funcdesc} + +\begin{funcdesc}{commonprefix}{list} +Return the longest string that is a prefix of all strings in +\var{list}. +If +\var{list} +is empty, return the empty string (\code{''}). +\end{funcdesc} + +\begin{funcdesc}{exists}{p} +Return true if +\var{p} +refers to an existing path. +\end{funcdesc} + +\begin{funcdesc}{expanduser}{p} +Return the argument with an initial component of \samp{\~} or +\samp{\~\var{user}} replaced by that \var{user}'s home directory. An +initial \samp{\~{}} is replaced by the environment variable \code{\${}HOME}; +an initial \samp{\~\var{user}} is looked up in the password directory through +the built-in module \code{pwd}. If the expansion fails, or if the +path does not begin with a tilde, the path is returned unchanged. +\end{funcdesc} + +\begin{funcdesc}{isabs}{p} +Return true if \var{p} is an absolute pathname (begins with a slash). +\end{funcdesc} + +\begin{funcdesc}{isfile}{p} +Return true if \var{p} is an existing regular file. This follows +symbolic links, so both islink() and isfile() can be true for the same +path. +\end{funcdesc} + +\begin{funcdesc}{isdir}{p} +Return true if \var{p} is an existing directory. This follows +symbolic links, so both islink() and isdir() can be true for the same +path. +\end{funcdesc} + +\begin{funcdesc}{islink}{p} +Return true if +\var{p} +refers to a directory entry that is a symbolic link. +Always false if symbolic links are not supported. +\end{funcdesc} + +\begin{funcdesc}{ismount}{p} +Return true if \var{p} is a mount point. (This currently checks whether +\code{\var{p}/..} is on a different device from \var{p} or whether +\code{\var{p}/..} and \var{p} point to the same i-node on the same +device --- is this test correct for all \UNIX{} and POSIX variants?) +\end{funcdesc} + +\begin{funcdesc}{join}{p\, q} +Join the paths +\var{p} +and +\var{q} intelligently: +If +\var{q} +is an absolute path, the return value is +\var{q}. +Otherwise, the concatenation of +\var{p} +and +\var{q} +is returned, with a slash (\code{'/'}) inserted unless +\var{p} +is empty or ends in a slash. +\end{funcdesc} + +\begin{funcdesc}{normcase}{p} +Normalize the case of a pathname. This returns the path unchanged; +however, a similar function in \code{macpath} converts upper case to +lower case. +\end{funcdesc} + +\begin{funcdesc}{samefile}{p\, q} +Return true if both pathname arguments refer to the same file or directory +(as indicated by device number and i-node number). +Raise an exception if a stat call on either pathname fails. +\end{funcdesc} + +\begin{funcdesc}{split}{p} +Split the pathname \var{p} in a pair \code{(\var{head}, \var{tail})}, where +\var{tail} is the last pathname component and \var{head} is +everything leading up to that. If \var{p} ends in a slash (except if +it is the root), the trailing slash is removed and the operation +applied to the result; otherwise, \code{join(\var{head}, \var{tail})} equals +\var{p}. The \var{tail} part never contains a slash. Some boundary +cases: if \var{p} is the root, \var{head} equals \var{p} and +\var{tail} is empty; if \var{p} is empty, both \var{head} and +\var{tail} are empty; if \var{p} contains no slash, \var{head} is +empty and \var{tail} equals \var{p}. +\end{funcdesc} + +\begin{funcdesc}{splitext}{p} +Split the pathname \var{p} in a pair \code{(\var{root}, \var{ext})} +such that \code{\var{root} + \var{ext} == \var{p}}, +the last component of \var{root} contains no periods, +and \var{ext} is empty or begins with a period. +\end{funcdesc} + +\begin{funcdesc}{walk}{p\, visit\, arg} +Calls the function \var{visit} with arguments +\code{(\var{arg}, \var{dirname}, \var{names})} for each directory in the +directory tree rooted at \var{p} (including \var{p} itself, if it is a +directory). The argument \var{dirname} specifies the visited directory, +the argument \var{names} lists the files in the directory (gotten from +\code{posix.listdir(\var{dirname})}). The \var{visit} function may +modify \var{names} to influence the set of directories visited below +\var{dirname}, e.g., to avoid visiting certain parts of the tree. (The +object referred to by \var{names} must be modified in place, using +\code{del} or slice assignment.) +\end{funcdesc} diff --git a/Doc/lib/libpwd.tex b/Doc/lib/libpwd.tex new file mode 100644 index 0000000..7bb30d8 --- /dev/null +++ b/Doc/lib/libpwd.tex @@ -0,0 +1,32 @@ +\section{Built-in Module \sectcode{pwd}} + +\bimodindex{pwd} +This module provides access to the \UNIX{} password database. +It is available on all \UNIX{} versions. + +Password database entries are reported as 7-tuples containing the +following items from the password database (see \file{<pwd.h>}), in order: +\code{pw_name}, +\code{pw_passwd}, +\code{pw_uid}, +\code{pw_gid}, +\code{pw_gecos}, +\code{pw_dir}, +\code{pw_shell}. +The uid and gid items are integers, all others are strings. +An exception is raised if the entry asked for cannot be found. + +It defines the following items: + +\renewcommand{\indexsubitem}{(in module pwd)} +\begin{funcdesc}{getpwuid}{uid} +Return the password database entry for the given numeric user ID. +\end{funcdesc} + +\begin{funcdesc}{getpwnam}{name} +Return the password database entry for the given user name. +\end{funcdesc} + +\begin{funcdesc}{getpwall}{} +Return a list of all available password database entries, in arbitrary order. +\end{funcdesc} diff --git a/Doc/lib/librand.tex b/Doc/lib/librand.tex new file mode 100644 index 0000000..b03ac41 --- /dev/null +++ b/Doc/lib/librand.tex @@ -0,0 +1,21 @@ +\section{Standard Module \sectcode{rand}} + +\stmodindex{rand} This module implements a pseudo-random number +generator with an interface similar to \code{rand()} in C. It defines +the following functions: + +\renewcommand{\indexsubitem}{(in module rand)} +\begin{funcdesc}{rand}{} +Returns an integer random number in the range [0 ... 32768). +\end{funcdesc} + +\begin{funcdesc}{choice}{s} +Returns a random element from the sequence (string, tuple or list) +\var{s}. +\end{funcdesc} + +\begin{funcdesc}{srand}{seed} +Initializes the random number generator with the given integral seed. +When the module is first imported, the random number is initialized with +the current time. +\end{funcdesc} diff --git a/Doc/lib/libregex.tex b/Doc/lib/libregex.tex new file mode 100644 index 0000000..544c204 --- /dev/null +++ b/Doc/lib/libregex.tex @@ -0,0 +1,162 @@ +\section{Built-in Module \sectcode{regex}} + +\bimodindex{regex} +This module provides regular expression matching operations similar to +those found in Emacs. It is always available. + +By default the patterns are Emacs-style regular expressions; there is +a way to change the syntax to match that of several well-known +\UNIX{} utilities. + +This module is 8-bit clean: both patterns and strings may contain null +bytes and characters whose high bit is set. + +\strong{Please note:} There is a little-known fact about Python string literals +which means that you don't usually have to worry about doubling +backslashes, even though they are used to escape special characters in +string literals as well as in regular expressions. This is because +Python doesn't remove backslashes from string literals if they are +followed by an unrecognized escape character. \emph{However}, if you +want to include a literal \dfn{backslash} in a regular expression +represented as a string literal, you have to \emph{quadruple} it. E.g. +to extract LaTeX \samp{\e section\{{\rm \ldots}\}} headers from a document, you can +use this pattern: \code{'\e \e \e\e section\{\e (.*\e )\}'}. + +The module defines these functions, and an exception: + +\renewcommand{\indexsubitem}{(in module regex)} +\begin{funcdesc}{match}{pattern\, string} + Return how many characters at the beginning of \var{string} match + the regular expression \var{pattern}. Return \code{-1} if the + string does not match the pattern (this is different from a + zero-length match!). +\end{funcdesc} + +\begin{funcdesc}{search}{pattern\, string} + Return the first position in \var{string} that matches the regular + expression \var{pattern}. Return -1 if no position in the string + matches the pattern (this is different from a zero-length match + anywhere!). +\end{funcdesc} + +\begin{funcdesc}{compile}{pattern\, translate} + Compile a regular expression pattern into a regular expression + object, which can be used for matching using its \code{match} and + \code{search} methods, described below. The optional + \var{translate}, if present, must be a 256-character string + indicating how characters (both of the pattern and of the strings to + be matched) are translated before comparing them; the \code{i}-th + element of the string gives the translation for the character with + ASCII code \code{i}. + + The sequence + +\bcode\begin{verbatim} +prog = regex.compile(pat) +result = prog.match(str) +\end{verbatim}\ecode + +is equivalent to + +\bcode\begin{verbatim} +result = regex.match(pat, str) +\end{verbatim}\ecode + +but the version using \code{compile()} is more efficient when multiple +regular expressions are used concurrently in a single program. (The +compiled version of the last pattern passed to \code{regex.match()} or +\code{regex.search()} is cached, so programs that use only a single +regular expression at a time needn't worry about compiling regular +expressions.) +\end{funcdesc} + +\begin{funcdesc}{set_syntax}{flags} + Set the syntax to be used by future calls to \code{compile}, + \code{match} and \code{search}. (Already compiled expression objects + are not affected.) The argument is an integer which is the OR of + several flag bits. The return value is the previous value of + the syntax flags. Names for the flags are defined in the standard + module \code{regex_syntax}; read the file \file{regex_syntax.py} for + more information. +\end{funcdesc} + +\begin{excdesc}{error} + Exception raised when a string passed to one of the functions here + is not a valid regular expression (e.g., unmatched parentheses) or + when some other error occurs during compilation or matching. (It is + never an error if a string contains no match for a pattern.) +\end{excdesc} + +\begin{datadesc}{casefold} +A string suitable to pass as \var{translate} argument to +\code{compile} to map all upper case characters to their lowercase +equivalents. +\end{datadesc} + +\noindent +Compiled regular expression objects support these methods: + +\renewcommand{\indexsubitem}{(regex method)} +\begin{funcdesc}{match}{string\, pos} + Return how many characters at the beginning of \var{string} match + the compiled regular expression. Return \code{-1} if the string + does not match the pattern (this is different from a zero-length + match!). + + The optional second parameter \var{pos} gives an index in the string + where the search is to start; it defaults to \code{0}. This is not + completely equivalent to slicing the string; the \code{'\^'} pattern + character matches at the real begin of the string and at positions + just after a newline, not necessarily at the index where the search + is to start. +\end{funcdesc} + +\begin{funcdesc}{search}{string\, pos} + Return the first position in \var{string} that matches the regular + expression \code{pattern}. Return \code{-1} if no position in the + string matches the pattern (this is different from a zero-length + match anywhere!). + + The optional second parameter has the same meaning as for the + \code{match} method. +\end{funcdesc} + +\begin{funcdesc}{group}{index\, index\, ...} +This method is only valid when the last call to the \code{match} +or \code{search} method found a match. It returns one or more +groups of the match. If there is a single \var{index} argument, +the result is a single string; if there are multiple arguments, the +result is a tuple with one item per argument. If the \var{index} is +zero, the corresponding return value is the entire matching string; if +it is in the inclusive range [1..9], it is the string matching the +the corresponding parenthesized group (using the default syntax, +groups are parenthesized using \code{\\(} and \code{\\)}). If no +such group exists, the corresponding result is \code{None}. +\end{funcdesc} + +\noindent +Compiled regular expressions support these data attributes: + +\renewcommand{\indexsubitem}{(regex attribute)} +\begin{datadesc}{regs} +When the last call to the \code{match} or \code{search} method found a +match, this is a tuple of pairs of indices corresponding to the +beginning and end of all parenthesized groups in the pattern. Indices +are relative to the string argument passed to \code{match} or +\code{search}. The 0-th tuple gives the beginning and end or the +whole pattern. When the last match or search failed, this is +\code{None}. +\end{datadesc} + +\begin{datadesc}{last} +When the last call to the \code{match} or \code{search} method found a +match, this is the string argument passed to that method. When the +last match or search failed, this is \code{None}. +\end{datadesc} + +\begin{datadesc}{translate} +This is the value of the \var{translate} argument to +\code{regex.compile} that created this regular expression object. If +the \var{translate} argument was omitted in the \code{regex.compile} +call, this is \code{None}. +\end{datadesc} diff --git a/Doc/lib/libregsub.tex b/Doc/lib/libregsub.tex new file mode 100644 index 0000000..5747e4f --- /dev/null +++ b/Doc/lib/libregsub.tex @@ -0,0 +1,30 @@ +\section{Standard Module \sectcode{regsub}} + +\stmodindex{regsub} +This module defines a number of functions useful for working with +regular expressions (see built-in module \code{regex}). + +\renewcommand{\indexsubitem}{(in module regsub)} +\begin{funcdesc}{sub}{pat\, repl\, str} +Replace the first occurrence of pattern \var{pat} in string +\var{str} by replacement \var{repl}. If the pattern isn't found, +the string is returned unchanged. The pattern may be a string or an +already compiled pattern. The replacement may contain references +\samp{\e \var{digit}} to subpatterns and escaped backslashes. +\end{funcdesc} + +\begin{funcdesc}{gsub}{pat\, repl\, str} +Replace all (non-overlapping) occurrences of pattern \var{pat} in +string \var{str} by replacement \var{repl}. The same rules as for +\code{sub()} apply. Empty matches for the pattern are replaced only +when not adjacent to a previous match, so e.g. +\code{gsub('', '-', 'abc')} returns \code{'-a-b-c-'}. +\end{funcdesc} + +\begin{funcdesc}{split}{str\, pat} +Split the string \var{str} in fields separated by delimiters matching +the pattern \var{pat}, and return a list containing the fields. Only +non-empty matches for the pattern are considered, so e.g. +\code{split('a:b', ':*')} returns \code{['a', 'b']} and +\code{split('abc', '')} returns \code{['abc']}. +\end{funcdesc} diff --git a/Doc/lib/librgbimg.tex b/Doc/lib/librgbimg.tex new file mode 100644 index 0000000..367851b --- /dev/null +++ b/Doc/lib/librgbimg.tex @@ -0,0 +1,45 @@ +\section{Built-in module \sectcode{rgbimg}} +\bimodindex{rgbimg} + +The rgbimg module allows python programs to access SGI imglib image +files (also known as \file{.rgb} files). The module is far from +complete, but is provided anyway since the functionality that there is +is enough in some cases. Currently, colormap files are not supported. + +The module defines the following variables and functions: + +\renewcommand{\indexsubitem}{(in module rgbimg)} +\begin{excdesc}{error} +This exception is raised on all errors, such as unsupported file type, etc. +\end{excdesc} + +\begin{funcdesc}{sizeofimage}{file} +This function returns a tuple \code{(\var{x}, \var{y})} where +\var{x} and \var{y} are the size of the image in pixels. +Only 4 byte RGBA pixels, 3 byte RGB pixels, and 1 byte greyscale pixels +are currently supported. +\end{funcdesc} + +\begin{funcdesc}{longimagedata}{file} +This function reads and decodes the image on the specified file, and +returns it as a python string. The string has 4 byte RGBA pixels. +The bottom left pixel is the first in +the string. This format is suitable to pass to \code{gl.lrectwrite}, +for instance. +\end{funcdesc} + +\begin{funcdesc}{longstoimage}{data\, x\, y\, z\, file} +This function writes the RGBA data in \var{data} to image +file \var{file}. \var{x} and \var{y} give the size of the image. +\var{z} is 1 if the saved image should be 1 byte greyscale, 3 if the +saved image should be 3 byte RGB data, or 4 if the saved images should +be 4 byte RGBA data. The input data always contains 4 bytes per pixel. +These are the formats returned by \code{gl.lrectread}. +\end{funcdesc} + +\begin{funcdesc}{ttob}{flag} +This function sets a global flag which defines whether the scan lines +of the image are read or written from bottom to top (flag is zero, +compatible with SGI GL) or from top to bottom(flag is one, +compatible with X). The default is zero. +\end{funcdesc} diff --git a/Doc/lib/librotor.tex b/Doc/lib/librotor.tex new file mode 100644 index 0000000..657d2ac --- /dev/null +++ b/Doc/lib/librotor.tex @@ -0,0 +1,6 @@ +\section{Built-in module \sectcode{rotor}} +\bimodindex{rotor} + +This module implements a rotor-based encryption algorithm, contributed +by Lance Ellinghouse. Currently no further documentation is available +--- you are kindly advised to read the source... diff --git a/Doc/lib/libselect.tex b/Doc/lib/libselect.tex new file mode 100644 index 0000000..d47face --- /dev/null +++ b/Doc/lib/libselect.tex @@ -0,0 +1,42 @@ +\section{Built-in module \sectcode{select}} +\bimodindex{select} + +This module provides access to the function \code{select} available in +most \UNIX{} versions. It defines the following: + +\renewcommand{\indexsubitem}{(in module select)} +\begin{excdesc}{error} +The exception raised when an error occurs. The accompanying value is +a pair containing the numeric error code from \code{errno} and the +corresponding string, as would be printed by the C function +\code{perror()}. +\end{excdesc} + +\begin{funcdesc}{select}{iwtd\, owtd\, ewtd\, timeout} +This is a straightforward interface to the \UNIX{} \code{select()} +system call. The first three arguments are lists of `waitable +objects': either integers representing \UNIX{} file descriptors or +objects with a parameterless method named \code{fileno()} returning +such an integer. The three lists of waitable objects are for input, +output and `exceptional conditions', respectively. Empty lists are +allowed. The optional last argument is a time-out specified as a +floating point number in seconds. When the \var{timeout} argument +is omitted the function blocks until at least one file descriptor is +ready. A time-out value of zero specifies a poll and never blocks. + +The return value is a triple of lists of objects that are ready: +subsets of the first three arguments. When the time-out is reached +without a file descriptor becoming ready, three empty lists are +returned. + +Amongst the acceptable object types in the lists are Python file +objects (e.g. \code{sys.stdin}, or objects returned by \code{open()} +or \code{posix.popen()}), socket objects returned by +\code{socket.socket()}, and the module \code{stdwin} which happens to +define a function \code{fileno()} for just this purpose. You may +also define a \dfn{wrapper} class yourself, as long as it has an +appropriate \code{fileno()} method (that really returns a \UNIX{} file +descriptor, not just a random integer). +\end{funcdesc} +\ttindex{socket} +\ttindex{stdwin} diff --git a/Doc/lib/libsgi.tex b/Doc/lib/libsgi.tex new file mode 100644 index 0000000..f8c87b0 --- /dev/null +++ b/Doc/lib/libsgi.tex @@ -0,0 +1,4 @@ +\chapter{SGI IRIX ONLY} + +The modules described in this chapter provide interfaces to features +that are unique to SGI's IRIX operating system (versions 4 and 5). diff --git a/Doc/lib/libsocket.tex b/Doc/lib/libsocket.tex new file mode 100644 index 0000000..a5d5a17 --- /dev/null +++ b/Doc/lib/libsocket.tex @@ -0,0 +1,265 @@ +\section{Built-in Module \sectcode{socket}} + +\bimodindex{socket} +This module provides access to the BSD {\em socket} interface. +It is available on \UNIX{} systems that support this interface. + +For an introduction to socket programming (in C), see the following +papers: \emph{An Introductory 4.3BSD Interprocess Communication +Tutorial}, by Stuart Sechrest and \emph{An Advanced 4.3BSD Interprocess +Communication Tutorial}, by Samuel J. Leffler et al, both in the +\UNIX{} Programmer's Manual, Supplementary Documents 1 (sections PS1:7 +and PS1:8). The \UNIX{} manual pages for the various socket-related +system calls also a valuable source of information on the details of +socket semantics. + +The Python interface is a straightforward transliteration of the +\UNIX{} system call and library interface for sockets to Python's +object-oriented style: the \code{socket()} function returns a +\dfn{socket object} whose methods implement the various socket system +calls. Parameter types are somewhat higer-level than in the C +interface: as with \code{read()} and \code{write()} operations on Python +files, buffer allocation on receive operations is automatic, and +buffer length is implicit on send operations. + +Socket addresses are represented as a single string for the +\code{AF_UNIX} address family and as a pair +\code{(\var{host}, \var{port})} for the \code{AF_INET} address family, +where \var{host} is a string representing +either a hostname in Internet domain notation like +\code{'daring.cwi.nl'} or an IP address like \code{'100.50.200.5'}, +and \var{port} is an integral port number. Other address families are +currently not supported. The address format required by a particular +socket object is automatically selected based on the address family +specified when the socket object was created. + +All errors raise exceptions. The normal exceptions for invalid +argument types and out-of-memory conditions can be raised; errors +related to socket or address semantics raise the error \code{socket.error}. + +Non-blocking and asynchronous mode are not supported; see module +\code{select} for a way to do non-blocking socket I/O. + +The module \code{socket} exports the following constants and functions: + +\renewcommand{\indexsubitem}{(in module socket)} +\begin{excdesc}{error} +This exception is raised for socket- or address-related errors. +The accompanying value is either a string telling what went wrong or a +pair \code{(\var{errno}, \var{string})} +representing an error returned by a system +call, similar to the value accompanying \code{posix.error}. +\end{excdesc} + +\begin{datadesc}{AF_UNIX} +\dataline{AF_INET} +These constants represent the address (and protocol) families, +used for the first argument to \code{socket()}. +\end{datadesc} + +\begin{datadesc}{SOCK_STREAM} +\dataline{SOCK_DGRAM} +These constants represent the socket types, +used for the second argument to \code{socket()}. +(There are other types, but only \code{SOCK_STREAM} and +\code{SOCK_DGRAM} appear to be generally useful.) +\end{datadesc} + +\begin{funcdesc}{gethostbyname}{hostname} +Translate a host name to IP address format. The IP address is +returned as a string, e.g., \code{'100.50.200.5'}. If the host name +is an IP address itself it is returned unchanged. +\end{funcdesc} + +\begin{funcdesc}{getservbyname}{servicename\, protocolname} +Translate an Internet service name and protocol name to a port number +for that service. The protocol name should be \code{'tcp'} or +\code{'udp'}. +\end{funcdesc} + +\begin{funcdesc}{socket}{family\, type\, proto} +Create a new socket using the given address family, socket type and +protocol number. The address family should be \code{AF_INET} or +\code{AF_UNIX}. The socket type should be \code{SOCK_STREAM}, +\code{SOCK_DGRAM} or perhaps one of the other \samp{SOCK_} constants. +The protocol number is usually zero and may be omitted in that case. +\end{funcdesc} + +\begin{funcdesc}{fromfd}{fd\, family\, type\, proto} +Build a socket object from an existing file descriptor (an integer as +returned by a file object's \code{fileno} method). Address family, +socket type and protocol number are as for the \code{socket} function +above. The file descriptor should refer to a socket, but this is not +checked --- subsequent operations on the object may fail if the file +descriptor is invalid. This function is rarely needed, but can be +used to get or set socket options on a socket passed to a program as +standard input or output (e.g. a server started by the \UNIX{} inet +daemon). +\end{funcdesc} + +\subsection{Socket Object Methods} + +\noindent +Socket objects have the following methods. Except for +\code{makefile()} these correspond to \UNIX{} system calls applicable to +sockets. + +\renewcommand{\indexsubitem}{(socket method)} +\begin{funcdesc}{accept}{} +Accept a connection. +The socket must be bound to an address and listening for connections. +The return value is a pair \code{(\var{conn}, \var{address})} +where \var{conn} is a \emph{new} socket object usable to send and +receive data on the connection, and \var{address} is the address bound +to the socket on the other end of the connection. +\end{funcdesc} + +\begin{funcdesc}{avail}{} +Return true (nonzero) if at least one byte of data can be received +from the socket without blocking, false (zero) if not. There is no +indication of how many bytes are available. (\strong{This function is +obsolete --- see module \code{select} for a more general solution.}) +\end{funcdesc} + +\begin{funcdesc}{bind}{address} +Bind the socket to an address. The socket must not already be bound. +\end{funcdesc} + +\begin{funcdesc}{close}{} +Close the socket. All future operations on the socket object will fail. +The remote end will receive no more data (after queued data is flushed). +Sockets are automatically closed when they are garbage-collected. +\end{funcdesc} + +\begin{funcdesc}{connect}{address} +Connect to a remote socket. +\end{funcdesc} + +\begin{funcdesc}{fileno}{} +Return the socket's file descriptor (a small integer). This is useful +with \code{select}. +\end{funcdesc} + +\begin{funcdesc}{getpeername}{} +Return the remote address to which the socket is connected. This is +useful to find out the port number of a remote IP socket, for instance. +\end{funcdesc} + +\begin{funcdesc}{getsockname}{} +Return the socket's own address. This is useful to find out the port +number of an IP socket, for instance. +\end{funcdesc} + +\begin{funcdesc}{getsockopt}{level\, optname\, buflen} +Return the value of the given socket option (see the \UNIX{} man page +{\it getsockopt}(2)). The needed symbolic constants are defined in module +SOCKET. If the optional third argument is absent, an integer option +is assumed and its integer value is returned by the function. If +\var{buflen} is present, it specifies the maximum length of the buffer used +to receive the option in, and this buffer is returned as a string. +It's up to the caller to decode the contents of the buffer (see the +optional built-in module \code{struct} for a way to decode C structures +encoded as strings). +\end{funcdesc} + +\begin{funcdesc}{listen}{backlog} +Listen for connections made to the socket. +The argument (in the range 0-5) specifies the maximum number of +queued connections. +\end{funcdesc} + +\begin{funcdesc}{makefile}{mode} +Return a \dfn{file object} associated with the socket. +(File objects were described earlier under Built-in Types.) +The file object references a \code{dup}ped version of the socket file +descriptor, so the file object and socket object may be closed or +garbage-collected independently. +\end{funcdesc} + +\begin{funcdesc}{recv}{bufsize\, flags} +Receive data from the socket. The return value is a string representing +the data received. The maximum amount of data to be received +at once is specified by \var{bufsize}. See the \UNIX{} manual page +for the meaning of the optional argument \var{flags}; it defaults to +zero. +\end{funcdesc} + +\begin{funcdesc}{recvfrom}{bufsize} +Receive data from the socket. The return value is a pair +\code{(\var{string}, \var{address})} where \var{string} is a string +representing the data received and \var{address} is the address of the +socket sending the data. +\end{funcdesc} + +\begin{funcdesc}{send}{string} +Send data to the socket. The socket must be connected to a remote +socket. +\end{funcdesc} + +\begin{funcdesc}{sendto}{string\, address} +Send data to the socket. The socket should not be connected to a +remote socket, since the destination socket is specified by +\code{address}. +\end{funcdesc} + +\begin{funcdesc}{setsockopt}{level\, optname\, value} +Set the value of the given socket option (see the \UNIX{} man page +{\it setsockopt}(2)). The needed symbolic constants are defined in module +\code{SOCKET}. The value can be an integer or a string representing a +buffer. In the latter case it is up to the caller to ensure that the +string contains the proper bits (see the optional built-in module +\code{struct} for a way to encode C structures as strings). +\end{funcdesc} + +\begin{funcdesc}{shutdown}{how} +Shut down one or both halves of the connection. If \var{how} is \code{0}, +further receives are disallowed. If \var{how} is \code{1}, further sends are +disallowed. If \var{how} is \code{2}, further sends and receives are +disallowed. +\end{funcdesc} + +Note that there are no methods \code{read()} or \code{write()}; use +\code{recv()} and \code{send()} without \var{flags} argument instead. + +\subsection{Example} +\nodename{Socket Example} + +Here are two minimal example programs using the TCP/IP protocol: a +server that echoes all data that it receives back (servicing only one +client), and a client using it. Note that a server must perform the +sequence \code{socket}, \code{bind}, \code{listen}, \code{accept} +(possibly repeating the \code{accept} to service more than one client), +while a client only needs the sequence \code{socket}, \code{connect}. +Also note that the server does not \code{send}/\code{receive} on the +socket it is listening on but on the new socket returned by +\code{accept}. + +\bcode\begin{verbatim} +# Echo server program +from socket import * +HOST = '' # Symbolic name meaning the local host +PORT = 50007 # Arbitrary non-privileged server +s = socket(AF_INET, SOCK_STREAM) +s.bind(HOST, PORT) +s.listen(0) +conn, addr = s.accept() +print 'Connected by', addr +while 1: + data = conn.recv(1024) + if not data: break + conn.send(data) +conn.close() +\end{verbatim}\ecode + +\bcode\begin{verbatim} +# Echo client program +from socket import * +HOST = 'daring.cwi.nl' # The remote host +PORT = 50007 # The same port as used by the server +s = socket(AF_INET, SOCK_STREAM) +s.connect(HOST, PORT) +s.send('Hello, world') +data = s.recv(1024) +s.close() +print 'Received', `data` +\end{verbatim}\ecode diff --git a/Doc/lib/libstdwin.tex b/Doc/lib/libstdwin.tex new file mode 100644 index 0000000..12771c9 --- /dev/null +++ b/Doc/lib/libstdwin.tex @@ -0,0 +1,893 @@ +\chapter{STDWIN ONLY} + +\section{Built-in Module \sectcode{stdwin}} +\bimodindex{stdwin} + +This module defines several new object types and functions that +provide access to the functionality of the Standard Window System +Interface, STDWIN [CWI report CR-R8817]. +It is available on systems to which STDWIN has been ported (which is +most systems). +It is only available if the \code{DISPLAY} environment variable is set +or an explicit \samp{-display \var{displayname}} argument is passed to +the interpreter. + +Functions have names that usually resemble their C STDWIN counterparts +with the initial `w' dropped. +Points are represented by pairs of integers; rectangles +by pairs of points. +For a complete description of STDWIN please refer to the documentation +of STDWIN for C programmers (aforementioned CWI report). + +\subsection{Functions Defined in Module \sectcode{stdwin}} + +The following functions are defined in the \code{stdwin} module: + +\renewcommand{\indexsubitem}{(in module stdwin)} +\begin{funcdesc}{open}{title} +Open a new window whose initial title is given by the string argument. +Return a window object; window object methods are described below.% +\footnote{The Python version of STDWIN does not support draw procedures; all + drawing requests are reported as draw events.} +\end{funcdesc} + +\begin{funcdesc}{getevent}{} +Wait for and return the next event. +An event is returned as a triple: the first element is the event +type, a small integer; the second element is the window object to which +the event applies, or +\code{None} +if it applies to no window in particular; +the third element is type-dependent. +Names for event types and command codes are defined in the standard +module +\code{stdwinevent}. +\end{funcdesc} + +\begin{funcdesc}{pollevent}{} +Return the next event, if one is immediately available. +If no event is available, return \code{()}. +\end{funcdesc} + +\begin{funcdesc}{getactive}{} +Return the window that is currently active, or \code{None} if no +window is currently active. (This can be emulated by monitoring +WE_ACTIVATE and WE_DEACTIVATE events.) +\end{funcdesc} + +\begin{funcdesc}{listfontnames}{pattern} +Return the list of font names in the system that match the pattern (a +string). The pattern should normally be \code{'*'}; returns all +available fonts. If the underlying window system is X11, other +patterns follow the standard X11 font selection syntax (as used e.g. +in resource definitions), i.e. the wildcard character \code{'*'} +matches any sequence of characters (including none) and \code{'?'} +matches any single character. +\end{funcdesc} + +\begin{funcdesc}{setdefscrollbars}{hflag\, vflag} +Set the flags controlling whether subsequently opened windows will +have horizontal and/or vertical scroll bars. +\end{funcdesc} + +\begin{funcdesc}{setdefwinpos}{h\, v} +Set the default window position for windows opened subsequently. +\end{funcdesc} + +\begin{funcdesc}{setdefwinsize}{width\, height} +Set the default window size for windows opened subsequently. +\end{funcdesc} + +\begin{funcdesc}{getdefscrollbars}{} +Return the flags controlling whether subsequently opened windows will +have horizontal and/or vertical scroll bars. +\end{funcdesc} + +\begin{funcdesc}{getdefwinpos}{} +Return the default window position for windows opened subsequently. +\end{funcdesc} + +\begin{funcdesc}{getdefwinsize}{} +Return the default window size for windows opened subsequently. +\end{funcdesc} + +\begin{funcdesc}{getscrsize}{} +Return the screen size in pixels. +\end{funcdesc} + +\begin{funcdesc}{getscrmm}{} +Return the screen size in millimeters. +\end{funcdesc} + +\begin{funcdesc}{fetchcolor}{colorname} +Return the pixel value corresponding to the given color name. +Return the default foreground color for unknown color names. +Hint: the following code tests wheter you are on a machine that +supports more than two colors: +\bcode\begin{verbatim} +if stdwin.fetchcolor('black') <> \ + stdwin.fetchcolor('red') <> \ + stdwin.fetchcolor('white'): + print 'color machine' +else: + print 'monochrome machine' +\end{verbatim}\ecode +\end{funcdesc} + +\begin{funcdesc}{setfgcolor}{pixel} +Set the default foreground color. +This will become the default foreground color of windows opened +subsequently, including dialogs. +\end{funcdesc} + +\begin{funcdesc}{setbgcolor}{pixel} +Set the default background color. +This will become the default background color of windows opened +subsequently, including dialogs. +\end{funcdesc} + +\begin{funcdesc}{getfgcolor}{} +Return the pixel value of the current default foreground color. +\end{funcdesc} + +\begin{funcdesc}{getbgcolor}{} +Return the pixel value of the current default background color. +\end{funcdesc} + +\begin{funcdesc}{setfont}{fontname} +Set the current default font. +This will become the default font for windows opened subsequently, +and is also used by the text measuring functions \code{textwidth}, +\code{textbreak}, \code{lineheight} and \code{baseline} below. +This accepts two more optional parameters, size and style: +Size is the font size (in `points'). +Style is a single character specifying the style, as follows: +\code{'b'} = bold, +\code{'i'} = italic, +\code{'o'} = bold + italic, +\code{'u'} = underline; +default style is roman. +Size and style are ignored under X11 but used on the Macintosh. +(Sorry for all this complexity --- a more uniform interface is being designed.) +\end{funcdesc} + +\begin{funcdesc}{menucreate}{title} +Create a menu object referring to a global menu (a menu that appears in +all windows). +Methods of menu objects are described below. +Note: normally, menus are created locally; see the window method +\code{menucreate} below. +\strong{Warning:} the menu only appears in a window as long as the object +returned by this call exists. +\end{funcdesc} + +\begin{funcdesc}{newbitmap}{width\, height} +Create a new bitmap object of the given dimensions. +Methods of bitmap objects are described below. +\end{funcdesc} + +\begin{funcdesc}{fleep}{} +Cause a beep or bell (or perhaps a `visual bell' or flash, hence the +name). +\end{funcdesc} + +\begin{funcdesc}{message}{string} +Display a dialog box containing the string. +The user must click OK before the function returns. +\end{funcdesc} + +\begin{funcdesc}{askync}{prompt\, default} +Display a dialog that prompts the user to answer a question with yes or +no. +Return 0 for no, 1 for yes. +If the user hits the Return key, the default (which must be 0 or 1) is +returned. +If the user cancels the dialog, the +\code{KeyboardInterrupt} +exception is raised. +\end{funcdesc} + +\begin{funcdesc}{askstr}{prompt\, default} +Display a dialog that prompts the user for a string. +If the user hits the Return key, the default string is returned. +If the user cancels the dialog, the +\code{KeyboardInterrupt} +exception is raised. +\end{funcdesc} + +\begin{funcdesc}{askfile}{prompt\, default\, new} +Ask the user to specify a filename. +If +\var{new} +is zero it must be an existing file; otherwise, it must be a new file. +If the user cancels the dialog, the +\code{KeyboardInterrupt} +exception is raised. +\end{funcdesc} + +\begin{funcdesc}{setcutbuffer}{i\, string} +Store the string in the system's cut buffer number +\var{i}, +where it can be found (for pasting) by other applications. +On X11, there are 8 cut buffers (numbered 0..7). +Cut buffer number 0 is the `clipboard' on the Macintosh. +\end{funcdesc} + +\begin{funcdesc}{getcutbuffer}{i} +Return the contents of the system's cut buffer number +\var{i}. +\end{funcdesc} + +\begin{funcdesc}{rotatecutbuffers}{n} +On X11, rotate the 8 cut buffers by +\var{n}. +Ignored on the Macintosh. +\end{funcdesc} + +\begin{funcdesc}{getselection}{i} +Return X11 selection number +\var{i.} +Selections are not cut buffers. +Selection numbers are defined in module +\code{stdwinevents}. +Selection \code{WS_PRIMARY} is the +\dfn{primary} +selection (used by +xterm, +for instance); +selection \code{WS_SECONDARY} is the +\dfn{secondary} +selection; selection \code{WS_CLIPBOARD} is the +\dfn{clipboard} +selection (used by +xclipboard). +On the Macintosh, this always returns an empty string. +\end{funcdesc} + +\begin{funcdesc}{resetselection}{i} +Reset selection number +\var{i}, +if this process owns it. +(See window method +\code{setselection()}). +\end{funcdesc} + +\begin{funcdesc}{baseline}{} +Return the baseline of the current font (defined by STDWIN as the +vertical distance between the baseline and the top of the +characters). +\end{funcdesc} + +\begin{funcdesc}{lineheight}{} +Return the total line height of the current font. +\end{funcdesc} + +\begin{funcdesc}{textbreak}{str\, width} +Return the number of characters of the string that fit into a space of +\var{width} +bits wide when drawn in the curent font. +\end{funcdesc} + +\begin{funcdesc}{textwidth}{str} +Return the width in bits of the string when drawn in the current font. +\end{funcdesc} + +\begin{funcdesc}{connectionnumber}{} +\funcline{fileno}{} +(X11 under \UNIX{} only) Return the ``connection number'' used by the +underlying X11 implementation. (This is normally the file number of +the socket.) Both functions return the same value; +\code{connectionnumber()} is named after the corresponding function in +X11 and STDWIN, while \code{fileno()} makes it possible to use the +\code{stdwin} module as a ``file'' object parameter to +\code{select.select()}. Note that if \code{select()} implies that +input is possible on \code{stdwin}, this does not guarantee that an +event is ready --- it may be some internal communication going on +between the X server and the client library. Thus, you should call +\code{stdwin.pollevent()} until it returns \code{None} to check for +events if you don't want your program to block. Because of internal +buffering in X11, it is also possible that \code{stdwin.pollevent()} +returns an event while \code{select()} does not find \code{stdwin} to +be ready, so you should read any pending events with +\code{stdwin.pollevent()} until it returns \code{None} before entering +a blocking \code{select()} call. +\ttindex{select} +\end{funcdesc} + +\subsection{Window Object Methods} + +Window objects are created by \code{stdwin.open()}. They are closed +by their \code{close()} method or when they are garbage-collected. +Window objects have the following methods: + +\renewcommand{\indexsubitem}{(window method)} + +\begin{funcdesc}{begindrawing}{} +Return a drawing object, whose methods (described below) allow drawing +in the window. +\end{funcdesc} + +\begin{funcdesc}{change}{rect} +Invalidate the given rectangle; this may cause a draw event. +\end{funcdesc} + +\begin{funcdesc}{gettitle}{} +Returns the window's title string. +\end{funcdesc} + +\begin{funcdesc}{getdocsize}{} +\begin{sloppypar} +Return a pair of integers giving the size of the document as set by +\code{setdocsize()}. +\end{sloppypar} +\end{funcdesc} + +\begin{funcdesc}{getorigin}{} +Return a pair of integers giving the origin of the window with respect +to the document. +\end{funcdesc} + +\begin{funcdesc}{gettitle}{} +Return the window's title string. +\end{funcdesc} + +\begin{funcdesc}{getwinsize}{} +Return a pair of integers giving the size of the window. +\end{funcdesc} + +\begin{funcdesc}{getwinpos}{} +Return a pair of integers giving the position of the window's upper +left corner (relative to the upper left corner of the screen). +\end{funcdesc} + +\begin{funcdesc}{menucreate}{title} +Create a menu object referring to a local menu (a menu that appears +only in this window). +Methods of menu objects are described below. +{\bf Warning:} the menu only appears as long as the object +returned by this call exists. +\end{funcdesc} + +\begin{funcdesc}{scroll}{rect\, point} +Scroll the given rectangle by the vector given by the point. +\end{funcdesc} + +\begin{funcdesc}{setdocsize}{point} +Set the size of the drawing document. +\end{funcdesc} + +\begin{funcdesc}{setorigin}{point} +Move the origin of the window (its upper left corner) +to the given point in the document. +\end{funcdesc} + +\begin{funcdesc}{setselection}{i\, str} +Attempt to set X11 selection number +\var{i} +to the string +\var{str}. +(See stdwin method +\code{getselection()} +for the meaning of +\var{i}.) +Return true if it succeeds. +If succeeds, the window ``owns'' the selection until +(a) another applications takes ownership of the selection; or +(b) the window is deleted; or +(c) the application clears ownership by calling +\code{stdwin.resetselection(\var{i})}. +When another application takes ownership of the selection, a +\code{WE_LOST_SEL} +event is received for no particular window and with the selection number +as detail. +Ignored on the Macintosh. +\end{funcdesc} + +\begin{funcdesc}{settimer}{dsecs} +Schedule a timer event for the window in +\code{\var{dsecs}/10} +seconds. +\end{funcdesc} + +\begin{funcdesc}{settitle}{title} +Set the window's title string. +\end{funcdesc} + +\begin{funcdesc}{setwincursor}{name} +\begin{sloppypar} +Set the window cursor to a cursor of the given name. +It raises the +\code{RuntimeError} +exception if no cursor of the given name exists. +Suitable names include +\code{'ibeam'}, +\code{'arrow'}, +\code{'cross'}, +\code{'watch'} +and +\code{'plus'}. +On X11, there are many more (see +\file{<X11/cursorfont.h>}). +\end{sloppypar} +\end{funcdesc} + +\begin{funcdesc}{setwinpos}{h\, v} +Set the the position of the window's upper left corner (relative to +the upper left corner of the screen). +\end{funcdesc} + +\begin{funcdesc}{setwinsize}{width\, height} +Set the window's size. +\end{funcdesc} + +\begin{funcdesc}{show}{rect} +Try to ensure that the given rectangle of the document is visible in +the window. +\end{funcdesc} + +\begin{funcdesc}{textcreate}{rect} +Create a text-edit object in the document at the given rectangle. +Methods of text-edit objects are described below. +\end{funcdesc} + +\begin{funcdesc}{setactive}{} +Attempt to make this window the active window. If successful, this +will generate a WE_ACTIVATE event (and a WE_DEACTIVATE event in case +another window in this application became inactive). +\end{funcdesc} + +\begin{funcdesc}{close}{} +Discard the window object. It should not be used again. +\end{funcdesc} + +\subsection{Drawing Object Methods} + +Drawing objects are created exclusively by the window method +\code{begindrawing()}. +Only one drawing object can exist at any given time; the drawing object +must be deleted to finish drawing. +No drawing object may exist when +\code{stdwin.getevent()} +is called. +Drawing objects have the following methods: + +\renewcommand{\indexsubitem}{(drawing method)} + +\begin{funcdesc}{box}{rect} +Draw a box just inside a rectangle. +\end{funcdesc} + +\begin{funcdesc}{circle}{center\, radius} +Draw a circle with given center point and radius. +\end{funcdesc} + +\begin{funcdesc}{elarc}{center\, \(rh\, rv\)\, \(a1\, a2\)} +Draw an elliptical arc with given center point. +\code{(\var{rh}, \var{rv})} +gives the half sizes of the horizontal and vertical radii. +\code{(\var{a1}, \var{a2})} +gives the angles (in degrees) of the begin and end points. +0 degrees is at 3 o'clock, 90 degrees is at 12 o'clock. +\end{funcdesc} + +\begin{funcdesc}{erase}{rect} +Erase a rectangle. +\end{funcdesc} + +\begin{funcdesc}{fillcircle}{center\, radius} +Draw a filled circle with given center point and radius. +\end{funcdesc} + +\begin{funcdesc}{fillelarc}{center\, \(rh\, rv\)\, \(a1\, a2\)} +Draw a filled elliptical arc; arguments as for \code{elarc}. +\end{funcdesc} + +\begin{funcdesc}{fillpoly}{points} +Draw a filled polygon given by a list (or tuple) of points. +\end{funcdesc} + +\begin{funcdesc}{invert}{rect} +Invert a rectangle. +\end{funcdesc} + +\begin{funcdesc}{line}{p1\, p2} +Draw a line from point +\var{p1} +to +\var{p2}. +\end{funcdesc} + +\begin{funcdesc}{paint}{rect} +Fill a rectangle. +\end{funcdesc} + +\begin{funcdesc}{poly}{points} +Draw the lines connecting the given list (or tuple) of points. +\end{funcdesc} + +\begin{funcdesc}{shade}{rect\, percent} +Fill a rectangle with a shading pattern that is about +\var{percent} +percent filled. +\end{funcdesc} + +\begin{funcdesc}{text}{p\, str} +Draw a string starting at point p (the point specifies the +top left coordinate of the string). +\end{funcdesc} + +\begin{funcdesc}{xorcircle}{center\, radius} +\funcline{xorelarc}{center\, \(rh\, rv\)\, \(a1\, a2\)} +\funcline{xorline}{p1\, p2} +\funcline{xorpoly}{points} +Draw a circle, an elliptical arc, a line or a polygon, respectively, +in XOR mode. +\end{funcdesc} + +\begin{funcdesc}{setfgcolor}{} +\funcline{setbgcolor}{} +\funcline{getfgcolor}{} +\funcline{getbgcolor}{} +These functions are similar to the corresponding functions described +above for the +\code{stdwin} +module, but affect or return the colors currently used for drawing +instead of the global default colors. +When a drawing object is created, its colors are set to the window's +default colors, which are in turn initialized from the global default +colors when the window is created. +\end{funcdesc} + +\begin{funcdesc}{setfont}{} +\funcline{baseline}{} +\funcline{lineheight}{} +\funcline{textbreak}{} +\funcline{textwidth}{} +These functions are similar to the corresponding functions described +above for the +\code{stdwin} +module, but affect or use the current drawing font instead of +the global default font. +When a drawing object is created, its font is set to the window's +default font, which is in turn initialized from the global default +font when the window is created. +\end{funcdesc} + +\begin{funcdesc}{bitmap}{point\, bitmap\, mask} +Draw the \var{bitmap} with its top left corner at \var{point}. +If the optional \var{mask} argument is present, it should be either +the same object as \var{bitmap}, to draw only those bits that are set +in the bitmap, in the foreground color, or \code{None}, to draw all +bits (ones are drawn in the foreground color, zeros in the background +color). +\end{funcdesc} + +\begin{funcdesc}{cliprect}{rect} +Set the ``clipping region'' to a rectangle. +The clipping region limits the effect of all drawing operations, until +it is changed again or until the drawing object is closed. When a +drawing object is created the clipping region is set to the entire +window. When an object to be drawn falls partly outside the clipping +region, the set of pixels drawn is the intersection of the clipping +region and the set of pixels that would be drawn by the same operation +in the absence of a clipping region. +clipping region +\end{funcdesc} + +\begin{funcdesc}{noclip}{} +Reset the clipping region to the entire window. +\end{funcdesc} + +\begin{funcdesc}{close}{} +\funcline{enddrawing}{} +Discard the drawing object. It should not be used again. +\end{funcdesc} + +\subsection{Menu Object Methods} + +A menu object represents a menu. +The menu is destroyed when the menu object is deleted. +The following methods are defined: + +\renewcommand{\indexsubitem}{(menu method)} + +\begin{funcdesc}{additem}{text\, shortcut} +Add a menu item with given text. +The shortcut must be a string of length 1, or omitted (to specify no +shortcut). +\end{funcdesc} + +\begin{funcdesc}{setitem}{i\, text} +Set the text of item number +\var{i}. +\end{funcdesc} + +\begin{funcdesc}{enable}{i\, flag} +Enable or disables item +\var{i}. +\end{funcdesc} + +\begin{funcdesc}{check}{i\, flag} +Set or clear the +\dfn{check mark} +for item +\var{i}. +\end{funcdesc} + +\begin{funcdesc}{close}{} +Discard the menu object. It should not be used again. +\end{funcdesc} + +\subsection{Bitmap Object Methods} + +A bitmap represents a rectangular array of bits. +The top left bit has coordinate (0, 0). +A bitmap can be drawn with the \code{bitmap} method of a drawing object. +The following methods are defined: + +\renewcommand{\indexsubitem}{(bitmap method)} + +\begin{funcdesc}{getsize}{} +Return a tuple representing the width and height of the bitmap. +(This returns the values that have been passed to the \code{newbitmap} +function.) +\end{funcdesc} + +\begin{funcdesc}{setbit}{point\, bit} +Set the value of the bit indicated by \var{point} to \var{bit}. +\end{funcdesc} + +\begin{funcdesc}{getbit}{point} +Return the value of the bit indicated by \var{point}. +\end{funcdesc} + +\begin{funcdesc}{close}{} +Discard the bitmap object. It should not be used again. +\end{funcdesc} + +\subsection{Text-edit Object Methods} + +A text-edit object represents a text-edit block. +For semantics, see the STDWIN documentation for C programmers. +The following methods exist: + +\renewcommand{\indexsubitem}{(text-edit method)} + +\begin{funcdesc}{arrow}{code} +Pass an arrow event to the text-edit block. +The +\var{code} +must be one of +\code{WC_LEFT}, +\code{WC_RIGHT}, +\code{WC_UP} +or +\code{WC_DOWN} +(see module +\code{stdwinevents}). +\end{funcdesc} + +\begin{funcdesc}{draw}{rect} +Pass a draw event to the text-edit block. +The rectangle specifies the redraw area. +\end{funcdesc} + +\begin{funcdesc}{event}{type\, window\, detail} +Pass an event gotten from +\code{stdwin.getevent()} +to the text-edit block. +Return true if the event was handled. +\end{funcdesc} + +\begin{funcdesc}{getfocus}{} +Return 2 integers representing the start and end positions of the +focus, usable as slice indices on the string returned by +\code{gettext()}. +\end{funcdesc} + +\begin{funcdesc}{getfocustext}{} +Return the text in the focus. +\end{funcdesc} + +\begin{funcdesc}{getrect}{} +Return a rectangle giving the actual position of the text-edit block. +(The bottom coordinate may differ from the initial position because +the block automatically shrinks or grows to fit.) +\end{funcdesc} + +\begin{funcdesc}{gettext}{} +Return the entire text buffer. +\end{funcdesc} + +\begin{funcdesc}{move}{rect} +Specify a new position for the text-edit block in the document. +\end{funcdesc} + +\begin{funcdesc}{replace}{str} +Replace the text in the focus by the given string. +The new focus is an insert point at the end of the string. +\end{funcdesc} + +\begin{funcdesc}{setfocus}{i\, j} +Specify the new focus. +Out-of-bounds values are silently clipped. +\end{funcdesc} + +\begin{funcdesc}{settext}{str} +Replace the entire text buffer by the given string and set the focus +to \code{(0, 0)}. +\end{funcdesc} + +\begin{funcdesc}{setview}{rect} +Set the view rectangle to \var{rect}. If \var{rect} is \code{None}, +viewing mode is reset. In viewing mode, all output from the text-edit +object is clipped to the viewing rectangle. This may be useful to +implement your own scrolling text subwindow. +\end{funcdesc} + +\begin{funcdesc}{close}{} +Discard the text-edit object. It should not be used again. +\end{funcdesc} + +\subsection{Example} +\nodename{Stdwin Example} + +Here is a minimal example of using STDWIN in Python. +It creates a window and draws the string ``Hello world'' in the top +left corner of the window. +The window will be correctly redrawn when covered and re-exposed. +The program quits when the close icon or menu item is requested. + +\bcode\begin{verbatim} +import stdwin +from stdwinevents import * + +def main(): + mywin = stdwin.open('Hello') + # + while 1: + (type, win, detail) = stdwin.getevent() + if type == WE_DRAW: + draw = win.begindrawing() + draw.text((0, 0), 'Hello, world') + del draw + elif type == WE_CLOSE: + break + +main() +\end{verbatim}\ecode + +\section{Standard Module \sectcode{stdwinevents}} +\stmodindex{stdwinevents} + +This module defines constants used by STDWIN for event types +(\code{WE_ACTIVATE} etc.), command codes (\code{WC_LEFT} etc.) +and selection types (\code{WS_PRIMARY} etc.). +Read the file for details. +Suggested usage is + +\bcode\begin{verbatim} +>>> from stdwinevents import * +>>> +\end{verbatim}\ecode + +\section{Standard Module \sectcode{rect}} +\stmodindex{rect} + +This module contains useful operations on rectangles. +A rectangle is defined as in module +\code{stdwin}: +a pair of points, where a point is a pair of integers. +For example, the rectangle + +\bcode\begin{verbatim} +(10, 20), (90, 80) +\end{verbatim}\ecode + +is a rectangle whose left, top, right and bottom edges are 10, 20, 90 +and 80, respectively. +Note that the positive vertical axis points down (as in +\code{stdwin}). + +The module defines the following objects: + +\renewcommand{\indexsubitem}{(in module rect)} +\begin{excdesc}{error} +The exception raised by functions in this module when they detect an +error. +The exception argument is a string describing the problem in more +detail. +\end{excdesc} + +\begin{datadesc}{empty} +The rectangle returned when some operations return an empty result. +This makes it possible to quickly check whether a result is empty: + +\bcode\begin{verbatim} +>>> import rect +>>> r1 = (10, 20), (90, 80) +>>> r2 = (0, 0), (10, 20) +>>> r3 = rect.intersect([r1, r2]) +>>> if r3 is rect.empty: print 'Empty intersection' +Empty intersection +>>> +\end{verbatim}\ecode +\end{datadesc} + +\begin{funcdesc}{is_empty}{r} +Returns true if the given rectangle is empty. +A rectangle +\code{(\var{left}, \var{top}), (\var{right}, \var{bottom})} +is empty if +\iftexi +\code{\var{left} >= \var{right}} or \code{\var{top} => \var{bottom}}. +\else +$\var{left} \geq \var{right}$ or $\var{top} \geq \var{bottom}$. +%%JHXXX{\em left~$\geq$~right} or {\em top~$\leq$~bottom}. +\fi +\end{funcdesc} + +\begin{funcdesc}{intersect}{list} +Returns the intersection of all rectangles in the list argument. +It may also be called with a tuple argument. +Raises +\code{rect.error} +if the list is empty. +Returns +\code{rect.empty} +if the intersection of the rectangles is empty. +\end{funcdesc} + +\begin{funcdesc}{union}{list} +Returns the smallest rectangle that contains all non-empty rectangles in +the list argument. +It may also be called with a tuple argument or with two or more +rectangles as arguments. +Returns +\code{rect.empty} +if the list is empty or all its rectangles are empty. +\end{funcdesc} + +\begin{funcdesc}{pointinrect}{point\, rect} +Returns true if the point is inside the rectangle. +By definition, a point +\code{(\var{h}, \var{v})} +is inside a rectangle +\code{(\var{left}, \var{top}), (\var{right}, \var{bottom})} if +\iftexi +\code{\var{left} <= \var{h} < \var{right}} and +\code{\var{top} <= \var{v} < \var{bottom}}. +\else +$\var{left} \leq \var{h} < \var{right}$ and +$\var{top} \leq \var{v} < \var{bottom}$. +\fi +\end{funcdesc} + +\begin{funcdesc}{inset}{rect\, \(dh\, dv\)} +Returns a rectangle that lies inside the +\code{rect} +argument by +\var{dh} +pixels horizontally +and +\var{dv} +pixels +vertically. +If +\var{dh} +or +\var{dv} +is negative, the result lies outside +\var{rect}. +\end{funcdesc} + +\begin{funcdesc}{rect2geom}{rect} +Converts a rectangle to geometry representation: +\code{(\var{left}, \var{top}), (\var{width}, \var{height})}. +\end{funcdesc} + +\begin{funcdesc}{geom2rect}{geom} +Converts a rectangle given in geometry representation back to the +standard rectangle representation +\code{(\var{left}, \var{top}), (\var{right}, \var{bottom})}. +\end{funcdesc} diff --git a/Doc/lib/libstring.tex b/Doc/lib/libstring.tex new file mode 100644 index 0000000..2bcbdfc --- /dev/null +++ b/Doc/lib/libstring.tex @@ -0,0 +1,193 @@ +\section{Standard Module \sectcode{string}} + +\stmodindex{string} + +This module defines some constants useful for checking character +classes, some exceptions, and some useful string functions. +The constants are: + +\renewcommand{\indexsubitem}{(data in module string)} +\begin{datadesc}{digits} + The string \code{'0123456789'}. +\end{datadesc} + +\begin{datadesc}{hexdigits} + The string \code{'0123456789abcdefABCDEF'}. +\end{datadesc} + +\begin{datadesc}{letters} + The concatenation of the strings \code{lowercase} and + \code{uppercase} described below. +\end{datadesc} + +\begin{datadesc}{lowercase} + A string containing all the characters that are considered lowercase + letters. On most systems this is the string + \code{'abcdefghijklmnopqrstuvwxyz'}. Do not change its definition -- + the effect on the routines \code{upper} and \code{swapcase} is + undefined. +\end{datadesc} + +\begin{datadesc}{octdigits} + The string \code{'01234567'}. +\end{datadesc} + +\begin{datadesc}{uppercase} + A string containing all the characters that are considered uppercase + letters. On most systems this is the string + \code{'ABCDEFGHIJKLMNOPQRSTUVWXYZ'}. Do not change its definition -- + the effect on the routines \code{lower} and \code{swapcase} is + undefined. +\end{datadesc} + +\begin{datadesc}{whitespace} + A string containing all characters that are considered whitespace. + On most systems this includes the characters space, tab, linefeed, + return, formfeed, and vertical tab. Do not change its definition -- + the effect on the routines \code{strip} and \code{split} is + undefined. +\end{datadesc} + +The exceptions are: + +\renewcommand{\indexsubitem}{(exception in module string)} + +\begin{excdesc}{atof_error} +Exception raised by +\code{atof} +when a non-float string argument is detected. +The exception argument is the offending string. +\end{excdesc} + +\begin{excdesc}{atoi_error} +Exception raised by +\code{atoi} +when a non-integer string argument is detected. +The exception argument is the offending string. +\end{excdesc} + +\begin{excdesc}{atol_error} +Exception raised by +\code{atol} +when a non-integer string argument is detected. +The exception argument is the offending string. +\end{excdesc} + +\begin{excdesc}{index_error} +Exception raised by \code{index} when \var{sub} is not found. +The exception argument is undefined (it may be a tuple containing the +offending arguments to \code{index} or it may be the constant string +\code{'substring not found'}). +\end{excdesc} + +The functions are: + +\renewcommand{\indexsubitem}{(in module string)} + +\begin{funcdesc}{atof}{s} +Convert a string to a floating point number. The string must have +the standard syntax for a floating point literal in Python, optionally +preceded by a sign (\samp{+} or \samp{-}). +\end{funcdesc} + +\begin{funcdesc}{atoi}{s} +Convert a string to an integer. The string must consist of one or more +digits, optionally preceded by a sign (\samp{+} or \samp{-}). +\end{funcdesc} + +\begin{funcdesc}{atol}{s} +Convert a string to a long integer. The string must consist of one +or more digits, optionally preceded by a sign (\samp{+} or \samp{-}). +\end{funcdesc} + +\begin{funcdesc}{expandtabs}{s\, tabsize} +Expand tabs in a string, i.e. replace them by one or more spaces, +depending on the current column and the given tab size. The column +number is reset to zero after each newline occurring in the string. +This doesn't understand other non-printing characters or escape +sequences. +\end{funcdesc} + +\begin{funcdesc}{find}{s\, sub\, i} +Return the lowest index in \var{s} not smaller than \var{i} where the +substring \var{sub} is found. Return \code{-1} when \var{sub} +does not occur as a substring of \var{s} with index at least \var{i}. +If \var{i} is omitted, it defaults to \code{0}. If \var{i} is +negative, \code{len(\var{s})} is added. +\end{funcdesc} + +\begin{funcdesc}{rfind}{s\, sub\, i} +Like \code{find} but finds the highest index. +\end{funcdesc} + +\begin{funcdesc}{index}{s\, sub\, i} +Like \code{find} but raise \code{index_error} when the substring is +not found. +\end{funcdesc} + +\begin{funcdesc}{rindex}{s\, sub\, i} +Like \code{rfind} but raise \code{index_error} when the substring is +not found. +\end{funcdesc} + +\begin{funcdesc}{lower}{s} +Convert letters to lower case. +\end{funcdesc} + +\begin{funcdesc}{split}{s} +Returns a list of the whitespace-delimited words of the string +\var{s}. +\end{funcdesc} + +\begin{funcdesc}{splitfields}{s\, sep} + Returns a list containing the fields of the string \var{s}, using + the string \var{sep} as a separator. The list will have one more + items than the number of non-overlapping occurrences of the + separator in the string. Thus, \code{string.splitfields(\var{s}, ' + ')} is not the same as \code{string.split(\var{s})}, as the latter + only returns non-empty words. As a special case, + \code{splitfields(\var{s}, '')} returns \code{[\var{s}]}, for any string + \var{s}. (See also \code{regsub.split()}.) +\end{funcdesc} + +\begin{funcdesc}{join}{words} +Concatenate a list or tuple of words with intervening spaces. +\end{funcdesc} + +\begin{funcdesc}{joinfields}{words\, sep} +Concatenate a list or tuple of words with intervening separators. +It is always true that +\code{string.joinfields(string.splitfields(\var{t}, \var{sep}), \var{sep})} +equals \var{t}. +\end{funcdesc} + +\begin{funcdesc}{strip}{s} +Removes leading and trailing whitespace from the string +\var{s}. +\end{funcdesc} + +\begin{funcdesc}{swapcase}{s} +Converts lower case letters to upper case and vice versa. +\end{funcdesc} + +\begin{funcdesc}{upper}{s} +Convert letters to upper case. +\end{funcdesc} + +\begin{funcdesc}{ljust}{s\, width} +\funcline{rjust}{s\, width} +\funcline{center}{s\, width} +These functions respectively left-justify, right-justify and center a +string in a field of given width. +They return a string that is at least +\var{width} +characters wide, created by padding the string +\var{s} +with spaces until the given width on the right, left or both sides. +The string is never truncated. +\end{funcdesc} + +\begin{funcdesc}{zfill}{s\, width} +Pad a numeric string on the left with zero digits until the given +width is reached. Strings starting with a sign are handled correctly. +\end{funcdesc} diff --git a/Doc/lib/libstruct.tex b/Doc/lib/libstruct.tex new file mode 100644 index 0000000..5b4a9aa --- /dev/null +++ b/Doc/lib/libstruct.tex @@ -0,0 +1,75 @@ +\section{Built-in module \sectcode{struct}} +\bimodindex{struct} +\indexii{C}{structures} + +This module performs conversions between Python values and C +structs represented as Python strings. It uses \dfn{format strings} +(explained below) as compact descriptions of the lay-out of the C +structs and the intended conversion to/from Python values. + +The module defines the following exception and functions: + +\renewcommand{\indexsubitem}{(in module struct)} +\begin{excdesc}{error} + Exception raised on various occasions; argument is a string + describing what is wrong. +\end{excdesc} + +\begin{funcdesc}{pack}{fmt\, v1\, v2\, {\rm \ldots}} + Return a string containing the values + \code{\var{v1}, \var{v2}, {\rm \ldots}} packed according to the given + format. The arguments must match the values required by the format + exactly. +\end{funcdesc} + +\begin{funcdesc}{unpack}{fmt\, string} + Unpack the string (presumably packed by \code{pack(\var{fmt}, {\rm \ldots})}) + according to the given format. The result is a tuple even if it + contains exactly one item. The string must contain exactly the + amount of data required by the format (i.e. \code{len(\var{string})} must + equal \code{calcsize(\var{fmt})}). +\end{funcdesc} + +\begin{funcdesc}{calcsize}{fmt} + Return the size of the struct (and hence of the string) + corresponding to the given format. +\end{funcdesc} + +Format characters have the following meaning; the conversion between C +and Python values should be obvious given their types: + +\begin{tableiii}{|c|l|l|}{samp}{Format}{C}{Python} + \lineiii{x}{pad byte}{no value} + \lineiii{c}{char}{string of length 1} + \lineiii{b}{signed char}{integer} + \lineiii{h}{short}{integer} + \lineiii{i}{int}{integer} + \lineiii{l}{long}{integer} + \lineiii{f}{float}{float} + \lineiii{d}{double}{float} +\end{tableiii} + +A format character may be preceded by an integral repeat count; e.g. +the format string \code{'4h'} means exactly the same as \code{'hhhh'}. + +C numbers are represented in the machine's native format and byte +order, and properly aligned by skipping pad bytes if necessary +(according to the rules used by the C compiler). + +Examples (all on a big-endian machine): + +\bcode\begin{verbatim} +pack('hhl', 1, 2, 3) == '\000\001\000\002\000\000\000\003' +unpack('hhl', '\000\001\000\002\000\000\000\003') == (1, 2, 3) +calcsize('hhl') == 8 +\end{verbatim}\ecode + +Hint: to align the end of a structure to the alignment requirement of +a particular type, end the format with the code for that type with a +repeat count of zero, e.g. the format \code{'llh0l'} specifies two +pad bytes at the end, assuming longs are aligned on 4-byte boundaries. + +(More format characters are planned, e.g. \code{'s'} for character +arrays, upper case for unsigned variants, and a way to specify the +byte order, which is useful for [de]constructing network packets and +reading/writing portable binary file formats like TIFF and AIFF.) diff --git a/Doc/lib/libsun.tex b/Doc/lib/libsun.tex new file mode 100644 index 0000000..9624b9c --- /dev/null +++ b/Doc/lib/libsun.tex @@ -0,0 +1,113 @@ +\chapter{SUNOS ONLY} + +The modules described in this chapter provide interfaces to features +that are unique to the SunOS operating system (versions 4 and 5; the +latter is also known as SOLARIS version 2). + +\section{Built-in module \sectcode{sunaudiodev}} +\bimodindex{sunaudiodev} + +This module allows you to access the sun audio interface. The sun +audio hardware is capable of recording and playing back audio data +in U-LAW format with a sample rate of 8K per second. A full +description can be gotten with \samp{man audio}. + +The module defines the following variables and functions: + +\renewcommand{\indexsubitem}{(in module sunaudiodev)} +\begin{excdesc}{error} +This exception is raised on all errors. The argument is a string +describing what went wrong. +\end{excdesc} + +\begin{funcdesc}{open}{mode} +This function opens the audio device and returns a sun audio device +object. This object can then be used to do I/O on. The \var{mode} parameter +is one of \code{'r'} for record-only access, \code{'w'} for play-only +access, \code{'rw'} for both and \code{'control'} for access to the +control device. Since only one process is allowed to have the recorder +or player open at the same time it is a good idea to open the device +only for the activity needed. See the audio manpage for details. +\end{funcdesc} + +\subsection{Audio device object methods} + +The audio device objects are returned by \code{open} define the +following methods (except \code{control} objects which only provide +getinfo, setinfo and drain): + +\renewcommand{\indexsubitem}{(audio device method)} + +\begin{funcdesc}{close}{} +This method explicitly closes the device. It is useful in situations +where deleting the object does not immediately close it since there +are other references to it. A closed device should not be used again. +\end{funcdesc} + +\begin{funcdesc}{drain}{} +This method waits until all pending output is processed and then returns. +Calling this method is often not necessary: destroying the object will +automatically close the audio device and this will do an implicit drain. +\end{funcdesc} + +\begin{funcdesc}{flush}{} +This method discards all pending output. It can be used avoid the +slow response to a user's stop request (due to buffering of up to one +second of sound). +\end{funcdesc} + +\begin{funcdesc}{getinfo}{} +This method retrieves status information like input and output volume, +etc. and returns it in the form of +an audio status object. This object has no methods but it contains a +number of attributes describing the current device status. The names +and meanings of the attributes are described in +\file{/usr/include/sun/audioio.h} and in the audio man page. Member names +are slightly different from their C counterparts: a status object is +only a single structure. Members of the \code{play} substructure have +\samp{o_} prepended to their name and members of the \code{record} +structure have \samp{i_}. So, the C member \code{play.sample_rate} is +accessed as \code{o_sample_rate}, \code{record.gain} as \code{i_gain} +and \code{monitor_gain} plainly as \code{monitor_gain}. +\end{funcdesc} + +\begin{funcdesc}{ibufcount}{} +This method returns the number of samples that are buffered on the +recording side, i.e. +the program will not block on a \code{read} call of so many samples. +\end{funcdesc} + +\begin{funcdesc}{obufcount}{} +This method returns the number of samples buffered on the playback +side. Unfortunately, this number cannot be used to determine a number +of samples that can be written without blocking since the kernel +output queue length seems to be variable. +\end{funcdesc} + +\begin{funcdesc}{read}{size} +This method reads \var{size} samples from the audio input and returns +them as a python string. The function blocks until enough data is available. +\end{funcdesc} + +\begin{funcdesc}{setinfo}{status} +This method sets the audio device status parameters. The \var{status} +parameter is an device status object as returned by \code{getinfo} and +possibly modified by the program. +\end{funcdesc} + +\begin{funcdesc}{write}{samples} +Write is passed a python string containing audio samples to be played. +If there is enough buffer space free it will immedeately return, +otherwise it will block. +\end{funcdesc} + +There is a companion module, \code{SUNAUDIODEV}, which defines useful +symbolic constants like \code{MIN_GAIN}, \code{MAX_GAIN}, +\code{SPEAKER}, etc. The names of +the constants are the same names as used in the C include file +\file{<sun/audioio.h>}, with the leading string \samp{AUDIO_} stripped. + +Useability of the control device is limited at the moment, since there +is no way to use the 'wait for something to happen' feature the device +provides. This is because that feature makes heavy use of signals, and +these do not map too well onto Python. diff --git a/Doc/lib/libsys.tex b/Doc/lib/libsys.tex new file mode 100644 index 0000000..ba6b896 --- /dev/null +++ b/Doc/lib/libsys.tex @@ -0,0 +1,129 @@ +\section{Built-in Module \sectcode{sys}} + +\bimodindex{sys} +This module provides access to some variables used or maintained by the +interpreter and to functions that interact strongly with the interpreter. +It is always available. + +\renewcommand{\indexsubitem}{(in module sys)} +\begin{datadesc}{argv} + The list of command line arguments passed to a Python script. + \code{sys.argv[0]} is the script name. + If no script name was passed to the Python interpreter, + \code{sys.argv} is empty. +\end{datadesc} + +\begin{datadesc}{builtin_module_names} + A list of strings giving the names of all modules that are compiled + into this Python interpreter. (This information is not available in + any other way --- \code{sys.modules.keys()} only lists the imported + modules.) +\end{datadesc} + +\begin{datadesc}{exc_type} +\dataline{exc_value} +\dataline{exc_traceback} + These three variables are not always defined; they are set when an + exception handler (an \code{except} clause of a \code{try} statement) is + invoked. Their meaning is: \code{exc_type} gets the exception type of + the exception being handled; \code{exc_value} gets the exception + parameter (its \dfn{associated value} or the second argument to + \code{raise}); \code{exc_traceback} gets a traceback object which + encapsulates the call stack at the point where the exception + originally occurred. +\end{datadesc} + +\begin{funcdesc}{exit}{n} + Exit from Python with numeric exit status \var{n}. This is + implemented by raising the \code{SystemExit} exception, so cleanup + actions specified by \code{finally} clauses of \code{try} statements + are honored, and it is possible to catch the exit attempt at an outer + level. +\end{funcdesc} + +\begin{datadesc}{exitfunc} + This value is not actually defined by the module, but can be set by + the user (or by a program) to specify a clean-up action at program + exit. When set, it should be a parameterless function. This function + will be called when the interpreter exits in any way (but not when a + fatal error occurs: in that case the interpreter's internal state + cannot be trusted). +\end{datadesc} + +\begin{datadesc}{last_type} +\dataline{last_value} +\dataline{last_traceback} + These three variables are not always defined; they are set when an + exception is not handled and the interpreter prints an error message + and a stack traceback. Their intended use is to allow an interactive + user to import a debugger module and engage in post-mortem debugging + without having to re-execute the command that cause the error (which + may be hard to reproduce). The meaning of the variables is the same + as that of \code{exc_type}, \code{exc_value} and \code{exc_tracaback}, + respectively. +\end{datadesc} + +\begin{datadesc}{modules} + Gives the list of modules that have already been loaded. + This can be manipulated to force reloading of modules and other tricks. +\end{datadesc} + +\begin{datadesc}{path} + A list of strings that specifies the search path for modules. + Initialized from the environment variable \code{PYTHONPATH}, or an + installation-dependent default. +\end{datadesc} + +\begin{datadesc}{ps1} +\dataline{ps2} + Strings specifying the primary and secondary prompt of the + interpreter. These are only defined if the interpreter is in + interactive mode. Their initial values in this case are + \code{'>>> '} and \code{'... '}. +\end{datadesc} + +\begin{funcdesc}{settrace}{tracefunc} + Set the system's trace function, which allows you to implement a + Python source code debugger in Python. The standard modules + \code{pdb} and \code{wdb} are such debuggers; the difference is that + \code{wdb} uses windows and needs STDWIN, while \code{pdb} has a + line-oriented interface not unlike dbx. See the file \file{pdb.doc} + in the Python library source directory for more documentation (both + about \code{pdb} and \code{sys.trace}). +\end{funcdesc} +\ttindex{pdb} +\ttindex{wdb} +\index{trace function} + +\begin{funcdesc}{setprofile}{profilefunc} + Set the system's profile function, which allows you to implement a + Python source code profiler in Python. The system's profile function + is called similarly to the system's trace function (see + \code{sys.settrace}), but it isn't called for each executed line of + code (only on call and return and when an exception occurs). Also, + its return value is not used, so it can just return \code{None}. +\end{funcdesc} +\index{profile function} + +\begin{datadesc}{stdin} +\dataline{stdout} +\dataline{stderr} + File objects corresponding to the interpreter's standard input, + output and error streams. \code{sys.stdin} is used for all + interpreter input except for scripts but including calls to + \code{input()} and \code{raw_input()}. \code{sys.stdout} is used + for the output of \code{print} and expression statements and for the + prompts of \code{input()} and \code{raw_input()}. The interpreter's + own prompts and (almost all of) its error messages go to + \code{sys.stderr}. \code{sys.stdout} and \code{sys.stderr} needn't + be built-in file objects: any object is acceptable as long as it has + a \code{write} method that takes a string argument. +\end{datadesc} + +\begin{datadesc}{tracebacklimit} +When this variable is set to an integer value, it determines the +maximum number of levels of traceback information printed when an +unhandled exception occurs. The default is 1000. When set to 0 or +less, all traceback information is suppressed and only the exception +type and value are printed. +\end{datadesc} diff --git a/Doc/lib/libthread.tex b/Doc/lib/libthread.tex new file mode 100644 index 0000000..c836615 --- /dev/null +++ b/Doc/lib/libthread.tex @@ -0,0 +1,89 @@ +\section{Built-in Module \sectcode{thread}} +\bimodindex{thread} + +This module provides low-level primitives for working with multiple +threads (a.k.a. \dfn{light-weight processes} or \dfn{tasks}) --- multiple +threads of control sharing their global data space. For +synchronization, simple locks (a.k.a. \dfn{mutexes} or \dfn{binary +semaphores}) are provided. + +The module is optional and supported on SGI and Sun Sparc systems only. + +It defines the following constant and functions: + +\renewcommand{\indexsubitem}{(in module thread)} +\begin{excdesc}{error} +Raised on thread-specific errors. +\end{excdesc} + +\begin{funcdesc}{start_new_thread}{func\, arg} +Start a new thread. The thread executes the function \var{func} +with the argument list \var{arg} (which must be a tuple). When the +function returns, the thread silently exits. When the function raises +terminates with an unhandled exception, a stack trace is printed and +then the thread exits (but other threads continue to run). +\end{funcdesc} + +\begin{funcdesc}{exit_thread}{} +Exit the current thread silently. Other threads continue to run. +\strong{Caveat:} code in pending \code{finally} clauses is not executed. +\end{funcdesc} + +\begin{funcdesc}{exit_prog}{status} +Exit all threads and report the value of the integer argument +\var{status} as the exit status of the entire program. +\strong{Caveat:} code in pending \code{finally} clauses, in this thread +or in other threads, is not executed. +\end{funcdesc} + +\begin{funcdesc}{allocate_lock}{} +Return a new lock object. Methods of locks are described below. The +lock is initially unlocked. +\end{funcdesc} + +Lock objects have the following methods: + +\renewcommand{\indexsubitem}{(lock method)} +\begin{funcdesc}{acquire}{waitflag} +Without the optional argument, this method acquires the lock +unconditionally, if necessary waiting until it is released by another +thread (only one thread at a time can acquire a lock --- that's their +reason for existence), and returns \code{None}. If the integer +\var{waitflag} argument is present, the action depends on its value: +if it is zero, the lock is only acquired if it can be acquired +immediately without waiting, while if it is nonzero, the lock is +acquired unconditionally as before. If an argument is present, the +return value is 1 if the lock is acquired successfully, 0 if not. +\end{funcdesc} + +\begin{funcdesc}{release}{} +Releases the lock. The lock must have been acquired earlier, but not +necessarily by the same thread. +\end{funcdesc} + +\begin{funcdesc}{locked}{} +Return the status of the lock: 1 if it has been acquired by some +thread, 0 if not. +\end{funcdesc} + +{\bf Caveats:} + +\begin{itemize} +\item +Threads interact strangely with interrupts: the +\code{KeyboardInterrupt} exception will be received by an arbitrary +thread. + +\item +Calling \code{sys.exit(\var{status})} or executing +\code{raise SystemExit, \var{status}} is almost equivalent to calling +\code{thread.exit_prog(\var{status})}, except that the former ways of +exiting the entire program do honor \code{finally} clauses in the +current thread (but not in other threads). + +\item +Not all built-in functions that may block waiting for I/O allow other +threads to run, although the most popular ones (\code{sleep}, +\code{read}, \code{select}) work as expected. + +\end{itemize} diff --git a/Doc/lib/libtime.tex b/Doc/lib/libtime.tex new file mode 100644 index 0000000..fe8b7dc --- /dev/null +++ b/Doc/lib/libtime.tex @@ -0,0 +1,121 @@ +\section{Built-in Module \sectcode{time}} + +\bimodindex{time} +This module provides various time-related functions. +It is always available. (On some systems, not all functions may +exist; e.g. the ``milli'' variants can't always be implemented.) + +An explanation of some terminology and conventions is in order. + +\begin{itemize} + +\item +The ``epoch'' is the point where the time starts. On January 1st that +year, at 0 hours, the ``time since the epoch'' is zero. For UNIX, the +epoch is 1970. To find out what the epoch is, look at the first +element of \code{gmtime(0)}. + +\item +UTC is Coordinated Universal Time (formerly known as Greenwich Mean +Time). The acronym UTC is not a mistake but a compromise between +English and French. + +\item +DST is Daylight Saving Time, an adjustment of the timezone by +(usually) one hour during part of the year. DST rules are magic +(determined by local law) and can change from year to year. The C +library has a table containing the local rules (often it is read from +a system file for flexibility) and is the only source of True Wisdom +in this respect. + +\item +The precision of the various real-time functions may be less than +suggested by the units in which their value or argument is expressed. +E.g. on most UNIX systems, the clock ``ticks'' only every 1/50th or +1/100th of a second, and on the Mac, it ticks 60 times a second. + +\end{itemize} + +Functions and data items are: + +\renewcommand{\indexsubitem}{(in module time)} + +\begin{datadesc}{altzone} +The offset of the local DST timezone, in seconds west of the 0th +meridian, if one is defined. Only use this if \code{daylight} is +nonzero. +\end{datadesc} + + +\begin{funcdesc}{asctime}{tuple} +Convert a tuple representing a time as returned by \code{gmtime()} or +\code{localtime()} to a 24-character string of the following form: +\code{'Sun Jun 20 23:21:05 1993'}. Note: unlike the C function of +the same name, there is no trailing newline. +\end{funcdesc} + + +\begin{funcdesc}{ctime}{secs} +Convert a time expressed in seconds since the epoch to a string +representing local time. \code{ctime(t)} is equivalent to +\code{asctime(localtime(t))}. +\end{funcdesc} + +\begin{datadesc}{daylight} +Nonzero if a DST timezone is defined. +\end{datadesc} + +\begin{funcdesc}{gmtime}{secs} +Convert a time expressed in seconds since the epoch to a tuple of 9 +integers, in UTC: year (e.g. 1993), month (1-12), day (1-31), hour +(0-23), minute (0-59), second (0-59), weekday (0-6, monday is 0), +julian day (1-366), dst flag (always zero). Fractions of a second are +ignored. Note subtle differences with the C function of this name. +\end{funcdesc} + +\begin{funcdesc}{localtime}{secs} +Like \code{gmtime} but converts to local time. The dst flag is set +to 1 when DST applies to the given time. +\end{funcdesc} + +\begin{funcdesc}{millisleep}{msecs} +Suspend execution for the given number of milliseconds. (Obsolete, +you can now use use \code{sleep} with a floating point argument.) +\end{funcdesc} + +\begin{funcdesc}{millitimer}{} +Return the number of milliseconds of real time elapsed since some +point in the past that is fixed per execution of the python +interpreter (but may change in each following run). The return value +may be negative, and it may wrap around. +\end{funcdesc} + +\begin{funcdesc}{mktime}{tuple} +This is the inverse function of \code{localtime}. Its argument is the +full 9-tuple (since the dst flag is needed). It returns an integer. +\end{funcdesc} + +\begin{funcdesc}{sleep}{secs} +Suspend execution for the given number of seconds. The argument may +be a floating point number to indicate a more precise sleep time. +\end{funcdesc} + +\begin{funcdesc}{time}{} +Return the time as a floating point number expressed in seconds since +the epoch, in UTC. Note that even though the time is always returned +as a floating point number, not all systems provide time with a better +precision than 1 second. An alternative for measuring precise +intervals is \code{millitimer}. +\end{funcdesc} + +\begin{datadesc}{timezone} +The offset of the local (non-DST) timezone, in seconds west of the 0th +meridian (i.e. negative in most of Western Europe, positive in the US, +zero in the UK). +\end{datadesc} + +\begin{datadesc}{tzname} +A tuple of two strings: the first is the name of the local non-DST +timezone, the second is the name of the local DST timezone. If no DST +timezone is defined, the second string should not be used. +\end{datadesc} diff --git a/Doc/lib/libtypes.tex b/Doc/lib/libtypes.tex new file mode 100644 index 0000000..be8d990 --- /dev/null +++ b/Doc/lib/libtypes.tex @@ -0,0 +1,618 @@ +\section{Built-in Types} + +The following sections describe the standard types that are built into +the interpreter. These are the numeric types, sequence types, and +several others, including types themselves. There is no explicit +Boolean type; use integers instead. +\indexii{built-in}{types} +\indexii{Boolean}{type} + +Some operations are supported by several object types; in particular, +all objects can be compared, tested for truth value, and converted to +a string (with the \code{`{\rm \ldots}`} notation). The latter conversion is +implicitly used when an object is written by the \code{print} statement. +\stindex{print} + +\subsection{Truth Value Testing} + +Any object can be tested for truth value, for use in an \code{if} or +\code{while} condition or as operand of the Boolean operations below. +The following values are false: +\stindex{if} +\stindex{while} +\indexii{truth}{value} +\indexii{Boolean}{operations} +\index{false} + +\begin{itemize} +\renewcommand{\indexsubitem}{(Built-in object)} + +\item \code{None} + \ttindex{None} + +\item zero of any numeric type, e.g., \code{0}, \code{0L}, \code{0.0}. + +\item any empty sequence, e.g., \code{''}, \code{()}, \code{[]}. + +\item any empty mapping, e.g., \code{\{\}}. + +\end{itemize} + +\emph{All} other values are true --- so objects of many types are +always true. +\index{true} + +\subsection{Boolean Operations} + +These are the Boolean operations: +\indexii{Boolean}{operations} + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{\var{x} or \var{y}}{if \var{x} is false, then \var{y}, else \var{x}}{(1)} + \lineiii{\var{x} and \var{y}}{if \var{x} is false, then \var{x}, else \var{y}}{(1)} + \lineiii{not \var{x}}{if \var{x} is false, then \code{1}, else \code{0}}{} +\end{tableiii} +\opindex{and} +\opindex{or} +\opindex{not} + +\noindent +Notes: + +\begin{description} + +\item[(1)] +These only evaluate their second argument if needed for their outcome. + +\end{description} + +\subsection{Comparisons} + +Comparison operations are supported by all objects: + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Meaning}{Notes} + \lineiii{<}{strictly less than}{} + \lineiii{<=}{less than or equal}{} + \lineiii{>}{strictly greater than}{} + \lineiii{>=}{greater than or equal}{} + \lineiii{==}{equal}{} + \lineiii{<>}{not equal}{(1)} + \lineiii{!=}{not equal}{(1)} + \lineiii{is}{object identity}{} + \lineiii{is not}{negated object identity}{} +\end{tableiii} +\indexii{operator}{comparison} +\opindex{==} % XXX *All* others have funny characters < ! > +\opindex{is} +\opindex{is not} + +\noindent +Notes: + +\begin{description} + +\item[(1)] +\code{<>} and \code{!=} are alternate spellings for the same operator. +(I couldn't choose between \ABC{} and \C{}! :-) +\indexii{\ABC{}}{language} +\indexii{\C{}}{language} + +\end{description} + +Objects of different types, except different numeric types, never +compare equal; such objects are ordered consistently but arbitrarily +(so that sorting a heterogeneous array yields a consistent result). +Furthermore, some types (e.g., windows) support only a degenerate +notion of comparison where any two objects of that type are unequal. +Again, such objects are ordered arbitrarily but consistently. +\indexii{types}{numeric} +\indexii{objects}{comparing} + +(Implementation note: objects of different types except numbers are +ordered by their type names; objects of the same types that don't +support proper comparison are ordered by their address.) + +Two more operations with the same syntactic priority, \code{in} and +\code{not in}, are supported only by sequence types (below). +\opindex{in} +\opindex{not in} + +\subsection{Numeric Types} + +There are three numeric types: \dfn{plain integers}, \dfn{long integers}, and +\dfn{floating point numbers}. Plain integers (also just called \dfn{integers}) +are implemented using \code{long} in \C{}, which gives them at least 32 +bits of precision. Long integers have unlimited precision. Floating +point numbers are implemented using \code{double} in \C{}. All bets on +their precision are off unless you happen to know the machine you are +working with. +\indexii{numeric}{types} +\indexii{integer}{types} +\indexii{integer}{type} +\indexiii{long}{integer}{type} +\indexii{floating point}{type} +\indexii{\C{}}{language} + +Numbers are created by numeric literals or as the result of built-in +functions and operators. Unadorned integer literals (including hex +and octal numbers) yield plain integers. Integer literals with an \samp{L} +or \samp{l} suffix yield long integers +(\samp{L} is preferred because \code{1l} looks too much like eleven!). +Numeric literals containing a decimal point or an exponent sign yield +floating point numbers. +\indexii{numeric}{literals} +\indexii{integer}{literals} +\indexiii{long}{integer}{literals} +\indexii{floating point}{literals} +\indexii{hexadecimal}{literals} +\indexii{octal}{literals} + +Python fully supports mixed arithmetic: when a binary arithmetic +operator has operands of different numeric types, the operand with the +``smaller'' type is converted to that of the other, where plain +integer is smaller than long integer is smaller than floating point. +Comparisons between numbers of mixed type use the same rule.% +\footnote{As a consequence, the list \code{[1, 2]} is considered equal + to \code{[1.0, 2.0]}, and similar for tuples.} +The functions \code{int()}, \code{long()} and \code{float()} can be used +to coerce numbers to a specific type. +\index{arithmetic} +\bifuncindex{int} +\bifuncindex{long} +\bifuncindex{float} + +All numeric types support the following operations: + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{abs(\var{x})}{absolute value of \var{x}}{} + \lineiii{int(\var{x})}{\var{x} converted to integer}{(1)} + \lineiii{long(\var{x})}{\var{x} converted to long integer}{(1)} + \lineiii{float(\var{x})}{\var{x} converted to floating point}{} + \lineiii{-\var{x}}{\var{x} negated}{} + \lineiii{+\var{x}}{\var{x} unchanged}{} + \lineiii{\var{x} + \var{y}}{sum of \var{x} and \var{y}}{} + \lineiii{\var{x} - \var{y}}{difference of \var{x} and \var{y}}{} + \lineiii{\var{x} * \var{y}}{product of \var{x} and \var{y}}{} + \lineiii{\var{x} / \var{y}}{quotient of \var{x} and \var{y}}{(2)} + \lineiii{\var{x} \%{} \var{y}}{remainder of \code{\var{x} / \var{y}}}{} + \lineiii{divmod(\var{x}, \var{y})}{the pair \code{(\var{x} / \var{y}, \var{x} \%{} \var{y})}}{(3)} + \lineiii{pow(\var{x}, \var{y})}{\var{x} to the power \var{y}}{} +\end{tableiii} +\indexiii{operations on}{numeric}{types} + +\noindent +Notes: +\begin{description} +\item[(1)] +Conversion from floating point to (long or plain) integer may round or +% XXXJH xref here +truncate as in \C{}; see functions \code{floor} and \code{ceil} in module +\code{math} for well-defined conversions. +\indexii{numeric}{conversions} +\ttindex{math} +\indexii{\C{}}{language} + +\item[(2)] +For (plain or long) integer division, the result is an integer; it +always truncates towards zero. +% XXXJH integer division is better defined nowadays +\indexii{integer}{division} +\indexiii{long}{integer}{division} + +\item[(3)] +See the section on built-in functions for an exact definition. + +\end{description} +% XXXJH exceptions: overflow (when? what operations?) zerodivision + +\subsubsection{Bit-string Operations on Integer Types.} + +Plain and long integer types support additional operations that make +sense only for bit-strings. Negative numbers are treated as their 2's +complement value: + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{\~\var{x}}{the bits of \var{x} inverted}{} + \lineiii{\var{x} \^{} \var{y}}{bitwise \dfn{exclusive or} of \var{x} and \var{y}}{} + \lineiii{\var{x} \&{} \var{y}}{bitwise \dfn{and} of \var{x} and \var{y}}{} + \lineiii{\var{x} | \var{y}}{bitwise \dfn{or} of \var{x} and \var{y}}{} + \lineiii{\var{x} << \var{n}}{\var{x} shifted left by \var{n} bits}{} + \lineiii{\var{x} >> \var{n}}{\var{x} shifted right by \var{n} bits}{} +\end{tableiii} +% XXXJH what's `left'? `right'? maybe better use lsb or msb or something +\indexiii{operations on}{integer}{types} +\indexii{bit-string}{operations} +\indexii{shifting}{operations} +\indexii{masking}{operations} + +\subsection{Sequence Types} + +There are three sequence types: strings, lists and tuples. +Strings literals are written in single quotes: \code{'xyzzy'}. +Lists are constructed with square brackets, +separating items with commas: +\code{[a, b, c]}. +Tuples are constructed by the comma operator +(not within square brackets), with or without enclosing parentheses, +but an empty tuple must have the enclosing parentheses, e.g., +\code{a, b, c} or \code{()}. A single item tuple must have a trailing comma, +e.g., \code{(d,)}. +\indexii{sequence}{types} +\indexii{string}{type} +\indexii{tuple}{type} +\indexii{list}{type} + +Sequence types support the following operations (\var{s} and \var{t} are +sequences of the same type; \var{n}, \var{i} and \var{j} are integers): + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{len(\var{s})}{length of \var{s}}{} + \lineiii{min(\var{s})}{smallest item of \var{s}}{} + \lineiii{max(\var{s})}{largest item of \var{s}}{} + \lineiii{\var{x} in \var{s}}{\code{1} if an item of \var{s} is equal to \var{x}, else \code{0}}{} + \lineiii{\var{x} not in \var{s}}{\code{0} if an item of \var{s} is equal to \var{x}, else \code{1}}{} + \lineiii{\var{s} + \var{t}}{the concatenation of \var{s} and \var{t}}{} + \lineiii{\var{s} * \var{n}{\rm ,} \var{n} * \var{s}}{\var{n} copies of \var{s} concatenated}{} + \lineiii{\var{s}[\var{i}]}{\var{i}'th item of \var{s}, origin 0}{(1)} + \lineiii{\var{s}[\var{i}:\var{j}]}{slice of \var{s} from \var{i} to \var{j}}{(1), (2)} +\end{tableiii} +\indexiii{operations on}{sequence}{types} +\bifuncindex{len} +\bifuncindex{min} +\bifuncindex{max} +\indexii{concatenation}{operation} +\indexii{repetition}{operation} +\indexii{subscript}{operation} +\indexii{slice}{operation} +\opindex{in} +\opindex{not in} + +\noindent +Notes: + +% XXXJH all TeX-math expressions replaced by python-syntax expressions +\begin{description} + +\item[(1)] If \var{i} or \var{j} is negative, the index is relative to + the end of the string, i.e., \code{len(\var{s}) + \var{i}} or + \code{len(\var{s}) + \var{j}} is substituted. But note that \code{-0} is + still \code{0}. + +\item[(2)] The slice of \var{s} from \var{i} to \var{j} is defined as + the sequence of items with index \var{k} such that \code{\var{i} <= + \var{k} < \var{j}}. If \var{i} or \var{j} is greater than + \code{len(\var{s})}, use \code{len(\var{s})}. If \var{i} is omitted, + use \code{0}. If \var{j} is omitted, use \code{len(\var{s})}. If + \var{i} is greater than or equal to \var{j}, the slice is empty. + +\end{description} + +\subsubsection{More String Operations.} + +String objects have one unique built-in operation: the \code{\%} +operator (modulo) with a string left argument interprets this string +as a C sprintf format string to be applied to the right argument, and +returns the string resulting from this formatting operation. + +Unless the format string requires exactly one argument, the right +argument should be a tuple of the correct size. The following format +characters are understood: \%, c, s, i, d, u, o, x, X, e, E, f, g, G. +Width and precision may be a * to specify that an integer argument +specifies the actual width or precision. The flag characters -, +, +blank, \# and 0 are understood. The size specifiers h, l or L may be +present but are ignored. The ANSI features \code{\%p} and \code{\%n} +are not supported. Since Python strings have an explicit length, +\code{\%s} conversions don't assume that \code{'\\0'} is the end of +the string. + +For safety reasons, huge floating point precisions are truncated; +\code{\%f} conversions for huge numbers are replaced by +\code{\%g} conversions. All other errors raise exceptions. + +Additional string operations are defined in standard module +\code{string} and in built-in module \code{regex}. +\index{string} +\index{regex} + +\subsubsection{Mutable Sequence Types.} + +List objects support additional operations that allow in-place +modification of the object. +These operations would be supported by other mutable sequence types +(when added to the language) as well. +Strings and tuples are immutable sequence types and such objects cannot +be modified once created. +The following operations are defined on mutable sequence types (where +\var{x} is an arbitrary object): +\indexiii{mutable}{sequence}{types} +\indexii{list}{type} + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{\var{s}[\var{i}] = \var{x}} + {item \var{i} of \var{s} is replaced by \var{x}}{} + \lineiii{\var{s}[\var{i}:\var{j}] = \var{t}} + {slice of \var{s} from \var{i} to \var{j} is replaced by \var{t}}{} + \lineiii{del \var{s}[\var{i}:\var{j}]} + {same as \code{\var{s}[\var{i}:\var{j}] = []}}{} + \lineiii{\var{s}.append(\var{x})} + {same as \code{\var{s}[len(\var{x}):len(\var{x})] = [\var{x}]}}{} + \lineiii{\var{s}.count(\var{x})} + {return number of \var{i}'s for which \code{\var{s}[\var{i}] == \var{x}}}{} + \lineiii{\var{s}.index(\var{x})} + {return smallest \var{i} such that \code{\var{s}[\var{i}] == \var{x}}}{(1)} + \lineiii{\var{s}.insert(\var{i}, \var{x})} + {same as \code{\var{s}[\var{i}:\var{i}] = [\var{x}]}}{} + \lineiii{\var{s}.remove(\var{x})} + {same as \code{del \var{s}[\var{s}.index(\var{x})]}}{(1)} + \lineiii{\var{s}.reverse()} + {reverses the items of \var{s} in place}{} + \lineiii{\var{s}.sort()} + {permutes the items of \var{s} to satisfy + \code{\var{s}[\var{i}] <= \var{s}[\var{j}]}, + for \code{\var{i} < \var{j}}}{(2)} +\end{tableiii} +\indexiv{operations on}{mutable}{sequence}{types} +\indexiii{operations on}{sequence}{types} +\indexiii{operations on}{list}{type} +\indexii{subscript}{assignment} +\indexii{slice}{assignment} +\stindex{del} +\renewcommand{\indexsubitem}{(list method)} +\ttindex{append} +\ttindex{count} +\ttindex{index} +\ttindex{insert} +\ttindex{remove} +\ttindex{reverse} +\ttindex{sort} + +\noindent +Notes: +\begin{description} +\item[(1)] Raises an exception when \var{x} is not found in \var{s}. + +\item[(2)] The \code{sort()} method takes an optional argument + specifying a comparison function of two arguments (list items) which + should return \code{-1}, \code{0} or \code{1} depending on whether the + first argument is considered smaller than, equal to, or larger than the + second argument. Note that this slows the sorting process down + considerably; e.g. to sort an array in reverse order it is much faster + to use calls to \code{sort()} and \code{reverse()} than to use + \code{sort()} with a comparison function that reverses the ordering of + the elements. +\end{description} + +\subsection{Mapping Types} + +A \dfn{mapping} object maps values of one type (the key type) to +arbitrary objects. Mappings are mutable objects. There is currently +only one mapping type, the \dfn{dictionary}. A dictionary's keys are +almost arbitrary values. The only types of values not acceptable as +keys are values containing lists or dictionaries or other mutable +types that are compared by value rather than by object identity. +Numeric types used for keys obey the normal rules for numeric +comparison: if two numbers compare equal (e.g. 1 and 1.0) then they +can be used interchangeably to index the same dictionary entry. + +\indexii{mapping}{types} +\indexii{dictionary}{type} + +Dictionaries are created by placing a comma-separated list of +\code{\var{key}: \var{value}} pairs within braces, for example: +\code{\{'jack': 4098, 'sjoerd: 4127\}} or +\code{\{4098: 'jack', 4127: 'sjoerd\}}. + +The following operations are defined on mappings (where \var{a} is a +mapping, \var{k} is a key and \var{x} is an arbitrary object): + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{len(\var{a})}{the number of items in \var{a}}{} + \lineiii{\var{a}[\var{k}]}{the item of \var{a} with key \var{k}}{(1)} + \lineiii{\var{a}[\var{k}] = \var{x}}{set \code{\var{a}[\var{k}]} to \var{x}}{} + \lineiii{del \var{a}[\var{k}]}{remove \code{\var{a}[\var{k}]} from \var{a}}{(1)} + \lineiii{\var{a}.items()}{a copy of \var{a}'s list of (key, item) pairs}{(2)} + \lineiii{\var{a}.keys()}{a copy of \var{a}'s list of keys}{(2)} + \lineiii{\var{a}.values()}{a copy of \var{a}'s list of values}{(2)} + \lineiii{\var{a}.has_key(\var{k})}{\code{1} if \var{a} has a key \var{k}, else \code{0}}{} +\end{tableiii} +\indexiii{operations on}{mapping}{types} +\indexiii{operations on}{dictionary}{type} +\stindex{del} +\bifuncindex{len} +\renewcommand{\indexsubitem}{(dictionary method)} +\ttindex{keys} +\ttindex{has_key} + +% XXXJH some lines above, you talk about `true', elsewhere you +% explicitely states \code{0} or \code{1}. +\noindent +Notes: +\begin{description} +\item[(1)] Raises an exception if \var{k} is not in the map. + +\item[(2)] Keys and values are listed in random order, but at any +moment the ordering of the \code{keys()}, \code{values()} and +\code{items()} lists is the consistent with each other. +\end{description} + +\subsection{Other Built-in Types} + +The interpreter supports several other kinds of objects. +Most of these support only one or two operations. + +\subsubsection{Modules.} + +The only special operation on a module is attribute access: +\code{\var{m}.\var{name}}, where \var{m} is a module and \var{name} accesses +a name defined in \var{m}'s symbol table. Module attributes can be +assigned to. (Note that the \code{import} statement is not, strictly +spoken, an operation on a module object; \code{import \var{foo}} does not +require a module object named \var{foo} to exist, rather it requires +an (external) \emph{definition} for a module named \var{foo} +somewhere.) + +A special member of every module is \code{__dict__}. +This is the dictionary containing the module's symbol table. +Modifying this dictionary will actually change the module's symbol +table, but direct assignment to the \code{__dict__} attribute is not +possible (i.e., you can write \code{\var{m}.__dict__['a'] = 1}, which +defines \code{\var{m}.a} to be \code{1}, but you can't write \code{\var{m}.__dict__ = \{\}}. + +Modules are written like this: \code{<module 'sys'>}. + +\subsubsection{Classes and Class Instances.} +% XXXJH cross ref here +(See the Python Reference Manual for these.) + +\subsubsection{Functions.} + +Function objects are created by function definitions. The only +operation on a function object is to call it: +\code{\var{func}(\var{argument-list})}. + +There are really two flavors of function objects: built-in functions +and user-defined functions. Both support the same operation (to call +the function), but the implementation is different, hence the +different object types. + +The implementation adds two special read-only attributes: +\code{\var{f}.func_code} is a function's \dfn{code object} (see below) and +\code{\var{f}.func_globals} is the dictionary used as the function's +global name space (this is the same as \code{\var{m}.__dict__} where +\var{m} is the module in which the function \var{f} was defined). + +\subsubsection{Methods.} + +Methods are functions that are called using the attribute notation. +There are two flavors: built-in methods (such as \code{append()} on +lists) and class instance methods. Built-in methods are described +with the types that support them. + +The implementation adds two special read-only attributes to class +instance methods: \code{\var{m}.im_self} is the object whose method this +is, and \code{\var{m}.im_func} is the function implementing the method. +Calling \code{\var{m}(\var{arg-1}, \var{arg-2}, {\rm \ldots}, +\var{arg-n})} is completely equivalent to calling +\code{\var{m}.im_func(\var{m}.im_self, \var{arg-1}, \var{arg-2}, {\rm +\ldots}, \var{arg-n})}. + +(See the Python Reference Manual for more info.) + +\subsubsection{Type Objects.} + +Type objects represent the various object types. An object's type is +% XXXJH xref here +accessed by the built-in function \code{type()}. There are no special +operations on types. + +Types are written like this: \code{<type 'int'>}. + +\subsubsection{The Null Object.} + +This object is returned by functions that don't explicitly return a +value. It supports no special operations. There is exactly one null +object, named \code{None} (a built-in name). + +It is written as \code{None}. + +\subsubsection{File Objects.} + +File objects are implemented using \C{}'s \code{stdio} package and can be +% XXXJH xref here +created with the built-in function \code{open()} described under +Built-in Functions below. + +When a file operation fails for an I/O-related reason, the exception +\code{IOError} is raised. This includes situations where the +operation is not defined for some reason, like \code{seek()} on a tty +device or writing a file opened for reading. + +Files have the following methods: + + +\renewcommand{\indexsubitem}{(file method)} + +\begin{funcdesc}{close}{} + Close the file. A closed file cannot be read or written anymore. +\end{funcdesc} + +\begin{funcdesc}{flush}{} + Flush the internal buffer, like \code{stdio}'s \code{fflush()}. +\end{funcdesc} + +\begin{funcdesc}{isatty}{} + Return \code{1} if the file is connected to a tty(-like) device, else + \code{0}. +\end{funcdesc} + +\begin{funcdesc}{read}{size} + Read at most \var{size} bytes from the file (less if the read hits + \EOF{} or no more data is immediately available on a pipe, tty or + similar device). If the \var{size} argument is omitted, read all + data until \EOF{} is reached. The bytes are returned as a string + object. An empty string is returned when \EOF{} is encountered + immediately. (For certain files, like ttys, it makes sense to + continue reading after an \EOF{} is hit.) +\end{funcdesc} + +\begin{funcdesc}{readline}{} + Read one entire line from the file. A trailing newline character is + kept in the string (but may be absent when a file ends with an + incomplete line). An empty string is returned when \EOF{} is hit + immediately. Note: unlike \code{stdio}'s \code{fgets()}, the returned + string contains null characters (\code{'\e 0'}) if they occurred in the + input. +\end{funcdesc} + +\begin{funcdesc}{readlines}{} + Read until \EOF{} using \code{readline()} and return a list containing + the lines thus read. +\end{funcdesc} + +\begin{funcdesc}{seek}{offset\, whence} + Set the file's current position, like \code{stdio}'s \code{fseek()}. + The \var{whence} argument is optional and defaults to \code{0} + (absolute file positioning); other values are \code{1} (seek + relative to the current position) and \code{2} (seek relative to the + file's end). There is no return value. +\end{funcdesc} + +\begin{funcdesc}{tell}{} + Return the file's current position, like \code{stdio}'s \code{ftell()}. +\end{funcdesc} + +\begin{funcdesc}{write}{str} + Write a string to the file. There is no return value. +\end{funcdesc} + +\subsubsection{Internal Objects.} + +(See the Python Reference Manual for these.) + +\subsection{Special Attributes} + +The implementation adds a few special read-only attributes to several +object types, where they are relevant: + +\begin{itemize} + +\item +\code{\var{x}.__dict__} is a dictionary of some sort used to store an +object's (writable) attributes; + +\item +\code{\var{x}.__methods__} lists the methods of many built-in object types, +e.g., \code{[].__methods__} is +% XXXJH results in?, yields?, written down as an example +\code{['append', 'count', 'index', 'insert', 'remove', 'reverse', 'sort']}; + +\item +\code{\var{x}.__members__} lists data attributes; + +\item +\code{\var{x}.__class__} is the class to which a class instance belongs; + +\item +\code{\var{x}.__bases__} is the tuple of base classes of a class object. + +\end{itemize} diff --git a/Doc/lib/libunix.tex b/Doc/lib/libunix.tex new file mode 100644 index 0000000..ca4ec97 --- /dev/null +++ b/Doc/lib/libunix.tex @@ -0,0 +1,5 @@ +\chapter{UNIX ONLY} + +The modules described in this chapter provide interfaces to features +that are unique to the UNIX operating system, or in some cases to +some or many variants of it. diff --git a/Doc/lib/libwhrandom.tex b/Doc/lib/libwhrandom.tex new file mode 100644 index 0000000..8ad2339 --- /dev/null +++ b/Doc/lib/libwhrandom.tex @@ -0,0 +1,20 @@ +\section{Standard Module \sectcode{whrandom}} + +\stmodindex{whrandom} +This module implements a Wichmann-Hill pseudo-random number generator. +It defines the following functions: + +\renewcommand{\indexsubitem}{(in module whrandom)} +\begin{funcdesc}{random}{} +Returns the next random floating point number in the range [0.0 ... 1.0). +\end{funcdesc} + +\begin{funcdesc}{seed}{x\, y\, z} +Initializes the random number generator from the integers +\var{x}, +\var{y} +and +\var{z}. +When the module is first imported, the random number is initialized +using values derived from the current time. +\end{funcdesc} diff --git a/Doc/libal.tex b/Doc/libal.tex new file mode 100644 index 0000000..708c54e --- /dev/null +++ b/Doc/libal.tex @@ -0,0 +1,177 @@ +\section{Built-in Module \sectcode{al}} +\bimodindex{al} + +This module provides access to the audio facilities of the Indigo and +4D/35 workstations, described in section 3A of the IRIX 4.0 man pages +(and also available as an option in IRIX 3.3). You'll need to read +those man pages to understand what these functions do! +Some of the functions are not available in releases below 4.0.5. +Again, see the manual to check whether a specific function is +available on your platform. + +Symbolic constants from the C header file \file{<audio.h>} are defined +in the standard module \code{AL}, see below. + +\strong{Warning:} the current version of the audio library may dump core +when bad argument values are passed rather than returning an error +status. Unfortunately, since the precise circumstances under which +this may happen are undocumented and hard to check, the Python +interface can provide no protection against this kind of problems. +(One example is specifying an excessive queue size --- there is no +documented upper limit.) + +Module \code{al} defines the following functions: + +\renewcommand{\indexsubitem}{(in module al)} +\begin{funcdesc}{openport}{name\, direction\, config} +Equivalent to the C function ALopenport(). The name and direction +arguments are strings. The optional config argument is an opaque +configuration object as returned by \code{al.newconfig()}. The return +value is an opaque port object; methods of port objects are described +below. +\end{funcdesc} + +\begin{funcdesc}{newconfig}{} +Equivalent to the C function ALnewconfig(). The return value is a new +opaque configuration object; methods of configuration objects are +described below. +\end{funcdesc} + +\begin{funcdesc}{queryparams}{device} +Equivalent to the C function ALqueryparams(). The device argument is +an integer. The return value is a list of integers containing the +data returned by ALqueryparams(). +\end{funcdesc} + +\begin{funcdesc}{getparams}{device\, list} +Equivalent to the C function ALgetparams(). The device argument is an +integer. The list argument is a list such as returned by +\code{queryparams}; it is modified in place (!). +\end{funcdesc} + +\begin{funcdesc}{setparams}{device\, list} +Equivalent to the C function ALsetparams(). The device argument is an +integer.The list argument is a list such as returned by +\code{al.queryparams}. +\end{funcdesc} + +Configuration objects (returned by \code{al.newconfig()} have the +following methods: + +\renewcommand{\indexsubitem}{(audio configuration object method)} +\begin{funcdesc}{getqueuesize}{} +Return the queue size; equivalent to the C function ALgetqueuesize(). +\end{funcdesc} + +\begin{funcdesc}{setqueuesize}{size} +Set the queue size; equivalent to the C function ALsetqueuesize(). +\end{funcdesc} + +\begin{funcdesc}{getwidth}{} +Get the sample width; equivalent to the C function ALgetwidth(). +\end{funcdesc} + +\begin{funcdesc}{getwidth}{width} +Set the sample width; equivalent to the C function ALsetwidth(). +\end{funcdesc} + +\begin{funcdesc}{getchannels}{} +Get the channel count; equivalent to the C function ALgetchannels(). +\end{funcdesc} + +\begin{funcdesc}{setchannels}{nchannels} +Set the channel count; equivalent to the C function ALsetchannels(). +\end{funcdesc} + +\begin{funcdesc}{getsampfmt}{} +Get the sample format; equivalent to the C function ALgetsampfmt(). +\end{funcdesc} + +\begin{funcdesc}{setsampfmt}{sampfmt} +Set the sample format; equivalent to the C function ALsetsampfmt(). +\end{funcdesc} + +\begin{funcdesc}{getfloatmax}{} +Get the maximum value for floating sample formats; +equivalent to the C function ALgetfloatmax(). +\end{funcdesc} + +\begin{funcdesc}{setfloatmax}{floatmax} +Set the maximum value for floating sample formats; +equivalent to the C function ALsetfloatmax(). +\end{funcdesc} + +Port objects (returned by \code{al.openport()} have the following +methods: + +\renewcommand{\indexsubitem}{(audio port object method)} +\begin{funcdesc}{closeport}{} +Close the port; equivalent to the C function ALcloseport(). +\end{funcdesc} + +\begin{funcdesc}{getfd}{} +Return the file descriptor as an int; equivalent to the C function +ALgetfd(). +\end{funcdesc} + +\begin{funcdesc}{getfilled}{} +Return the number of filled samples; equivalent to the C function +ALgetfilled(). +\end{funcdesc} + +\begin{funcdesc}{getfillable}{} +Return the number of fillable samples; equivalent to the C function +ALgetfillable(). +\end{funcdesc} + +\begin{funcdesc}{readsamps}{nsamples} +Read a number of samples from the queue, blocking if necessary; +equivalent to the C function ALreadsamples. The data is returned as a +string containing the raw data (e.g. 2 bytes per sample in big-endian +byte order (high byte, low byte) if you have set the sample width to 2 +bytes. +\end{funcdesc} + +\begin{funcdesc}{writesamps}{samples} +Write samples into the queue, blocking if necessary; equivalent to the +C function ALwritesamples. The samples are encoded as described for +the \code{readsamps} return value. +\end{funcdesc} + +\begin{funcdesc}{getfillpoint}{} +Return the `fill point'; equivalent to the C function ALgetfillpoint(). +\end{funcdesc} + +\begin{funcdesc}{setfillpoint}{fillpoint} +Set the `fill point'; equivalent to the C function ALsetfillpoint(). +\end{funcdesc} + +\begin{funcdesc}{getconfig}{} +Return a configuration object containing the current configuration of +the port; equivalent to the C function ALgetconfig(). +\end{funcdesc} + +\begin{funcdesc}{setconfig}{config} +Set the configuration from the argument, a configuration object; +equivalent to the C function ALsetconfig(). +\end{funcdesc} + +\begin{funcdesc}{getstatus}{list} +Get status information on last error +equivalent to C function ALgetstatus(). +\end{funcdesc} + +\section{Standard Module \sectcode{AL}} +\nodename{AL (uppercase)} +\stmodindex{AL} + +This module defines symbolic constants needed to use the built-in +module \code{al} (see above); they are equivalent to those defined in +the C header file \file{<audio.h>} except that the name prefix +\samp{AL_} is omitted. Read the module source for a complete list of +the defined names. Suggested use: + +\bcode\begin{verbatim} +import al +from AL import * +\end{verbatim}\ecode diff --git a/Doc/libamoeba.tex b/Doc/libamoeba.tex new file mode 100644 index 0000000..db4fefd --- /dev/null +++ b/Doc/libamoeba.tex @@ -0,0 +1,128 @@ +\chapter{AMOEBA ONLY} + +\section{Built-in Module \sectcode{amoeba}} + +\bimodindex{amoeba} +This module provides some object types and operations useful for +Amoeba applications. It is only available on systems that support +Amoeba operations. RPC errors and other Amoeba errors are reported as +the exception \code{amoeba.error = 'amoeba.error'}. + +The module \code{amoeba} defines the following items: + +\renewcommand{\indexsubitem}{(in module amoeba)} +\begin{funcdesc}{name_append}{path\, cap} +Stores a capability in the Amoeba directory tree. +Arguments are the pathname (a string) and the capability (a capability +object as returned by +\code{name_lookup()}). +\end{funcdesc} + +\begin{funcdesc}{name_delete}{path} +Deletes a capability from the Amoeba directory tree. +Argument is the pathname. +\end{funcdesc} + +\begin{funcdesc}{name_lookup}{path} +Looks up a capability. +Argument is the pathname. +Returns a +\dfn{capability} +object, to which various interesting operations apply, described below. +\end{funcdesc} + +\begin{funcdesc}{name_replace}{path\, cap} +Replaces a capability in the Amoeba directory tree. +Arguments are the pathname and the new capability. +(This differs from +\code{name_append()} +in the behavior when the pathname already exists: +\code{name_append()} +finds this an error while +\code{name_replace()} +allows it, as its name suggests.) +\end{funcdesc} + +\begin{datadesc}{capv} +A table representing the capability environment at the time the +interpreter was started. +(Alas, modifying this table does not affect the capability environment +of the interpreter.) +For example, +\code{amoeba.capv['ROOT']} +is the capability of your root directory, similar to +\code{getcap("ROOT")} +in C. +\end{datadesc} + +\begin{excdesc}{error} +The exception raised when an Amoeba function returns an error. +The value accompanying this exception is a pair containing the numeric +error code and the corresponding string, as returned by the C function +\code{err_why()}. +\end{excdesc} + +\begin{funcdesc}{timeout}{msecs} +Sets the transaction timeout, in milliseconds. +Returns the previous timeout. +Initially, the timeout is set to 2 seconds by the Python interpreter. +\end{funcdesc} + +\subsection{Capability Operations} + +Capabilities are written in a convenient ASCII format, also used by the +Amoeba utilities +{\it c2a}(U) +and +{\it a2c}(U). +For example: + +\bcode\begin{verbatim} +>>> amoeba.name_lookup('/profile/cap') +aa:1c:95:52:6a:fa/14(ff)/8e:ba:5b:8:11:1a +>>> +\end{verbatim}\ecode + +The following methods are defined for capability objects. + +\renewcommand{\indexsubitem}{(capability method)} +\begin{funcdesc}{dir_list}{} +Returns a list of the names of the entries in an Amoeba directory. +\end{funcdesc} + +\begin{funcdesc}{b_read}{offset\, maxsize} +Reads (at most) +\var{maxsize} +bytes from a bullet file at offset +\var{offset.} +The data is returned as a string. +EOF is reported as an empty string. +\end{funcdesc} + +\begin{funcdesc}{b_size}{} +Returns the size of a bullet file. +\end{funcdesc} + +\begin{funcdesc}{dir_append}{} +\funcline{dir_delete}{}\ +\funcline{dir_lookup}{}\ +\funcline{dir_replace}{} +Like the corresponding +\samp{name_}* +functions, but with a path relative to the capability. +(For paths beginning with a slash the capability is ignored, since this +is the defined semantics for Amoeba.) +\end{funcdesc} + +\begin{funcdesc}{std_info}{} +Returns the standard info string of the object. +\end{funcdesc} + +\begin{funcdesc}{tod_gettime}{} +Returns the time (in seconds since the Epoch, in UCT, as for POSIX) from +a time server. +\end{funcdesc} + +\begin{funcdesc}{tod_settime}{t} +Sets the time kept by a time server. +\end{funcdesc} diff --git a/Doc/libarray.tex b/Doc/libarray.tex new file mode 100644 index 0000000..21122f0 --- /dev/null +++ b/Doc/libarray.tex @@ -0,0 +1,109 @@ +\section{Built-in module \sectcode{array}} +\bimodindex{array} +\index{arrays} + +This module defines a new object type which can efficiently represent +an array of basic values: characters, integers, floating point +numbers. Arrays are sequence types and behave very much like lists, +except that the type of objects stored in them is constrained. The +type is specified at object creation time by using a \dfn{type code}, +which is a single character. The following type codes are defined: + +\begin{tableiii}{|c|c|c|}{code}{Typecode}{Type}{Minimal size in bytes} +\lineiii{'c'}{character}{1} +\lineiii{'b'}{signed integer}{1} +\lineiii{'h'}{signed integer}{2} +\lineiii{'i'}{signed integer}{2} +\lineiii{'l'}{signed integer}{4} +\lineiii{'f'}{floating point}{4} +\lineiii{'d'}{floating point}{8} +\end{tableiii} + +The actual representation of values is determined by the machine +architecture (strictly spoken, by the C implementation). The actual +size can be accessed through the \var{typecode} attribute. + +The module defines the following function: + +\renewcommand{\indexsubitem}{(in module array)} + +\begin{funcdesc}{array}{typecode\, initializer} +Return a new array whose items are restricted by \var{typecode}, and +initialized from the optional \var{initializer} value, which must be a +list or a string. The list or string is passed to the new array's +\code{fromlist()} or \code{fromstring()} method (see below) to add +initial items to the array. +\end{funcdesc} + +Array objects support the following data items and methods: + +\begin{datadesc}{typecode} +The typecode character used to create the array. +\end{datadesc} + +\begin{datadesc}{itemsize} +The length in bytes of one array item in the internal representation. +\end{datadesc} + +\begin{funcdesc}{append}{x} +Append a new item with value \var{x} to the end of the array. +\end{funcdesc} + +\begin{funcdesc}{byteswap}{x} +``Byteswap'' all items of the array. This is only supported for +integer values. It is useful when reading data ffrom a file written +on a machine with a different byte order. +\end{funcdesc} + +\begin{funcdesc}{fromfile}{f\, n} +Read \var{n} items (as machine values) from the file object \var{f} +and append them to the end of the array. If less than \var{n} items +are available, \code{EOFError} is raised, but the items that were +available are still inserted into the array. +\end{funcdesc} + +\begin{funcdesc}{fromlist}{list} +Appends items from the list. This is equivalent to +\code{for x in \var{list}: a.append(x)} +except that if there is a type error, the array is unchanged. +\end{funcdesc} + +\begin{funcdesc}{fromstring}{s} +Appends items from the string, interpreting the string as an +array of machine values (i.e. as if it had been read from a +file using the \code{fromfile()} method). +\end{funcdesc} + +\begin{funcdesc}{insert}{i\, x} +Insert a new item with value \var{x} in the array before position +\var{i}. +\end{funcdesc} + +\begin{funcdesc}{tofile}{f} +Write all items (as machine values) to the file object \var{f}. +\end{funcdesc} + +\begin{funcdesc}{tolist}{} +Convert the array to an ordinary list with the same items. +\end{funcdesc} + +\begin{funcdesc}{tostring}{} +Convert the array to an array of machine values and return the +string representation (the same sequence of bytes that would +be written to a file by the \code{tofile()} method.) +\end{funcdesc} + +When an array object is printed or converted to a string, it is +represented as \code{array(\var{typecode}, \var{initializer})}. The +\var{initializer} is omitted if the array is empty, otherwise it is a +string if the \var{typecode} is \code{'c'}, otherwise it is a list of +numbers. The string is guaranteed to be able to be converted back to +an array with the same type and value using reverse quotes +(\code{``}). Examples: + +\bcode\begin{verbatim} +array('l') +array('c', 'hello world') +array('l', [1, 2, 3, 4, 5]) +array('d', [1.0, 2.0, 3.14]) +\end{verbatim}\ecode diff --git a/Doc/libaudio.tex b/Doc/libaudio.tex new file mode 100644 index 0000000..47c0b64 --- /dev/null +++ b/Doc/libaudio.tex @@ -0,0 +1,120 @@ +\section{Built-in Module \sectcode{audio}} +\bimodindex{audio} + +\strong{Note:} This module is obsolete, since the hardware to which it +interfaces is obsolete. For audio on the Indigo or 4D/35, see +built-in module \code{al} above. + +This module provides rudimentary access to the audio I/O device +\file{/dev/audio} on the Silicon Graphics Personal IRIS 4D/25; +see {\it audio}(7). It supports the following operations: + +\renewcommand{\indexsubitem}{(in module audio)} +\begin{funcdesc}{setoutgain}{n} +Sets the output gain. +\iftexi +\code{0 <= \var{n} < 256}. +\else +$0 \leq \var{n} < 256$. +%%JHXXX Sets the output gain (0-255). +\fi +\end{funcdesc} + +\begin{funcdesc}{getoutgain}{} +Returns the output gain. +\end{funcdesc} + +\begin{funcdesc}{setrate}{n} +Sets the sampling rate: \code{1} = 32K/sec, \code{2} = 16K/sec, +\code{3} = 8K/sec. +\end{funcdesc} + +\begin{funcdesc}{setduration}{n} +Sets the `sound duration' in units of 1/100 seconds. +\end{funcdesc} + +\begin{funcdesc}{read}{n} +Reads a chunk of +\var{n} +sampled bytes from the audio input (line in or microphone). +The chunk is returned as a string of length n. +Each byte encodes one sample as a signed 8-bit quantity using linear +encoding. +This string can be converted to numbers using \code{chr2num()} described +below. +\end{funcdesc} + +\begin{funcdesc}{write}{buf} +Writes a chunk of samples to the audio output (speaker). +\end{funcdesc} + +These operations support asynchronous audio I/O: + +\renewcommand{\indexsubitem}{(in module audio)} +\begin{funcdesc}{start_recording}{n} +Starts a second thread (a process with shared memory) that begins reading +\var{n} +bytes from the audio device. +The main thread immediately continues. +\end{funcdesc} + +\begin{funcdesc}{wait_recording}{} +Waits for the second thread to finish and returns the data read. +\end{funcdesc} + +\begin{funcdesc}{stop_recording}{} +Makes the second thread stop reading as soon as possible. +Returns the data read so far. +\end{funcdesc} + +\begin{funcdesc}{poll_recording}{} +Returns true if the second thread has finished reading (so +\code{wait_recording()} would return the data without delay). +\end{funcdesc} + +\begin{funcdesc}{start_playing}{} +\funcline{wait_playing}{} +\funcline{stop_playing}{} +\funcline{poll_playing}{} +\begin{sloppypar} +Similar but for output. +\code{stop_playing()} +returns a lower bound for the number of bytes actually played (not very +accurate). +\end{sloppypar} +\end{funcdesc} + +The following operations do not affect the audio device but are +implemented in C for efficiency: + +\renewcommand{\indexsubitem}{(in module audio)} +\begin{funcdesc}{amplify}{buf\, f1\, f2} +Amplifies a chunk of samples by a variable factor changing from +\code{\var{f1}/256} to \code{\var{f2}/256.} +Negative factors are allowed. +Resulting values that are to large to fit in a byte are clipped. +\end{funcdesc} + +\begin{funcdesc}{reverse}{buf} +Returns a chunk of samples backwards. +\end{funcdesc} + +\begin{funcdesc}{add}{buf1\, buf2} +Bytewise adds two chunks of samples. +Bytes that exceed the range are clipped. +If one buffer is shorter, it is assumed to be padded with zeros. +\end{funcdesc} + +\begin{funcdesc}{chr2num}{buf} +Converts a string of sampled bytes as returned by \code{read()} into +a list containing the numeric values of the samples. +\end{funcdesc} + +\begin{funcdesc}{num2chr}{list} +\begin{sloppypar} +Converts a list as returned by +\code{chr2num()} +back to a buffer acceptable by +\code{write()}. +\end{sloppypar} +\end{funcdesc} diff --git a/Doc/libaudioop.tex b/Doc/libaudioop.tex new file mode 100644 index 0000000..734065a --- /dev/null +++ b/Doc/libaudioop.tex @@ -0,0 +1,241 @@ +\section{Built-in module \sectcode{audioop}} +\bimodindex{audioop} + +The audioop module contains some useful operations on sound fragments. +It operates on sound fragments consisting of signed integer samples of +8, 16 or 32 bits wide, stored in Python strings. This is the same +format as used by the \code{al} and \code{sunaudiodev} modules. All +scalar items are integers, unless specified otherwise. + +A few of the more complicated operations only take 16-bit samples, +otherwise the sample size (in bytes) is always a parameter of the operation. + +The module defines the following variables and functions: + +\renewcommand{\indexsubitem}{(in module audioop)} +\begin{excdesc}{error} +This exception is raised on all errors, such as unknown number of bytes +per sample, etc. +\end{excdesc} + +\begin{funcdesc}{add}{fragment1\, fragment2\, width} +This function returns a fragment that is the addition of the two samples +passed as parameters. \var{width} is the sample width in bytes, either +\code{1}, \code{2} or \code{4}. Both fragments should have the same length. +\end{funcdesc} + +\begin{funcdesc}{adpcm2lin}{adpcmfragment\, width\, state} +This routine decodes an Intel/DVI ADPCM coded fragment to a linear +fragment. See the description of \code{lin2adpcm} for details on ADPCM +coding. The routine returns a tuple +\code{(\var{sample}, \var{newstate})} +where the sample has the width specified in \var{width}. +\end{funcdesc} + +\begin{funcdesc}{adpcm32lin}{adpcmfragment\, width\, state} +This routine decodes an alternative 3-bit ADPCM code. See +\code{lin2adpcm3} for details. +\end{funcdesc} + +\begin{funcdesc}{avg}{fragment\, width} +This function returns the average over all samples in the fragment. +\end{funcdesc} + +\begin{funcdesc}{avgpp}{fragment\, width} +This function returns the average peak-peak value over all samples in +the fragment. No filtering is done, so the useability of this routine +is questionable. +\end{funcdesc} + +\begin{funcdesc}{bias}{fragment\, width\, bias} +This function returns a fragment that is the original fragment with a +bias added to each sample. +\end{funcdesc} + +\begin{funcdesc}{cross}{fragment\, width} +This function returns the number of zero crossings in the fragment +passed as an argument. +\end{funcdesc} + +\begin{funcdesc}{findfactor}{fragment\, reference} +This routine (which only accepts 2-byte sample fragments) calculates a +factor \var{F} such that \code{rms(add(fragment, mul(reference, -F)))} +is minimal, i.e. it calculates the factor with which you should +multiply \var{reference} to make it match as good as possible to +\var{fragment}. The fragments should be the same size. + +The time taken by this routine is proportional to \code{len(fragment)}. +\end{funcdesc} + +\begin{funcdesc}{findfit}{fragment\, reference} +This routine (which only accepts 2-byte sample fragments) tries to +match \var{reference} as good as possible to a portion of +\var{fragment} (which should be the longer fragment). It +(conceptually) does this by taking slices out of \var{fragment}, using +\code{findfactor} to compute the best match, and minimizing the +result. +It returns a tuple \code{(\var{offset}, \var{factor})} with offset the +(integer) offset into \var{fragment} where the optimal match started +and \var{factor} the floating-point factor as per findfactor. +\end{funcdesc} + +\begin{funcdesc}{findmax}{fragment\, length} +This routine (which only accepts 2-byte sample fragments) searches +\var{fragment} for a slice of length \var{length} samples (not bytes!) +with maximum energy, i.e. it returns \var{i} for which +\code{rms(fragment[i*2:(i+length)*2])} is maximal. + +The routine takes time proportional to \code{len(fragment)}. +\end{funcdesc} + +\begin{funcdesc}{getsample}{fragment\, width\, index} +This function returns the value of sample \var{index} from the +fragment. +\end{funcdesc} + +\begin{funcdesc}{lin2lin}{fragment\, width\, newwidth} +This function converts samples between 1-, 2- and 4-byte formats. +\end{funcdesc} + +\begin{funcdesc}{lin2adpcm}{fragment\, width\, state} +This function converts samples to 4 bit Intel/DVI ADPCM encoding. +ADPCM coding is an adaptive coding scheme, whereby each 4 bit number +is the difference between one sample and the next, divided by a +(varying) step. The Intel/DVI ADPCM algorythm has been selected for +use by the IMA, so may well become a standard. + +\code{State} is a tuple containing the state of the coder. The coder +returns a tuple \code{(\var{adpcmfrag}, \var{newstate})}, and the +\var{newstate} should be passed to the next call of lin2adpcm. In the +initial call \code{None} can be passed as the state. \var{adpcmfrag} is +the ADPCM coded fragment packed 2 4-bit values per byte. +\end{funcdesc} + +\begin{funcdesc}{lin2adpcm3}{fragment\, width\, state} +This is an alternative ADPCM coder that uses only 3 bits per sample. +It is not compatible with the Intel/DVI ADPCM coder and its output is +not packed (due to laziness on the side of the author). Its use is +discouraged. +\end{funcdesc} + +\begin{funcdesc}{lin2ulaw}{fragment\, width} +This function converts samples in the audio fragment to U-LAW encoding +and returns this as a python string. U-LAW is an audio encoding format +whereby you get a dynamic range of about 14 bits using only 8 bit +samples. It is used by the Sun audio hardware, among others. +\end{funcdesc} + +\begin{funcdesc}{minmax}{fragment\, width} +This function returns a tuple consisting of the minimum and maximum +values of all samples in the sound fragment. +\end{funcdesc} + +\begin{funcdesc}{max}{fragment\, width} +This function returns the maximum of the {\em absolute value} of all +samples in a fragment. +\end{funcdesc} + +\begin{funcdesc}{maxpp}{fragment\, width} +This function returns the maximum peak-peak value in the sound fragment. +\end{funcdesc} + +\begin{funcdesc}{mul}{fragment\, width\, factor} +Mul returns a fragment that has all samples in the original framgent +multiplied by the floating-point value \var{factor}. Overflow is +silently ignored. +\end{funcdesc} + +\begin{funcdesc}{reverse}{fragment\, width} +This function reverses the samples in a fragment and returns the +modified fragment. +\end{funcdesc} + +\begin{funcdesc}{tomono}{fragment\, width\, lfactor\, rfactor} +This function converts a stereo fragment to a mono fragment. The left +channel is multiplied by \var{lfactor} and the right channel by +\var{rfactor} before adding the two channels to give a mono signal. +\end{funcdesc} + +\begin{funcdesc}{tostereo}{fragment\, width\, lfactor\, rfactor} +This function generates a stereo fragment from a mono fragment. Each +pair of samples in the stereo fragment are computed from the mono +sample, whereby left channel samples are multiplied by \var{lfactor} +and right channel samples by \var{rfactor}. +\end{funcdesc} + +\begin{funcdesc}{mul}{fragment\, width\, factor} +Mul returns a fragment that has all samples in the original framgent +multiplied by the floating-point value \var{factor}. Overflow is +silently ignored. +\end{funcdesc} + +\begin{funcdesc}{rms}{fragment\, width\, factor} +Returns the root-mean-square of the fragment, i.e. +\iftexi +the square root of the quotient of the sum of all squared sample value, +divided by the sumber of samples. +\else +% in eqn: sqrt { sum S sub i sup 2 over n } +\begin{displaymath} +\catcode`_=8 +\sqrt{\frac{\sum{{S_{i}}^{2}}}{n}} +\end{displaymath} +\fi +This is a measure of the power in an audio signal. +\end{funcdesc} + +\begin{funcdesc}{ulaw2lin}{fragment\, width} +This function converts sound fragments in ULAW encoding to linearly +encoded sound fragments. ULAW encoding always uses 8 bits samples, so +\var{width} refers only to the sample width of the output fragment here. +\end{funcdesc} + +Note that operations such as \code{mul} or \code{max} make no +distinction between mono and stereo fragments, i.e. all samples are +treated equal. If this is a problem the stereo fragment should be split +into two mono fragments first and recombined later. Here is an example +of how to do that: +\bcode\begin{verbatim} +def mul_stereo(sample, width, lfactor, rfactor): + lsample = audioop.tomono(sample, width, 1, 0) + rsample = audioop.tomono(sample, width, 0, 1) + lsample = audioop.mul(sample, width, lfactor) + rsample = audioop.mul(sample, width, rfactor) + lsample = audioop.tostereo(lsample, width, 1, 0) + rsample = audioop.tostereo(rsample, width, 0, 1) + return audioop.add(lsample, rsample, width) +\end{verbatim}\ecode + +If you use the ADPCM coder to build network packets and you want your +protocol to be stateless (i.e. to be able to tolerate packet loss) +you should not only transmit the data but also the state. Note that +you should send the \var{initial} state (the one you passed to +lin2adpcm) along to the decoder, not the final state (as returned by +the coder). If you want to use \code{struct} to store the state in +binary you can code the first element (the predicted value) in 16 bits +and the second (the delta index) in 8. + +The ADPCM coders have never been tried against other ADPCM coders, +only against themselves. It could well be that I misinterpreted the +standards in which case they will not be interoperable with the +respective standards. + +The \code{find...} routines might look a bit funny at first sight. +They are primarily meant for doing echo cancellation. A reasonably +fast way to do this is to pick the most energetic piece of the output +sample, locate that in the input sample and subtract the whole output +sample from the input sample: +\bcode\begin{verbatim} +def echocancel(outputdata, inputdata): + pos = audioop.findmax(outputdata, 800) # one tenth second + out_test = outputdata[pos*2:] + in_test = inputdata[pos*2:] + ipos, factor = audioop.findfit(in_test, out_test) + # Optional (for better cancellation): + # factor = audioop.findfactor(in_test[ipos*2:ipos*2+len(out_test)], + # out_test) + prefill = '\0'*(pos+ipos)*2 + postfill = '\0'*(len(inputdata)-len(prefill)-len(outputdata)) + outputdata = prefill + audioop.mul(outputdata,2,-factor) + postfill + return audioop.add(inputdata, outputdata, 2) +\end{verbatim}\ecode diff --git a/Doc/libbltin.tex b/Doc/libbltin.tex new file mode 100644 index 0000000..04cea20 --- /dev/null +++ b/Doc/libbltin.tex @@ -0,0 +1,6 @@ +\section{Built-in Module \sectcode{__builtin__}} +\bimodindex{__builtin__} + +This module provides direct access to all `built-in' identifier of +Python; e.g. \code{__builtin__.open} is the full name for the built-in +function \code{open}. diff --git a/Doc/libcrypto.tex b/Doc/libcrypto.tex new file mode 100644 index 0000000..467bee4 --- /dev/null +++ b/Doc/libcrypto.tex @@ -0,0 +1,5 @@ +\chapter{CRYPTOGRAPHIC EXTENSIONS} + +The modules described in this chapter implement various algorithms of +a cryptographic nature. They are available at the discretion of the +installation. diff --git a/Doc/libdbm.tex b/Doc/libdbm.tex new file mode 100644 index 0000000..7ff4ee5 --- /dev/null +++ b/Doc/libdbm.tex @@ -0,0 +1,24 @@ +\section{Built-in Module \sectcode{dbm}} +\bimodindex{dbm} + +Dbm provides python programs with an interface to the unix \code{ndbm} +database library. Dbm objects are of the mapping type, so they can be +handled just like objects of the built-in \dfn{dictionary} type, +except that keys and values are always strings, and printing a dbm +object doesn't print the keys and values. + +The module defines the following constant and functions: + +\renewcommand{\indexsubitem}{(in module dbm)} +\begin{excdesc}{error} +Raised on dbm-specific errors, such as I/O errors. \code{KeyError} is +raised for general mapping errors like specifying an incorrect key. +\end{excdesc} + +\begin{funcdesc}{open}{filename\, rwmode\, filemode} +Open a dbm database and return a mapping object. \var{filename} is +the name of the database file (without the \file{.dir} or \file{.pag} +extensions), \var{rwmode} is \code{'r'}, \code{'w'} or \code{'rw'} as for +\code{open}, and \var{filemode} is the unix mode of the file, used only +when the database has to be created. +\end{funcdesc} diff --git a/Doc/libexcs.tex b/Doc/libexcs.tex new file mode 100644 index 0000000..33083cd --- /dev/null +++ b/Doc/libexcs.tex @@ -0,0 +1,172 @@ +\section{Built-in Exceptions} + +Exceptions are string objects. Two distinct string objects with the +same value are different exceptions. This is done to force programmers +to use exception names rather than their string value when specifying +exception handlers. The string value of all built-in exceptions is +their name, but this is not a requirement for user-defined exceptions +or exceptions defined by library modules. + +The following exceptions can be generated by the interpreter or +built-in functions. Except where mentioned, they have an `associated +value' indicating the detailed cause of the error. This may be a +string or a tuple containing several items of information (e.g., an +error code and a string explaining the code). + +User code can raise built-in exceptions. This can be used to test an +exception handler or to report an error condition `just like' the +situation in which the interpreter raises the same exception; but +beware that there is nothing to prevent user code from raising an +inappropriate error. + +\renewcommand{\indexsubitem}{(built-in exception)} + +\begin{excdesc}{AttributeError} +% xref to attribute reference? + Raised when an attribute reference or assignment fails. (When an + object does not support attributes references or attribute assignments + at all, \code{TypeError} is raised.) +\end{excdesc} + +\begin{excdesc}{EOFError} +% XXXJH xrefs here + Raised when one of the built-in functions (\code{input()} or + \code{raw_input()}) hits an end-of-file condition (\EOF{}) without + reading any data. +% XXXJH xrefs here + (N.B.: the \code{read()} and \code{readline()} methods of file + objects return an empty string when they hit \EOF{}.) No associated value. +\end{excdesc} + +\begin{excdesc}{IOError} +% XXXJH xrefs here + Raised when an I/O operation (such as a \code{print} statement, the + built-in \code{open()} function or a method of a file object) fails + for an I/O-related reason, e.g., `file not found', `disk full'. +\end{excdesc} + +\begin{excdesc}{ImportError} +% XXXJH xref to import statement? + Raised when an \code{import} statement fails to find the module + definition or when a \code{from {\rm \ldots} import} fails to find a + name that is to be imported. +\end{excdesc} + +\begin{excdesc}{IndexError} +% XXXJH xref to sequences + Raised when a sequence subscript is out of range. (Slice indices are + silently truncated to fall in the allowed range; if an index is not a + plain integer, \code{TypeError} is raised.) +\end{excdesc} + +\begin{excdesc}{KeyError} +% XXXJH xref to mapping objects? + Raised when a mapping (dictionary) key is not found in the set of + existing keys. +\end{excdesc} + +\begin{excdesc}{KeyboardInterrupt} + Raised when the user hits the interrupt key (normally + \kbd{Control-C} or +\key{DEL}). During execution, a check for interrupts is made regularly. +% XXXJH xrefs here + Interrupts typed when a built-in function \code{input()} or + \code{raw_input()}) is waiting for input also raise this exception. No + associated value. +\end{excdesc} + +\begin{excdesc}{MemoryError} + Raised when an operation runs out of memory but the situation may + still be rescued (by deleting some objects). The associated value is + a string indicating what kind of (internal) operation ran out of memory. + Note that because of the underlying memory management architecture + (\C{}'s \code{malloc()} function), the interpreter may not always be able + to completely recover from this situation; it nevertheless raises an + exception so that a stack traceback can be printed, in case a run-away + program was the cause. +\end{excdesc} + +\begin{excdesc}{NameError} + Raised when a local or global name is not found. This applies only + to unqualified names. The associated value is the name that could + not be found. +\end{excdesc} + +\begin{excdesc}{OverflowError} +% XXXJH reference to long's and/or int's? + Raised when the result of an arithmetic operation is too large to be + represented. This cannot occur for long integers (which would rather + raise \code{MemoryError} than give up). Because of the lack of + standardization of floating point exception handling in \C{}, most + floating point operations also aren't checked. For plain integers, + all operations that can overflow are checked except left shift, where + typical applications prefer to drop bits than raise an exception. +\end{excdesc} + +\begin{excdesc}{RuntimeError} + Raised when an error is detected that doesn't fall in any of the + other categories. The associated value is a string indicating what + precisely went wrong. (This exception is a relic from a previous + version of the interpreter; it is not used any more except by some + extension modules that haven't been converted to define their own + exceptions yet.) +\end{excdesc} + +\begin{excdesc}{SyntaxError} +% XXXJH xref to these functions? + Raised when the parser encounters a syntax error. This may occur in + an \code{import} statement, in an \code{exec} statement, in a call + to the built-in function \code{eval()} or \code{input()}, or + when reading the initial script or standard input (also + interactively). +\end{excdesc} + +\begin{excdesc}{SystemError} + Raised when the interpreter finds an internal error, but the + situation does not look so serious to cause it to abandon all hope. + The associated value is a string indicating what went wrong (in + low-level terms). + + You should report this to the author or maintainer of your Python + interpreter. Be sure to report the version string of the Python + interpreter (\code{sys.version}; it is also printed at the start of an + interactive Python session), the exact error message (the exception's + associated value) and if possible the source of the program that + triggered the error. +\end{excdesc} + +\begin{excdesc}{SystemExit} +% XXXJH xref to module sys? + This exception is raised by the \code{sys.exit()} function. When it + is not handled, the Python interpreter exits; no stack traceback is + printed. If the associated value is a plain integer, it specifies the + system exit status (passed to \C{}'s \code{exit()} function); if it is + \code{None}, the exit status is zero; if it has another type (such as + a string), the object's value is printed and the exit status is one. + + A call to \code{sys.exit} is translated into an exception so that + clean-up handlers (\code{finally} clauses of \code{try} statements) + can be executed, and so that a debugger can execute a script without + running the risk of losing control. The \code{posix._exit()} function + can be used if it is absolutely positively necessary to exit + immediately (e.g., after a \code{fork()} in the child process). +\end{excdesc} + +\begin{excdesc}{TypeError} + Raised when a built-in operation or function is applied to an object + of inappropriate type. The associated value is a string giving + details about the type mismatch. +\end{excdesc} + +\begin{excdesc}{ValueError} + Raised when a built-in operation or function receives an argument + that has the right type but an inappropriate value, and the + situation is not described by a more precise exception such as + \code{IndexError}. +\end{excdesc} + +\begin{excdesc}{ZeroDivisionError} + Raised when the second argument of a division or modulo operation is + zero. The associated value is a string indicating the type of the + operands and the operation. +\end{excdesc} diff --git a/Doc/libfl.tex b/Doc/libfl.tex new file mode 100644 index 0000000..b705a6b --- /dev/null +++ b/Doc/libfl.tex @@ -0,0 +1,483 @@ +\section{Built-in Module \sectcode{fl}} +\bimodindex{fl} + +This module provides an interface to the FORMS Library by Mark +Overmars, version 2.0b. For more info about FORMS, write to +{\tt markov@cs.ruu.nl}. + +Most functions are literal translations of their C equivalents, +dropping the initial \samp{fl_} from their name. Constants used by the +library are defined in module \code{FL} described below. + +The creation of objects is a little different in Python than in C: +instead of the `current form' maintained by the library to which new +FORMS objects are added, all functions that add a FORMS object to a +button are methods of the Python object representing the form. +Consequently, there are no Python equivalents for the C functions +\code{fl_addto_form} and \code{fl_end_form}, and the equivalent of +\code{fl_bgn_form} is called \code{fl.make_form}. + +Watch out for the somewhat confusing terminology: FORMS uses the word +\dfn{object} for the buttons, sliders etc. that you can place in a form. +In Python, `object' means any value. The Python interface to FORMS +introduces two new Python object types: form objects (representing an +entire form) and FORMS objects (representing one button, slider etc.). +Hopefully this isn't too confusing... + +There are no `free objects' in the Python interface to FORMS, nor is +there an easy way to add object classes written in Python. The FORMS +interface to GL event handling is avaiable, though, so you can mix +FORMS with pure GL windows. + +\strong{Please note:} importing \code{fl} implies a call to the GL function +\code{foreground()} and to the FORMS routine \code{fl_init()}. + +\subsection{Functions defined in module \sectcode{fl}} + +Module \code{fl} defines the following functions. For more information +about what they do, see the description of the equivalent C function +in the FORMS documentation: + +\renewcommand{\indexsubitem}{(in module fl)} +\begin{funcdesc}{make_form}{type\, width\, height} +Create a form with given type, width and height. This returns a +\dfn{form} object, whose methods are described below. +\end{funcdesc} + +\begin{funcdesc}{do_forms}{} +The standard FORMS main loop. Returns a Python object representing +the FORMS object needing interaction, or the special value +\code{FL.EVENT}. +\end{funcdesc} + +\begin{funcdesc}{check_forms}{} +Check for FORMS events. Returns what \code{do_forms} above returns, +or \code{None} if there is no event that immediately needs +interaction. +\end{funcdesc} + +\begin{funcdesc}{set_event_call_back}{function} +Set the event callback function. +\end{funcdesc} + +\begin{funcdesc}{set_graphics_mode}{rgbmode\, doublebuffering} +Set the graphics modes. +\end{funcdesc} + +\begin{funcdesc}{get_rgbmode}{} +Return the current rgb mode. This is the value of the C global +variable \code{fl_rgbmode}. +\end{funcdesc} + +\begin{funcdesc}{show_message}{str1\, str2\, str3} +Show a dialog box with a three-line message and an OK button. +\end{funcdesc} + +\begin{funcdesc}{show_question}{str1\, str2\, str3} +Show a dialog box with a three-line message and YES and NO buttons. +It returns \code{1} if the user pressed YES, \code{0} if NO. +\end{funcdesc} + +\begin{funcdesc}{show_choice}{str1\, str2\, str3\, but1\, but2\, but3} +Show a dialog box with a three-line message and up to three buttons. +It returns the number of the button clicked by the user +(\code{1}, \code{2} or \code{3}). +The \var{but2} and \var{but3} arguments are optional. +\end{funcdesc} + +\begin{funcdesc}{show_input}{prompt\, default} +Show a dialog box with a one-line prompt message and text field in +which the user can enter a string. The second argument is the default +input string. It returns the string value as edited by the user. +\end{funcdesc} + +\begin{funcdesc}{show_file_selector}{message\, directory\, pattern\, default} +Show a dialog box inm which the user can select a file. It returns +the absolute filename selected by the user, or \code{None} if the user +presses Cancel. +\end{funcdesc} + +\begin{funcdesc}{get_directory}{} +\funcline{get_pattern}{} +\funcline{get_filename}{} +These functions return the directory, pattern and filename (the tail +part only) selected by the user in the last \code{show_file_selector} +call. +\end{funcdesc} + +\begin{funcdesc}{qdevice}{dev} +\funcline{unqdevice}{dev} +\funcline{isqueued}{dev} +\funcline{qtest}{} +\funcline{qread}{} +%\funcline{blkqread}{?} +\funcline{qreset}{} +\funcline{qenter}{dev\, val} +\funcline{get_mouse}{} +\funcline{tie}{button\, valuator1\, valuator2} +These functions are the FORMS interfaces to the corresponding GL +functions. Use these if you want to handle some GL events yourself +when using \code{fl.do_events}. When a GL event is detected that +FORMS cannot handle, \code{fl.do_forms()} returns the special value +\code{FL.EVENT} and you should call \code{fl.qread()} to read the +event from the queue. Don't use the equivalent GL functions! +\end{funcdesc} + +\begin{funcdesc}{color}{} +\funcline{mapcolor}{} +\funcline{getmcolor}{} +See the description in the FORMS documentation of \code{fl_color}, +\code{fl_mapcolor} and \code{fl_getmcolor}. +\end{funcdesc} + +\subsection{Form object methods and data attributes} + +Form objects (returned by \code{fl.make_form()} above) have the +following methods. Each method corresponds to a C function whose name +is prefixed with \samp{fl_}; and whose first argument is a form +pointer; please refer to the official FORMS documentation for +descriptions. + +All the \samp{add_{\rm \ldots}} functions return a Python object representing +the FORMS object. Methods of FORMS objects are described below. Most +kinds of FORMS object also have some methods specific to that kind; +these methods are listed here. + +\begin{flushleft} +\renewcommand{\indexsubitem}{(form object method)} +\begin{funcdesc}{show_form}{placement\, bordertype\, name} + Show the form. +\end{funcdesc} + +\begin{funcdesc}{hide_form}{} + Hide the form. +\end{funcdesc} + +\begin{funcdesc}{redraw_form}{} + Redraw the form. +\end{funcdesc} + +\begin{funcdesc}{set_form_position}{x\, y} +Set the form's position. +\end{funcdesc} + +\begin{funcdesc}{freeze_form}{} +Freeze the form. +\end{funcdesc} + +\begin{funcdesc}{unfreeze_form}{} + Unfreeze the form. +\end{funcdesc} + +\begin{funcdesc}{activate_form}{} + Activate the form. +\end{funcdesc} + +\begin{funcdesc}{deactivate_form}{} + Deactivate the form. +\end{funcdesc} + +\begin{funcdesc}{bgn_group}{} + Begin a new group of objects; return a group object. +\end{funcdesc} + +\begin{funcdesc}{end_group}{} + End the current group of objects. +\end{funcdesc} + +\begin{funcdesc}{find_first}{} + Find the first object in the form. +\end{funcdesc} + +\begin{funcdesc}{find_last}{} + Find the last object in the form. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_box}{type\, x\, y\, w\, h\, name} +Add a box object to the form. +No extra methods. +\end{funcdesc} + +\begin{funcdesc}{add_text}{type\, x\, y\, w\, h\, name} +Add a text object to the form. +No extra methods. +\end{funcdesc} + +%\begin{funcdesc}{add_bitmap}{type\, x\, y\, w\, h\, name} +%Add a bitmap object to the form. +%\end{funcdesc} + +\begin{funcdesc}{add_clock}{type\, x\, y\, w\, h\, name} +Add a clock object to the form. \\ +Method: +\code{get_clock}. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_button}{type\, x\, y\, w\, h\, name} +Add a button object to the form. \\ +Methods: +\code{get_button}, +\code{set_button}. +\end{funcdesc} + +\begin{funcdesc}{add_lightbutton}{type\, x\, y\, w\, h\, name} +Add a lightbutton object to the form. \\ +Methods: +\code{get_button}, +\code{set_button}. +\end{funcdesc} + +\begin{funcdesc}{add_roundbutton}{type\, x\, y\, w\, h\, name} +Add a roundbutton object to the form. \\ +Methods: +\code{get_button}, +\code{set_button}. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_slider}{type\, x\, y\, w\, h\, name} +Add a slider object to the form. \\ +Methods: +\code{set_slider_value}, +\code{get_slider_value}, +\code{set_slider_bounds}, +\code{get_slider_bounds}, +\code{set_slider_return}, +\code{set_slider_size}, +\code{set_slider_precision}, +\code{set_slider_step}. +\end{funcdesc} + +\begin{funcdesc}{add_valslider}{type\, x\, y\, w\, h\, name} +Add a valslider object to the form. \\ +Methods: +\code{set_slider_value}, +\code{get_slider_value}, +\code{set_slider_bounds}, +\code{get_slider_bounds}, +\code{set_slider_return}, +\code{set_slider_size}, +\code{set_slider_precision}, +\code{set_slider_step}. +\end{funcdesc} + +\begin{funcdesc}{add_dial}{type\, x\, y\, w\, h\, name} +Add a dial object to the form. \\ +Methods: +\code{set_dial_value}, +\code{get_dial_value}, +\code{set_dial_bounds}, +\code{get_dial_bounds}. +\end{funcdesc} + +\begin{funcdesc}{add_positioner}{type\, x\, y\, w\, h\, name} +Add a positioner object to the form. \\ +Methods: +\code{set_positioner_xvalue}, +\code{set_positioner_yvalue}, +\code{set_positioner_xbounds}, +\code{set_positioner_ybounds}, +\code{get_positioner_xvalue}, +\code{get_positioner_yvalue}, +\code{get_positioner_xbounds}, +\code{get_positioner_ybounds}. +\end{funcdesc} + +\begin{funcdesc}{add_counter}{type\, x\, y\, w\, h\, name} +Add a counter object to the form. \\ +Methods: +\code{set_counter_value}, +\code{get_counter_value}, +\code{set_counter_bounds}, +\code{set_counter_step}, +\code{set_counter_precision}, +\code{set_counter_return}. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_input}{type\, x\, y\, w\, h\, name} +Add a input object to the form. \\ +Methods: +\code{set_input}, +\code{get_input}, +\code{set_input_color}, +\code{set_input_return}. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_menu}{type\, x\, y\, w\, h\, name} +Add a menu object to the form. \\ +Methods: +\code{set_menu}, +\code{get_menu}, +\code{addto_menu}. +\end{funcdesc} + +\begin{funcdesc}{add_choice}{type\, x\, y\, w\, h\, name} +Add a choice object to the form. \\ +Methods: +\code{set_choice}, +\code{get_choice}, +\code{clear_choice}, +\code{addto_choice}, +\code{replace_choice}, +\code{delete_choice}, +\code{get_choice_text}, +\code{set_choice_fontsize}, +\code{set_choice_fontstyle}. +\end{funcdesc} + +\begin{funcdesc}{add_browser}{type\, x\, y\, w\, h\, name} +Add a browser object to the form. \\ +Methods: +\code{set_browser_topline}, +\code{clear_browser}, +\code{add_browser_line}, +\code{addto_browser}, +\code{insert_browser_line}, +\code{delete_browser_line}, +\code{replace_browser_line}, +\code{get_browser_line}, +\code{load_browser}, +\code{get_browser_maxline}, +\code{select_browser_line}, +\code{deselect_browser_line}, +\code{deselect_browser}, +\code{isselected_browser_line}, +\code{get_browser}, +\code{set_browser_fontsize}, +\code{set_browser_fontstyle}, +\code{set_browser_specialkey}. +\end{funcdesc} + +%--- + +\begin{funcdesc}{add_timer}{type\, x\, y\, w\, h\, name} +Add a timer object to the form. \\ +Methods: +\code{set_timer}, +\code{get_timer}. +\end{funcdesc} +\end{flushleft} + +Form objects have the following data attributes; see the FORMS +documentation: + +\begin{tableiii}{|l|c|l|}{code}{Name}{Type}{Meaning} + \lineiii{window}{int (read-only)}{GL window id} + \lineiii{w}{float}{form width} + \lineiii{h}{float}{form height} + \lineiii{x}{float}{form x origin} + \lineiii{y}{float}{form y origin} + \lineiii{deactivated}{int}{nonzero if form is deactivated} + \lineiii{visible}{int}{nonzero if form is visible} + \lineiii{frozen}{int}{nonzero if form is frozen} + \lineiii{doublebuf}{int}{nonzero if double buffering on} +\end{tableiii} + +\subsection{FORMS object methods and data attributes} + +Besides methods specific to particular kinds of FORMS objects, all +FORMS objects also have the following methods: + +\renewcommand{\indexsubitem}{(FORMS object method)} +\begin{funcdesc}{set_call_back}{function\, argument} +Set the object's callback function and argument. When the object +needs interaction, the callback function will be called with two +arguments: the object, and the callback argument. (FORMS objects +without a callback function are returned by \code{fl.do_forms()} or +\code{fl.check_forms()} when they need interaction.) Call this method +without arguments to remove the callback function. +\end{funcdesc} + +\begin{funcdesc}{delete_object}{} + Delete the object. +\end{funcdesc} + +\begin{funcdesc}{show_object}{} + Show the object. +\end{funcdesc} + +\begin{funcdesc}{hide_object}{} + Hide the object. +\end{funcdesc} + +\begin{funcdesc}{redraw_object}{} + Redraw the object. +\end{funcdesc} + +\begin{funcdesc}{freeze_object}{} + Freeze the object. +\end{funcdesc} + +\begin{funcdesc}{unfreeze_object}{} + Unfreeze the object. +\end{funcdesc} + +%\begin{funcdesc}{handle_object}{} XXX +%\end{funcdesc} + +%\begin{funcdesc}{handle_object_direct}{} XXX +%\end{funcdesc} + +FORMS objects have these data attributes; see the FORMS documentation: + +\begin{tableiii}{|l|c|l|}{code}{Name}{Type}{Meaning} + \lineiii{objclass}{int (read-only)}{object class} + \lineiii{type}{int (read-only)}{object type} + \lineiii{boxtype}{int}{box type} + \lineiii{x}{float}{x origin} + \lineiii{y}{float}{y origin} + \lineiii{w}{float}{width} + \lineiii{h}{float}{height} + \lineiii{col1}{int}{primary color} + \lineiii{col2}{int}{secondary color} + \lineiii{align}{int}{alignment} + \lineiii{lcol}{int}{label color} + \lineiii{lsize}{float}{label font size} + \lineiii{label}{string}{label string} + \lineiii{lstyle}{int}{label style} + \lineiii{pushed}{int (read-only)}{(see FORMS docs)} + \lineiii{focus}{int (read-only)}{(see FORMS docs)} + \lineiii{belowmouse}{int (read-only)}{(see FORMS docs)} + \lineiii{frozen}{int (read-only)}{(see FORMS docs)} + \lineiii{active}{int (read-only)}{(see FORMS docs)} + \lineiii{input}{int (read-only)}{(see FORMS docs)} + \lineiii{visible}{int (read-only)}{(see FORMS docs)} + \lineiii{radio}{int (read-only)}{(see FORMS docs)} + \lineiii{automatic}{int (read-only)}{(see FORMS docs)} +\end{tableiii} + +\section{Standard Module \sectcode{FL}} +\nodename{FL (uppercase)} +\stmodindex{FL} + +This module defines symbolic constants needed to use the built-in +module \code{fl} (see above); they are equivalent to those defined in +the C header file \file{<forms.h>} except that the name prefix +\samp{FL_} is omitted. Read the module source for a complete list of +the defined names. Suggested use: + +\bcode\begin{verbatim} +import fl +from FL import * +\end{verbatim}\ecode + +\section{Standard Module \sectcode{flp}} +\stmodindex{flp} + +This module defines functions that can read form definitions created +by the `form designer' (\code{fdesign}) program that comes with the +FORMS library (see module \code{fl} above). + +For now, see the file \file{flp.doc} in the Python library source +directory for a description. + +XXX A complete description should be inserted here! diff --git a/Doc/libfm.tex b/Doc/libfm.tex new file mode 100644 index 0000000..acbc05d --- /dev/null +++ b/Doc/libfm.tex @@ -0,0 +1,86 @@ +\section{Built-in Module \sectcode{fm}} +\bimodindex{fm} + +This module provides access to the IRIS {\em Font Manager} library. +It is available only on Silicon Graphics machines. +See also: 4Sight User's Guide, Section 1, Chapter 5: Using the IRIS +Font Manager. + +This is not yet a full interface to the IRIS Font Manager. +Among the unsupported features are: matrix operations; cache +operations; character operations (use string operations instead); some +details of font info; individual glyph metrics; and printer matching. + +It supports the following operations: + +\renewcommand{\indexsubitem}{(in module fm)} +\begin{funcdesc}{init}{} +Initialization function. +Calls \code{fminit()}. +It is normally not necessary to call this function, since it is called +automatically the first time the \code{fm} module is imported. +\end{funcdesc} + +\begin{funcdesc}{findfont}{fontname} +Return a font handle object. +Calls \code{fmfindfont(\var{fontname})}. +\end{funcdesc} + +\begin{funcdesc}{enumerate}{} +Returns a list of available font names. +This is an interface to \code{fmenumerate()}. +\end{funcdesc} + +\begin{funcdesc}{prstr}{string} +Render a string using the current font (see the \code{setfont()} font +handle method below). +Calls \code{fmprstr(\var{string})}. +\end{funcdesc} + +\begin{funcdesc}{setpath}{string} +Sets the font search path. +Calls \code{fmsetpath(string)}. +(XXX Does not work!?!) +\end{funcdesc} + +\begin{funcdesc}{fontpath}{} +Returns the current font search path. +\end{funcdesc} + +Font handle objects support the following operations: + +\renewcommand{\indexsubitem}{(font handle method)} +\begin{funcdesc}{scalefont}{factor} +Returns a handle for a scaled version of this font. +Calls \code{fmscalefont(\var{fh}, \var{factor})}. +\end{funcdesc} + +\begin{funcdesc}{setfont}{} +Makes this font the current font. +Note: the effect is undone silently when the font handle object is +deleted. +Calls \code{fmsetfont(\var{fh})}. +\end{funcdesc} + +\begin{funcdesc}{getfontname}{} +Returns this font's name. +Calls \code{fmgetfontname(\var{fh})}. +\end{funcdesc} + +\begin{funcdesc}{getcomment}{} +Returns the comment string associated with this font. +Raises an exception if there is none. +Calls \code{fmgetcomment(\var{fh})}. +\end{funcdesc} + +\begin{funcdesc}{getfontinfo}{} +Returns a tuple giving some pertinent data about this font. +This is an interface to \code{fmgetfontinfo()}. +The returned tuple contains the following numbers: +\code{(\var{printermatched}, \var{fixed_width}, \var{xorig}, \var{yorig}, \var{xsize}, \var{ysize}, \var{height}, \var{nglyphs})}. +\end{funcdesc} + +\begin{funcdesc}{getstrwidth}{string} +Returns the width, in pixels, of the string when drawn in this font. +Calls \code{fmgetstrwidth(\var{fh}, \var{string})}. +\end{funcdesc} diff --git a/Doc/libfuncs.tex b/Doc/libfuncs.tex new file mode 100644 index 0000000..e0b36f3 --- /dev/null +++ b/Doc/libfuncs.tex @@ -0,0 +1,356 @@ +\section{Built-in Functions} + +The Python interpreter has a number of functions built into it that +are always available. They are listed here in alphabetical order. + + +\renewcommand{\indexsubitem}{(built-in function)} +\begin{funcdesc}{abs}{x} + Return the absolute value of a number. The argument may be a plain + or long integer or a floating point number. +\end{funcdesc} + +\begin{funcdesc}{apply}{function\, args} +The \var{function} argument must be a callable object (a user-defined or +built-in function or method, or a class object) and the \var{args} +argument must be a tuple. The \var{function} is called with +\var{args} as argument list; the number of arguments is the the length +of the tuple. (This is different from just calling +\code{\var{func}(\var{args})}, since in that case there is always +exactly one argument.) +\end{funcdesc} + +\begin{funcdesc}{chr}{i} + Return a string of one character whose \ASCII{} code is the integer + \var{i}, e.g., \code{chr(97)} returns the string \code{'a'}. This is the + inverse of \code{ord()}. The argument must be in the range [0..255], + inclusive. +\end{funcdesc} + +\begin{funcdesc}{cmp}{x\, y} + Compare the two objects \var{x} and \var{y} and return an integer + according to the outcome. The return value is negative if \code{\var{x} + < \var{y}}, zero if \code{\var{x} == \var{y}} and strictly positive if + \code{\var{x} > \var{y}}. +\end{funcdesc} + +\begin{funcdesc}{coerce}{x\, y} + Return a tuple consisting of the two numeric arguments converted to + a common type, using the same rules as used by arithmetic + operations. +\end{funcdesc} + +\begin{funcdesc}{compile}{string\, filename\, kind} + Compile the \var{string} into a code object. Code objects can be + executed by a \code{exec()} statement or evaluated by a call to + \code{eval()}. The \var{filename} argument should + give the file from which the code was read; pass e.g. \code{'<string>'} + if it wasn't read from a file. The \var{kind} argument specifies + what kind of code must be compiled; it can be \code{'exec'} if + \var{string} consists of a sequence of statements, or \code{'eval'} + if it consists of a single expression. +\end{funcdesc} + +\begin{funcdesc}{dir}{} + Without arguments, return the list of names in the current local + symbol table. With a module, class or class instance object as + argument (or anything else that has a \code{__dict__} attribute), + returns the list of names in that object's attribute dictionary. + The resulting list is sorted. For example: + +\bcode\begin{verbatim} +>>> import sys +>>> dir() +['sys'] +>>> dir(sys) +['argv', 'exit', 'modules', 'path', 'stderr', 'stdin', 'stdout'] +>>> +\end{verbatim}\ecode +\end{funcdesc} + +\begin{funcdesc}{divmod}{a\, b} + Take two numbers as arguments and return a pair of integers + consisting of their integer quotient and remainder. With mixed + operand types, the rules for binary arithmetic operators apply. For + plain and long integers, the result is the same as + \code{(\var{a} / \var{b}, \var{a} \%{} \var{b})}. + For floating point numbers the result is the same as + \code{(math.floor(\var{a} / \var{b}), \var{a} \%{} \var{b})}. +\end{funcdesc} + +\begin{funcdesc}{eval}{s\, globals\, locals} + The arguments are a string and two optional dictionaries. The + string argument is parsed and evaluated as a Python expression + (technically speaking, a condition list) using the dictionaries as + global and local name space. The string must not contain null bytes + or newline characters. The return value is the + result of the expression. If the third argument is omitted it + defaults to the second. If both dictionaries are omitted, the + expression is executed in the environment where \code{eval} is + called. Syntax errors are reported as exceptions. Example: + +\bcode\begin{verbatim} +>>> x = 1 +>>> print eval('x+1') +2 +>>> +\end{verbatim}\ecode + + This function can also be used to execute arbitrary code objects + (e.g. created by \code{compile()}). In this case pass a code + object instead of a string. The code object must have been compiled + passing \code{'eval'} to the \var{kind} argument. + + Note: dynamic execution of statements is supported by the + \code{exec} statement. + +\end{funcdesc} + +\begin{funcdesc}{filter}{function\, list} +Construct a list from those elements of \var{list} for which +\var{function} returns true. If \var{list} is a string or a tuple, +the result also has that type; otherwise it is always a list. If +\var{function} is \code{None}, the identity function is assumed, +i.e. all elements of \var{list} that are false (zero or empty) are +removed. +\end{funcdesc} + +\begin{funcdesc}{float}{x} + Convert a number to floating point. The argument may be a plain or + long integer or a floating point number. +\end{funcdesc} + +\begin{funcdesc}{getattr}{object\, name} + The arguments are an object and a string. The string must be the + name + of one of the object's attributes. The result is the value of that + attribute. For example, \code{getattr(\var{x}, '\var{foobar}')} is equivalent to + \code{\var{x}.\var{foobar}}. +\end{funcdesc} + +\begin{funcdesc}{hasattr}{object\, name} + The arguments are an object and a string. The result is 1 if the + string is the name of one of the object's attributes, 0 if not. + (This is implemented by calling \code{getattr(object, name)} and + seeing whether it raises an exception or not.) +\end{funcdesc} + +\begin{funcdesc}{hash}{object} + Return the hash value of the object (if it has one). Hash values + are 32-bit integers. They are used to quickly compare dictionary + keys during a dictionary lookup. Numeric values that compare equal + have the same hash value (even if they are of different types, e.g. + 1 and 1.0). +\end{funcdesc} + +\begin{funcdesc}{hex}{x} + Convert a number to a hexadecimal string. The result is a valid + Python expression. +\end{funcdesc} + +\begin{funcdesc}{id}{object} + Return the `identity' of an object. This is an integer which is + guaranteed to be unique and constant for this object during its + lifetime. (Two objects whose lifetimes are disjunct may have the + same id() value.) (Implementation note: this is the address of the + object.) +\end{funcdesc} + +\begin{funcdesc}{input}{prompt} + Almost equivalent to \code{eval(raw_input(\var{prompt}))}. As for + \code{raw_input()}, the prompt argument is optional. The difference is + that a long input expression may be broken over multiple lines using the + backslash convention. +\end{funcdesc} + +\begin{funcdesc}{int}{x} + Convert a number to a plain integer. The argument may be a plain or + long integer or a floating point number. +\end{funcdesc} + +\begin{funcdesc}{len}{s} + Return the length (the number of items) of an object. The argument + may be a sequence (string, tuple or list) or a mapping (dictionary). +\end{funcdesc} + +\begin{funcdesc}{long}{x} + Convert a number to a long integer. The argument may be a plain or + long integer or a floating point number. +\end{funcdesc} + +\begin{funcdesc}{map}{function\, list\, ...} +Apply \var{function} to every item of \var{list} and return a list +of the results. If additional \var{list} arguments are passed, +\var{function} must take that many arguments and is applied to +the items of all lists in parallel; if a list is shorter than another +it is assumed to be extended with \code{None} items. If +\var{function} is \code{None}, the identity function is assumed; if +there are multiple list arguments, \code{map} returns a list +consisting of tuples containing the corresponding items from all lists +(i.e. a kind of transpose operation). The \var{list} arguments may be +any kind of sequence; the result is always a list. +\end{funcdesc} + +\begin{funcdesc}{max}{s} + Return the largest item of a non-empty sequence (string, tuple or + list). +\end{funcdesc} + +\begin{funcdesc}{min}{s} + Return the smallest item of a non-empty sequence (string, tuple or + list). +\end{funcdesc} + +\begin{funcdesc}{oct}{x} + Convert a number to an octal string. The result is a valid Python + expression. +\end{funcdesc} + +\begin{funcdesc}{open}{filename\, mode} + % XXXJH xrefs here to Built-in types? + Return a new file object (described earlier under Built-in Types). + The string arguments are the same as for \code{stdio}'s + \code{fopen()}: \var{filename} is the file name to be opened, + \var{mode} indicates how the file is to be opened: \code{'r'} for + reading, \code{'w'} for writing (truncating an existing file), and + \code{'a'} opens it for appending. Modes \code{'r+'}, \code{'w+'} and + \code{'a+'} open the file for updating, provided the underlying + \code{stdio} library understands this. On systems that differentiate + between binary and text files, \code{'b'} appended to the mode opens + the file in binary mode. If the file cannot be opened, \code{IOError} + is raised. +\end{funcdesc} + +\begin{funcdesc}{ord}{c} + Return the \ASCII{} value of a string of one character. E.g., + \code{ord('a')} returns the integer \code{97}. This is the inverse of + \code{chr()}. +\end{funcdesc} + +\begin{funcdesc}{pow}{x\, y} + Return \var{x} to the power \var{y}. The arguments must have + numeric types. With mixed operand types, the rules for binary + arithmetic operators apply. The effective operand type is also the + type of the result; if the result is not expressible in this type, the + function raises an exception; e.g., \code{pow(2, -1)} is not allowed. +\end{funcdesc} + +\begin{funcdesc}{range}{start\, end\, step} + This is a versatile function to create lists containing arithmetic + progressions. It is most often used in \code{for} loops. The + arguments must be plain integers. If the \var{step} argument is + omitted, it defaults to \code{1}. If the \var{start} argument is + omitted, it defaults to \code{0}. The full form returns a list of + plain integers \code{[\var{start}, \var{start} + \var{step}, + \var{start} + 2 * \var{step}, \ldots]}. If \var{step} is positive, + the last element is the largest \code{\var{start} + \var{i} * + \var{step}} less than \var{end}; if \var{step} is negative, the last + element is the largest \code{\var{start} + \var{i} * \var{step}} + greater than \var{end}. \var{step} must not be zero. Example: + +\bcode\begin{verbatim} +>>> range(10) +[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] +>>> range(1, 11) +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] +>>> range(0, 30, 5) +[0, 5, 10, 15, 20, 25] +>>> range(0, 10, 3) +[0, 3, 6, 9] +>>> range(0, -10, -1) +[0, -1, -2, -3, -4, -5, -6, -7, -8, -9] +>>> range(0) +[] +>>> range(1, 0) +[] +>>> +\end{verbatim}\ecode +\end{funcdesc} + +\begin{funcdesc}{raw_input}{prompt} + The string argument is optional; if present, it is written to + standard + output without a trailing newline. The function then reads a line + from input, converts it to a string (stripping a trailing newline), + and returns that. When \EOF{} is read, \code{EOFError} is raised. + Example: + +\bcode\begin{verbatim} +>>> s = raw_input('--> ') +--> Monty Python's Flying Circus +>>> s +'Monty Python\'s Flying Circus' +>>> +\end{verbatim}\ecode +\end{funcdesc} + +\begin{funcdesc}{reduce}{function\, list\, initializer} +Apply the binary \var{function} to the items of \var{list} so as to +reduce the list to a single value. E.g., +\code{reduce(lambda x, y: x*y, \var{list}, 1)} returns the product of +the elements of \var{list}. The optional \var{initializer} can be +thought of as being prepended to \var{list} so as to allow reduction +of an empty \var{list}. The \var{list} arguments may be any kind of +sequence. +\end{funcdesc} + +\begin{funcdesc}{reload}{module} + Re-parse and re-initialize an already imported \var{module}. The + argument must be a module object, so it must have been successfully + imported before. This is useful if you have edited the module source + file using an external editor and want to try out the new version + without leaving the Python interpreter. Note that if a module is + syntactically correct but its initialization fails, the first + \code{import} statement for it does not import the name, but does + create a (partially initialized) module object; to reload the module + you must first \code{import} it again (this will just make the + partially initialized module object available) before you can + \code{reload()} it. +\end{funcdesc} + +\begin{funcdesc}{repr}{object} +Return a string containing a printable representation of an object. +This is the same value yielded by conversions (reverse quotes). +It is sometimes useful to be able to access this operation as an +ordinary function. For many types, this function makes an attempt +to return a string that would yield an object with the same value +when passed to \code{eval()}. +\end{funcdesc} + +\begin{funcdesc}{round}{x\, n} + Return the floating point value \var{x} rounded to \var{n} digits + after the decimal point. If \var{n} is omitted, it defaults to zero. + The result is a floating point number. Values are rounded to the + closest multiple of 10 to the power minus \var{n}; if two multiples + are equally close, rounding is done away from 0 (so e.g. + \code{round(0.5)} is \code{1.0} and \code{round(-0.5)} is \code{-1.0}). +\end{funcdesc} + +\begin{funcdesc}{setattr}{object\, name\, value} + This is the counterpart of \code{getattr}. The arguments are an + object, a string and an arbitrary value. The string must be the name + of one of the object's attributes. The function assigns the value to + the attribute, provided the object allows it. For example, + \code{setattr(\var{x}, '\var{foobar}', 123)} is equivalent to + \code{\var{x}.\var{foobar} = 123}. +\end{funcdesc} + +\begin{funcdesc}{str}{object} +Return a string containing a nicely printable representation of an +object. For strings, this returns the string itself. The difference +with \code{repr(\var{object}} is that \code{str(\var{object}} does not +always attempt to return a string that is acceptable to \code{eval()}; +its goal is to return a printable string. +\end{funcdesc} + +\begin{funcdesc}{type}{object} +% XXXJH xref to buil-in objects here? + Return the type of an \var{object}. The return value is a type + object. There is not much you can do with type objects except compare + them to other type objects; e.g., the following checks if a variable + is a string: + +\bcode\begin{verbatim} +>>> if type(x) == type(''): print 'It is a string' +\end{verbatim}\ecode +\end{funcdesc} diff --git a/Doc/libgetopt.tex b/Doc/libgetopt.tex new file mode 100644 index 0000000..250d31f --- /dev/null +++ b/Doc/libgetopt.tex @@ -0,0 +1,55 @@ +\section{Standard Module \sectcode{getopt}} + +\stmodindex{getopt} +This module helps scripts to parse the command line arguments in +\code{sys.argv}. +It uses the same conventions as the \UNIX{} +\code{getopt()} +function. +It defines the function +\code{getopt.getopt(args, options)} +and the exception +\code{getopt.error}. + +The first argument to +\code{getopt()} +is the argument list passed to the script with its first element +chopped off (i.e., +\code{sys.argv[1:]}). +The second argument is the string of option letters that the +script wants to recognize, with options that require an argument +followed by a colon (i.e., the same format that \UNIX{} +\code{getopt()} +uses). +The return value consists of two elements: the first is a list of +option-and-value pairs; the second is the list of program arguments +left after the option list was stripped (this is a trailing slice of the +first argument). +Each option-and-value pair returned has the option as its first element, +prefixed with a hyphen (e.g., +\code{'-x'}), +and the option argument as its second element, or an empty string if the +option has no argument. +The options occur in the list in the same order in which they were +found, thus allowing multiple occurrences. +Example: + +\bcode\begin{verbatim} +>>> import getopt, string +>>> args = string.split('-a -b -cfoo -d bar a1 a2') +>>> args +['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2'] +>>> optlist, args = getopt.getopt(args, 'abc:d:') +>>> optlist +[('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')] +>>> args +['a1', 'a2'] +>>> +\end{verbatim}\ecode + +The exception +\code{getopt.error = 'getopt error'} +is raised when an unrecognized option is found in the argument list or +when an option requiring an argument is given none. +The argument to the exception is a string indicating the cause of the +error. diff --git a/Doc/libgl.tex b/Doc/libgl.tex new file mode 100644 index 0000000..e86c04b --- /dev/null +++ b/Doc/libgl.tex @@ -0,0 +1,197 @@ +\section{Built-in Module \sectcode{gl}} +\bimodindex{gl} + +This module provides access to the Silicon Graphics +{\em Graphics Library}. +It is available only on Silicon Graphics machines. + +\strong{Warning:} +Some illegal calls to the GL library cause the Python interpreter to dump +core. +In particular, the use of most GL calls is unsafe before the first +window is opened. + +The module is too large to document here in its entirety, but the +following should help you to get started. +The parameter conventions for the C functions are translated to Python as +follows: + +\begin{itemize} +\item +All (short, long, unsigned) int values are represented by Python +integers. +\item +All float and double values are represented by Python floating point +numbers. +In most cases, Python integers are also allowed. +\item +All arrays are represented by one-dimensional Python lists. +In most cases, tuples are also allowed. +\item +\begin{sloppypar} +All string and character arguments are represented by Python strings, +for instance, +\code{winopen('Hi There!')} +and +\code{rotate(900, 'z')}. +\end{sloppypar} +\item +All (short, long, unsigned) integer arguments or return values that are +only used to specify the length of an array argument are omitted. +For example, the C call + +\bcode\begin{verbatim} +lmdef(deftype, index, np, props) +\end{verbatim}\ecode + +is translated to Python as + +\bcode\begin{verbatim} +lmdef(deftype, index, props) +\end{verbatim}\ecode + +\item +Output arguments are omitted from the argument list; they are +transmitted as function return values instead. +If more than one value must be returned, the return value is a tuple. +If the C function has both a regular return value (that is not omitted +because of the previous rule) and an output argument, the return value +comes first in the tuple. +Examples: the C call + +\bcode\begin{verbatim} +getmcolor(i, &red, &green, &blue) +\end{verbatim}\ecode + +is translated to Python as + +\bcode\begin{verbatim} +red, green, blue = getmcolor(i) +\end{verbatim}\ecode + +\end{itemize} + +The following functions are non-standard or have special argument +conventions: + +\renewcommand{\indexsubitem}{(in module gl)} +\begin{funcdesc}{varray}{argument} +%JHXXX the argument-argument added +Equivalent to but faster than a number of +\code{v3d()} +calls. +The \var{argument} is a list (or tuple) of points. +Each point must be a tuple of coordinates +\code{(\var{x}, \var{y}, \var{z})} or \code{(\var{x}, \var{y})}. +The points may be 2- or 3-dimensional but must all have the +same dimension. +Float and int values may be mixed however. +The points are always converted to 3D double precision points +by assuming \code{\var{z} = 0.0} if necessary (as indicated in the man page), +and for each point +\code{v3d()} +is called. +\end{funcdesc} + +\begin{funcdesc}{nvarray}{} +Equivalent to but faster than a number of +\code{n3f} +and +\code{v3f} +calls. +The argument is an array (list or tuple) of pairs of normals and points. +Each pair is a tuple of a point and a normal for that point. +Each point or normal must be a tuple of coordinates +\code{(\var{x}, \var{y}, \var{z})}. +Three coordinates must be given. +Float and int values may be mixed. +For each pair, +\code{n3f()} +is called for the normal, and then +\code{v3f()} +is called for the point. +\end{funcdesc} + +\begin{funcdesc}{vnarray}{} +Similar to +\code{nvarray()} +but the pairs have the point first and the normal second. +\end{funcdesc} + +\begin{funcdesc}{nurbssurface}{s_k\, t_k\, ctl\, s_ord\, t_ord\, type} +% XXX s_k[], t_k[], ctl[][] +%\itembreak +Defines a nurbs surface. +The dimensions of +\code{\var{ctl}[][]} +are computed as follows: +\code{[len(\var{s_k}) - \var{s_ord}]}, +\code{[len(\var{t_k}) - \var{t_ord}]}. +\end{funcdesc} + +\begin{funcdesc}{nurbscurve}{knots\, ctlpoints\, order\, type} +Defines a nurbs curve. +The length of ctlpoints is +\code{len(\var{knots}) - \var{order}}. +\end{funcdesc} + +\begin{funcdesc}{pwlcurve}{points\, type} +Defines a piecewise-linear curve. +\var{points} +is a list of points. +\var{type} +must be +\code{N_ST}. +\end{funcdesc} + +\begin{funcdesc}{pick}{n} +\funcline{select}{n} +The only argument to these functions specifies the desired size of the +pick or select buffer. +\end{funcdesc} + +\begin{funcdesc}{endpick}{} +\funcline{endselect}{} +These functions have no arguments. +They return a list of integers representing the used part of the +pick/select buffer. +No method is provided to detect buffer overrun. +\end{funcdesc} + +Here is a tiny but complete example GL program in Python: + +\bcode\begin{verbatim} +import gl, GL, time + +def main(): + gl.foreground() + gl.prefposition(500, 900, 500, 900) + w = gl.winopen('CrissCross') + gl.ortho2(0.0, 400.0, 0.0, 400.0) + gl.color(GL.WHITE) + gl.clear() + gl.color(GL.RED) + gl.bgnline() + gl.v2f(0.0, 0.0) + gl.v2f(400.0, 400.0) + gl.endline() + gl.bgnline() + gl.v2f(400.0, 0.0) + gl.v2f(0.0, 400.0) + gl.endline() + time.sleep(5) + +main() +\end{verbatim}\ecode + +\section{Standard Modules \sectcode{GL} and \sectcode{DEVICE}} +\stmodindex{GL} +\stmodindex{DEVICE} + +These modules define the constants used by the Silicon Graphics +{\em Graphics Library} +that C programmers find in the header files +\file{<gl/gl.h>} +and +\file{<gl/device.h>}. +Read the module source files for details. diff --git a/Doc/libgrp.tex b/Doc/libgrp.tex new file mode 100644 index 0000000..1c4dd15 --- /dev/null +++ b/Doc/libgrp.tex @@ -0,0 +1,32 @@ +\section{Built-in Module \sectcode{grp}} + +\bimodindex{grp} +This module provides access to the \UNIX{} group database. +It is available on all \UNIX{} versions. + +Group database entries are reported as 4-tuples containing the +following items from the group database (see \file{<grp.h>}), in order: +\code{gr_name}, +\code{gr_passwd}, +\code{gr_gid}, +\code{gr_mem}. +The gid is an integer, name and password are strings, and the member +list is a list of strings. +(Note that most users are not explicitly listed as members of the +group(s) they are in.) +An exception is raised if the entry asked for cannot be found. + +It defines the following items: + +\renewcommand{\indexsubitem}{(in module grp)} +\begin{funcdesc}{getgrgid}{gid} +Return the group database entry for the given numeric group ID. +\end{funcdesc} + +\begin{funcdesc}{getgrnam}{name} +Return the group database entry for the given group name. +\end{funcdesc} + +\begin{funcdesc}{getgrall}{} +Return a list of all available group entries entries, in arbitrary order. +\end{funcdesc} diff --git a/Doc/libimageop.tex b/Doc/libimageop.tex new file mode 100644 index 0000000..c1cdac4 --- /dev/null +++ b/Doc/libimageop.tex @@ -0,0 +1,87 @@ +\section{Built-in module \sectcode{imageop}} +\bimodindex{imageop} + +The imageop module contains some useful operations on images. +It operates on images consisting of 8 or 32 bit pixels +stored in python strings. This is the same format as used +by \code{gl.lrectwrite} and the \code{imgfile} module. + +The module defines the following variables and functions: + +\renewcommand{\indexsubitem}{(in module imageop)} + +\begin{excdesc}{error} +This exception is raised on all errors, such as unknown number of bits +per pixel, etc. +\end{excdesc} + + +\begin{funcdesc}{crop}{image\, psize\, width\, height\, x0\, y0\, x1\, y1} +This function takes the image in \code{image}, which should by +\code{width} by \code{height} in size and consist of pixels of +\code{psize} bytes, and returns the selected part of that image. \code{X0}, +\code{y0}, \code{x1} and \code{y1} are like the \code{lrectread} +parameters, i.e. the boundary is included in the new image. +The new boundaries need not be inside the picture. Pixels that fall +outside the old image will have their value set to zero. +If \code{x0} is bigger than \code{x1} the new image is mirrored. The +same holds for the y coordinates. +\end{funcdesc} + +\begin{funcdesc}{scale}{image\, psize\, width\, height\, newwidth\, newheight} +This function returns a \code{image} scaled to size \code{newwidth} by +\code{newheight}. No interpolation is done, scaling is done by +simple-minded pixel duplication or removal. Therefore, computer-generated +images or dithered images will not look nice after scaling. +\end{funcdesc} + +\begin{funcdesc}{tovideo}{image\, psize\, width\, height} +This function runs a vertical low-pass filter over an image. It does +so by computing each destination pixel as the average of two +vertically-aligned source pixels. The main use of this routine is to +forestall excessive flicker if the image is displayed on a video +device that uses interlacing, hence the name. +\end{funcdesc} + +\begin{funcdesc}{grey2mono}{image\, width\, height\, threshold} +This function converts a 8-bit deep greyscale image to a 1-bit deep +image by tresholding all the pixels. The resulting image is tightly +packed and is probably only useful as an argument to \code{mono2grey}. +\end{funcdesc} + +\begin{funcdesc}{dither2mono}{image\, width\, height} +This function also converts an 8-bit greyscale image to a 1-bit +monochrome image but it uses a (simple-minded) dithering algorithm. +\end{funcdesc} + +\begin{funcdesc}{mono2grey}{image\, width\, height\, p0\, p1} +This function converts a 1-bit monochrome image to an 8 bit greyscale +or color image. All pixels that are zero-valued on input get value +\code{p0} on output and all one-value input pixels get value \code{p1} +on output. To convert a monochrome black-and-white image to greyscale +pass the values \code{0} and \code{255} respectively. +\end{funcdesc} + +\begin{funcdesc}{grey2grey4}{image\, width\, height} +Convert an 8-bit greyscale image to a 4-bit greyscale image without +dithering. +\end{funcdesc} + +\begin{funcdesc}{grey2grey2}{image\, width\, height} +Convert an 8-bit greyscale image to a 2-bit greyscale image without +dithering. +\end{funcdesc} + +\begin{funcdesc}{dither2grey2}{image\, width\, height} +Convert an 8-bit greyscale image to a 2-bit greyscale image with +dithering. As for \code{dither2mono}, the dithering algorithm is +currently very simple. +\end{funcdesc} + +\begin{funcdesc}{grey42grey}{image\, width\, height} +Convert a 4-bit greyscale image to an 8-bit greyscale image. +\end{funcdesc} + +\begin{funcdesc}{grey22grey}{image\, width\, height} +Convert a 2-bit greyscale image to an 8-bit greyscale image. +\end{funcdesc} diff --git a/Doc/libimgfile.tex b/Doc/libimgfile.tex new file mode 100644 index 0000000..99efaf4 --- /dev/null +++ b/Doc/libimgfile.tex @@ -0,0 +1,63 @@ +\section{Built-in module \sectcode{imgfile}} +\bimodindex{imgfile} + +The imgfile module allows python programs to access SGI imglib image +files (also known as \file{.rgb} files). The module is far from +complete, but is provided anyway since the functionality that there is +is enough in some cases. Currently, colormap files are not supported. + +The module defines the following variables and functions: + +\renewcommand{\indexsubitem}{(in module imgfile)} +\begin{excdesc}{error} +This exception is raised on all errors, such as unsupported file type, etc. +\end{excdesc} + +\begin{funcdesc}{getsizes}{file} +This function returns a tuple \code{(\var{x}, \var{y}, \var{z})} where +\var{x} and \var{y} are the size of the image in pixels and +\var{z} is the number of +bytes per pixel. Only 3 byte RGB pixels and 1 byte greyscale pixels +are currently supported. +\end{funcdesc} + +\begin{funcdesc}{read}{file} +This function reads and decodes the image on the specified file, and +returns it as a python string. The string has either 1 byte greyscale +pixels or 4 byte RGBA pixels. The bottom left pixel is the first in +the string. This format is suitable to pass to \code{gl.lrectwrite}, +for instance. +\end{funcdesc} + +\begin{funcdesc}{readscaled}{file\, x\, y\, filter\, blur} +This function is identical to read but it returns an image that is +scaled to the given \var{x} and \var{y} sizes. If the \var{filter} and +\var{blur} parameters are omitted scaling is done by +simply dropping or duplicating pixels, so the result will be less than +perfect, especially for computer-generated images. + +Alternatively, you can specify a filter to use to smoothen the image +after scaling. The filter forms supported are \code{'impulse'}, +\code{'box'}, \code{'triangle'}, \code{'quadratic'} and +\code{'gaussian'}. If a filter is specified \var{blur} is an optional +parameter specifying the blurriness of the filter. It defaults to \code{1.0}. + +Readscaled makes no +attempt to keep the aspect ratio correct, so that is the users' +responsibility. +\end{funcdesc} + +\begin{funcdesc}{ttob}{flag} +This function sets a global flag which defines whether the scan lines +of the image are read or written from bottom to top (flag is zero, +compatible with SGI GL) or from top to bottom(flag is one, +compatible with X). The default is zero. +\end{funcdesc} + +\begin{funcdesc}{write}{file\, data\, x\, y\, z} +This function writes the RGB or greyscale data in \var{data} to image +file \var{file}. \var{x} and \var{y} give the size of the image, +\var{z} is 1 for 1 byte greyscale images or 3 for RGB images (which are +stored as 4 byte values of which only the lower three bytes are used). +These are the formats returned by \code{gl.lrectread}. +\end{funcdesc} diff --git a/Doc/libintro.tex b/Doc/libintro.tex new file mode 100644 index 0000000..fa591ec --- /dev/null +++ b/Doc/libintro.tex @@ -0,0 +1,17 @@ +\chapter{Introduction} + +The Python library consists of three parts, with different levels of +integration with the interpreter. +Closest to the interpreter are built-in types, exceptions and functions. +Next are built-in modules, which are written in \C{} and linked statically +with the interpreter. +Finally there are standard modules that are implemented entirely in +Python, but are always available. +For efficiency, some standard modules may become built-in modules in +future versions of the interpreter. +\indexii{built-in}{types} +\indexii{built-in}{exceptions} +\indexii{built-in}{functions} +\indexii{built-in}{modules} +\indexii{standard}{modules} +\indexii{\C{}}{language} diff --git a/Doc/libjpeg.tex b/Doc/libjpeg.tex new file mode 100644 index 0000000..d0c1604 --- /dev/null +++ b/Doc/libjpeg.tex @@ -0,0 +1,51 @@ +\section{Built-in Module \sectcode{jpeg}} +\bimodindex{jpeg} + +The module jpeg provides access to the jpeg compressor and +decompressor written by the Independent JPEG Group. JPEG is a (draft?) +standard for compressing pictures. For details on jpeg or the +Indepent JPEG Group software refer to the JPEG standard or the +documentation provided with the software. + +The jpeg module defines these functions: + +\renewcommand{\indexsubitem}{(in module jpeg)} +\begin{funcdesc}{compress}{data\, w\, h\, b} +Treat data as a pixmap of width w and height h, with b bytes per +pixel. The data is in sgi gl order, so the first pixel is in the +lower-left corner. This means that lrectread return data can +immedeately be passed to compress. Currently only 1 byte and 4 byte +pixels are allowed, the former being treaded as greyscale and the +latter as RGB color. Compress returns a string that contains the +compressed picture, in JFIF format. +\end{funcdesc} + +\begin{funcdesc}{decompress}{data} +Data is a string containing a picture in JFIF format. It returns a +tuple +\code{(\var{data}, \var{width}, \var{height}, \var{bytesperpixel})}. +Again, the data is suitable to pass to lrectwrite. +\end{funcdesc} + +\begin{funcdesc}{setoption}{name\, value} +Set various options. Subsequent compress and decompress calls +will use these options. The following options are available: +\begin{description} +\item[\code{'forcegray'}] +Force output to be grayscale, even if input is RGB. + +\item[\code{'quality'}] +Set the quality of the compressed image to a +value between \code{0} and \code{100} (default is \code{75}). Compress only. + +\item[\code{'optimize'}] +Perform huffman table optimization. Takes longer, but results in +smaller compressed image. Compress only. + +\item[\code{'smooth'}] +Perform inter-block smoothing on uncompressed image. Only useful for +low-quality images. Decompress only. +\end{description} +\end{funcdesc} + +Compress and uncompress raise the error jpeg.error in case of errors. diff --git a/Doc/libmac.tex b/Doc/libmac.tex new file mode 100644 index 0000000..77c8956 --- /dev/null +++ b/Doc/libmac.tex @@ -0,0 +1,40 @@ +\chapter{MACINTOSH ONLY} + +The following modules are available on the Apple Macintosh only. + +\section{Built-in module \sectcode{mac}} + +\bimodindex{mac} +This module provides a subset of the operating system dependent +functionality provided by the optional built-in module \code{posix}. +It is best accessed through the more portable standard module +\code{os}. + +The following functions are available in this module: +\code{chdir}, +\code{getcwd}, +\code{listdir}, +\code{mkdir}, +\code{rename}, +\code{rmdir}, +\code{stat}, +\code{sync}, +\code{unlink}, +as well as the exception \code{error}. + +\section{Standard module \sectcode{macpath}} + +\stmodindex{macpath} +This module provides a subset of the pathname manipulation functions +available from the optional standard module \code{posixpath}. It is +best accessed through the more portable standard module \code{os}, as +\code{os.path}. + +The following functions are available in this module: +\code{normcase}, +\code{isabs}, +\code{join}, +\code{split}, +\code{isdir}, +\code{isfile}, +\code{exists}. diff --git a/Doc/libmain.tex b/Doc/libmain.tex new file mode 100644 index 0000000..c730a03 --- /dev/null +++ b/Doc/libmain.tex @@ -0,0 +1,6 @@ +\section{Built-in Module \sectcode{__main__}} + +\bimodindex{__main__} +This module represents the (otherwise anonymous) scope in which the +interpreter's main program executes --- commands read either from +standard input or from a script file. diff --git a/Doc/libmarshal.tex b/Doc/libmarshal.tex new file mode 100644 index 0000000..2b0a400 --- /dev/null +++ b/Doc/libmarshal.tex @@ -0,0 +1,59 @@ +\section{Built-in Module \sectcode{marshal}} + +\bimodindex{marshal} +This module contains functions that can read and write Python +values in a binary format. The format is specific to Python, but +independent of machine architecture issues (e.g., you can write a +Python value to a file on a VAX, transport the file to a Mac, and read +it back there). Details of the format not explained here; read the +source if you're interested.% +\footnote{The name of this module stems from a bit of terminology used +by the designers of Modula-3 (amongst others), who use the term +``marshalling'' for shipping of data around in a self-contained form. +Strictly speaking, ``to marshal'' means to convert some data from +internal to external form (in an RPC buffer for instance) and +``unmarshalling'' for the reverse process.} + + +Not all Python object types are supported; in general, only objects +whose value is independent from a particular invocation of Python can +be written and read by this module. The following types are supported: +\code{None}, integers, long integers, floating point numbers, +strings, tuples, lists, dictionaries, and code objects, where it +should be understood that tuples, lists and dictionaries are only +supported as long as the values contained therein are themselves +supported; and recursive lists and dictionaries should not be written +(they will cause an infinite loop). + +There are functions that read/write files as well as functions +operating on strings. + +The module defines these functions: + +\renewcommand{\indexsubitem}{(in module marshal)} +\begin{funcdesc}{dump}{value\, file} + Write the value on the open file. The value must be a supported + type. The file must be an open file object such as + \code{sys.stdout} or returned by \code{open()} or + \code{posix.popen()}. + + If the value has an unsupported type, garbage is written which cannot + be read back by \code{load()}. +\end{funcdesc} + +\begin{funcdesc}{load}{file} + Read one value from the open file and return it. If no valid value + is read, raise \code{EOFError}, \code{ValueError} or + \code{TypeError}. The file must be an open file object. +\end{funcdesc} + +\begin{funcdesc}{dumps}{value} + Return the string that would be written to a file by + \code{dump(value, file)}. The value must be a supported type. +\end{funcdesc} + +\begin{funcdesc}{loads}{string} + Convert the string to a value. If no valid value is found, raise + \code{EOFError}, \code{ValueError} or \code{TypeError}. Extra + characters in the string are ignored. +\end{funcdesc} diff --git a/Doc/libmath.tex b/Doc/libmath.tex new file mode 100644 index 0000000..62da689 --- /dev/null +++ b/Doc/libmath.tex @@ -0,0 +1,70 @@ +\section{Built-in Module \sectcode{math}} + +\bimodindex{math} +\renewcommand{\indexsubitem}{(in module math)} +This module is always available. +It provides access to the mathematical functions defined by the C +standard. +They are: +\iftexi +\begin{funcdesc}{acos}{x} +\funcline{asin}{x} +\funcline{atan}{x} +\funcline{atan2}{x, y} +\funcline{ceil}{x} +\funcline{cos}{x} +\funcline{cosh}{x} +\funcline{exp}{x} +\funcline{fabs}{x} +\funcline{floor}{x} +\funcline{fmod}{x, y} +\funcline{frexp}{x} +\funcline{ldexp}{x, y} +\funcline{log}{x} +\funcline{log10}{x} +\funcline{modf}{x} +\funcline{pow}{x, y} +\funcline{sin}{x} +\funcline{sinh}{x} +\funcline{sqrt}{x} +\funcline{tan}{x} +\funcline{tanh}{x} +\end{funcdesc} +\else +\code{acos(\varvars{x})}, +\code{asin(\varvars{x})}, +\code{atan(\varvars{x})}, +\code{atan2(\varvars{x\, y})}, +\code{ceil(\varvars{x})}, +\code{cos(\varvars{x})}, +\code{cosh(\varvars{x})}, +\code{exp(\varvars{x})}, +\code{fabs(\varvars{x})}, +\code{floor(\varvars{x})}, +\code{fmod(\varvars{x\, y})}, +\code{frexp(\varvars{x})}, +\code{ldexp(\varvars{x\, y})}, +\code{log(\varvars{x})}, +\code{log10(\varvars{x})}, +\code{modf(\varvars{x})}, +\code{pow(\varvars{x\, y})}, +\code{sin(\varvars{x})}, +\code{sinh(\varvars{x})}, +\code{sqrt(\varvars{x})}, +\code{tan(\varvars{x})}, +\code{tanh(\varvars{x})}. +\fi + +Note that \code{frexp} and \code{modf} have a different call/return +pattern than their C equivalents: they take a single argument and +return a pair of values, rather than returning their second return +value through an `output parameter' (there is no such thing in Python). + +The module also defines two mathematical constants: +\iftexi +\begin{datadesc}{pi} +\dataline{e} +\end{datadesc} +\else +\code{pi} and \code{e}. +\fi diff --git a/Doc/libmd5.tex b/Doc/libmd5.tex new file mode 100644 index 0000000..29e4b31 --- /dev/null +++ b/Doc/libmd5.tex @@ -0,0 +1,53 @@ +\section{Built-in module \sectcode{md5}} +\bimodindex{md5} + +This module implements the interface to RSA's MD5 message digest +algorithm (see also the file \file{md5.doc}). It's use is very +straightforward: use the function \code{md5} to create an +\dfn{md5}-object. You can now ``feed'' this object with arbitrary +strings. + +At any time you can ask the ``final'' digest of the object. Internally, +a temorary copy of the object is made and the digest is computed and +returned. Because of the copy, the digest operation is not desctructive +for the object. Before a more exact description of the use, a small +example: to obtain the digest of the string \code{'abc'}, use \ldots + +\bcode\begin{verbatim} +>>> from md5 import md5 +>>> m = md5() +>>> m.update('abc') +>>> m.digest() +'\220\001P\230<\322O\260\326\226?}(\341\177r' +\end{verbatim}\ecode + +More condensed: + +\bcode\begin{verbatim} +>>> md5('abc').digest() +'\220\001P\230<\322O\260\326\226?}(\341\177r' +\end{verbatim}\ecode + +\renewcommand{\indexsubitem}{(in module md5)} +\begin{funcdesc}{md5}{arg} + Create a new md5-object. \var{arg} is optional: if present, an initial + \code{update} method is called with \var{arg} as argument. +\end{funcdesc} + +An md5-object has the following methods: + +\renewcommand{\indexsubitem}{(md5 method)} +\begin{funcdesc}{update}{arg} + Update this md5-object with the string \var{arg}. +\end{funcdesc} + +\begin{funcdesc}{digest}{} + Return the \dfn{digest} of this md5-object. Internally, a copy is made + and the \C-function \code{MD5Final} is called. Finally the digest is + returned. +\end{funcdesc} + +\begin{funcdesc}{copy}{} + Return a separate copy of this md5-object. An \code{update} to this + copy won't affect the original object. +\end{funcdesc} diff --git a/Doc/libmm.tex b/Doc/libmm.tex new file mode 100644 index 0000000..c17aa55 --- /dev/null +++ b/Doc/libmm.tex @@ -0,0 +1,5 @@ +\chapter{MULTIMEDIA EXTENSIONS} + +The modules described in this chapter implement various algorithms +that are mainly useful for multimedia applications. They are +available at the discretion of the installation. diff --git a/Doc/libmods.tex b/Doc/libmods.tex new file mode 100755 index 0000000..3b902de --- /dev/null +++ b/Doc/libmods.tex @@ -0,0 +1,7 @@ +\chapter{Built-in Modules} + +The modules described in this chapter are built into the interpreter +and considered part of Python's standard environment: they are always +avaialble.\footnote{at least in theory --- it is possible to specify +at build time that one or more of these modules should be excluded, +but it would be antisocial to do so.} diff --git a/Doc/libmpz.tex b/Doc/libmpz.tex new file mode 100644 index 0000000..ea0d1b7 --- /dev/null +++ b/Doc/libmpz.tex @@ -0,0 +1,74 @@ +\section{Built-in module \sectcode{mpz}} +\bimodindex{mpz} + +This module implements the interface to part of the GNU MP library. +This library contains arbitrary precision integer and rational number +arithmetic routines. Only the interfaces to the \emph{integer} +(\samp{mpz_{\rm \ldots}}) routines are provided. If not stated +otherwise, the description in the GNU MP documentation can be applied. + +In general, \dfn{mpz}-numbers can be used just like other standard +Python numbers, e.g. you can use the built-in operators like \code{+}, +\code{*}, etc., as well as the standard built-in functions like +\code{abs}, \code{int}, \ldots, \code{divmod}, \code{pow}. +\strong{Please note:} the {\it bitwise-xor} operation has been implemented as +a bunch of {\it and}s, {\it invert}s and {\it or}s, because the library +lacks an \code{mpz_xor} function, and I didn't need one. + +You create an mpz-number, by calling the function called \code{mpz} (see +below for an excact description). An mpz-number is printed like this: +\code{mpz(\var{value})}. + +\renewcommand{\indexsubitem}{(in module mpz)} +\begin{funcdesc}{mpz}{value} + Create a new mpz-number. \var{value} can be an integer, a long, + another mpz-number, or even a string. If it is a string, it is + interpreted as an array of radix-256 digits, least significant digit + first, resulting in a positive number. See also the \code{binary} + method, described below. +\end{funcdesc} + +A number of {\em extra} functions are defined in this module. Non +mpz-arguments are converted to mpz-values first, and the functions +return mpz-numbers. + +\begin{funcdesc}{powm}{base\, exponent\, modulus} + Return \code{pow(\var{base}, \var{exponent}) \%{} \var{modulus}}. If + \code{\var{exponent} == 0}, return \code{mpz(1)}. In contrast to the + \C-library function, this version can handle negative exponents. +\end{funcdesc} + +\begin{funcdesc}{gcd}{op1\, op2} + Return the greatest common divisor of \var{op1} and \var{op2}. +\end{funcdesc} + +\begin{funcdesc}{gcdext}{a\, b} + Return a tuple \code{(\var{g}, \var{s}, \var{t})}, such that + \code{\var{a}*\var{s} + \var{b}*\var{t} == \var{g} == gcd(\var{a}, \var{b})}. +\end{funcdesc} + +\begin{funcdesc}{sqrt}{op} + Return the square root of \var{op}. The result is rounded towards zero. +\end{funcdesc} + +\begin{funcdesc}{sqrtrem}{op} + Return a tuple \code{(\var{root}, \var{remainder})}, such that + \code{\var{root}*\var{root} + \var{remainder} == \var{op}}. +\end{funcdesc} + +\begin{funcdesc}{divm}{numerator\, denominator\, modulus} + Returns a number \var{q}. such that + \code{\var{q} * \var{denominator} \%{} \var{modulus} == \var{numerator}}. + One could also implement this function in python, using \code{gcdext}. +\end{funcdesc} + +An mpz-number has one method: + +\renewcommand{\indexsubitem}{(mpz method)} +\begin{funcdesc}{binary}{} + Convert this mpz-number to a binary string, where the number has been + stored as an array of radix-256 digits, least significant digit first. + + The mpz-number must have a value greater than- or equal to zero, + otherwise a \code{ValueError}-exception will be raised. +\end{funcdesc} diff --git a/Doc/libobjs.tex b/Doc/libobjs.tex new file mode 100644 index 0000000..49a86fc --- /dev/null +++ b/Doc/libobjs.tex @@ -0,0 +1,19 @@ +\chapter{Built-in Types, Exceptions and Functions} + +\nodename{Built-in Objects} + +Names for built-in exceptions and functions are found in a separate +symbol table. This table is searched last, so local and global +user-defined names can override built-in names. Built-in types have +no names but are created easily by constructing an object of the +desired type (e.g., using a literal) and applying the built-in +function \code{type()} to it. They are described together here for +easy reference.% +\footnote{Some descriptions sorely lack explanations of the exceptions + that may be raised --- this will be fixed in a future version of + this document.} +\indexii{built-in}{types} +\indexii{built-in}{exceptions} +\indexii{built-in}{functions} +\index{symbol table} +\bifuncindex{type} diff --git a/Doc/libos.tex b/Doc/libos.tex new file mode 100644 index 0000000..6763ed4 --- /dev/null +++ b/Doc/libos.tex @@ -0,0 +1,77 @@ +\section{Standard Module \sectcode{os}} + +\stmodindex{os} +This module provides a more portable way of using operating system +(OS) dependent functionality than importing an OS dependent built-in +module like \code{posix}. + +When the optional built-in module \code{posix} is available, this +module exports the same functions and data as \code{posix}; otherwise, +it searches for an OS dependent built-in module like \code{mac} and +exports the same functions and data as found there. The design of all +Python's built-in OS dependen modules is such that as long as the same +functionality is available, it uses the same interface; e.g., the +function \code{os.stat(\var{file})} returns stat info about a \var{file} in a +format compatible with the POSIX interface. + +Extensions peculiar to a particular OS are also available through the +\code{os} module, but using them is of course a threat to portability! + +Note that after the first time \code{os} is imported, there is \emph{no} +performance penalty in using functions from \code{os} instead of +directly from the OS dependent built-in module, so there should be +\emph{no} reason not to use \code{os}! + +In addition to whatever the correct OS dependent module exports, the +following variables and functions are always exported by \code{os}: + +\renewcommand{\indexsubitem}{(in module os)} +\begin{datadesc}{name} +The name of the OS dependent module imported, e.g. \code{'posix'} or +\code{'mac'}. +\end{datadesc} + +\begin{datadesc}{path} +The corresponding OS dependent standard module for pathname +operations, e.g., \code{posixpath} or \code{macpath}. Thus, (given +the proper imports), \code{os.path.split(\var{file})} is equivalent to but +more portable than \code{posixpath.split(\var{file})}. +\end{datadesc} + +\begin{datadesc}{curdir} +The constant string used by the OS to refer to the current directory, +e.g. \code{'.'} for POSIX or \code{':'} for the Mac. +\end{datadesc} + +\begin{datadesc}{pardir} +The constant string used by the OS to refer to the parent directory, +e.g. \code{'..'} for POSIX or \code{'::'} for the Mac. +\end{datadesc} + +\begin{datadesc}{sep} +The character used by the OS to separate pathname components, e.g. +\code{'/'} for POSIX or \code{':'} for the Mac. Note that knowing this +is not sufficient to be able to parse or concatenate pathnames---better +use \code{os.path.split()} and \code{os.path.join()}---but it is +occasionally useful. +\end{datadesc} + +\begin{funcdesc}{execl}{path\, arg0\, arg1\, ...} +This is equivalent to a call to \code{os.execv} with an \var{argv} +of \code{[\var{arg0}, \var{arg1}, ...]}. +\end{funcdesc} + +\begin{funcdesc}{execle}{path\, arg0\, arg1\, ...\, env} +This is equivalent to a call to \code{os.execve} with an \var{argv} +of \code{[\var{arg0}, \var{arg1}, ...]}. +\end{funcdesc} + +\begin{funcdesc}{execlp}{path\, arg0\, arg1\, ...} +This is like \code{execl} but duplicates the shell's actions in +searching for an executable file in a list of directories. The +directory list is obtained from \code{environ['PATH']}. +\end{funcdesc} + +\begin{funcdesc}{execvp}{path\, arg0\, arg1\, ...} +\code{execvp} is for \code{execv} what \code{execlp} is for \code{execl}. +\end{funcdesc} diff --git a/Doc/libpanel.tex b/Doc/libpanel.tex new file mode 100644 index 0000000..b82bf98 --- /dev/null +++ b/Doc/libpanel.tex @@ -0,0 +1,66 @@ +\section{Standard Module \sectcode{panel}} +\stmodindex{panel} + +\strong{Please note:} The FORMS library, to which the \code{fl} module described +above interfaces, is a simpler and more accessible user interface +library for use with GL than the Panel Module (besides also being by a +Dutch author). + +This module should be used instead of the built-in module +\code{pnl} +to interface with the +{\em Panel Library}. + +The module is too large to document here in its entirety. +One interesting function: + +\renewcommand{\indexsubitem}{(in module panel)} +\begin{funcdesc}{defpanellist}{filename} +Parses a panel description file containing S-expressions written by the +{\em Panel Editor} +that accompanies the Panel Library and creates the described panels. +It returns a list of panel objects. +\end{funcdesc} + +\strong{Warning:} +the Python interpreter will dump core if you don't create a GL window +before calling +\code{panel.mkpanel()} +or +\code{panel.defpanellist()}. + +\section{Standard Module \sectcode{panelparser}} +\stmodindex{panelparser} + +This module defines a self-contained parser for S-expressions as output +by the Panel Editor (which is written in Scheme so it can't help writing +S-expressions). +The relevant function is +\code{panelparser.parse_file(\var{file})} +which has a file object (not a filename!) as argument and returns a list +of parsed S-expressions. +Each S-expression is converted into a Python list, with atoms converted +to Python strings and sub-expressions (recursively) to Python lists. +For more details, read the module file. +% XXXXJH should be funcdesc, I think + +\section{Built-in Module \sectcode{pnl}} +\bimodindex{pnl} + +This module provides access to the +{\em Panel Library} +built by NASA Ames (to get it, send e-mail to +{\tt panel-request@nas.nasa.gov}). +All access to it should be done through the standard module +\code{panel}, +which transparantly exports most functions from +\code{pnl} +but redefines +\code{pnl.dopanel()}. + +\strong{Warning:} +the Python interpreter will dump core if you don't create a GL window +before calling +\code{pnl.mkpanel()}. + +The module is too large to document here in its entirety. diff --git a/Doc/libposix.tex b/Doc/libposix.tex new file mode 100644 index 0000000..737ddb1 --- /dev/null +++ b/Doc/libposix.tex @@ -0,0 +1,306 @@ +\section{Built-in Module \sectcode{posix}} + +\bimodindex{posix} + +This module provides access to operating system functionality that is +standardized by the C Standard and the POSIX standard (a thinly diguised +\UNIX{} interface). +It is available in all Python versions except on the Macintosh; +the MS-DOS version does not support certain functions. +The descriptions below are very terse; refer to the +corresponding \UNIX{} manual entry for more information. + +Errors are reported as exceptions; the usual exceptions are given +for type errors, while errors reported by the system calls raise +\code{posix.error}, described below. + +Module \code{posix} defines the following data items: + +\renewcommand{\indexsubitem}{(data in module posix)} +\begin{datadesc}{environ} +A dictionary representing the string environment at the time +the interpreter was started. +(Modifying this dictionary does not affect the string environment of the +interpreter.) +For example, +\code{posix.environ['HOME']} +is the pathname of your home directory, equivalent to +\code{getenv("HOME")} +in C. +\end{datadesc} + +\renewcommand{\indexsubitem}{(exception in module posix)} +\begin{excdesc}{error} +This exception is raised when an POSIX function returns a +POSIX-related error (e.g., not for illegal argument types). Its +string value is \code{'posix.error'}. The accompanying value is a +pair containing the numeric error code from \code{errno} and the +corresponding string, as would be printed by the C function +\code{perror()}. +\end{excdesc} + +It defines the following functions: + +\renewcommand{\indexsubitem}{(in module posix)} +\begin{funcdesc}{chdir}{path} +Change the current working directory to \var{path}. +\end{funcdesc} + +\begin{funcdesc}{chmod}{path\, mode} +Change the mode of \var{path} to the numeric \var{mode}. +\end{funcdesc} + +\begin{funcdesc}{close}{fd} +Close file descriptor \var{fd}. +\end{funcdesc} + +\begin{funcdesc}{dup}{fd} +Return a duplicate of file descriptor \var{fd}. +\end{funcdesc} + +\begin{funcdesc}{dup2}{fd\, fd2} +Duplicate file descriptor \var{fd} to \var{fd2}, closing the latter +first if necessary. Return \code{None}. +\end{funcdesc} + +\begin{funcdesc}{execv}{path\, args} +Execute the executable \var{path} with argument list \var{args}, +replacing the current process (i.e., the Python interpreter). +The argument list may be a tuple or list of strings. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{execve}{path\, args\, env} +Execute the executable \var{path} with argument list \var{args}, +and environment \var{env}, +replacing the current process (i.e., the Python interpreter). +The argument list may be a tuple or list of strings. +The environment must be a dictionary mapping strings to strings. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{_exit}{n} +Exit to the system with status \var{n}, without calling cleanup +handlers, flushing stdio buffers, etc. +(Not on MS-DOS.) + +Note: the standard way to exit is \code{sys.exit(\var{n})}. +\code{posix._exit()} should normally only be used in the child process +after a \code{fork()}. +\end{funcdesc} + +\begin{funcdesc}{fork}{} +Fork a child process. Return 0 in the child, the child's process id +in the parent. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{fstat}{fd} +Return status for file descriptor \var{fd}, like \code{stat()}. +\end{funcdesc} + +\begin{funcdesc}{getcwd}{} +Return a string representing the current working directory. +\end{funcdesc} + +\begin{funcdesc}{getegid}{} +Return the current process's effective group id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{geteuid}{} +Return the current process's effective user id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{getgid}{} +Return the current process's group id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{getpid}{} +Return the current process id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{getppid}{} +Return the parent's process id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{getuid}{} +Return the current process's user id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{kill}{pid\, sig} +Kill the process \var{pid} with signal \var{sig}. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{link}{src\, dst} +Create a hard link pointing to \var{src} named \var{dst}. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{listdir}{path} +Return a list containing the names of the entries in the directory. +The list is in arbitrary order. It includes the special entries +\code{'.'} and \code{'..'} if they are present in the directory. +\end{funcdesc} + +\begin{funcdesc}{lseek}{fd\, pos\, how} +Set the current position of file descriptor \var{fd} to position +\var{pos}, modified by \var{how}: 0 to set the position relative to +the beginning of the file; 1 to set it relative to the current +position; 2 to set it relative to the end of the file. +\end{funcdesc} + +\begin{funcdesc}{lstat}{path} +Like \code{stat()}, but do not follow symbolic links. (On systems +without symbolic links, this is identical to \code{posix.stat}.) +\end{funcdesc} + +\begin{funcdesc}{mkdir}{path\, mode} +Create a directory named \var{path} with numeric mode \var{mode}. +\end{funcdesc} + +\begin{funcdesc}{nice}{increment} +Add \var{incr} to the process' ``niceness''. Return the new niceness. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{open}{file\, flags\, mode} +Open the file \var{file} and set various flags according to +\var{flags} and possibly its mode according to \var{mode}. +Return the file descriptor for the newly opened file. +\end{funcdesc} + +\begin{funcdesc}{pipe}{} +Create a pipe. Return a pair of file descriptors \code{(r, w)} +usable for reading and writing, respectively. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{popen}{command\, mode} +Open a pipe to or from \var{command}. The return value is an open +file object connected to the pipe, which can be read or written +depending on whether \var{mode} is \code{'r'} or \code{'w'}. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{read}{fd\, n} +Read at most \var{n} bytes from file descriptor \var{fd}. +Return a string containing the bytes read. +\end{funcdesc} + +\begin{funcdesc}{readlink}{path} +Return a string representing the path to which the symbolic link +points. (On systems without symbolic links, this always raises +\code{posix.error}.) +\end{funcdesc} + +\begin{funcdesc}{rename}{src\, dst} +Rename the file or directory \var{src} to \var{dst}. +\end{funcdesc} + +\begin{funcdesc}{rmdir}{path} +Remove the directory \var{path}. +\end{funcdesc} + +\begin{funcdesc}{setgid}{gid} +Set the current process's group id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{setuid}{uid} +Set the current process's user id. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{stat}{path} +Perform a {\em stat} system call on the given path. The return value +is a tuple of at least 10 integers giving the most important (and +portable) members of the {\em stat} structure, in the order +\code{st_mode}, +\code{st_ino}, +\code{st_dev}, +\code{st_nlink}, +\code{st_uid}, +\code{st_gid}, +\code{st_size}, +\code{st_atime}, +\code{st_mtime}, +\code{st_ctime}. +More items may be added at the end by some implementations. +(On MS-DOS, some items are filled with dummy values.) + +Note: The standard module \code{stat} defines functions and constants +that are useful for extracting information from a stat structure. +\end{funcdesc} + +\begin{funcdesc}{symlink}{src\, dst} +Create a symbolic link pointing to \var{src} named \var{dst}. (On +systems without symbolic links, this always raises +\code{posix.error}.) +\end{funcdesc} + +\begin{funcdesc}{system}{command} +Execute the command (a string) in a subshell. This is implemented by +calling the Standard C function \code{system()}, and has the same +limitations. Changes to \code{posix.environ}, \code{sys.stdin} etc. are +not reflected in the environment of the executed command. The return +value is the exit status of the process as returned by Standard C +\code{system()}. +\end{funcdesc} + +\begin{funcdesc}{times}{} +Return a 4-tuple of floating point numbers indicating accumulated CPU +times, in seconds. The items are: user time, system time, children's +user time, and children's system time, in that order. See the \UNIX{} +manual page {\it times}(2). (Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{umask}{mask} +Set the current numeric umask and returns the previous umask. +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{uname}{} +Return a 5-tuple containing information identifying the current +operating system. The tuple contains 5 strings: +\code{(\var{sysname}, \var{nodename}, \var{release}, \var{version}, \var{machine})}. +Some systems truncate the nodename to 8 +characters or to the leading component; an better way to get the +hostname is \code{socket.gethostname()}. (Not on MS-DOS, nor on older +\UNIX{} systems.) +\end{funcdesc} + +\begin{funcdesc}{unlink}{path} +Unlink \var{path}. +\end{funcdesc} + +\begin{funcdesc}{utime}{path\, \(atime\, mtime\)} +Set the access and modified time of the file to the given values. +(The second argument is a tuple of two items.) +\end{funcdesc} + +\begin{funcdesc}{wait}{} +Wait for completion of a child process, and return a tuple containing +its pid and exit status indication (encoded as by \UNIX{}). +(Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{waitpid}{pid\, options} +Wait for completion of a child process given by proces id, and return +a tuple containing its pid and exit status indication (encoded as by +\UNIX{}). The semantics of the call are affected by the value of +the integer options, which should be 0 for normal operation. (If the +system does not support waitpid(), this always raises +\code{posix.error}. Not on MS-DOS.) +\end{funcdesc} + +\begin{funcdesc}{write}{fd\, str} +Write the string \var{str} to file descriptor \var{fd}. +Return the number of bytes actually written. +\end{funcdesc} diff --git a/Doc/libppath.tex b/Doc/libppath.tex new file mode 100644 index 0000000..e6430be --- /dev/null +++ b/Doc/libppath.tex @@ -0,0 +1,128 @@ +\section{Standard Module \sectcode{posixpath}} + +\stmodindex{posixpath} +This module implements some useful functions on POSIX pathnames. + +\renewcommand{\indexsubitem}{(in module posixpath)} +\begin{funcdesc}{basename}{p} +Return the base name of pathname +\var{p}. +This is the second half of the pair returned by +\code{posixpath.split(\var{p})}. +\end{funcdesc} + +\begin{funcdesc}{commonprefix}{list} +Return the longest string that is a prefix of all strings in +\var{list}. +If +\var{list} +is empty, return the empty string (\code{''}). +\end{funcdesc} + +\begin{funcdesc}{exists}{p} +Return true if +\var{p} +refers to an existing path. +\end{funcdesc} + +\begin{funcdesc}{expanduser}{p} +Return the argument with an initial component of \samp{\~} or +\samp{\~\var{user}} replaced by that \var{user}'s home directory. An +initial \samp{\~{}} is replaced by the environment variable \code{\${}HOME}; +an initial \samp{\~\var{user}} is looked up in the password directory through +the built-in module \code{pwd}. If the expansion fails, or if the +path does not begin with a tilde, the path is returned unchanged. +\end{funcdesc} + +\begin{funcdesc}{isabs}{p} +Return true if \var{p} is an absolute pathname (begins with a slash). +\end{funcdesc} + +\begin{funcdesc}{isfile}{p} +Return true if \var{p} is an existing regular file. This follows +symbolic links, so both islink() and isfile() can be true for the same +path. +\end{funcdesc} + +\begin{funcdesc}{isdir}{p} +Return true if \var{p} is an existing directory. This follows +symbolic links, so both islink() and isdir() can be true for the same +path. +\end{funcdesc} + +\begin{funcdesc}{islink}{p} +Return true if +\var{p} +refers to a directory entry that is a symbolic link. +Always false if symbolic links are not supported. +\end{funcdesc} + +\begin{funcdesc}{ismount}{p} +Return true if \var{p} is a mount point. (This currently checks whether +\code{\var{p}/..} is on a different device from \var{p} or whether +\code{\var{p}/..} and \var{p} point to the same i-node on the same +device --- is this test correct for all \UNIX{} and POSIX variants?) +\end{funcdesc} + +\begin{funcdesc}{join}{p\, q} +Join the paths +\var{p} +and +\var{q} intelligently: +If +\var{q} +is an absolute path, the return value is +\var{q}. +Otherwise, the concatenation of +\var{p} +and +\var{q} +is returned, with a slash (\code{'/'}) inserted unless +\var{p} +is empty or ends in a slash. +\end{funcdesc} + +\begin{funcdesc}{normcase}{p} +Normalize the case of a pathname. This returns the path unchanged; +however, a similar function in \code{macpath} converts upper case to +lower case. +\end{funcdesc} + +\begin{funcdesc}{samefile}{p\, q} +Return true if both pathname arguments refer to the same file or directory +(as indicated by device number and i-node number). +Raise an exception if a stat call on either pathname fails. +\end{funcdesc} + +\begin{funcdesc}{split}{p} +Split the pathname \var{p} in a pair \code{(\var{head}, \var{tail})}, where +\var{tail} is the last pathname component and \var{head} is +everything leading up to that. If \var{p} ends in a slash (except if +it is the root), the trailing slash is removed and the operation +applied to the result; otherwise, \code{join(\var{head}, \var{tail})} equals +\var{p}. The \var{tail} part never contains a slash. Some boundary +cases: if \var{p} is the root, \var{head} equals \var{p} and +\var{tail} is empty; if \var{p} is empty, both \var{head} and +\var{tail} are empty; if \var{p} contains no slash, \var{head} is +empty and \var{tail} equals \var{p}. +\end{funcdesc} + +\begin{funcdesc}{splitext}{p} +Split the pathname \var{p} in a pair \code{(\var{root}, \var{ext})} +such that \code{\var{root} + \var{ext} == \var{p}}, +the last component of \var{root} contains no periods, +and \var{ext} is empty or begins with a period. +\end{funcdesc} + +\begin{funcdesc}{walk}{p\, visit\, arg} +Calls the function \var{visit} with arguments +\code{(\var{arg}, \var{dirname}, \var{names})} for each directory in the +directory tree rooted at \var{p} (including \var{p} itself, if it is a +directory). The argument \var{dirname} specifies the visited directory, +the argument \var{names} lists the files in the directory (gotten from +\code{posix.listdir(\var{dirname})}). The \var{visit} function may +modify \var{names} to influence the set of directories visited below +\var{dirname}, e.g., to avoid visiting certain parts of the tree. (The +object referred to by \var{names} must be modified in place, using +\code{del} or slice assignment.) +\end{funcdesc} diff --git a/Doc/libpwd.tex b/Doc/libpwd.tex new file mode 100644 index 0000000..7bb30d8 --- /dev/null +++ b/Doc/libpwd.tex @@ -0,0 +1,32 @@ +\section{Built-in Module \sectcode{pwd}} + +\bimodindex{pwd} +This module provides access to the \UNIX{} password database. +It is available on all \UNIX{} versions. + +Password database entries are reported as 7-tuples containing the +following items from the password database (see \file{<pwd.h>}), in order: +\code{pw_name}, +\code{pw_passwd}, +\code{pw_uid}, +\code{pw_gid}, +\code{pw_gecos}, +\code{pw_dir}, +\code{pw_shell}. +The uid and gid items are integers, all others are strings. +An exception is raised if the entry asked for cannot be found. + +It defines the following items: + +\renewcommand{\indexsubitem}{(in module pwd)} +\begin{funcdesc}{getpwuid}{uid} +Return the password database entry for the given numeric user ID. +\end{funcdesc} + +\begin{funcdesc}{getpwnam}{name} +Return the password database entry for the given user name. +\end{funcdesc} + +\begin{funcdesc}{getpwall}{} +Return a list of all available password database entries, in arbitrary order. +\end{funcdesc} diff --git a/Doc/librand.tex b/Doc/librand.tex new file mode 100644 index 0000000..b03ac41 --- /dev/null +++ b/Doc/librand.tex @@ -0,0 +1,21 @@ +\section{Standard Module \sectcode{rand}} + +\stmodindex{rand} This module implements a pseudo-random number +generator with an interface similar to \code{rand()} in C. It defines +the following functions: + +\renewcommand{\indexsubitem}{(in module rand)} +\begin{funcdesc}{rand}{} +Returns an integer random number in the range [0 ... 32768). +\end{funcdesc} + +\begin{funcdesc}{choice}{s} +Returns a random element from the sequence (string, tuple or list) +\var{s}. +\end{funcdesc} + +\begin{funcdesc}{srand}{seed} +Initializes the random number generator with the given integral seed. +When the module is first imported, the random number is initialized with +the current time. +\end{funcdesc} diff --git a/Doc/libregex.tex b/Doc/libregex.tex new file mode 100644 index 0000000..544c204 --- /dev/null +++ b/Doc/libregex.tex @@ -0,0 +1,162 @@ +\section{Built-in Module \sectcode{regex}} + +\bimodindex{regex} +This module provides regular expression matching operations similar to +those found in Emacs. It is always available. + +By default the patterns are Emacs-style regular expressions; there is +a way to change the syntax to match that of several well-known +\UNIX{} utilities. + +This module is 8-bit clean: both patterns and strings may contain null +bytes and characters whose high bit is set. + +\strong{Please note:} There is a little-known fact about Python string literals +which means that you don't usually have to worry about doubling +backslashes, even though they are used to escape special characters in +string literals as well as in regular expressions. This is because +Python doesn't remove backslashes from string literals if they are +followed by an unrecognized escape character. \emph{However}, if you +want to include a literal \dfn{backslash} in a regular expression +represented as a string literal, you have to \emph{quadruple} it. E.g. +to extract LaTeX \samp{\e section\{{\rm \ldots}\}} headers from a document, you can +use this pattern: \code{'\e \e \e\e section\{\e (.*\e )\}'}. + +The module defines these functions, and an exception: + +\renewcommand{\indexsubitem}{(in module regex)} +\begin{funcdesc}{match}{pattern\, string} + Return how many characters at the beginning of \var{string} match + the regular expression \var{pattern}. Return \code{-1} if the + string does not match the pattern (this is different from a + zero-length match!). +\end{funcdesc} + +\begin{funcdesc}{search}{pattern\, string} + Return the first position in \var{string} that matches the regular + expression \var{pattern}. Return -1 if no position in the string + matches the pattern (this is different from a zero-length match + anywhere!). +\end{funcdesc} + +\begin{funcdesc}{compile}{pattern\, translate} + Compile a regular expression pattern into a regular expression + object, which can be used for matching using its \code{match} and + \code{search} methods, described below. The optional + \var{translate}, if present, must be a 256-character string + indicating how characters (both of the pattern and of the strings to + be matched) are translated before comparing them; the \code{i}-th + element of the string gives the translation for the character with + ASCII code \code{i}. + + The sequence + +\bcode\begin{verbatim} +prog = regex.compile(pat) +result = prog.match(str) +\end{verbatim}\ecode + +is equivalent to + +\bcode\begin{verbatim} +result = regex.match(pat, str) +\end{verbatim}\ecode + +but the version using \code{compile()} is more efficient when multiple +regular expressions are used concurrently in a single program. (The +compiled version of the last pattern passed to \code{regex.match()} or +\code{regex.search()} is cached, so programs that use only a single +regular expression at a time needn't worry about compiling regular +expressions.) +\end{funcdesc} + +\begin{funcdesc}{set_syntax}{flags} + Set the syntax to be used by future calls to \code{compile}, + \code{match} and \code{search}. (Already compiled expression objects + are not affected.) The argument is an integer which is the OR of + several flag bits. The return value is the previous value of + the syntax flags. Names for the flags are defined in the standard + module \code{regex_syntax}; read the file \file{regex_syntax.py} for + more information. +\end{funcdesc} + +\begin{excdesc}{error} + Exception raised when a string passed to one of the functions here + is not a valid regular expression (e.g., unmatched parentheses) or + when some other error occurs during compilation or matching. (It is + never an error if a string contains no match for a pattern.) +\end{excdesc} + +\begin{datadesc}{casefold} +A string suitable to pass as \var{translate} argument to +\code{compile} to map all upper case characters to their lowercase +equivalents. +\end{datadesc} + +\noindent +Compiled regular expression objects support these methods: + +\renewcommand{\indexsubitem}{(regex method)} +\begin{funcdesc}{match}{string\, pos} + Return how many characters at the beginning of \var{string} match + the compiled regular expression. Return \code{-1} if the string + does not match the pattern (this is different from a zero-length + match!). + + The optional second parameter \var{pos} gives an index in the string + where the search is to start; it defaults to \code{0}. This is not + completely equivalent to slicing the string; the \code{'\^'} pattern + character matches at the real begin of the string and at positions + just after a newline, not necessarily at the index where the search + is to start. +\end{funcdesc} + +\begin{funcdesc}{search}{string\, pos} + Return the first position in \var{string} that matches the regular + expression \code{pattern}. Return \code{-1} if no position in the + string matches the pattern (this is different from a zero-length + match anywhere!). + + The optional second parameter has the same meaning as for the + \code{match} method. +\end{funcdesc} + +\begin{funcdesc}{group}{index\, index\, ...} +This method is only valid when the last call to the \code{match} +or \code{search} method found a match. It returns one or more +groups of the match. If there is a single \var{index} argument, +the result is a single string; if there are multiple arguments, the +result is a tuple with one item per argument. If the \var{index} is +zero, the corresponding return value is the entire matching string; if +it is in the inclusive range [1..9], it is the string matching the +the corresponding parenthesized group (using the default syntax, +groups are parenthesized using \code{\\(} and \code{\\)}). If no +such group exists, the corresponding result is \code{None}. +\end{funcdesc} + +\noindent +Compiled regular expressions support these data attributes: + +\renewcommand{\indexsubitem}{(regex attribute)} +\begin{datadesc}{regs} +When the last call to the \code{match} or \code{search} method found a +match, this is a tuple of pairs of indices corresponding to the +beginning and end of all parenthesized groups in the pattern. Indices +are relative to the string argument passed to \code{match} or +\code{search}. The 0-th tuple gives the beginning and end or the +whole pattern. When the last match or search failed, this is +\code{None}. +\end{datadesc} + +\begin{datadesc}{last} +When the last call to the \code{match} or \code{search} method found a +match, this is the string argument passed to that method. When the +last match or search failed, this is \code{None}. +\end{datadesc} + +\begin{datadesc}{translate} +This is the value of the \var{translate} argument to +\code{regex.compile} that created this regular expression object. If +the \var{translate} argument was omitted in the \code{regex.compile} +call, this is \code{None}. +\end{datadesc} diff --git a/Doc/libregsub.tex b/Doc/libregsub.tex new file mode 100644 index 0000000..5747e4f --- /dev/null +++ b/Doc/libregsub.tex @@ -0,0 +1,30 @@ +\section{Standard Module \sectcode{regsub}} + +\stmodindex{regsub} +This module defines a number of functions useful for working with +regular expressions (see built-in module \code{regex}). + +\renewcommand{\indexsubitem}{(in module regsub)} +\begin{funcdesc}{sub}{pat\, repl\, str} +Replace the first occurrence of pattern \var{pat} in string +\var{str} by replacement \var{repl}. If the pattern isn't found, +the string is returned unchanged. The pattern may be a string or an +already compiled pattern. The replacement may contain references +\samp{\e \var{digit}} to subpatterns and escaped backslashes. +\end{funcdesc} + +\begin{funcdesc}{gsub}{pat\, repl\, str} +Replace all (non-overlapping) occurrences of pattern \var{pat} in +string \var{str} by replacement \var{repl}. The same rules as for +\code{sub()} apply. Empty matches for the pattern are replaced only +when not adjacent to a previous match, so e.g. +\code{gsub('', '-', 'abc')} returns \code{'-a-b-c-'}. +\end{funcdesc} + +\begin{funcdesc}{split}{str\, pat} +Split the string \var{str} in fields separated by delimiters matching +the pattern \var{pat}, and return a list containing the fields. Only +non-empty matches for the pattern are considered, so e.g. +\code{split('a:b', ':*')} returns \code{['a', 'b']} and +\code{split('abc', '')} returns \code{['abc']}. +\end{funcdesc} diff --git a/Doc/librgbimg.tex b/Doc/librgbimg.tex new file mode 100644 index 0000000..367851b --- /dev/null +++ b/Doc/librgbimg.tex @@ -0,0 +1,45 @@ +\section{Built-in module \sectcode{rgbimg}} +\bimodindex{rgbimg} + +The rgbimg module allows python programs to access SGI imglib image +files (also known as \file{.rgb} files). The module is far from +complete, but is provided anyway since the functionality that there is +is enough in some cases. Currently, colormap files are not supported. + +The module defines the following variables and functions: + +\renewcommand{\indexsubitem}{(in module rgbimg)} +\begin{excdesc}{error} +This exception is raised on all errors, such as unsupported file type, etc. +\end{excdesc} + +\begin{funcdesc}{sizeofimage}{file} +This function returns a tuple \code{(\var{x}, \var{y})} where +\var{x} and \var{y} are the size of the image in pixels. +Only 4 byte RGBA pixels, 3 byte RGB pixels, and 1 byte greyscale pixels +are currently supported. +\end{funcdesc} + +\begin{funcdesc}{longimagedata}{file} +This function reads and decodes the image on the specified file, and +returns it as a python string. The string has 4 byte RGBA pixels. +The bottom left pixel is the first in +the string. This format is suitable to pass to \code{gl.lrectwrite}, +for instance. +\end{funcdesc} + +\begin{funcdesc}{longstoimage}{data\, x\, y\, z\, file} +This function writes the RGBA data in \var{data} to image +file \var{file}. \var{x} and \var{y} give the size of the image. +\var{z} is 1 if the saved image should be 1 byte greyscale, 3 if the +saved image should be 3 byte RGB data, or 4 if the saved images should +be 4 byte RGBA data. The input data always contains 4 bytes per pixel. +These are the formats returned by \code{gl.lrectread}. +\end{funcdesc} + +\begin{funcdesc}{ttob}{flag} +This function sets a global flag which defines whether the scan lines +of the image are read or written from bottom to top (flag is zero, +compatible with SGI GL) or from top to bottom(flag is one, +compatible with X). The default is zero. +\end{funcdesc} diff --git a/Doc/librotor.tex b/Doc/librotor.tex new file mode 100644 index 0000000..657d2ac --- /dev/null +++ b/Doc/librotor.tex @@ -0,0 +1,6 @@ +\section{Built-in module \sectcode{rotor}} +\bimodindex{rotor} + +This module implements a rotor-based encryption algorithm, contributed +by Lance Ellinghouse. Currently no further documentation is available +--- you are kindly advised to read the source... diff --git a/Doc/libselect.tex b/Doc/libselect.tex new file mode 100644 index 0000000..d47face --- /dev/null +++ b/Doc/libselect.tex @@ -0,0 +1,42 @@ +\section{Built-in module \sectcode{select}} +\bimodindex{select} + +This module provides access to the function \code{select} available in +most \UNIX{} versions. It defines the following: + +\renewcommand{\indexsubitem}{(in module select)} +\begin{excdesc}{error} +The exception raised when an error occurs. The accompanying value is +a pair containing the numeric error code from \code{errno} and the +corresponding string, as would be printed by the C function +\code{perror()}. +\end{excdesc} + +\begin{funcdesc}{select}{iwtd\, owtd\, ewtd\, timeout} +This is a straightforward interface to the \UNIX{} \code{select()} +system call. The first three arguments are lists of `waitable +objects': either integers representing \UNIX{} file descriptors or +objects with a parameterless method named \code{fileno()} returning +such an integer. The three lists of waitable objects are for input, +output and `exceptional conditions', respectively. Empty lists are +allowed. The optional last argument is a time-out specified as a +floating point number in seconds. When the \var{timeout} argument +is omitted the function blocks until at least one file descriptor is +ready. A time-out value of zero specifies a poll and never blocks. + +The return value is a triple of lists of objects that are ready: +subsets of the first three arguments. When the time-out is reached +without a file descriptor becoming ready, three empty lists are +returned. + +Amongst the acceptable object types in the lists are Python file +objects (e.g. \code{sys.stdin}, or objects returned by \code{open()} +or \code{posix.popen()}), socket objects returned by +\code{socket.socket()}, and the module \code{stdwin} which happens to +define a function \code{fileno()} for just this purpose. You may +also define a \dfn{wrapper} class yourself, as long as it has an +appropriate \code{fileno()} method (that really returns a \UNIX{} file +descriptor, not just a random integer). +\end{funcdesc} +\ttindex{socket} +\ttindex{stdwin} diff --git a/Doc/libsgi.tex b/Doc/libsgi.tex new file mode 100644 index 0000000..f8c87b0 --- /dev/null +++ b/Doc/libsgi.tex @@ -0,0 +1,4 @@ +\chapter{SGI IRIX ONLY} + +The modules described in this chapter provide interfaces to features +that are unique to SGI's IRIX operating system (versions 4 and 5). diff --git a/Doc/libsocket.tex b/Doc/libsocket.tex new file mode 100644 index 0000000..a5d5a17 --- /dev/null +++ b/Doc/libsocket.tex @@ -0,0 +1,265 @@ +\section{Built-in Module \sectcode{socket}} + +\bimodindex{socket} +This module provides access to the BSD {\em socket} interface. +It is available on \UNIX{} systems that support this interface. + +For an introduction to socket programming (in C), see the following +papers: \emph{An Introductory 4.3BSD Interprocess Communication +Tutorial}, by Stuart Sechrest and \emph{An Advanced 4.3BSD Interprocess +Communication Tutorial}, by Samuel J. Leffler et al, both in the +\UNIX{} Programmer's Manual, Supplementary Documents 1 (sections PS1:7 +and PS1:8). The \UNIX{} manual pages for the various socket-related +system calls also a valuable source of information on the details of +socket semantics. + +The Python interface is a straightforward transliteration of the +\UNIX{} system call and library interface for sockets to Python's +object-oriented style: the \code{socket()} function returns a +\dfn{socket object} whose methods implement the various socket system +calls. Parameter types are somewhat higer-level than in the C +interface: as with \code{read()} and \code{write()} operations on Python +files, buffer allocation on receive operations is automatic, and +buffer length is implicit on send operations. + +Socket addresses are represented as a single string for the +\code{AF_UNIX} address family and as a pair +\code{(\var{host}, \var{port})} for the \code{AF_INET} address family, +where \var{host} is a string representing +either a hostname in Internet domain notation like +\code{'daring.cwi.nl'} or an IP address like \code{'100.50.200.5'}, +and \var{port} is an integral port number. Other address families are +currently not supported. The address format required by a particular +socket object is automatically selected based on the address family +specified when the socket object was created. + +All errors raise exceptions. The normal exceptions for invalid +argument types and out-of-memory conditions can be raised; errors +related to socket or address semantics raise the error \code{socket.error}. + +Non-blocking and asynchronous mode are not supported; see module +\code{select} for a way to do non-blocking socket I/O. + +The module \code{socket} exports the following constants and functions: + +\renewcommand{\indexsubitem}{(in module socket)} +\begin{excdesc}{error} +This exception is raised for socket- or address-related errors. +The accompanying value is either a string telling what went wrong or a +pair \code{(\var{errno}, \var{string})} +representing an error returned by a system +call, similar to the value accompanying \code{posix.error}. +\end{excdesc} + +\begin{datadesc}{AF_UNIX} +\dataline{AF_INET} +These constants represent the address (and protocol) families, +used for the first argument to \code{socket()}. +\end{datadesc} + +\begin{datadesc}{SOCK_STREAM} +\dataline{SOCK_DGRAM} +These constants represent the socket types, +used for the second argument to \code{socket()}. +(There are other types, but only \code{SOCK_STREAM} and +\code{SOCK_DGRAM} appear to be generally useful.) +\end{datadesc} + +\begin{funcdesc}{gethostbyname}{hostname} +Translate a host name to IP address format. The IP address is +returned as a string, e.g., \code{'100.50.200.5'}. If the host name +is an IP address itself it is returned unchanged. +\end{funcdesc} + +\begin{funcdesc}{getservbyname}{servicename\, protocolname} +Translate an Internet service name and protocol name to a port number +for that service. The protocol name should be \code{'tcp'} or +\code{'udp'}. +\end{funcdesc} + +\begin{funcdesc}{socket}{family\, type\, proto} +Create a new socket using the given address family, socket type and +protocol number. The address family should be \code{AF_INET} or +\code{AF_UNIX}. The socket type should be \code{SOCK_STREAM}, +\code{SOCK_DGRAM} or perhaps one of the other \samp{SOCK_} constants. +The protocol number is usually zero and may be omitted in that case. +\end{funcdesc} + +\begin{funcdesc}{fromfd}{fd\, family\, type\, proto} +Build a socket object from an existing file descriptor (an integer as +returned by a file object's \code{fileno} method). Address family, +socket type and protocol number are as for the \code{socket} function +above. The file descriptor should refer to a socket, but this is not +checked --- subsequent operations on the object may fail if the file +descriptor is invalid. This function is rarely needed, but can be +used to get or set socket options on a socket passed to a program as +standard input or output (e.g. a server started by the \UNIX{} inet +daemon). +\end{funcdesc} + +\subsection{Socket Object Methods} + +\noindent +Socket objects have the following methods. Except for +\code{makefile()} these correspond to \UNIX{} system calls applicable to +sockets. + +\renewcommand{\indexsubitem}{(socket method)} +\begin{funcdesc}{accept}{} +Accept a connection. +The socket must be bound to an address and listening for connections. +The return value is a pair \code{(\var{conn}, \var{address})} +where \var{conn} is a \emph{new} socket object usable to send and +receive data on the connection, and \var{address} is the address bound +to the socket on the other end of the connection. +\end{funcdesc} + +\begin{funcdesc}{avail}{} +Return true (nonzero) if at least one byte of data can be received +from the socket without blocking, false (zero) if not. There is no +indication of how many bytes are available. (\strong{This function is +obsolete --- see module \code{select} for a more general solution.}) +\end{funcdesc} + +\begin{funcdesc}{bind}{address} +Bind the socket to an address. The socket must not already be bound. +\end{funcdesc} + +\begin{funcdesc}{close}{} +Close the socket. All future operations on the socket object will fail. +The remote end will receive no more data (after queued data is flushed). +Sockets are automatically closed when they are garbage-collected. +\end{funcdesc} + +\begin{funcdesc}{connect}{address} +Connect to a remote socket. +\end{funcdesc} + +\begin{funcdesc}{fileno}{} +Return the socket's file descriptor (a small integer). This is useful +with \code{select}. +\end{funcdesc} + +\begin{funcdesc}{getpeername}{} +Return the remote address to which the socket is connected. This is +useful to find out the port number of a remote IP socket, for instance. +\end{funcdesc} + +\begin{funcdesc}{getsockname}{} +Return the socket's own address. This is useful to find out the port +number of an IP socket, for instance. +\end{funcdesc} + +\begin{funcdesc}{getsockopt}{level\, optname\, buflen} +Return the value of the given socket option (see the \UNIX{} man page +{\it getsockopt}(2)). The needed symbolic constants are defined in module +SOCKET. If the optional third argument is absent, an integer option +is assumed and its integer value is returned by the function. If +\var{buflen} is present, it specifies the maximum length of the buffer used +to receive the option in, and this buffer is returned as a string. +It's up to the caller to decode the contents of the buffer (see the +optional built-in module \code{struct} for a way to decode C structures +encoded as strings). +\end{funcdesc} + +\begin{funcdesc}{listen}{backlog} +Listen for connections made to the socket. +The argument (in the range 0-5) specifies the maximum number of +queued connections. +\end{funcdesc} + +\begin{funcdesc}{makefile}{mode} +Return a \dfn{file object} associated with the socket. +(File objects were described earlier under Built-in Types.) +The file object references a \code{dup}ped version of the socket file +descriptor, so the file object and socket object may be closed or +garbage-collected independently. +\end{funcdesc} + +\begin{funcdesc}{recv}{bufsize\, flags} +Receive data from the socket. The return value is a string representing +the data received. The maximum amount of data to be received +at once is specified by \var{bufsize}. See the \UNIX{} manual page +for the meaning of the optional argument \var{flags}; it defaults to +zero. +\end{funcdesc} + +\begin{funcdesc}{recvfrom}{bufsize} +Receive data from the socket. The return value is a pair +\code{(\var{string}, \var{address})} where \var{string} is a string +representing the data received and \var{address} is the address of the +socket sending the data. +\end{funcdesc} + +\begin{funcdesc}{send}{string} +Send data to the socket. The socket must be connected to a remote +socket. +\end{funcdesc} + +\begin{funcdesc}{sendto}{string\, address} +Send data to the socket. The socket should not be connected to a +remote socket, since the destination socket is specified by +\code{address}. +\end{funcdesc} + +\begin{funcdesc}{setsockopt}{level\, optname\, value} +Set the value of the given socket option (see the \UNIX{} man page +{\it setsockopt}(2)). The needed symbolic constants are defined in module +\code{SOCKET}. The value can be an integer or a string representing a +buffer. In the latter case it is up to the caller to ensure that the +string contains the proper bits (see the optional built-in module +\code{struct} for a way to encode C structures as strings). +\end{funcdesc} + +\begin{funcdesc}{shutdown}{how} +Shut down one or both halves of the connection. If \var{how} is \code{0}, +further receives are disallowed. If \var{how} is \code{1}, further sends are +disallowed. If \var{how} is \code{2}, further sends and receives are +disallowed. +\end{funcdesc} + +Note that there are no methods \code{read()} or \code{write()}; use +\code{recv()} and \code{send()} without \var{flags} argument instead. + +\subsection{Example} +\nodename{Socket Example} + +Here are two minimal example programs using the TCP/IP protocol: a +server that echoes all data that it receives back (servicing only one +client), and a client using it. Note that a server must perform the +sequence \code{socket}, \code{bind}, \code{listen}, \code{accept} +(possibly repeating the \code{accept} to service more than one client), +while a client only needs the sequence \code{socket}, \code{connect}. +Also note that the server does not \code{send}/\code{receive} on the +socket it is listening on but on the new socket returned by +\code{accept}. + +\bcode\begin{verbatim} +# Echo server program +from socket import * +HOST = '' # Symbolic name meaning the local host +PORT = 50007 # Arbitrary non-privileged server +s = socket(AF_INET, SOCK_STREAM) +s.bind(HOST, PORT) +s.listen(0) +conn, addr = s.accept() +print 'Connected by', addr +while 1: + data = conn.recv(1024) + if not data: break + conn.send(data) +conn.close() +\end{verbatim}\ecode + +\bcode\begin{verbatim} +# Echo client program +from socket import * +HOST = 'daring.cwi.nl' # The remote host +PORT = 50007 # The same port as used by the server +s = socket(AF_INET, SOCK_STREAM) +s.connect(HOST, PORT) +s.send('Hello, world') +data = s.recv(1024) +s.close() +print 'Received', `data` +\end{verbatim}\ecode diff --git a/Doc/libstd.tex b/Doc/libstd.tex new file mode 100755 index 0000000..e642a8d --- /dev/null +++ b/Doc/libstd.tex @@ -0,0 +1,7 @@ +\chapter{Standard Modules} + +The modules described in this chapter are implemented in Python, but +are considered to be a part of Python's standard environment: they are +always available.\footnote{at least in theory --- it is possible to +botch the library installation or to sabotage the module search path +so that these modules cannot be found.} diff --git a/Doc/libstdwin.tex b/Doc/libstdwin.tex new file mode 100644 index 0000000..12771c9 --- /dev/null +++ b/Doc/libstdwin.tex @@ -0,0 +1,893 @@ +\chapter{STDWIN ONLY} + +\section{Built-in Module \sectcode{stdwin}} +\bimodindex{stdwin} + +This module defines several new object types and functions that +provide access to the functionality of the Standard Window System +Interface, STDWIN [CWI report CR-R8817]. +It is available on systems to which STDWIN has been ported (which is +most systems). +It is only available if the \code{DISPLAY} environment variable is set +or an explicit \samp{-display \var{displayname}} argument is passed to +the interpreter. + +Functions have names that usually resemble their C STDWIN counterparts +with the initial `w' dropped. +Points are represented by pairs of integers; rectangles +by pairs of points. +For a complete description of STDWIN please refer to the documentation +of STDWIN for C programmers (aforementioned CWI report). + +\subsection{Functions Defined in Module \sectcode{stdwin}} + +The following functions are defined in the \code{stdwin} module: + +\renewcommand{\indexsubitem}{(in module stdwin)} +\begin{funcdesc}{open}{title} +Open a new window whose initial title is given by the string argument. +Return a window object; window object methods are described below.% +\footnote{The Python version of STDWIN does not support draw procedures; all + drawing requests are reported as draw events.} +\end{funcdesc} + +\begin{funcdesc}{getevent}{} +Wait for and return the next event. +An event is returned as a triple: the first element is the event +type, a small integer; the second element is the window object to which +the event applies, or +\code{None} +if it applies to no window in particular; +the third element is type-dependent. +Names for event types and command codes are defined in the standard +module +\code{stdwinevent}. +\end{funcdesc} + +\begin{funcdesc}{pollevent}{} +Return the next event, if one is immediately available. +If no event is available, return \code{()}. +\end{funcdesc} + +\begin{funcdesc}{getactive}{} +Return the window that is currently active, or \code{None} if no +window is currently active. (This can be emulated by monitoring +WE_ACTIVATE and WE_DEACTIVATE events.) +\end{funcdesc} + +\begin{funcdesc}{listfontnames}{pattern} +Return the list of font names in the system that match the pattern (a +string). The pattern should normally be \code{'*'}; returns all +available fonts. If the underlying window system is X11, other +patterns follow the standard X11 font selection syntax (as used e.g. +in resource definitions), i.e. the wildcard character \code{'*'} +matches any sequence of characters (including none) and \code{'?'} +matches any single character. +\end{funcdesc} + +\begin{funcdesc}{setdefscrollbars}{hflag\, vflag} +Set the flags controlling whether subsequently opened windows will +have horizontal and/or vertical scroll bars. +\end{funcdesc} + +\begin{funcdesc}{setdefwinpos}{h\, v} +Set the default window position for windows opened subsequently. +\end{funcdesc} + +\begin{funcdesc}{setdefwinsize}{width\, height} +Set the default window size for windows opened subsequently. +\end{funcdesc} + +\begin{funcdesc}{getdefscrollbars}{} +Return the flags controlling whether subsequently opened windows will +have horizontal and/or vertical scroll bars. +\end{funcdesc} + +\begin{funcdesc}{getdefwinpos}{} +Return the default window position for windows opened subsequently. +\end{funcdesc} + +\begin{funcdesc}{getdefwinsize}{} +Return the default window size for windows opened subsequently. +\end{funcdesc} + +\begin{funcdesc}{getscrsize}{} +Return the screen size in pixels. +\end{funcdesc} + +\begin{funcdesc}{getscrmm}{} +Return the screen size in millimeters. +\end{funcdesc} + +\begin{funcdesc}{fetchcolor}{colorname} +Return the pixel value corresponding to the given color name. +Return the default foreground color for unknown color names. +Hint: the following code tests wheter you are on a machine that +supports more than two colors: +\bcode\begin{verbatim} +if stdwin.fetchcolor('black') <> \ + stdwin.fetchcolor('red') <> \ + stdwin.fetchcolor('white'): + print 'color machine' +else: + print 'monochrome machine' +\end{verbatim}\ecode +\end{funcdesc} + +\begin{funcdesc}{setfgcolor}{pixel} +Set the default foreground color. +This will become the default foreground color of windows opened +subsequently, including dialogs. +\end{funcdesc} + +\begin{funcdesc}{setbgcolor}{pixel} +Set the default background color. +This will become the default background color of windows opened +subsequently, including dialogs. +\end{funcdesc} + +\begin{funcdesc}{getfgcolor}{} +Return the pixel value of the current default foreground color. +\end{funcdesc} + +\begin{funcdesc}{getbgcolor}{} +Return the pixel value of the current default background color. +\end{funcdesc} + +\begin{funcdesc}{setfont}{fontname} +Set the current default font. +This will become the default font for windows opened subsequently, +and is also used by the text measuring functions \code{textwidth}, +\code{textbreak}, \code{lineheight} and \code{baseline} below. +This accepts two more optional parameters, size and style: +Size is the font size (in `points'). +Style is a single character specifying the style, as follows: +\code{'b'} = bold, +\code{'i'} = italic, +\code{'o'} = bold + italic, +\code{'u'} = underline; +default style is roman. +Size and style are ignored under X11 but used on the Macintosh. +(Sorry for all this complexity --- a more uniform interface is being designed.) +\end{funcdesc} + +\begin{funcdesc}{menucreate}{title} +Create a menu object referring to a global menu (a menu that appears in +all windows). +Methods of menu objects are described below. +Note: normally, menus are created locally; see the window method +\code{menucreate} below. +\strong{Warning:} the menu only appears in a window as long as the object +returned by this call exists. +\end{funcdesc} + +\begin{funcdesc}{newbitmap}{width\, height} +Create a new bitmap object of the given dimensions. +Methods of bitmap objects are described below. +\end{funcdesc} + +\begin{funcdesc}{fleep}{} +Cause a beep or bell (or perhaps a `visual bell' or flash, hence the +name). +\end{funcdesc} + +\begin{funcdesc}{message}{string} +Display a dialog box containing the string. +The user must click OK before the function returns. +\end{funcdesc} + +\begin{funcdesc}{askync}{prompt\, default} +Display a dialog that prompts the user to answer a question with yes or +no. +Return 0 for no, 1 for yes. +If the user hits the Return key, the default (which must be 0 or 1) is +returned. +If the user cancels the dialog, the +\code{KeyboardInterrupt} +exception is raised. +\end{funcdesc} + +\begin{funcdesc}{askstr}{prompt\, default} +Display a dialog that prompts the user for a string. +If the user hits the Return key, the default string is returned. +If the user cancels the dialog, the +\code{KeyboardInterrupt} +exception is raised. +\end{funcdesc} + +\begin{funcdesc}{askfile}{prompt\, default\, new} +Ask the user to specify a filename. +If +\var{new} +is zero it must be an existing file; otherwise, it must be a new file. +If the user cancels the dialog, the +\code{KeyboardInterrupt} +exception is raised. +\end{funcdesc} + +\begin{funcdesc}{setcutbuffer}{i\, string} +Store the string in the system's cut buffer number +\var{i}, +where it can be found (for pasting) by other applications. +On X11, there are 8 cut buffers (numbered 0..7). +Cut buffer number 0 is the `clipboard' on the Macintosh. +\end{funcdesc} + +\begin{funcdesc}{getcutbuffer}{i} +Return the contents of the system's cut buffer number +\var{i}. +\end{funcdesc} + +\begin{funcdesc}{rotatecutbuffers}{n} +On X11, rotate the 8 cut buffers by +\var{n}. +Ignored on the Macintosh. +\end{funcdesc} + +\begin{funcdesc}{getselection}{i} +Return X11 selection number +\var{i.} +Selections are not cut buffers. +Selection numbers are defined in module +\code{stdwinevents}. +Selection \code{WS_PRIMARY} is the +\dfn{primary} +selection (used by +xterm, +for instance); +selection \code{WS_SECONDARY} is the +\dfn{secondary} +selection; selection \code{WS_CLIPBOARD} is the +\dfn{clipboard} +selection (used by +xclipboard). +On the Macintosh, this always returns an empty string. +\end{funcdesc} + +\begin{funcdesc}{resetselection}{i} +Reset selection number +\var{i}, +if this process owns it. +(See window method +\code{setselection()}). +\end{funcdesc} + +\begin{funcdesc}{baseline}{} +Return the baseline of the current font (defined by STDWIN as the +vertical distance between the baseline and the top of the +characters). +\end{funcdesc} + +\begin{funcdesc}{lineheight}{} +Return the total line height of the current font. +\end{funcdesc} + +\begin{funcdesc}{textbreak}{str\, width} +Return the number of characters of the string that fit into a space of +\var{width} +bits wide when drawn in the curent font. +\end{funcdesc} + +\begin{funcdesc}{textwidth}{str} +Return the width in bits of the string when drawn in the current font. +\end{funcdesc} + +\begin{funcdesc}{connectionnumber}{} +\funcline{fileno}{} +(X11 under \UNIX{} only) Return the ``connection number'' used by the +underlying X11 implementation. (This is normally the file number of +the socket.) Both functions return the same value; +\code{connectionnumber()} is named after the corresponding function in +X11 and STDWIN, while \code{fileno()} makes it possible to use the +\code{stdwin} module as a ``file'' object parameter to +\code{select.select()}. Note that if \code{select()} implies that +input is possible on \code{stdwin}, this does not guarantee that an +event is ready --- it may be some internal communication going on +between the X server and the client library. Thus, you should call +\code{stdwin.pollevent()} until it returns \code{None} to check for +events if you don't want your program to block. Because of internal +buffering in X11, it is also possible that \code{stdwin.pollevent()} +returns an event while \code{select()} does not find \code{stdwin} to +be ready, so you should read any pending events with +\code{stdwin.pollevent()} until it returns \code{None} before entering +a blocking \code{select()} call. +\ttindex{select} +\end{funcdesc} + +\subsection{Window Object Methods} + +Window objects are created by \code{stdwin.open()}. They are closed +by their \code{close()} method or when they are garbage-collected. +Window objects have the following methods: + +\renewcommand{\indexsubitem}{(window method)} + +\begin{funcdesc}{begindrawing}{} +Return a drawing object, whose methods (described below) allow drawing +in the window. +\end{funcdesc} + +\begin{funcdesc}{change}{rect} +Invalidate the given rectangle; this may cause a draw event. +\end{funcdesc} + +\begin{funcdesc}{gettitle}{} +Returns the window's title string. +\end{funcdesc} + +\begin{funcdesc}{getdocsize}{} +\begin{sloppypar} +Return a pair of integers giving the size of the document as set by +\code{setdocsize()}. +\end{sloppypar} +\end{funcdesc} + +\begin{funcdesc}{getorigin}{} +Return a pair of integers giving the origin of the window with respect +to the document. +\end{funcdesc} + +\begin{funcdesc}{gettitle}{} +Return the window's title string. +\end{funcdesc} + +\begin{funcdesc}{getwinsize}{} +Return a pair of integers giving the size of the window. +\end{funcdesc} + +\begin{funcdesc}{getwinpos}{} +Return a pair of integers giving the position of the window's upper +left corner (relative to the upper left corner of the screen). +\end{funcdesc} + +\begin{funcdesc}{menucreate}{title} +Create a menu object referring to a local menu (a menu that appears +only in this window). +Methods of menu objects are described below. +{\bf Warning:} the menu only appears as long as the object +returned by this call exists. +\end{funcdesc} + +\begin{funcdesc}{scroll}{rect\, point} +Scroll the given rectangle by the vector given by the point. +\end{funcdesc} + +\begin{funcdesc}{setdocsize}{point} +Set the size of the drawing document. +\end{funcdesc} + +\begin{funcdesc}{setorigin}{point} +Move the origin of the window (its upper left corner) +to the given point in the document. +\end{funcdesc} + +\begin{funcdesc}{setselection}{i\, str} +Attempt to set X11 selection number +\var{i} +to the string +\var{str}. +(See stdwin method +\code{getselection()} +for the meaning of +\var{i}.) +Return true if it succeeds. +If succeeds, the window ``owns'' the selection until +(a) another applications takes ownership of the selection; or +(b) the window is deleted; or +(c) the application clears ownership by calling +\code{stdwin.resetselection(\var{i})}. +When another application takes ownership of the selection, a +\code{WE_LOST_SEL} +event is received for no particular window and with the selection number +as detail. +Ignored on the Macintosh. +\end{funcdesc} + +\begin{funcdesc}{settimer}{dsecs} +Schedule a timer event for the window in +\code{\var{dsecs}/10} +seconds. +\end{funcdesc} + +\begin{funcdesc}{settitle}{title} +Set the window's title string. +\end{funcdesc} + +\begin{funcdesc}{setwincursor}{name} +\begin{sloppypar} +Set the window cursor to a cursor of the given name. +It raises the +\code{RuntimeError} +exception if no cursor of the given name exists. +Suitable names include +\code{'ibeam'}, +\code{'arrow'}, +\code{'cross'}, +\code{'watch'} +and +\code{'plus'}. +On X11, there are many more (see +\file{<X11/cursorfont.h>}). +\end{sloppypar} +\end{funcdesc} + +\begin{funcdesc}{setwinpos}{h\, v} +Set the the position of the window's upper left corner (relative to +the upper left corner of the screen). +\end{funcdesc} + +\begin{funcdesc}{setwinsize}{width\, height} +Set the window's size. +\end{funcdesc} + +\begin{funcdesc}{show}{rect} +Try to ensure that the given rectangle of the document is visible in +the window. +\end{funcdesc} + +\begin{funcdesc}{textcreate}{rect} +Create a text-edit object in the document at the given rectangle. +Methods of text-edit objects are described below. +\end{funcdesc} + +\begin{funcdesc}{setactive}{} +Attempt to make this window the active window. If successful, this +will generate a WE_ACTIVATE event (and a WE_DEACTIVATE event in case +another window in this application became inactive). +\end{funcdesc} + +\begin{funcdesc}{close}{} +Discard the window object. It should not be used again. +\end{funcdesc} + +\subsection{Drawing Object Methods} + +Drawing objects are created exclusively by the window method +\code{begindrawing()}. +Only one drawing object can exist at any given time; the drawing object +must be deleted to finish drawing. +No drawing object may exist when +\code{stdwin.getevent()} +is called. +Drawing objects have the following methods: + +\renewcommand{\indexsubitem}{(drawing method)} + +\begin{funcdesc}{box}{rect} +Draw a box just inside a rectangle. +\end{funcdesc} + +\begin{funcdesc}{circle}{center\, radius} +Draw a circle with given center point and radius. +\end{funcdesc} + +\begin{funcdesc}{elarc}{center\, \(rh\, rv\)\, \(a1\, a2\)} +Draw an elliptical arc with given center point. +\code{(\var{rh}, \var{rv})} +gives the half sizes of the horizontal and vertical radii. +\code{(\var{a1}, \var{a2})} +gives the angles (in degrees) of the begin and end points. +0 degrees is at 3 o'clock, 90 degrees is at 12 o'clock. +\end{funcdesc} + +\begin{funcdesc}{erase}{rect} +Erase a rectangle. +\end{funcdesc} + +\begin{funcdesc}{fillcircle}{center\, radius} +Draw a filled circle with given center point and radius. +\end{funcdesc} + +\begin{funcdesc}{fillelarc}{center\, \(rh\, rv\)\, \(a1\, a2\)} +Draw a filled elliptical arc; arguments as for \code{elarc}. +\end{funcdesc} + +\begin{funcdesc}{fillpoly}{points} +Draw a filled polygon given by a list (or tuple) of points. +\end{funcdesc} + +\begin{funcdesc}{invert}{rect} +Invert a rectangle. +\end{funcdesc} + +\begin{funcdesc}{line}{p1\, p2} +Draw a line from point +\var{p1} +to +\var{p2}. +\end{funcdesc} + +\begin{funcdesc}{paint}{rect} +Fill a rectangle. +\end{funcdesc} + +\begin{funcdesc}{poly}{points} +Draw the lines connecting the given list (or tuple) of points. +\end{funcdesc} + +\begin{funcdesc}{shade}{rect\, percent} +Fill a rectangle with a shading pattern that is about +\var{percent} +percent filled. +\end{funcdesc} + +\begin{funcdesc}{text}{p\, str} +Draw a string starting at point p (the point specifies the +top left coordinate of the string). +\end{funcdesc} + +\begin{funcdesc}{xorcircle}{center\, radius} +\funcline{xorelarc}{center\, \(rh\, rv\)\, \(a1\, a2\)} +\funcline{xorline}{p1\, p2} +\funcline{xorpoly}{points} +Draw a circle, an elliptical arc, a line or a polygon, respectively, +in XOR mode. +\end{funcdesc} + +\begin{funcdesc}{setfgcolor}{} +\funcline{setbgcolor}{} +\funcline{getfgcolor}{} +\funcline{getbgcolor}{} +These functions are similar to the corresponding functions described +above for the +\code{stdwin} +module, but affect or return the colors currently used for drawing +instead of the global default colors. +When a drawing object is created, its colors are set to the window's +default colors, which are in turn initialized from the global default +colors when the window is created. +\end{funcdesc} + +\begin{funcdesc}{setfont}{} +\funcline{baseline}{} +\funcline{lineheight}{} +\funcline{textbreak}{} +\funcline{textwidth}{} +These functions are similar to the corresponding functions described +above for the +\code{stdwin} +module, but affect or use the current drawing font instead of +the global default font. +When a drawing object is created, its font is set to the window's +default font, which is in turn initialized from the global default +font when the window is created. +\end{funcdesc} + +\begin{funcdesc}{bitmap}{point\, bitmap\, mask} +Draw the \var{bitmap} with its top left corner at \var{point}. +If the optional \var{mask} argument is present, it should be either +the same object as \var{bitmap}, to draw only those bits that are set +in the bitmap, in the foreground color, or \code{None}, to draw all +bits (ones are drawn in the foreground color, zeros in the background +color). +\end{funcdesc} + +\begin{funcdesc}{cliprect}{rect} +Set the ``clipping region'' to a rectangle. +The clipping region limits the effect of all drawing operations, until +it is changed again or until the drawing object is closed. When a +drawing object is created the clipping region is set to the entire +window. When an object to be drawn falls partly outside the clipping +region, the set of pixels drawn is the intersection of the clipping +region and the set of pixels that would be drawn by the same operation +in the absence of a clipping region. +clipping region +\end{funcdesc} + +\begin{funcdesc}{noclip}{} +Reset the clipping region to the entire window. +\end{funcdesc} + +\begin{funcdesc}{close}{} +\funcline{enddrawing}{} +Discard the drawing object. It should not be used again. +\end{funcdesc} + +\subsection{Menu Object Methods} + +A menu object represents a menu. +The menu is destroyed when the menu object is deleted. +The following methods are defined: + +\renewcommand{\indexsubitem}{(menu method)} + +\begin{funcdesc}{additem}{text\, shortcut} +Add a menu item with given text. +The shortcut must be a string of length 1, or omitted (to specify no +shortcut). +\end{funcdesc} + +\begin{funcdesc}{setitem}{i\, text} +Set the text of item number +\var{i}. +\end{funcdesc} + +\begin{funcdesc}{enable}{i\, flag} +Enable or disables item +\var{i}. +\end{funcdesc} + +\begin{funcdesc}{check}{i\, flag} +Set or clear the +\dfn{check mark} +for item +\var{i}. +\end{funcdesc} + +\begin{funcdesc}{close}{} +Discard the menu object. It should not be used again. +\end{funcdesc} + +\subsection{Bitmap Object Methods} + +A bitmap represents a rectangular array of bits. +The top left bit has coordinate (0, 0). +A bitmap can be drawn with the \code{bitmap} method of a drawing object. +The following methods are defined: + +\renewcommand{\indexsubitem}{(bitmap method)} + +\begin{funcdesc}{getsize}{} +Return a tuple representing the width and height of the bitmap. +(This returns the values that have been passed to the \code{newbitmap} +function.) +\end{funcdesc} + +\begin{funcdesc}{setbit}{point\, bit} +Set the value of the bit indicated by \var{point} to \var{bit}. +\end{funcdesc} + +\begin{funcdesc}{getbit}{point} +Return the value of the bit indicated by \var{point}. +\end{funcdesc} + +\begin{funcdesc}{close}{} +Discard the bitmap object. It should not be used again. +\end{funcdesc} + +\subsection{Text-edit Object Methods} + +A text-edit object represents a text-edit block. +For semantics, see the STDWIN documentation for C programmers. +The following methods exist: + +\renewcommand{\indexsubitem}{(text-edit method)} + +\begin{funcdesc}{arrow}{code} +Pass an arrow event to the text-edit block. +The +\var{code} +must be one of +\code{WC_LEFT}, +\code{WC_RIGHT}, +\code{WC_UP} +or +\code{WC_DOWN} +(see module +\code{stdwinevents}). +\end{funcdesc} + +\begin{funcdesc}{draw}{rect} +Pass a draw event to the text-edit block. +The rectangle specifies the redraw area. +\end{funcdesc} + +\begin{funcdesc}{event}{type\, window\, detail} +Pass an event gotten from +\code{stdwin.getevent()} +to the text-edit block. +Return true if the event was handled. +\end{funcdesc} + +\begin{funcdesc}{getfocus}{} +Return 2 integers representing the start and end positions of the +focus, usable as slice indices on the string returned by +\code{gettext()}. +\end{funcdesc} + +\begin{funcdesc}{getfocustext}{} +Return the text in the focus. +\end{funcdesc} + +\begin{funcdesc}{getrect}{} +Return a rectangle giving the actual position of the text-edit block. +(The bottom coordinate may differ from the initial position because +the block automatically shrinks or grows to fit.) +\end{funcdesc} + +\begin{funcdesc}{gettext}{} +Return the entire text buffer. +\end{funcdesc} + +\begin{funcdesc}{move}{rect} +Specify a new position for the text-edit block in the document. +\end{funcdesc} + +\begin{funcdesc}{replace}{str} +Replace the text in the focus by the given string. +The new focus is an insert point at the end of the string. +\end{funcdesc} + +\begin{funcdesc}{setfocus}{i\, j} +Specify the new focus. +Out-of-bounds values are silently clipped. +\end{funcdesc} + +\begin{funcdesc}{settext}{str} +Replace the entire text buffer by the given string and set the focus +to \code{(0, 0)}. +\end{funcdesc} + +\begin{funcdesc}{setview}{rect} +Set the view rectangle to \var{rect}. If \var{rect} is \code{None}, +viewing mode is reset. In viewing mode, all output from the text-edit +object is clipped to the viewing rectangle. This may be useful to +implement your own scrolling text subwindow. +\end{funcdesc} + +\begin{funcdesc}{close}{} +Discard the text-edit object. It should not be used again. +\end{funcdesc} + +\subsection{Example} +\nodename{Stdwin Example} + +Here is a minimal example of using STDWIN in Python. +It creates a window and draws the string ``Hello world'' in the top +left corner of the window. +The window will be correctly redrawn when covered and re-exposed. +The program quits when the close icon or menu item is requested. + +\bcode\begin{verbatim} +import stdwin +from stdwinevents import * + +def main(): + mywin = stdwin.open('Hello') + # + while 1: + (type, win, detail) = stdwin.getevent() + if type == WE_DRAW: + draw = win.begindrawing() + draw.text((0, 0), 'Hello, world') + del draw + elif type == WE_CLOSE: + break + +main() +\end{verbatim}\ecode + +\section{Standard Module \sectcode{stdwinevents}} +\stmodindex{stdwinevents} + +This module defines constants used by STDWIN for event types +(\code{WE_ACTIVATE} etc.), command codes (\code{WC_LEFT} etc.) +and selection types (\code{WS_PRIMARY} etc.). +Read the file for details. +Suggested usage is + +\bcode\begin{verbatim} +>>> from stdwinevents import * +>>> +\end{verbatim}\ecode + +\section{Standard Module \sectcode{rect}} +\stmodindex{rect} + +This module contains useful operations on rectangles. +A rectangle is defined as in module +\code{stdwin}: +a pair of points, where a point is a pair of integers. +For example, the rectangle + +\bcode\begin{verbatim} +(10, 20), (90, 80) +\end{verbatim}\ecode + +is a rectangle whose left, top, right and bottom edges are 10, 20, 90 +and 80, respectively. +Note that the positive vertical axis points down (as in +\code{stdwin}). + +The module defines the following objects: + +\renewcommand{\indexsubitem}{(in module rect)} +\begin{excdesc}{error} +The exception raised by functions in this module when they detect an +error. +The exception argument is a string describing the problem in more +detail. +\end{excdesc} + +\begin{datadesc}{empty} +The rectangle returned when some operations return an empty result. +This makes it possible to quickly check whether a result is empty: + +\bcode\begin{verbatim} +>>> import rect +>>> r1 = (10, 20), (90, 80) +>>> r2 = (0, 0), (10, 20) +>>> r3 = rect.intersect([r1, r2]) +>>> if r3 is rect.empty: print 'Empty intersection' +Empty intersection +>>> +\end{verbatim}\ecode +\end{datadesc} + +\begin{funcdesc}{is_empty}{r} +Returns true if the given rectangle is empty. +A rectangle +\code{(\var{left}, \var{top}), (\var{right}, \var{bottom})} +is empty if +\iftexi +\code{\var{left} >= \var{right}} or \code{\var{top} => \var{bottom}}. +\else +$\var{left} \geq \var{right}$ or $\var{top} \geq \var{bottom}$. +%%JHXXX{\em left~$\geq$~right} or {\em top~$\leq$~bottom}. +\fi +\end{funcdesc} + +\begin{funcdesc}{intersect}{list} +Returns the intersection of all rectangles in the list argument. +It may also be called with a tuple argument. +Raises +\code{rect.error} +if the list is empty. +Returns +\code{rect.empty} +if the intersection of the rectangles is empty. +\end{funcdesc} + +\begin{funcdesc}{union}{list} +Returns the smallest rectangle that contains all non-empty rectangles in +the list argument. +It may also be called with a tuple argument or with two or more +rectangles as arguments. +Returns +\code{rect.empty} +if the list is empty or all its rectangles are empty. +\end{funcdesc} + +\begin{funcdesc}{pointinrect}{point\, rect} +Returns true if the point is inside the rectangle. +By definition, a point +\code{(\var{h}, \var{v})} +is inside a rectangle +\code{(\var{left}, \var{top}), (\var{right}, \var{bottom})} if +\iftexi +\code{\var{left} <= \var{h} < \var{right}} and +\code{\var{top} <= \var{v} < \var{bottom}}. +\else +$\var{left} \leq \var{h} < \var{right}$ and +$\var{top} \leq \var{v} < \var{bottom}$. +\fi +\end{funcdesc} + +\begin{funcdesc}{inset}{rect\, \(dh\, dv\)} +Returns a rectangle that lies inside the +\code{rect} +argument by +\var{dh} +pixels horizontally +and +\var{dv} +pixels +vertically. +If +\var{dh} +or +\var{dv} +is negative, the result lies outside +\var{rect}. +\end{funcdesc} + +\begin{funcdesc}{rect2geom}{rect} +Converts a rectangle to geometry representation: +\code{(\var{left}, \var{top}), (\var{width}, \var{height})}. +\end{funcdesc} + +\begin{funcdesc}{geom2rect}{geom} +Converts a rectangle given in geometry representation back to the +standard rectangle representation +\code{(\var{left}, \var{top}), (\var{right}, \var{bottom})}. +\end{funcdesc} diff --git a/Doc/libstring.tex b/Doc/libstring.tex new file mode 100644 index 0000000..2bcbdfc --- /dev/null +++ b/Doc/libstring.tex @@ -0,0 +1,193 @@ +\section{Standard Module \sectcode{string}} + +\stmodindex{string} + +This module defines some constants useful for checking character +classes, some exceptions, and some useful string functions. +The constants are: + +\renewcommand{\indexsubitem}{(data in module string)} +\begin{datadesc}{digits} + The string \code{'0123456789'}. +\end{datadesc} + +\begin{datadesc}{hexdigits} + The string \code{'0123456789abcdefABCDEF'}. +\end{datadesc} + +\begin{datadesc}{letters} + The concatenation of the strings \code{lowercase} and + \code{uppercase} described below. +\end{datadesc} + +\begin{datadesc}{lowercase} + A string containing all the characters that are considered lowercase + letters. On most systems this is the string + \code{'abcdefghijklmnopqrstuvwxyz'}. Do not change its definition -- + the effect on the routines \code{upper} and \code{swapcase} is + undefined. +\end{datadesc} + +\begin{datadesc}{octdigits} + The string \code{'01234567'}. +\end{datadesc} + +\begin{datadesc}{uppercase} + A string containing all the characters that are considered uppercase + letters. On most systems this is the string + \code{'ABCDEFGHIJKLMNOPQRSTUVWXYZ'}. Do not change its definition -- + the effect on the routines \code{lower} and \code{swapcase} is + undefined. +\end{datadesc} + +\begin{datadesc}{whitespace} + A string containing all characters that are considered whitespace. + On most systems this includes the characters space, tab, linefeed, + return, formfeed, and vertical tab. Do not change its definition -- + the effect on the routines \code{strip} and \code{split} is + undefined. +\end{datadesc} + +The exceptions are: + +\renewcommand{\indexsubitem}{(exception in module string)} + +\begin{excdesc}{atof_error} +Exception raised by +\code{atof} +when a non-float string argument is detected. +The exception argument is the offending string. +\end{excdesc} + +\begin{excdesc}{atoi_error} +Exception raised by +\code{atoi} +when a non-integer string argument is detected. +The exception argument is the offending string. +\end{excdesc} + +\begin{excdesc}{atol_error} +Exception raised by +\code{atol} +when a non-integer string argument is detected. +The exception argument is the offending string. +\end{excdesc} + +\begin{excdesc}{index_error} +Exception raised by \code{index} when \var{sub} is not found. +The exception argument is undefined (it may be a tuple containing the +offending arguments to \code{index} or it may be the constant string +\code{'substring not found'}). +\end{excdesc} + +The functions are: + +\renewcommand{\indexsubitem}{(in module string)} + +\begin{funcdesc}{atof}{s} +Convert a string to a floating point number. The string must have +the standard syntax for a floating point literal in Python, optionally +preceded by a sign (\samp{+} or \samp{-}). +\end{funcdesc} + +\begin{funcdesc}{atoi}{s} +Convert a string to an integer. The string must consist of one or more +digits, optionally preceded by a sign (\samp{+} or \samp{-}). +\end{funcdesc} + +\begin{funcdesc}{atol}{s} +Convert a string to a long integer. The string must consist of one +or more digits, optionally preceded by a sign (\samp{+} or \samp{-}). +\end{funcdesc} + +\begin{funcdesc}{expandtabs}{s\, tabsize} +Expand tabs in a string, i.e. replace them by one or more spaces, +depending on the current column and the given tab size. The column +number is reset to zero after each newline occurring in the string. +This doesn't understand other non-printing characters or escape +sequences. +\end{funcdesc} + +\begin{funcdesc}{find}{s\, sub\, i} +Return the lowest index in \var{s} not smaller than \var{i} where the +substring \var{sub} is found. Return \code{-1} when \var{sub} +does not occur as a substring of \var{s} with index at least \var{i}. +If \var{i} is omitted, it defaults to \code{0}. If \var{i} is +negative, \code{len(\var{s})} is added. +\end{funcdesc} + +\begin{funcdesc}{rfind}{s\, sub\, i} +Like \code{find} but finds the highest index. +\end{funcdesc} + +\begin{funcdesc}{index}{s\, sub\, i} +Like \code{find} but raise \code{index_error} when the substring is +not found. +\end{funcdesc} + +\begin{funcdesc}{rindex}{s\, sub\, i} +Like \code{rfind} but raise \code{index_error} when the substring is +not found. +\end{funcdesc} + +\begin{funcdesc}{lower}{s} +Convert letters to lower case. +\end{funcdesc} + +\begin{funcdesc}{split}{s} +Returns a list of the whitespace-delimited words of the string +\var{s}. +\end{funcdesc} + +\begin{funcdesc}{splitfields}{s\, sep} + Returns a list containing the fields of the string \var{s}, using + the string \var{sep} as a separator. The list will have one more + items than the number of non-overlapping occurrences of the + separator in the string. Thus, \code{string.splitfields(\var{s}, ' + ')} is not the same as \code{string.split(\var{s})}, as the latter + only returns non-empty words. As a special case, + \code{splitfields(\var{s}, '')} returns \code{[\var{s}]}, for any string + \var{s}. (See also \code{regsub.split()}.) +\end{funcdesc} + +\begin{funcdesc}{join}{words} +Concatenate a list or tuple of words with intervening spaces. +\end{funcdesc} + +\begin{funcdesc}{joinfields}{words\, sep} +Concatenate a list or tuple of words with intervening separators. +It is always true that +\code{string.joinfields(string.splitfields(\var{t}, \var{sep}), \var{sep})} +equals \var{t}. +\end{funcdesc} + +\begin{funcdesc}{strip}{s} +Removes leading and trailing whitespace from the string +\var{s}. +\end{funcdesc} + +\begin{funcdesc}{swapcase}{s} +Converts lower case letters to upper case and vice versa. +\end{funcdesc} + +\begin{funcdesc}{upper}{s} +Convert letters to upper case. +\end{funcdesc} + +\begin{funcdesc}{ljust}{s\, width} +\funcline{rjust}{s\, width} +\funcline{center}{s\, width} +These functions respectively left-justify, right-justify and center a +string in a field of given width. +They return a string that is at least +\var{width} +characters wide, created by padding the string +\var{s} +with spaces until the given width on the right, left or both sides. +The string is never truncated. +\end{funcdesc} + +\begin{funcdesc}{zfill}{s\, width} +Pad a numeric string on the left with zero digits until the given +width is reached. Strings starting with a sign are handled correctly. +\end{funcdesc} diff --git a/Doc/libstruct.tex b/Doc/libstruct.tex new file mode 100644 index 0000000..5b4a9aa --- /dev/null +++ b/Doc/libstruct.tex @@ -0,0 +1,75 @@ +\section{Built-in module \sectcode{struct}} +\bimodindex{struct} +\indexii{C}{structures} + +This module performs conversions between Python values and C +structs represented as Python strings. It uses \dfn{format strings} +(explained below) as compact descriptions of the lay-out of the C +structs and the intended conversion to/from Python values. + +The module defines the following exception and functions: + +\renewcommand{\indexsubitem}{(in module struct)} +\begin{excdesc}{error} + Exception raised on various occasions; argument is a string + describing what is wrong. +\end{excdesc} + +\begin{funcdesc}{pack}{fmt\, v1\, v2\, {\rm \ldots}} + Return a string containing the values + \code{\var{v1}, \var{v2}, {\rm \ldots}} packed according to the given + format. The arguments must match the values required by the format + exactly. +\end{funcdesc} + +\begin{funcdesc}{unpack}{fmt\, string} + Unpack the string (presumably packed by \code{pack(\var{fmt}, {\rm \ldots})}) + according to the given format. The result is a tuple even if it + contains exactly one item. The string must contain exactly the + amount of data required by the format (i.e. \code{len(\var{string})} must + equal \code{calcsize(\var{fmt})}). +\end{funcdesc} + +\begin{funcdesc}{calcsize}{fmt} + Return the size of the struct (and hence of the string) + corresponding to the given format. +\end{funcdesc} + +Format characters have the following meaning; the conversion between C +and Python values should be obvious given their types: + +\begin{tableiii}{|c|l|l|}{samp}{Format}{C}{Python} + \lineiii{x}{pad byte}{no value} + \lineiii{c}{char}{string of length 1} + \lineiii{b}{signed char}{integer} + \lineiii{h}{short}{integer} + \lineiii{i}{int}{integer} + \lineiii{l}{long}{integer} + \lineiii{f}{float}{float} + \lineiii{d}{double}{float} +\end{tableiii} + +A format character may be preceded by an integral repeat count; e.g. +the format string \code{'4h'} means exactly the same as \code{'hhhh'}. + +C numbers are represented in the machine's native format and byte +order, and properly aligned by skipping pad bytes if necessary +(according to the rules used by the C compiler). + +Examples (all on a big-endian machine): + +\bcode\begin{verbatim} +pack('hhl', 1, 2, 3) == '\000\001\000\002\000\000\000\003' +unpack('hhl', '\000\001\000\002\000\000\000\003') == (1, 2, 3) +calcsize('hhl') == 8 +\end{verbatim}\ecode + +Hint: to align the end of a structure to the alignment requirement of +a particular type, end the format with the code for that type with a +repeat count of zero, e.g. the format \code{'llh0l'} specifies two +pad bytes at the end, assuming longs are aligned on 4-byte boundaries. + +(More format characters are planned, e.g. \code{'s'} for character +arrays, upper case for unsigned variants, and a way to specify the +byte order, which is useful for [de]constructing network packets and +reading/writing portable binary file formats like TIFF and AIFF.) diff --git a/Doc/libsun.tex b/Doc/libsun.tex new file mode 100644 index 0000000..9624b9c --- /dev/null +++ b/Doc/libsun.tex @@ -0,0 +1,113 @@ +\chapter{SUNOS ONLY} + +The modules described in this chapter provide interfaces to features +that are unique to the SunOS operating system (versions 4 and 5; the +latter is also known as SOLARIS version 2). + +\section{Built-in module \sectcode{sunaudiodev}} +\bimodindex{sunaudiodev} + +This module allows you to access the sun audio interface. The sun +audio hardware is capable of recording and playing back audio data +in U-LAW format with a sample rate of 8K per second. A full +description can be gotten with \samp{man audio}. + +The module defines the following variables and functions: + +\renewcommand{\indexsubitem}{(in module sunaudiodev)} +\begin{excdesc}{error} +This exception is raised on all errors. The argument is a string +describing what went wrong. +\end{excdesc} + +\begin{funcdesc}{open}{mode} +This function opens the audio device and returns a sun audio device +object. This object can then be used to do I/O on. The \var{mode} parameter +is one of \code{'r'} for record-only access, \code{'w'} for play-only +access, \code{'rw'} for both and \code{'control'} for access to the +control device. Since only one process is allowed to have the recorder +or player open at the same time it is a good idea to open the device +only for the activity needed. See the audio manpage for details. +\end{funcdesc} + +\subsection{Audio device object methods} + +The audio device objects are returned by \code{open} define the +following methods (except \code{control} objects which only provide +getinfo, setinfo and drain): + +\renewcommand{\indexsubitem}{(audio device method)} + +\begin{funcdesc}{close}{} +This method explicitly closes the device. It is useful in situations +where deleting the object does not immediately close it since there +are other references to it. A closed device should not be used again. +\end{funcdesc} + +\begin{funcdesc}{drain}{} +This method waits until all pending output is processed and then returns. +Calling this method is often not necessary: destroying the object will +automatically close the audio device and this will do an implicit drain. +\end{funcdesc} + +\begin{funcdesc}{flush}{} +This method discards all pending output. It can be used avoid the +slow response to a user's stop request (due to buffering of up to one +second of sound). +\end{funcdesc} + +\begin{funcdesc}{getinfo}{} +This method retrieves status information like input and output volume, +etc. and returns it in the form of +an audio status object. This object has no methods but it contains a +number of attributes describing the current device status. The names +and meanings of the attributes are described in +\file{/usr/include/sun/audioio.h} and in the audio man page. Member names +are slightly different from their C counterparts: a status object is +only a single structure. Members of the \code{play} substructure have +\samp{o_} prepended to their name and members of the \code{record} +structure have \samp{i_}. So, the C member \code{play.sample_rate} is +accessed as \code{o_sample_rate}, \code{record.gain} as \code{i_gain} +and \code{monitor_gain} plainly as \code{monitor_gain}. +\end{funcdesc} + +\begin{funcdesc}{ibufcount}{} +This method returns the number of samples that are buffered on the +recording side, i.e. +the program will not block on a \code{read} call of so many samples. +\end{funcdesc} + +\begin{funcdesc}{obufcount}{} +This method returns the number of samples buffered on the playback +side. Unfortunately, this number cannot be used to determine a number +of samples that can be written without blocking since the kernel +output queue length seems to be variable. +\end{funcdesc} + +\begin{funcdesc}{read}{size} +This method reads \var{size} samples from the audio input and returns +them as a python string. The function blocks until enough data is available. +\end{funcdesc} + +\begin{funcdesc}{setinfo}{status} +This method sets the audio device status parameters. The \var{status} +parameter is an device status object as returned by \code{getinfo} and +possibly modified by the program. +\end{funcdesc} + +\begin{funcdesc}{write}{samples} +Write is passed a python string containing audio samples to be played. +If there is enough buffer space free it will immedeately return, +otherwise it will block. +\end{funcdesc} + +There is a companion module, \code{SUNAUDIODEV}, which defines useful +symbolic constants like \code{MIN_GAIN}, \code{MAX_GAIN}, +\code{SPEAKER}, etc. The names of +the constants are the same names as used in the C include file +\file{<sun/audioio.h>}, with the leading string \samp{AUDIO_} stripped. + +Useability of the control device is limited at the moment, since there +is no way to use the 'wait for something to happen' feature the device +provides. This is because that feature makes heavy use of signals, and +these do not map too well onto Python. diff --git a/Doc/libsys.tex b/Doc/libsys.tex new file mode 100644 index 0000000..ba6b896 --- /dev/null +++ b/Doc/libsys.tex @@ -0,0 +1,129 @@ +\section{Built-in Module \sectcode{sys}} + +\bimodindex{sys} +This module provides access to some variables used or maintained by the +interpreter and to functions that interact strongly with the interpreter. +It is always available. + +\renewcommand{\indexsubitem}{(in module sys)} +\begin{datadesc}{argv} + The list of command line arguments passed to a Python script. + \code{sys.argv[0]} is the script name. + If no script name was passed to the Python interpreter, + \code{sys.argv} is empty. +\end{datadesc} + +\begin{datadesc}{builtin_module_names} + A list of strings giving the names of all modules that are compiled + into this Python interpreter. (This information is not available in + any other way --- \code{sys.modules.keys()} only lists the imported + modules.) +\end{datadesc} + +\begin{datadesc}{exc_type} +\dataline{exc_value} +\dataline{exc_traceback} + These three variables are not always defined; they are set when an + exception handler (an \code{except} clause of a \code{try} statement) is + invoked. Their meaning is: \code{exc_type} gets the exception type of + the exception being handled; \code{exc_value} gets the exception + parameter (its \dfn{associated value} or the second argument to + \code{raise}); \code{exc_traceback} gets a traceback object which + encapsulates the call stack at the point where the exception + originally occurred. +\end{datadesc} + +\begin{funcdesc}{exit}{n} + Exit from Python with numeric exit status \var{n}. This is + implemented by raising the \code{SystemExit} exception, so cleanup + actions specified by \code{finally} clauses of \code{try} statements + are honored, and it is possible to catch the exit attempt at an outer + level. +\end{funcdesc} + +\begin{datadesc}{exitfunc} + This value is not actually defined by the module, but can be set by + the user (or by a program) to specify a clean-up action at program + exit. When set, it should be a parameterless function. This function + will be called when the interpreter exits in any way (but not when a + fatal error occurs: in that case the interpreter's internal state + cannot be trusted). +\end{datadesc} + +\begin{datadesc}{last_type} +\dataline{last_value} +\dataline{last_traceback} + These three variables are not always defined; they are set when an + exception is not handled and the interpreter prints an error message + and a stack traceback. Their intended use is to allow an interactive + user to import a debugger module and engage in post-mortem debugging + without having to re-execute the command that cause the error (which + may be hard to reproduce). The meaning of the variables is the same + as that of \code{exc_type}, \code{exc_value} and \code{exc_tracaback}, + respectively. +\end{datadesc} + +\begin{datadesc}{modules} + Gives the list of modules that have already been loaded. + This can be manipulated to force reloading of modules and other tricks. +\end{datadesc} + +\begin{datadesc}{path} + A list of strings that specifies the search path for modules. + Initialized from the environment variable \code{PYTHONPATH}, or an + installation-dependent default. +\end{datadesc} + +\begin{datadesc}{ps1} +\dataline{ps2} + Strings specifying the primary and secondary prompt of the + interpreter. These are only defined if the interpreter is in + interactive mode. Their initial values in this case are + \code{'>>> '} and \code{'... '}. +\end{datadesc} + +\begin{funcdesc}{settrace}{tracefunc} + Set the system's trace function, which allows you to implement a + Python source code debugger in Python. The standard modules + \code{pdb} and \code{wdb} are such debuggers; the difference is that + \code{wdb} uses windows and needs STDWIN, while \code{pdb} has a + line-oriented interface not unlike dbx. See the file \file{pdb.doc} + in the Python library source directory for more documentation (both + about \code{pdb} and \code{sys.trace}). +\end{funcdesc} +\ttindex{pdb} +\ttindex{wdb} +\index{trace function} + +\begin{funcdesc}{setprofile}{profilefunc} + Set the system's profile function, which allows you to implement a + Python source code profiler in Python. The system's profile function + is called similarly to the system's trace function (see + \code{sys.settrace}), but it isn't called for each executed line of + code (only on call and return and when an exception occurs). Also, + its return value is not used, so it can just return \code{None}. +\end{funcdesc} +\index{profile function} + +\begin{datadesc}{stdin} +\dataline{stdout} +\dataline{stderr} + File objects corresponding to the interpreter's standard input, + output and error streams. \code{sys.stdin} is used for all + interpreter input except for scripts but including calls to + \code{input()} and \code{raw_input()}. \code{sys.stdout} is used + for the output of \code{print} and expression statements and for the + prompts of \code{input()} and \code{raw_input()}. The interpreter's + own prompts and (almost all of) its error messages go to + \code{sys.stderr}. \code{sys.stdout} and \code{sys.stderr} needn't + be built-in file objects: any object is acceptable as long as it has + a \code{write} method that takes a string argument. +\end{datadesc} + +\begin{datadesc}{tracebacklimit} +When this variable is set to an integer value, it determines the +maximum number of levels of traceback information printed when an +unhandled exception occurs. The default is 1000. When set to 0 or +less, all traceback information is suppressed and only the exception +type and value are printed. +\end{datadesc} diff --git a/Doc/libthread.tex b/Doc/libthread.tex new file mode 100644 index 0000000..c836615 --- /dev/null +++ b/Doc/libthread.tex @@ -0,0 +1,89 @@ +\section{Built-in Module \sectcode{thread}} +\bimodindex{thread} + +This module provides low-level primitives for working with multiple +threads (a.k.a. \dfn{light-weight processes} or \dfn{tasks}) --- multiple +threads of control sharing their global data space. For +synchronization, simple locks (a.k.a. \dfn{mutexes} or \dfn{binary +semaphores}) are provided. + +The module is optional and supported on SGI and Sun Sparc systems only. + +It defines the following constant and functions: + +\renewcommand{\indexsubitem}{(in module thread)} +\begin{excdesc}{error} +Raised on thread-specific errors. +\end{excdesc} + +\begin{funcdesc}{start_new_thread}{func\, arg} +Start a new thread. The thread executes the function \var{func} +with the argument list \var{arg} (which must be a tuple). When the +function returns, the thread silently exits. When the function raises +terminates with an unhandled exception, a stack trace is printed and +then the thread exits (but other threads continue to run). +\end{funcdesc} + +\begin{funcdesc}{exit_thread}{} +Exit the current thread silently. Other threads continue to run. +\strong{Caveat:} code in pending \code{finally} clauses is not executed. +\end{funcdesc} + +\begin{funcdesc}{exit_prog}{status} +Exit all threads and report the value of the integer argument +\var{status} as the exit status of the entire program. +\strong{Caveat:} code in pending \code{finally} clauses, in this thread +or in other threads, is not executed. +\end{funcdesc} + +\begin{funcdesc}{allocate_lock}{} +Return a new lock object. Methods of locks are described below. The +lock is initially unlocked. +\end{funcdesc} + +Lock objects have the following methods: + +\renewcommand{\indexsubitem}{(lock method)} +\begin{funcdesc}{acquire}{waitflag} +Without the optional argument, this method acquires the lock +unconditionally, if necessary waiting until it is released by another +thread (only one thread at a time can acquire a lock --- that's their +reason for existence), and returns \code{None}. If the integer +\var{waitflag} argument is present, the action depends on its value: +if it is zero, the lock is only acquired if it can be acquired +immediately without waiting, while if it is nonzero, the lock is +acquired unconditionally as before. If an argument is present, the +return value is 1 if the lock is acquired successfully, 0 if not. +\end{funcdesc} + +\begin{funcdesc}{release}{} +Releases the lock. The lock must have been acquired earlier, but not +necessarily by the same thread. +\end{funcdesc} + +\begin{funcdesc}{locked}{} +Return the status of the lock: 1 if it has been acquired by some +thread, 0 if not. +\end{funcdesc} + +{\bf Caveats:} + +\begin{itemize} +\item +Threads interact strangely with interrupts: the +\code{KeyboardInterrupt} exception will be received by an arbitrary +thread. + +\item +Calling \code{sys.exit(\var{status})} or executing +\code{raise SystemExit, \var{status}} is almost equivalent to calling +\code{thread.exit_prog(\var{status})}, except that the former ways of +exiting the entire program do honor \code{finally} clauses in the +current thread (but not in other threads). + +\item +Not all built-in functions that may block waiting for I/O allow other +threads to run, although the most popular ones (\code{sleep}, +\code{read}, \code{select}) work as expected. + +\end{itemize} diff --git a/Doc/libtime.tex b/Doc/libtime.tex new file mode 100644 index 0000000..fe8b7dc --- /dev/null +++ b/Doc/libtime.tex @@ -0,0 +1,121 @@ +\section{Built-in Module \sectcode{time}} + +\bimodindex{time} +This module provides various time-related functions. +It is always available. (On some systems, not all functions may +exist; e.g. the ``milli'' variants can't always be implemented.) + +An explanation of some terminology and conventions is in order. + +\begin{itemize} + +\item +The ``epoch'' is the point where the time starts. On January 1st that +year, at 0 hours, the ``time since the epoch'' is zero. For UNIX, the +epoch is 1970. To find out what the epoch is, look at the first +element of \code{gmtime(0)}. + +\item +UTC is Coordinated Universal Time (formerly known as Greenwich Mean +Time). The acronym UTC is not a mistake but a compromise between +English and French. + +\item +DST is Daylight Saving Time, an adjustment of the timezone by +(usually) one hour during part of the year. DST rules are magic +(determined by local law) and can change from year to year. The C +library has a table containing the local rules (often it is read from +a system file for flexibility) and is the only source of True Wisdom +in this respect. + +\item +The precision of the various real-time functions may be less than +suggested by the units in which their value or argument is expressed. +E.g. on most UNIX systems, the clock ``ticks'' only every 1/50th or +1/100th of a second, and on the Mac, it ticks 60 times a second. + +\end{itemize} + +Functions and data items are: + +\renewcommand{\indexsubitem}{(in module time)} + +\begin{datadesc}{altzone} +The offset of the local DST timezone, in seconds west of the 0th +meridian, if one is defined. Only use this if \code{daylight} is +nonzero. +\end{datadesc} + + +\begin{funcdesc}{asctime}{tuple} +Convert a tuple representing a time as returned by \code{gmtime()} or +\code{localtime()} to a 24-character string of the following form: +\code{'Sun Jun 20 23:21:05 1993'}. Note: unlike the C function of +the same name, there is no trailing newline. +\end{funcdesc} + + +\begin{funcdesc}{ctime}{secs} +Convert a time expressed in seconds since the epoch to a string +representing local time. \code{ctime(t)} is equivalent to +\code{asctime(localtime(t))}. +\end{funcdesc} + +\begin{datadesc}{daylight} +Nonzero if a DST timezone is defined. +\end{datadesc} + +\begin{funcdesc}{gmtime}{secs} +Convert a time expressed in seconds since the epoch to a tuple of 9 +integers, in UTC: year (e.g. 1993), month (1-12), day (1-31), hour +(0-23), minute (0-59), second (0-59), weekday (0-6, monday is 0), +julian day (1-366), dst flag (always zero). Fractions of a second are +ignored. Note subtle differences with the C function of this name. +\end{funcdesc} + +\begin{funcdesc}{localtime}{secs} +Like \code{gmtime} but converts to local time. The dst flag is set +to 1 when DST applies to the given time. +\end{funcdesc} + +\begin{funcdesc}{millisleep}{msecs} +Suspend execution for the given number of milliseconds. (Obsolete, +you can now use use \code{sleep} with a floating point argument.) +\end{funcdesc} + +\begin{funcdesc}{millitimer}{} +Return the number of milliseconds of real time elapsed since some +point in the past that is fixed per execution of the python +interpreter (but may change in each following run). The return value +may be negative, and it may wrap around. +\end{funcdesc} + +\begin{funcdesc}{mktime}{tuple} +This is the inverse function of \code{localtime}. Its argument is the +full 9-tuple (since the dst flag is needed). It returns an integer. +\end{funcdesc} + +\begin{funcdesc}{sleep}{secs} +Suspend execution for the given number of seconds. The argument may +be a floating point number to indicate a more precise sleep time. +\end{funcdesc} + +\begin{funcdesc}{time}{} +Return the time as a floating point number expressed in seconds since +the epoch, in UTC. Note that even though the time is always returned +as a floating point number, not all systems provide time with a better +precision than 1 second. An alternative for measuring precise +intervals is \code{millitimer}. +\end{funcdesc} + +\begin{datadesc}{timezone} +The offset of the local (non-DST) timezone, in seconds west of the 0th +meridian (i.e. negative in most of Western Europe, positive in the US, +zero in the UK). +\end{datadesc} + +\begin{datadesc}{tzname} +A tuple of two strings: the first is the name of the local non-DST +timezone, the second is the name of the local DST timezone. If no DST +timezone is defined, the second string should not be used. +\end{datadesc} diff --git a/Doc/libtypes.tex b/Doc/libtypes.tex new file mode 100644 index 0000000..be8d990 --- /dev/null +++ b/Doc/libtypes.tex @@ -0,0 +1,618 @@ +\section{Built-in Types} + +The following sections describe the standard types that are built into +the interpreter. These are the numeric types, sequence types, and +several others, including types themselves. There is no explicit +Boolean type; use integers instead. +\indexii{built-in}{types} +\indexii{Boolean}{type} + +Some operations are supported by several object types; in particular, +all objects can be compared, tested for truth value, and converted to +a string (with the \code{`{\rm \ldots}`} notation). The latter conversion is +implicitly used when an object is written by the \code{print} statement. +\stindex{print} + +\subsection{Truth Value Testing} + +Any object can be tested for truth value, for use in an \code{if} or +\code{while} condition or as operand of the Boolean operations below. +The following values are false: +\stindex{if} +\stindex{while} +\indexii{truth}{value} +\indexii{Boolean}{operations} +\index{false} + +\begin{itemize} +\renewcommand{\indexsubitem}{(Built-in object)} + +\item \code{None} + \ttindex{None} + +\item zero of any numeric type, e.g., \code{0}, \code{0L}, \code{0.0}. + +\item any empty sequence, e.g., \code{''}, \code{()}, \code{[]}. + +\item any empty mapping, e.g., \code{\{\}}. + +\end{itemize} + +\emph{All} other values are true --- so objects of many types are +always true. +\index{true} + +\subsection{Boolean Operations} + +These are the Boolean operations: +\indexii{Boolean}{operations} + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{\var{x} or \var{y}}{if \var{x} is false, then \var{y}, else \var{x}}{(1)} + \lineiii{\var{x} and \var{y}}{if \var{x} is false, then \var{x}, else \var{y}}{(1)} + \lineiii{not \var{x}}{if \var{x} is false, then \code{1}, else \code{0}}{} +\end{tableiii} +\opindex{and} +\opindex{or} +\opindex{not} + +\noindent +Notes: + +\begin{description} + +\item[(1)] +These only evaluate their second argument if needed for their outcome. + +\end{description} + +\subsection{Comparisons} + +Comparison operations are supported by all objects: + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Meaning}{Notes} + \lineiii{<}{strictly less than}{} + \lineiii{<=}{less than or equal}{} + \lineiii{>}{strictly greater than}{} + \lineiii{>=}{greater than or equal}{} + \lineiii{==}{equal}{} + \lineiii{<>}{not equal}{(1)} + \lineiii{!=}{not equal}{(1)} + \lineiii{is}{object identity}{} + \lineiii{is not}{negated object identity}{} +\end{tableiii} +\indexii{operator}{comparison} +\opindex{==} % XXX *All* others have funny characters < ! > +\opindex{is} +\opindex{is not} + +\noindent +Notes: + +\begin{description} + +\item[(1)] +\code{<>} and \code{!=} are alternate spellings for the same operator. +(I couldn't choose between \ABC{} and \C{}! :-) +\indexii{\ABC{}}{language} +\indexii{\C{}}{language} + +\end{description} + +Objects of different types, except different numeric types, never +compare equal; such objects are ordered consistently but arbitrarily +(so that sorting a heterogeneous array yields a consistent result). +Furthermore, some types (e.g., windows) support only a degenerate +notion of comparison where any two objects of that type are unequal. +Again, such objects are ordered arbitrarily but consistently. +\indexii{types}{numeric} +\indexii{objects}{comparing} + +(Implementation note: objects of different types except numbers are +ordered by their type names; objects of the same types that don't +support proper comparison are ordered by their address.) + +Two more operations with the same syntactic priority, \code{in} and +\code{not in}, are supported only by sequence types (below). +\opindex{in} +\opindex{not in} + +\subsection{Numeric Types} + +There are three numeric types: \dfn{plain integers}, \dfn{long integers}, and +\dfn{floating point numbers}. Plain integers (also just called \dfn{integers}) +are implemented using \code{long} in \C{}, which gives them at least 32 +bits of precision. Long integers have unlimited precision. Floating +point numbers are implemented using \code{double} in \C{}. All bets on +their precision are off unless you happen to know the machine you are +working with. +\indexii{numeric}{types} +\indexii{integer}{types} +\indexii{integer}{type} +\indexiii{long}{integer}{type} +\indexii{floating point}{type} +\indexii{\C{}}{language} + +Numbers are created by numeric literals or as the result of built-in +functions and operators. Unadorned integer literals (including hex +and octal numbers) yield plain integers. Integer literals with an \samp{L} +or \samp{l} suffix yield long integers +(\samp{L} is preferred because \code{1l} looks too much like eleven!). +Numeric literals containing a decimal point or an exponent sign yield +floating point numbers. +\indexii{numeric}{literals} +\indexii{integer}{literals} +\indexiii{long}{integer}{literals} +\indexii{floating point}{literals} +\indexii{hexadecimal}{literals} +\indexii{octal}{literals} + +Python fully supports mixed arithmetic: when a binary arithmetic +operator has operands of different numeric types, the operand with the +``smaller'' type is converted to that of the other, where plain +integer is smaller than long integer is smaller than floating point. +Comparisons between numbers of mixed type use the same rule.% +\footnote{As a consequence, the list \code{[1, 2]} is considered equal + to \code{[1.0, 2.0]}, and similar for tuples.} +The functions \code{int()}, \code{long()} and \code{float()} can be used +to coerce numbers to a specific type. +\index{arithmetic} +\bifuncindex{int} +\bifuncindex{long} +\bifuncindex{float} + +All numeric types support the following operations: + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{abs(\var{x})}{absolute value of \var{x}}{} + \lineiii{int(\var{x})}{\var{x} converted to integer}{(1)} + \lineiii{long(\var{x})}{\var{x} converted to long integer}{(1)} + \lineiii{float(\var{x})}{\var{x} converted to floating point}{} + \lineiii{-\var{x}}{\var{x} negated}{} + \lineiii{+\var{x}}{\var{x} unchanged}{} + \lineiii{\var{x} + \var{y}}{sum of \var{x} and \var{y}}{} + \lineiii{\var{x} - \var{y}}{difference of \var{x} and \var{y}}{} + \lineiii{\var{x} * \var{y}}{product of \var{x} and \var{y}}{} + \lineiii{\var{x} / \var{y}}{quotient of \var{x} and \var{y}}{(2)} + \lineiii{\var{x} \%{} \var{y}}{remainder of \code{\var{x} / \var{y}}}{} + \lineiii{divmod(\var{x}, \var{y})}{the pair \code{(\var{x} / \var{y}, \var{x} \%{} \var{y})}}{(3)} + \lineiii{pow(\var{x}, \var{y})}{\var{x} to the power \var{y}}{} +\end{tableiii} +\indexiii{operations on}{numeric}{types} + +\noindent +Notes: +\begin{description} +\item[(1)] +Conversion from floating point to (long or plain) integer may round or +% XXXJH xref here +truncate as in \C{}; see functions \code{floor} and \code{ceil} in module +\code{math} for well-defined conversions. +\indexii{numeric}{conversions} +\ttindex{math} +\indexii{\C{}}{language} + +\item[(2)] +For (plain or long) integer division, the result is an integer; it +always truncates towards zero. +% XXXJH integer division is better defined nowadays +\indexii{integer}{division} +\indexiii{long}{integer}{division} + +\item[(3)] +See the section on built-in functions for an exact definition. + +\end{description} +% XXXJH exceptions: overflow (when? what operations?) zerodivision + +\subsubsection{Bit-string Operations on Integer Types.} + +Plain and long integer types support additional operations that make +sense only for bit-strings. Negative numbers are treated as their 2's +complement value: + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{\~\var{x}}{the bits of \var{x} inverted}{} + \lineiii{\var{x} \^{} \var{y}}{bitwise \dfn{exclusive or} of \var{x} and \var{y}}{} + \lineiii{\var{x} \&{} \var{y}}{bitwise \dfn{and} of \var{x} and \var{y}}{} + \lineiii{\var{x} | \var{y}}{bitwise \dfn{or} of \var{x} and \var{y}}{} + \lineiii{\var{x} << \var{n}}{\var{x} shifted left by \var{n} bits}{} + \lineiii{\var{x} >> \var{n}}{\var{x} shifted right by \var{n} bits}{} +\end{tableiii} +% XXXJH what's `left'? `right'? maybe better use lsb or msb or something +\indexiii{operations on}{integer}{types} +\indexii{bit-string}{operations} +\indexii{shifting}{operations} +\indexii{masking}{operations} + +\subsection{Sequence Types} + +There are three sequence types: strings, lists and tuples. +Strings literals are written in single quotes: \code{'xyzzy'}. +Lists are constructed with square brackets, +separating items with commas: +\code{[a, b, c]}. +Tuples are constructed by the comma operator +(not within square brackets), with or without enclosing parentheses, +but an empty tuple must have the enclosing parentheses, e.g., +\code{a, b, c} or \code{()}. A single item tuple must have a trailing comma, +e.g., \code{(d,)}. +\indexii{sequence}{types} +\indexii{string}{type} +\indexii{tuple}{type} +\indexii{list}{type} + +Sequence types support the following operations (\var{s} and \var{t} are +sequences of the same type; \var{n}, \var{i} and \var{j} are integers): + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{len(\var{s})}{length of \var{s}}{} + \lineiii{min(\var{s})}{smallest item of \var{s}}{} + \lineiii{max(\var{s})}{largest item of \var{s}}{} + \lineiii{\var{x} in \var{s}}{\code{1} if an item of \var{s} is equal to \var{x}, else \code{0}}{} + \lineiii{\var{x} not in \var{s}}{\code{0} if an item of \var{s} is equal to \var{x}, else \code{1}}{} + \lineiii{\var{s} + \var{t}}{the concatenation of \var{s} and \var{t}}{} + \lineiii{\var{s} * \var{n}{\rm ,} \var{n} * \var{s}}{\var{n} copies of \var{s} concatenated}{} + \lineiii{\var{s}[\var{i}]}{\var{i}'th item of \var{s}, origin 0}{(1)} + \lineiii{\var{s}[\var{i}:\var{j}]}{slice of \var{s} from \var{i} to \var{j}}{(1), (2)} +\end{tableiii} +\indexiii{operations on}{sequence}{types} +\bifuncindex{len} +\bifuncindex{min} +\bifuncindex{max} +\indexii{concatenation}{operation} +\indexii{repetition}{operation} +\indexii{subscript}{operation} +\indexii{slice}{operation} +\opindex{in} +\opindex{not in} + +\noindent +Notes: + +% XXXJH all TeX-math expressions replaced by python-syntax expressions +\begin{description} + +\item[(1)] If \var{i} or \var{j} is negative, the index is relative to + the end of the string, i.e., \code{len(\var{s}) + \var{i}} or + \code{len(\var{s}) + \var{j}} is substituted. But note that \code{-0} is + still \code{0}. + +\item[(2)] The slice of \var{s} from \var{i} to \var{j} is defined as + the sequence of items with index \var{k} such that \code{\var{i} <= + \var{k} < \var{j}}. If \var{i} or \var{j} is greater than + \code{len(\var{s})}, use \code{len(\var{s})}. If \var{i} is omitted, + use \code{0}. If \var{j} is omitted, use \code{len(\var{s})}. If + \var{i} is greater than or equal to \var{j}, the slice is empty. + +\end{description} + +\subsubsection{More String Operations.} + +String objects have one unique built-in operation: the \code{\%} +operator (modulo) with a string left argument interprets this string +as a C sprintf format string to be applied to the right argument, and +returns the string resulting from this formatting operation. + +Unless the format string requires exactly one argument, the right +argument should be a tuple of the correct size. The following format +characters are understood: \%, c, s, i, d, u, o, x, X, e, E, f, g, G. +Width and precision may be a * to specify that an integer argument +specifies the actual width or precision. The flag characters -, +, +blank, \# and 0 are understood. The size specifiers h, l or L may be +present but are ignored. The ANSI features \code{\%p} and \code{\%n} +are not supported. Since Python strings have an explicit length, +\code{\%s} conversions don't assume that \code{'\\0'} is the end of +the string. + +For safety reasons, huge floating point precisions are truncated; +\code{\%f} conversions for huge numbers are replaced by +\code{\%g} conversions. All other errors raise exceptions. + +Additional string operations are defined in standard module +\code{string} and in built-in module \code{regex}. +\index{string} +\index{regex} + +\subsubsection{Mutable Sequence Types.} + +List objects support additional operations that allow in-place +modification of the object. +These operations would be supported by other mutable sequence types +(when added to the language) as well. +Strings and tuples are immutable sequence types and such objects cannot +be modified once created. +The following operations are defined on mutable sequence types (where +\var{x} is an arbitrary object): +\indexiii{mutable}{sequence}{types} +\indexii{list}{type} + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{\var{s}[\var{i}] = \var{x}} + {item \var{i} of \var{s} is replaced by \var{x}}{} + \lineiii{\var{s}[\var{i}:\var{j}] = \var{t}} + {slice of \var{s} from \var{i} to \var{j} is replaced by \var{t}}{} + \lineiii{del \var{s}[\var{i}:\var{j}]} + {same as \code{\var{s}[\var{i}:\var{j}] = []}}{} + \lineiii{\var{s}.append(\var{x})} + {same as \code{\var{s}[len(\var{x}):len(\var{x})] = [\var{x}]}}{} + \lineiii{\var{s}.count(\var{x})} + {return number of \var{i}'s for which \code{\var{s}[\var{i}] == \var{x}}}{} + \lineiii{\var{s}.index(\var{x})} + {return smallest \var{i} such that \code{\var{s}[\var{i}] == \var{x}}}{(1)} + \lineiii{\var{s}.insert(\var{i}, \var{x})} + {same as \code{\var{s}[\var{i}:\var{i}] = [\var{x}]}}{} + \lineiii{\var{s}.remove(\var{x})} + {same as \code{del \var{s}[\var{s}.index(\var{x})]}}{(1)} + \lineiii{\var{s}.reverse()} + {reverses the items of \var{s} in place}{} + \lineiii{\var{s}.sort()} + {permutes the items of \var{s} to satisfy + \code{\var{s}[\var{i}] <= \var{s}[\var{j}]}, + for \code{\var{i} < \var{j}}}{(2)} +\end{tableiii} +\indexiv{operations on}{mutable}{sequence}{types} +\indexiii{operations on}{sequence}{types} +\indexiii{operations on}{list}{type} +\indexii{subscript}{assignment} +\indexii{slice}{assignment} +\stindex{del} +\renewcommand{\indexsubitem}{(list method)} +\ttindex{append} +\ttindex{count} +\ttindex{index} +\ttindex{insert} +\ttindex{remove} +\ttindex{reverse} +\ttindex{sort} + +\noindent +Notes: +\begin{description} +\item[(1)] Raises an exception when \var{x} is not found in \var{s}. + +\item[(2)] The \code{sort()} method takes an optional argument + specifying a comparison function of two arguments (list items) which + should return \code{-1}, \code{0} or \code{1} depending on whether the + first argument is considered smaller than, equal to, or larger than the + second argument. Note that this slows the sorting process down + considerably; e.g. to sort an array in reverse order it is much faster + to use calls to \code{sort()} and \code{reverse()} than to use + \code{sort()} with a comparison function that reverses the ordering of + the elements. +\end{description} + +\subsection{Mapping Types} + +A \dfn{mapping} object maps values of one type (the key type) to +arbitrary objects. Mappings are mutable objects. There is currently +only one mapping type, the \dfn{dictionary}. A dictionary's keys are +almost arbitrary values. The only types of values not acceptable as +keys are values containing lists or dictionaries or other mutable +types that are compared by value rather than by object identity. +Numeric types used for keys obey the normal rules for numeric +comparison: if two numbers compare equal (e.g. 1 and 1.0) then they +can be used interchangeably to index the same dictionary entry. + +\indexii{mapping}{types} +\indexii{dictionary}{type} + +Dictionaries are created by placing a comma-separated list of +\code{\var{key}: \var{value}} pairs within braces, for example: +\code{\{'jack': 4098, 'sjoerd: 4127\}} or +\code{\{4098: 'jack', 4127: 'sjoerd\}}. + +The following operations are defined on mappings (where \var{a} is a +mapping, \var{k} is a key and \var{x} is an arbitrary object): + +\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes} + \lineiii{len(\var{a})}{the number of items in \var{a}}{} + \lineiii{\var{a}[\var{k}]}{the item of \var{a} with key \var{k}}{(1)} + \lineiii{\var{a}[\var{k}] = \var{x}}{set \code{\var{a}[\var{k}]} to \var{x}}{} + \lineiii{del \var{a}[\var{k}]}{remove \code{\var{a}[\var{k}]} from \var{a}}{(1)} + \lineiii{\var{a}.items()}{a copy of \var{a}'s list of (key, item) pairs}{(2)} + \lineiii{\var{a}.keys()}{a copy of \var{a}'s list of keys}{(2)} + \lineiii{\var{a}.values()}{a copy of \var{a}'s list of values}{(2)} + \lineiii{\var{a}.has_key(\var{k})}{\code{1} if \var{a} has a key \var{k}, else \code{0}}{} +\end{tableiii} +\indexiii{operations on}{mapping}{types} +\indexiii{operations on}{dictionary}{type} +\stindex{del} +\bifuncindex{len} +\renewcommand{\indexsubitem}{(dictionary method)} +\ttindex{keys} +\ttindex{has_key} + +% XXXJH some lines above, you talk about `true', elsewhere you +% explicitely states \code{0} or \code{1}. +\noindent +Notes: +\begin{description} +\item[(1)] Raises an exception if \var{k} is not in the map. + +\item[(2)] Keys and values are listed in random order, but at any +moment the ordering of the \code{keys()}, \code{values()} and +\code{items()} lists is the consistent with each other. +\end{description} + +\subsection{Other Built-in Types} + +The interpreter supports several other kinds of objects. +Most of these support only one or two operations. + +\subsubsection{Modules.} + +The only special operation on a module is attribute access: +\code{\var{m}.\var{name}}, where \var{m} is a module and \var{name} accesses +a name defined in \var{m}'s symbol table. Module attributes can be +assigned to. (Note that the \code{import} statement is not, strictly +spoken, an operation on a module object; \code{import \var{foo}} does not +require a module object named \var{foo} to exist, rather it requires +an (external) \emph{definition} for a module named \var{foo} +somewhere.) + +A special member of every module is \code{__dict__}. +This is the dictionary containing the module's symbol table. +Modifying this dictionary will actually change the module's symbol +table, but direct assignment to the \code{__dict__} attribute is not +possible (i.e., you can write \code{\var{m}.__dict__['a'] = 1}, which +defines \code{\var{m}.a} to be \code{1}, but you can't write \code{\var{m}.__dict__ = \{\}}. + +Modules are written like this: \code{<module 'sys'>}. + +\subsubsection{Classes and Class Instances.} +% XXXJH cross ref here +(See the Python Reference Manual for these.) + +\subsubsection{Functions.} + +Function objects are created by function definitions. The only +operation on a function object is to call it: +\code{\var{func}(\var{argument-list})}. + +There are really two flavors of function objects: built-in functions +and user-defined functions. Both support the same operation (to call +the function), but the implementation is different, hence the +different object types. + +The implementation adds two special read-only attributes: +\code{\var{f}.func_code} is a function's \dfn{code object} (see below) and +\code{\var{f}.func_globals} is the dictionary used as the function's +global name space (this is the same as \code{\var{m}.__dict__} where +\var{m} is the module in which the function \var{f} was defined). + +\subsubsection{Methods.} + +Methods are functions that are called using the attribute notation. +There are two flavors: built-in methods (such as \code{append()} on +lists) and class instance methods. Built-in methods are described +with the types that support them. + +The implementation adds two special read-only attributes to class +instance methods: \code{\var{m}.im_self} is the object whose method this +is, and \code{\var{m}.im_func} is the function implementing the method. +Calling \code{\var{m}(\var{arg-1}, \var{arg-2}, {\rm \ldots}, +\var{arg-n})} is completely equivalent to calling +\code{\var{m}.im_func(\var{m}.im_self, \var{arg-1}, \var{arg-2}, {\rm +\ldots}, \var{arg-n})}. + +(See the Python Reference Manual for more info.) + +\subsubsection{Type Objects.} + +Type objects represent the various object types. An object's type is +% XXXJH xref here +accessed by the built-in function \code{type()}. There are no special +operations on types. + +Types are written like this: \code{<type 'int'>}. + +\subsubsection{The Null Object.} + +This object is returned by functions that don't explicitly return a +value. It supports no special operations. There is exactly one null +object, named \code{None} (a built-in name). + +It is written as \code{None}. + +\subsubsection{File Objects.} + +File objects are implemented using \C{}'s \code{stdio} package and can be +% XXXJH xref here +created with the built-in function \code{open()} described under +Built-in Functions below. + +When a file operation fails for an I/O-related reason, the exception +\code{IOError} is raised. This includes situations where the +operation is not defined for some reason, like \code{seek()} on a tty +device or writing a file opened for reading. + +Files have the following methods: + + +\renewcommand{\indexsubitem}{(file method)} + +\begin{funcdesc}{close}{} + Close the file. A closed file cannot be read or written anymore. +\end{funcdesc} + +\begin{funcdesc}{flush}{} + Flush the internal buffer, like \code{stdio}'s \code{fflush()}. +\end{funcdesc} + +\begin{funcdesc}{isatty}{} + Return \code{1} if the file is connected to a tty(-like) device, else + \code{0}. +\end{funcdesc} + +\begin{funcdesc}{read}{size} + Read at most \var{size} bytes from the file (less if the read hits + \EOF{} or no more data is immediately available on a pipe, tty or + similar device). If the \var{size} argument is omitted, read all + data until \EOF{} is reached. The bytes are returned as a string + object. An empty string is returned when \EOF{} is encountered + immediately. (For certain files, like ttys, it makes sense to + continue reading after an \EOF{} is hit.) +\end{funcdesc} + +\begin{funcdesc}{readline}{} + Read one entire line from the file. A trailing newline character is + kept in the string (but may be absent when a file ends with an + incomplete line). An empty string is returned when \EOF{} is hit + immediately. Note: unlike \code{stdio}'s \code{fgets()}, the returned + string contains null characters (\code{'\e 0'}) if they occurred in the + input. +\end{funcdesc} + +\begin{funcdesc}{readlines}{} + Read until \EOF{} using \code{readline()} and return a list containing + the lines thus read. +\end{funcdesc} + +\begin{funcdesc}{seek}{offset\, whence} + Set the file's current position, like \code{stdio}'s \code{fseek()}. + The \var{whence} argument is optional and defaults to \code{0} + (absolute file positioning); other values are \code{1} (seek + relative to the current position) and \code{2} (seek relative to the + file's end). There is no return value. +\end{funcdesc} + +\begin{funcdesc}{tell}{} + Return the file's current position, like \code{stdio}'s \code{ftell()}. +\end{funcdesc} + +\begin{funcdesc}{write}{str} + Write a string to the file. There is no return value. +\end{funcdesc} + +\subsubsection{Internal Objects.} + +(See the Python Reference Manual for these.) + +\subsection{Special Attributes} + +The implementation adds a few special read-only attributes to several +object types, where they are relevant: + +\begin{itemize} + +\item +\code{\var{x}.__dict__} is a dictionary of some sort used to store an +object's (writable) attributes; + +\item +\code{\var{x}.__methods__} lists the methods of many built-in object types, +e.g., \code{[].__methods__} is +% XXXJH results in?, yields?, written down as an example +\code{['append', 'count', 'index', 'insert', 'remove', 'reverse', 'sort']}; + +\item +\code{\var{x}.__members__} lists data attributes; + +\item +\code{\var{x}.__class__} is the class to which a class instance belongs; + +\item +\code{\var{x}.__bases__} is the tuple of base classes of a class object. + +\end{itemize} diff --git a/Doc/libunix.tex b/Doc/libunix.tex new file mode 100644 index 0000000..ca4ec97 --- /dev/null +++ b/Doc/libunix.tex @@ -0,0 +1,5 @@ +\chapter{UNIX ONLY} + +The modules described in this chapter provide interfaces to features +that are unique to the UNIX operating system, or in some cases to +some or many variants of it. diff --git a/Doc/libwhrandom.tex b/Doc/libwhrandom.tex new file mode 100644 index 0000000..8ad2339 --- /dev/null +++ b/Doc/libwhrandom.tex @@ -0,0 +1,20 @@ +\section{Standard Module \sectcode{whrandom}} + +\stmodindex{whrandom} +This module implements a Wichmann-Hill pseudo-random number generator. +It defines the following functions: + +\renewcommand{\indexsubitem}{(in module whrandom)} +\begin{funcdesc}{random}{} +Returns the next random floating point number in the range [0.0 ... 1.0). +\end{funcdesc} + +\begin{funcdesc}{seed}{x\, y\, z} +Initializes the random number generator from the integers +\var{x}, +\var{y} +and +\var{z}. +When the module is first imported, the random number is initialized +using values derived from the current time. +\end{funcdesc} diff --git a/Doc/mac/libmac.tex b/Doc/mac/libmac.tex new file mode 100644 index 0000000..77c8956 --- /dev/null +++ b/Doc/mac/libmac.tex @@ -0,0 +1,40 @@ +\chapter{MACINTOSH ONLY} + +The following modules are available on the Apple Macintosh only. + +\section{Built-in module \sectcode{mac}} + +\bimodindex{mac} +This module provides a subset of the operating system dependent +functionality provided by the optional built-in module \code{posix}. +It is best accessed through the more portable standard module +\code{os}. + +The following functions are available in this module: +\code{chdir}, +\code{getcwd}, +\code{listdir}, +\code{mkdir}, +\code{rename}, +\code{rmdir}, +\code{stat}, +\code{sync}, +\code{unlink}, +as well as the exception \code{error}. + +\section{Standard module \sectcode{macpath}} + +\stmodindex{macpath} +This module provides a subset of the pathname manipulation functions +available from the optional standard module \code{posixpath}. It is +best accessed through the more portable standard module \code{os}, as +\code{os.path}. + +The following functions are available in this module: +\code{normcase}, +\code{isabs}, +\code{join}, +\code{split}, +\code{isdir}, +\code{isfile}, +\code{exists}. |