]> granicus.if.org Git - python/commitdiff
Added documentation for the xreadlines module & related changes. The
authorFred Drake <fdrake@acm.org>
Tue, 9 Jan 2001 22:47:46 +0000 (22:47 +0000)
committerFred Drake <fdrake@acm.org>
Tue, 9 Jan 2001 22:47:46 +0000 (22:47 +0000)
documentation was written by Jeff Epler (thanks!).

Doc/ACKS
Doc/Makefile.deps
Doc/lib/lib.tex
Doc/lib/libstdtypes.tex
Doc/lib/libxreadlines.tex [new file with mode: 0644]

index b4bbc3fbcd4f0fb32520c5b422ce6421102943a8..577a0033294e0864eb386b802e04910bfd1a52e7 100644 (file)
--- a/Doc/ACKS
+++ b/Doc/ACKS
@@ -38,6 +38,7 @@ Andrew Dalke
 Ben Darnell
 Robert Donohue
 Fred L. Drake, Jr.
+Jeff Epler
 Michael Ernst
 Blame Andy Eskilsson
 Martijn Faassen
index 8e02a948163678a96053e9d8ac9b69f9ff569e27..2fe792e9741ba979ff7b581daabada5f15bf91af 100644 (file)
@@ -190,6 +190,7 @@ LIBFILES= $(MANSTYLES) $(COMMONTEX) \
        ../lib/libuu.tex \
        ../lib/libsunaudio.tex \
        ../lib/libfileinput.tex \
+       ../lib/libxreadlines.tex \
        ../lib/libimaplib.tex \
        ../lib/libpoplib.tex \
        ../lib/libcalendar.tex \
index 1792d1824ac1f7191ba20b61959bfdec818be130..d0b44b57ce9a6b4797c3ead6968cd288a3fd5220 100644 (file)
@@ -121,6 +121,7 @@ and how to embed it in other applications.
 \input{libarray}
 \input{libcfgparser}
 \input{libfileinput}
+\input{libxreadlines}
 \input{libcalendar}
 \input{libcmd}
 \input{libshlex}
index 0cb82640a5e2e862ce8fa021ef149472b07d2b4a..fe535999a62d0328e3f53138b23bd2a4786d6e77 100644 (file)
@@ -1101,15 +1101,21 @@ Files have the following methods:
 \end{methoddesc}
 
 \begin{methoddesc}[file]{write}{str}
-Write a string to the file.  There is no return value.  Note: Due to
-buffering, the string may not actually show up in the file until
-the \method{flush()} or \method{close()} method is called.
+  Write a string to the file.  There is no return value.  Note: Due to
+  buffering, the string may not actually show up in the file until
+  the \method{flush()} or \method{close()} method is called.
 \end{methoddesc}
 
 \begin{methoddesc}[file]{writelines}{list}
-Write a list of strings to the file.  There is no return value.
-(The name is intended to match \method{readlines()};
-\method{writelines()} does not add line separators.)
+  Write a list of strings to the file.  There is no return value.
+  (The name is intended to match \method{readlines()};
+  \method{writelines()} does not add line separators.)
+\end{methoddesc}
+
+\begin{methoddesc}[file]{xreadlines}{}
+  Equivalent to
+  \function{xreadlines.xreadlines(\var{file})}.\refstmodindex{xreadlines}
+  (See the \refmodule{xreadlines} module for more information.)
 \end{methoddesc}
 
 
diff --git a/Doc/lib/libxreadlines.tex b/Doc/lib/libxreadlines.tex
new file mode 100644 (file)
index 0000000..0285f03
--- /dev/null
@@ -0,0 +1,52 @@
+\section{\module{xreadlines} ---
+         Efficient iteration over a file}
+
+\declaremodule{extension}{xreadlines}
+\modulesynopsis{Efficient iteration over the lines of a file.}
+
+This module defines a new object type which can efficiently iterate
+over the lines of a file.  An xreadlines object is a sequence type
+which implements simple in-order indexing beginning at \code{0}, as
+required by \keyword{for} statement or the
+\function{filter()} function.
+
+Thus, the code
+
+\begin{verbatim}
+import xreadlines, sys
+
+for line in xreadlines.xreadlines(sys.stdin):
+    pass
+\end{verbatim}
+
+has approximately the same speed and memory consumption as
+
+\begin{verbatim}
+while 1:
+    lines = sys.stdin.readlines(8*1024)
+    if not lines: break
+    for line in lines:
+        pass
+\end{verbatim}
+
+except the clarity of the \keyword{for} statement is retained in the
+former case.
+
+\begin{funcdesc}{xreadlines}{fileobj}
+  Return a new xreadlines object which will iterate over the contents
+  of \var{fileobj}.  \var{fileobj} must have a \method{readlines()}
+  method that supports the \var{sizehint} parameter.
+\end{funcdesc}
+
+An xreadlines object \var{s} supports the following sequence
+operation:
+
+\begin{tableii}{c|l}{code}{Operation}{Result}
+ \lineii{\var{s}[\var{i}]}{\var{i}'th line of \var{s}}
+\end{tableii}
+
+If successive values of \var{i} are not sequential starting from
+\code{0}, this code will raise \exception{RuntimeError}.
+
+After the last line of the file is read, this code will raise an
+\exception{IndexError}.