This article doesn't attempt to provide a complete specification for
the new features, but instead provides a convenient overview of the
new features. For full details, you should refer to 2.2 documentation
-such as the Library Reference and the Reference Guide, or to the PEP
-for a particular new feature.
+such as the
+\citetitle[http://python.sourceforge.net/devel-docs/lib/lib.html]{Python
+Library Reference} and the
+\citetitle[http://python.sourceforge.net/devel-docs/ref/ref.html]{Python
+Reference Manual}, or to the PEP for a particular new feature.
+% These \citetitle marks should get the python.org URLs for the final
+% release, just as soon as the docs are published there.
The final release of Python 2.2 is planned for October 2001.
do support random access. The basic idea of iterators is quite
simple. A new built-in function, \function{iter(obj)}, returns an
iterator for the object \var{obj}. (It can also take two arguments:
-\code{iter(\var{C}, \var{sentinel})} will call the callable \var{C}, until it
-returns \var{sentinel}, which will signal that the iterator is done. This form probably won't be used very often.)
+\code{iter(\var{C}, \var{sentinel})} will call the callable \var{C},
+until it returns \var{sentinel}, which will signal that the iterator
+is done. This form probably won't be used very often.)
Python classes can define an \method{__iter__()} method, which should
create and return a new iterator for the object; if the object is its
Iterator support has been added to some of Python's basic types. The
\keyword{in} operator now works on dictionaries, so \code{\var{key} in
dict} is now equivalent to \code{dict.has_key(\var{key})}.
-Calling \function{iter()} on a dictionary will return an iterator which loops over their keys:
+Calling \function{iter()} on a dictionary will return an iterator
+which loops over their keys:
\begin{verbatim}
>>> m = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4, 'May': 5, 'Jun': 6,
Note that you can only go forward in an iterator; there's no way to
get the previous element, reset the iterator, or make a copy of it.
-An iterator object could provide such additional capabilities, but the iterator protocol only requires a \method{next()} method.
+An iterator object could provide such additional capabilities, but the
+iterator protocol only requires a \method{next()} method.
\begin{seealso}
This shouldn't be much of a limitation, since \keyword{exec} is rarely
used in most Python code (and when it is used, it's often a sign of a
poor design anyway).
-%\end{seealso}
\begin{seealso}
# 'title': 'html2fo 0.3 (Default)'}, ... ]
\end{verbatim}
-See \url{http://www.xmlrpc.com} for more information about XML-RPC.
+See \url{http://www.xmlrpc.com/} for more information about XML-RPC.
\item The \module{socket} module can be compiled to support IPv6;
specify the \longprogramopt{enable-ipv6} option to Python's configure
NAMESPACE extension defined in \rfc{2342}. (Contributed by Michel
Pelletier.)
- \item The \module{rfc822} module's parsing of e-mail addresses is
+ \item The \module{rfc822} module's parsing of email addresses is
now compliant with \rfc{2822}, an update to \rfc{822}. The module's
name is \emph{not} going to be changed to \samp{rfc2822}.
(Contributed by Barry Warsaw.)
now cause a \exception{TypeError} exception to be raised, with the
message "\var{function} takes no keyword arguments".
- \item The code for the MacOS port for Python, maintained by Jack
+ \item The code for the Mac OS port for Python, maintained by Jack
Jansen, is now kept in the main Python CVS tree.
\item The new license introduced with Python 1.6 wasn't
\cfunction{PyEval_SetProfile()} and \cfunction{PyEval_SetTrace()}.
The existing \function{sys.setprofile()} and
\function{sys.settrace()} functions still exist, and have simply
- been changed to use the new C-level interface.
+ been changed to use the new C-level interface. (Contributed by Fred
+ L. Drake, Jr.)
\item The \file{Tools/scripts/ftpmirror.py} script
now parses a \file{.netrc} file, if you have one.
\item XXX C API: Reorganization of object calling
-The call_object()
-function, originally in ceval.c, begins a new life as the official
-API PyObject_Call(). It is also much simplified: all it does is call
-the tp_call slot, or raise an exception if that's NULL.
+The \cfunction{call_object()} function, originally in \file{ceval.c},
+begins a new life as the official API \cfunction{PyObject_Call()}. It
+is also much simplified: all it does is call the \member{tp_call}
+slot, or raise an exception if that's \NULL.
%The subsidiary functions (call_eval_code2(), call_cfunction(),
%call_instance(), and call_method()) have all been moved to the file
Unicode encoding when dealing with the file system. As discussed on
python-dev and in patch 410465.
- \item XXX Lots of patches to dictionaries; measure performance improvement, if any.
+ \item XXX Lots of patches to dictionaries; measure performance
+ improvement, if any.
\end{itemize}