Merged revisions 75797 via svnmerge from

svn+ssh://svn.python.org/python/branches/py3k

................
  r75797 | georg.brandl | 2009-10-27 16:28:25 +0100 (Di, 27 Okt 2009) | 129 lines

  Merged revisions 75365,75394,75402-75403,75418,75459,75484,75592-75596,75600,75602-75607,75610-75613,75616-75617,75623,75627,75640,75647,75696,75795 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r75365 | georg.brandl | 2009-10-11 22:16:16 +0200 (So, 11 Okt 2009) | 1 line

    Fix broken links found by "make linkcheck".  scipy.org seems to be done right now, so I could not verify links going there.
  ........
    r75394 | georg.brandl | 2009-10-13 20:10:59 +0200 (Di, 13 Okt 2009) | 1 line

    Fix markup.
  ........
    r75402 | georg.brandl | 2009-10-14 17:51:48 +0200 (Mi, 14 Okt 2009) | 1 line

    #7125: fix typo.
  ........
    r75403 | georg.brandl | 2009-10-14 17:57:46 +0200 (Mi, 14 Okt 2009) | 1 line

    #7126: os.environ changes *do* take effect in subprocesses started with os.system().
  ........
    r75418 | georg.brandl | 2009-10-14 20:48:32 +0200 (Mi, 14 Okt 2009) | 1 line

    #7116: str.join() takes an iterable.
  ........
    r75459 | georg.brandl | 2009-10-17 10:57:43 +0200 (Sa, 17 Okt 2009) | 1 line

    Fix refleaks in _ctypes PyCSimpleType_New, which fixes the refleak seen in test___all__.
  ........
    r75484 | georg.brandl | 2009-10-18 09:58:12 +0200 (So, 18 Okt 2009) | 1 line

    Fix missing word.
  ........
    r75592 | georg.brandl | 2009-10-22 09:05:48 +0200 (Do, 22 Okt 2009) | 1 line

    Fix punctuation.
  ........
    r75593 | georg.brandl | 2009-10-22 09:06:49 +0200 (Do, 22 Okt 2009) | 1 line

    Revert unintended change.
  ........
    r75594 | georg.brandl | 2009-10-22 09:56:02 +0200 (Do, 22 Okt 2009) | 1 line

    Fix markup.
  ........
    r75595 | georg.brandl | 2009-10-22 09:56:56 +0200 (Do, 22 Okt 2009) | 1 line

    Fix duplicate target.
  ........
    r75596 | georg.brandl | 2009-10-22 10:05:04 +0200 (Do, 22 Okt 2009) | 1 line

    Add a new directive marking up implementation details and start using it.
  ........
    r75600 | georg.brandl | 2009-10-22 13:01:46 +0200 (Do, 22 Okt 2009) | 1 line

    Make it more robust.
  ........
    r75602 | georg.brandl | 2009-10-22 13:28:06 +0200 (Do, 22 Okt 2009) | 1 line

    Document new directive.
  ........
    r75603 | georg.brandl | 2009-10-22 13:28:23 +0200 (Do, 22 Okt 2009) | 1 line

    Allow short form with text as argument.
  ........
    r75604 | georg.brandl | 2009-10-22 13:36:50 +0200 (Do, 22 Okt 2009) | 1 line

    Fix stylesheet for multi-paragraph impl-details.
  ........
    r75605 | georg.brandl | 2009-10-22 13:48:10 +0200 (Do, 22 Okt 2009) | 1 line

    Use "impl-detail" directive where applicable.
  ........
    r75606 | georg.brandl | 2009-10-22 17:00:06 +0200 (Do, 22 Okt 2009) | 1 line

    #6324: membership test tries iteration via __iter__.
  ........
    r75607 | georg.brandl | 2009-10-22 17:04:09 +0200 (Do, 22 Okt 2009) | 1 line

    #7088: document new functions in signal as Unix-only.
  ........
    r75610 | georg.brandl | 2009-10-22 17:27:24 +0200 (Do, 22 Okt 2009) | 1 line

    Reorder __slots__ fine print and add a clarification.
  ........
    r75611 | georg.brandl | 2009-10-22 17:42:32 +0200 (Do, 22 Okt 2009) | 1 line

    #7035: improve docs of the various <method>_errors() functions, and give them docstrings.
  ........
    r75612 | georg.brandl | 2009-10-22 17:52:15 +0200 (Do, 22 Okt 2009) | 1 line

    #7156: document curses as Unix-only.
  ........
    r75613 | georg.brandl | 2009-10-22 17:54:35 +0200 (Do, 22 Okt 2009) | 1 line

    #6977: getopt does not support optional option arguments.
  ........
    r75616 | georg.brandl | 2009-10-22 18:17:05 +0200 (Do, 22 Okt 2009) | 1 line

    Add proper references.
  ........
    r75617 | georg.brandl | 2009-10-22 18:20:55 +0200 (Do, 22 Okt 2009) | 1 line

    Make printout margin important.
  ........
    r75623 | georg.brandl | 2009-10-23 10:14:44 +0200 (Fr, 23 Okt 2009) | 1 line

    #7188: fix optionxform() docs.
  ........
    r75627 | fred.drake | 2009-10-23 15:04:51 +0200 (Fr, 23 Okt 2009) | 2 lines

    add further note about what's passed to optionxform
  ........
    r75640 | neil.schemenauer | 2009-10-23 21:58:17 +0200 (Fr, 23 Okt 2009) | 2 lines

    Improve some docstrings in the 'warnings' module.
  ........
    r75647 | georg.brandl | 2009-10-24 12:04:19 +0200 (Sa, 24 Okt 2009) | 1 line

    Fix markup.
  ........
    r75696 | georg.brandl | 2009-10-25 21:25:43 +0100 (So, 25 Okt 2009) | 1 line

    Fix a demo.
  ........
    r75795 | georg.brandl | 2009-10-27 16:10:22 +0100 (Di, 27 Okt 2009) | 1 line

    Fix a strange mis-edit.
  ........
................
This commit is contained in:
Georg Brandl 2009-10-27 20:24:45 +00:00
parent 1e8cbe36cc
commit 628e6f908e
50 changed files with 376 additions and 239 deletions

View File

@ -24,7 +24,6 @@
# - Handles blank input lines correctly # - Handles blank input lines correctly
import re import re
import string
import sys import sys
def main(): def main():
@ -32,18 +31,13 @@ def main():
def makekey(item, prog=prog): def makekey(item, prog=prog):
match = prog.match(item) match = prog.match(item)
if match: if match:
var, num = match.group(1, 2) var, num = match.groups()
return string.atoi(num), var return int(num), var
else: else:
# Bad input -- pretend it's a var with value 0 # Bad input -- pretend it's a var with value 0
return 0, item return 0, item
while 1: for line in sys.stdin:
line = sys.stdin.readline() items = sorted(makekey(item) for item in line.split())
if not line:
break
items = line.split()
items = list(map(makekey, items))
items.sort()
for num, var in items: for num, var in items:
print("%s=%s" % (var, num), end=' ') print("%s=%s" % (var, num), end=' ')
print() print()

View File

@ -1976,9 +1976,9 @@ it so that it's implementing the class :class:`peel_banana`, a subclass of
Subclasses of :class:`Command` must define the following methods. Subclasses of :class:`Command` must define the following methods.
.. method:: Command.initialize_options()(S) .. method:: Command.initialize_options()
et default values for all the options that this command supports. Note that Set default values for all the options that this command supports. Note that
these defaults may be overridden by other commands, by the setup script, by these defaults may be overridden by other commands, by the setup script, by
config files, or by the command-line. Thus, this is not the place to code config files, or by the command-line. Thus, this is not the place to code
dependencies between options; generally, :meth:`initialize_options` dependencies between options; generally, :meth:`initialize_options`

View File

@ -626,6 +626,24 @@ units as well as normal text:
-------------- --------------
.. describe:: impl-detail
This directive is used to mark CPython-specific information. Use either with
a block content or a single sentence as an argument, i.e. either ::
.. impl-detail::
This describes some implementation detail.
More explanation.
or ::
.. impl-detail:: This shortly mentions an implementation detail.
"\ **CPython implementation detail:**\ " is automatically prepended to the
content.
.. describe:: seealso .. describe:: seealso
Many sections include a list of references to module documentation or Many sections include a list of references to module documentation or

View File

@ -396,12 +396,13 @@ calls into the Python run-time system, even for seemingly simple operations like
``x+1``. ``x+1``.
Several projects described in the Python newsgroup or at past `Python Several projects described in the Python newsgroup or at past `Python
conferences <http://python.org/community/workshops/>`_ have shown that this approach is feasible, conferences <http://python.org/community/workshops/>`_ have shown that this
although the speedups reached so far are only modest (e.g. 2x). Jython uses the approach is feasible, although the speedups reached so far are only modest
same strategy for compiling to Java bytecode. (Jim Hugunin has demonstrated (e.g. 2x). Jython uses the same strategy for compiling to Java bytecode. (Jim
that in combination with whole-program analysis, speedups of 1000x are feasible Hugunin has demonstrated that in combination with whole-program analysis,
for small demo programs. See the proceedings from the `1997 Python conference speedups of 1000x are feasible for small demo programs. See the proceedings
<http://python.org/community/workshops/1997-10/proceedings/>`_ for more information.) from the `1997 Python conference
<http://python.org/workshops/1997-10/proceedings/>`_ for more information.)
Internally, Python source code is always translated into a bytecode Internally, Python source code is always translated into a bytecode
representation, and this bytecode is then executed by the Python virtual representation, and this bytecode is then executed by the Python virtual

View File

@ -48,7 +48,7 @@ Python's C API.
If you need to interface to some C or C++ library for which no Python extension If you need to interface to some C or C++ library for which no Python extension
currently exists, you can try wrapping the library's data types and functions currently exists, you can try wrapping the library's data types and functions
with a tool such as `SWIG <http://www.swig.org>`_. `SIP with a tool such as `SWIG <http://www.swig.org>`_. `SIP
<http://www.riverbankcomputing.co.uk/sip/>`_, `CXX <http://www.riverbankcomputing.co.uk/software/sip/>`__, `CXX
<http://cxx.sourceforge.net/>`_ `Boost <http://cxx.sourceforge.net/>`_ `Boost
<http://www.boost.org/libs/python/doc/index.html>`_, or `Weave <http://www.boost.org/libs/python/doc/index.html>`_, or `Weave
<http://www.scipy.org/site_content/weave>`_ are also alternatives for wrapping <http://www.scipy.org/site_content/weave>`_ are also alternatives for wrapping

View File

@ -164,9 +164,10 @@ Sphinx-formatted documentation, Python library modules, example programs, and
several useful pieces of freely distributable software. The source will compile several useful pieces of freely distributable software. The source will compile
and run out of the box on most UNIX platforms. and run out of the box on most UNIX platforms.
Consult the `Developer FAQ .. XXX update link once the dev faq is relocated
<http://www.python.org/dev/devfaq.html#subversion-svn>`__ for more information
on getting the source code and compiling it. Consult the `Developer FAQ <http://www.python.org/dev/faq/>`__ for more
information on getting the source code and compiling it.
How do I get documentation on Python? How do I get documentation on Python?
@ -176,7 +177,7 @@ How do I get documentation on Python?
The standard documentation for the current stable version of Python is available The standard documentation for the current stable version of Python is available
at http://docs.python.org/. PDF, plain text, and downloadable HTML versions are at http://docs.python.org/. PDF, plain text, and downloadable HTML versions are
also available at http://docs.python.org/download/. also available at http://docs.python.org/download.html.
The documentation is written in reStructuredText and processed by `the Sphinx The documentation is written in reStructuredText and processed by `the Sphinx
documentation tool <http://sphinx.pocoo.org/>`__. The reStructuredText source documentation tool <http://sphinx.pocoo.org/>`__. The reStructuredText source
@ -220,8 +221,10 @@ releases are announced on the comp.lang.python and comp.lang.python.announce
newsgroups and on the Python home page at http://www.python.org/; an RSS feed of newsgroups and on the Python home page at http://www.python.org/; an RSS feed of
news is available. news is available.
.. XXX update link once the dev faq is relocated
You can also access the development version of Python through Subversion. See You can also access the development version of Python through Subversion. See
http://www.python.org/dev/devfaq.html#subversion-svn for details. http://www.python.org/dev/faq/ for details.
How do I submit bug reports and patches for Python? How do I submit bug reports and patches for Python?

View File

@ -45,11 +45,12 @@ Qt
''' '''
There are bindings available for the Qt toolkit (`PyQt There are bindings available for the Qt toolkit (`PyQt
<http://www.riverbankcomputing.co.uk/pyqt/>`_) and for KDE (PyKDE). If you're <http://www.riverbankcomputing.co.uk/software/pyqt/>`_) and for KDE (PyKDE). If
writing open source software, you don't need to pay for PyQt, but if you want to you're writing open source software, you don't need to pay for PyQt, but if you
write proprietary applications, you must buy a PyQt license from `Riverbank want to write proprietary applications, you must buy a PyQt license from
Computing <http://www.riverbankcomputing.co.uk>`_ and a Qt license from `Riverbank Computing <http://www.riverbankcomputing.co.uk>`_ and (up to Qt 4.4;
`Trolltech <http://www.trolltech.com>`_. Qt 4.5 upwards is licensed under the LGPL license) a Qt license from `Trolltech
<http://www.trolltech.com>`_.
Gtk+ Gtk+
'''' ''''

View File

@ -16,14 +16,10 @@ Check :ref:`the Library Reference <library-index>` to see if there's a relevant
standard library module. (Eventually you'll learn what's in the standard standard library module. (Eventually you'll learn what's in the standard
library and will able to skip this step.) library and will able to skip this step.)
Search the `Python Package Index <http://pypi.python.org/pypi>`_. For third-party packages, search the `Python Package Index
<http://pypi.python.org/pypi>`_ or try `Google <http://www.google.com>`_ or
Next, check the `Vaults of Parnassus <http://www.vex.net/parnassus/>`_, an older another Web search engine. Searching for "Python" plus a keyword or two for
index of packages. your topic of interest will usually find something helpful.
Finally, try `Google <http://www.google.com>`_ or other Web search engine.
Searching for "Python" plus a keyword or two for your topic of interest will
usually find something helpful.
Where is the math.py (socket.py, regex.py, etc.) source file? Where is the math.py (socket.py, regex.py, etc.) source file?
@ -181,11 +177,10 @@ in Python.
How do I create documentation from doc strings? How do I create documentation from doc strings?
----------------------------------------------- -----------------------------------------------
.. XXX mention Sphinx/epydoc
The :mod:`pydoc` module can create HTML from the doc strings in your Python The :mod:`pydoc` module can create HTML from the doc strings in your Python
source code. An alternative is `pythondoc source code. An alternative for creating API documentation purely from
<http://starship.python.net/crew/danilo/pythondoc/>`_. docstrings is `epydoc <http://epydoc.sf.net/>`_. `Sphinx
<http://sphinx.pocoo.org>`_ can also include docstring content.
How do I get a single keypress at a time? How do I get a single keypress at a time?
@ -237,7 +232,7 @@ The :mod:`threading` module builds convenient abstractions on top of the
low-level primitives provided by the :mod:`_thread` module. low-level primitives provided by the :mod:`_thread` module.
Aahz has a set of slides from his threading tutorial that are helpful; see Aahz has a set of slides from his threading tutorial that are helpful; see
http://starship.python.net/crew/aahz/OSCON2001/. http://www.pythoncraft.com/OSCON2001/.
None of my threads seem to run: why? None of my threads seem to run: why?
@ -397,6 +392,7 @@ Can't we get rid of the Global Interpreter Lock?
------------------------------------------------ ------------------------------------------------
.. XXX mention multiprocessing .. XXX mention multiprocessing
.. XXX link to dbeazley's talk about GIL?
The Global Interpreter Lock (GIL) is often seen as a hindrance to Python's The Global Interpreter Lock (GIL) is often seen as a hindrance to Python's
deployment on high-end multiprocessor server machines, because a multi-threaded deployment on high-end multiprocessor server machines, because a multi-threaded
@ -583,7 +579,7 @@ substituted for standard input and output. You will have to use pseudo ttys
("ptys") instead of pipes. Or you can use a Python interface to Don Libes' ("ptys") instead of pipes. Or you can use a Python interface to Don Libes'
"expect" library. A Python extension that interfaces to expect is called "expy" "expect" library. A Python extension that interfaces to expect is called "expy"
and available from http://expectpy.sourceforge.net. A pure Python solution that and available from http://expectpy.sourceforge.net. A pure Python solution that
works like expect is ` pexpect <http://pexpect.sourceforge.net>`_. works like expect is `pexpect <http://pypi.python.org/pypi/pexpect/>`_.
How do I access the serial (RS232) port? How do I access the serial (RS232) port?

View File

@ -67,8 +67,8 @@ plug-ins to add a custom feature. In addition to the bug checking that
PyChecker performs, Pylint offers some additional features such as checking line PyChecker performs, Pylint offers some additional features such as checking line
length, whether variable names are well-formed according to your coding length, whether variable names are well-formed according to your coding
standard, whether declared interfaces are fully implemented, and more. standard, whether declared interfaces are fully implemented, and more.
http://www.logilab.org/projects/pylint/documentation provides a full list of http://www.logilab.org/card/pylint_manual provides a full list of Pylint's
Pylint's features. features.
How can I create a stand-alone binary from a Python script? How can I create a stand-alone binary from a Python script?
@ -1141,7 +1141,7 @@ use a list comprehension::
A = [[None] * w for i in range(h)] A = [[None] * w for i in range(h)]
Or, you can use an extension that provides a matrix datatype; `Numeric Python Or, you can use an extension that provides a matrix datatype; `Numeric Python
<http://www.pfdubois.com/numpy/>`_ is the best known. <http://numpy.scipy.org/>`_ is the best known.
How do I apply a method to a sequence of objects? How do I apply a method to a sequence of objects?

View File

@ -389,10 +389,10 @@ need)::
.py :REG_SZ: c:\<path to python>\python.exe -u %s %s .py :REG_SZ: c:\<path to python>\python.exe -u %s %s
This line will allow you to call your script with a simple reference like: This line will allow you to call your script with a simple reference like:
http://yourserver/scripts/yourscript.py provided "scripts" is an "executable" ``http://yourserver/scripts/yourscript.py`` provided "scripts" is an
directory for your server (which it usually is by default). The "-u" flag "executable" directory for your server (which it usually is by default). The
specifies unbuffered and binary mode for stdin - needed when working with binary :option:`-u` flag specifies unbuffered and binary mode for stdin - needed when
data. working with binary data.
In addition, it is recommended that using ".py" may not be a good idea for the In addition, it is recommended that using ".py" may not be a good idea for the
file extensions when used in this context (you might want to reserve ``*.py`` file extensions when used in this context (you might want to reserve ``*.py``
@ -517,7 +517,7 @@ Why doesn't os.popen()/win32pipe.popen() work on Win9x?
There is a bug in Win9x that prevents os.popen/win32pipe.popen* from There is a bug in Win9x that prevents os.popen/win32pipe.popen* from
working. The good news is there is a way to work around this problem. The working. The good news is there is a way to work around this problem. The
Microsoft Knowledge Base article that you need to lookup is: Q150956. You will Microsoft Knowledge Base article that you need to lookup is: Q150956. You will
find links to the knowledge base at: http://www.microsoft.com/kb. find links to the knowledge base at: http://support.microsoft.com/.
PyRun_SimpleFile() crashes on Windows but not on Unix; why? PyRun_SimpleFile() crashes on Windows but not on Unix; why?
@ -604,4 +604,4 @@ Tim Peters:
we can't fix it). we can't fix it).
David A Burton has written a little program to fix this. Go to David A Burton has written a little program to fix this. Go to
http://www.burtonsys.com/download.html and click on "ctl3dfix.zip". http://www.burtonsys.com/downloads.html and click on "ctl3dfix.zip".

View File

@ -403,7 +403,7 @@ These are grouped into categories such as "Letter", "Number", "Punctuation", or
from the above output, ``'Ll'`` means 'Letter, lowercase', ``'No'`` means from the above output, ``'Ll'`` means 'Letter, lowercase', ``'No'`` means
"Number, other", ``'Mn'`` is "Mark, nonspacing", and ``'So'`` is "Symbol, "Number, other", ``'Mn'`` is "Mark, nonspacing", and ``'So'`` is "Symbol,
other". See other". See
<http://www.unicode.org/Public/UNIDATA/UCD.html#General_Category_Values> for a <http://unicode.org/Public/5.1.0/ucd/UCD.html#General_Category_Values> for a
list of category codes. list of category codes.
References References

View File

@ -270,8 +270,7 @@ Depending on the web server you need to have a special module.
* lighttpd ships its own `FastCGI module * lighttpd ships its own `FastCGI module
<http://trac.lighttpd.net/trac/wiki/Docs%3AModFastCGI>`_ as well as an `SCGI <http://trac.lighttpd.net/trac/wiki/Docs%3AModFastCGI>`_ as well as an `SCGI
module <http://trac.lighttpd.net/trac/wiki/Docs%3AModSCGI>`_. module <http://trac.lighttpd.net/trac/wiki/Docs%3AModSCGI>`_.
* nginx also supports `FastCGI * nginx also supports `FastCGI <http://wiki.nginx.org/NginxSimplePythonFCGI>`_.
<http://wiki.codemongers.com/NginxSimplePythonFCGI>`_.
Once you have installed and configured the module, you can test it with the Once you have installed and configured the module, you can test it with the
following WSGI-application:: following WSGI-application::
@ -525,7 +524,7 @@ the text of a wiki page. As always, there are different ways to store
informations on a web server. informations on a web server.
Often relational database engines like `MySQL <http://www.mysql.com/>`_ or Often relational database engines like `MySQL <http://www.mysql.com/>`_ or
`PostgreSQL <http://http://www.postgresql.org/>`_ are used due to their good `PostgreSQL <http://www.postgresql.org/>`_ are used due to their good
performance handling very large databases consisting of up to millions of performance handling very large databases consisting of up to millions of
entries. These are *queried* using a language called `SQL entries. These are *queried* using a language called `SQL
<http://en.wikipedia.org/wiki/SQL>`_. Python programmers in general do not like <http://en.wikipedia.org/wiki/SQL>`_. Python programmers in general do not like
@ -629,7 +628,7 @@ which make it possible to write web sites nearly without any Python code.
It has a big, international community which has created many sites using Django. It has a big, international community which has created many sites using Django.
There are also quite a lot of add-on projects which extend Django's normal There are also quite a lot of add-on projects which extend Django's normal
functionality. This is partly due to Django's well written `online functionality. This is partly due to Django's well written `online
documentation <http://doc.djangoproject.com/>`_ and the `Django book documentation <http://docs.djangoproject.com/>`_ and the `Django book
<http://www.djangobook.com/>`_. <http://www.djangobook.com/>`_.

View File

@ -937,7 +937,8 @@ following steps.
These compilers require some special libraries. This task is more complex than These compilers require some special libraries. This task is more complex than
for Borland's C++, because there is no program to convert the library. First for Borland's C++, because there is no program to convert the library. First
you have to create a list of symbols which the Python DLL exports. (You can find you have to create a list of symbols which the Python DLL exports. (You can find
a good program for this task at http://www.emmestech.com/software/cygwin/pexports-0.43/download_pexports.html) a good program for this task at
http://www.emmestech.com/software/pexports-0.43/download_pexports.html).
.. I don't understand what the next line means. --amk .. I don't understand what the next line means. --amk
.. (inclusive the references on data structures.) .. (inclusive the references on data structures.)

View File

@ -53,7 +53,7 @@ It defines the following functions:
*incrementalencoder* and *incrementaldecoder*: These have to be factory *incrementalencoder* and *incrementaldecoder*: These have to be factory
functions providing the following interface: functions providing the following interface:
``factory(errors='strict')`` ``factory(errors='strict')``
The factory functions must return objects providing the interfaces defined by The factory functions must return objects providing the interfaces defined by
the base classes :class:`IncrementalEncoder` and :class:`IncrementalDecoder`, the base classes :class:`IncrementalEncoder` and :class:`IncrementalDecoder`,
@ -62,21 +62,25 @@ It defines the following functions:
*streamreader* and *streamwriter*: These have to be factory functions providing *streamreader* and *streamwriter*: These have to be factory functions providing
the following interface: the following interface:
``factory(stream, errors='strict')`` ``factory(stream, errors='strict')``
The factory functions must return objects providing the interfaces defined by The factory functions must return objects providing the interfaces defined by
the base classes :class:`StreamWriter` and :class:`StreamReader`, respectively. the base classes :class:`StreamWriter` and :class:`StreamReader`, respectively.
Stream codecs can maintain state. Stream codecs can maintain state.
Possible values for errors are ``'strict'`` (raise an exception in case of an Possible values for errors are
encoding error), ``'replace'`` (replace malformed data with a suitable
replacement marker, such as ``'?'``), ``'ignore'`` (ignore malformed data and * ``'strict'``: raise an exception in case of an encoding error
continue without further notice), ``'xmlcharrefreplace'`` (replace with the * ``'replace'``: replace malformed data with a suitable replacement marker,
appropriate XML character reference (for encoding only)), such as ``'?'`` or ``'\ufffd'``
``'backslashreplace'`` (replace with backslashed escape sequences (for * ``'ignore'``: ignore malformed data and continue without further notice
encoding only)), ``'surrogateescape'`` (replace with surrogate U+DCxx, see * ``'xmlcharrefreplace'``: replace with the appropriate XML character
:pep:`383`) as well as any other error handling name defined via reference (for encoding only)
:func:`register_error`. * ``'backslashreplace'``: replace with backslashed escape sequences (for
encoding only
* ``'surrogateescape'``: replace with surrogate U+DCxx, see :pep:`383`
as well as any other error handling name defined via :func:`register_error`.
In case a search function cannot find a given encoding, it should return In case a search function cannot find a given encoding, it should return
``None``. ``None``.
@ -173,27 +177,33 @@ functions which use :func:`lookup` for the codec lookup:
.. function:: strict_errors(exception) .. function:: strict_errors(exception)
Implements the ``strict`` error handling. Implements the ``strict`` error handling: each encoding or decoding error
raises a :exc:`UnicodeError`.
.. function:: replace_errors(exception) .. function:: replace_errors(exception)
Implements the ``replace`` error handling. Implements the ``replace`` error handling: malformed data is replaced with a
suitable replacement character such as ``'?'`` in bytestrings and
``'\ufffd'`` in Unicode strings.
.. function:: ignore_errors(exception) .. function:: ignore_errors(exception)
Implements the ``ignore`` error handling. Implements the ``ignore`` error handling: malformed data is ignored and
encoding or decoding is continued without further notice.
.. function:: xmlcharrefreplace_errors(exception) .. function:: xmlcharrefreplace_errors(exception)
Implements the ``xmlcharrefreplace`` error handling. Implements the ``xmlcharrefreplace`` error handling (for encoding only): the
unencodable character is replaced by an appropriate XML character reference.
.. function:: backslashreplace_errors(exception) .. function:: backslashreplace_errors(exception)
Implements the ``backslashreplace`` error handling. Implements the ``backslashreplace`` error handling (for encoding only): the
unencodable character is replaced by a backslashed escape sequence.
To simplify working with encoded files or stream, the module also defines these To simplify working with encoded files or stream, the module also defines these
utility functions: utility functions:

View File

@ -301,12 +301,23 @@ RawConfigParser Objects
.. method:: RawConfigParser.optionxform(option) .. method:: RawConfigParser.optionxform(option)
Transforms the option name *option* as found in an input file or as passed in by Transforms the option name *option* as found in an input file or as passed in
client code to the form that should be used in the internal structures. The by client code to the form that should be used in the internal structures.
default implementation returns a lower-case version of *option*; subclasses may The default implementation returns a lower-case version of *option*;
override this or client code can set an attribute of this name on instances to subclasses may override this or client code can set an attribute of this name
affect this behavior. Setting this to :func:`str`, for example, would make on instances to affect this behavior.
option names case sensitive.
You don't necessarily need to subclass a ConfigParser to use this method, you
can also re-set it on an instance, to a function that takes a string
argument. Setting it to ``str``, for example, would make option names case
sensitive::
cfgparser = ConfigParser()
...
cfgparser.optionxform = str
Note that when reading configuration files, whitespace around the
option names are stripped before :meth:`optionxform` is called.
.. _configparser-objects: .. _configparser-objects:

View File

@ -4,10 +4,10 @@
.. module:: curses .. module:: curses
:synopsis: An interface to the curses library, providing portable :synopsis: An interface to the curses library, providing portable
terminal handling. terminal handling.
:platform: Unix
.. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il> .. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il>
.. sectionauthor:: Eric Raymond <esr@thyrsus.com> .. sectionauthor:: Eric Raymond <esr@thyrsus.com>
The :mod:`curses` module provides an interface to the curses library, the The :mod:`curses` module provides an interface to the curses library, the
de-facto standard for portable advanced terminal handling. de-facto standard for portable advanced terminal handling.

View File

@ -233,7 +233,7 @@ Supported operations:
| | (-*t1.days*, -*t1.seconds*, | | | (-*t1.days*, -*t1.seconds*, |
| | -*t1.microseconds*), and to *t1*\* -1. (1)(4) | | | -*t1.microseconds*), and to *t1*\* -1. (1)(4) |
+--------------------------------+-----------------------------------------------+ +--------------------------------+-----------------------------------------------+
| ``abs(t)`` | equivalent to +*t* when ``t.days >= 0``, and | | ``abs(t)`` | equivalent to +\ *t* when ``t.days >= 0``, and|
| | to -*t* when ``t.days < 0``. (2) | | | to -*t* when ``t.days < 0``. (2) |
+--------------------------------+-----------------------------------------------+ +--------------------------------+-----------------------------------------------+

View File

@ -499,8 +499,10 @@ are always available. They are listed here in alphabetical order.
Return the "identity" of an object. This is an integer which Return the "identity" of an object. This is an integer which
is guaranteed to be unique and constant for this object during its lifetime. is guaranteed to be unique and constant for this object during its lifetime.
Two objects with non-overlapping lifetimes may have the same :func:`id` value. Two objects with non-overlapping lifetimes may have the same :func:`id`
(Implementation note: this is the address of the object.) value.
.. impl-detail:: This is the address of the object.
.. function:: input([prompt]) .. function:: input([prompt])

View File

@ -36,12 +36,13 @@ exception:
*longopts*, if specified, must be a list of strings with the names of the *longopts*, if specified, must be a list of strings with the names of the
long options which should be supported. The leading ``'--'`` characters long options which should be supported. The leading ``'--'`` characters
should not be included in the option name. Long options which require an should not be included in the option name. Long options which require an
argument should be followed by an equal sign (``'='``). To accept only long argument should be followed by an equal sign (``'='``). Optional arguments
options, *shortopts* should be an empty string. Long options on the command line are not supported. To accept only long options, *shortopts* should be an
can be recognized so long as they provide a prefix of the option name that empty string. Long options on the command line can be recognized so long as
matches exactly one of the accepted options. For example, if *longopts* is they provide a prefix of the option name that matches exactly one of the
``['foo', 'frob']``, the option :option:`--fo` will match as :option:`--foo`, accepted options. For example, if *longopts* is ``['foo', 'frob']``, the
but :option:`--f` will not match uniquely, so :exc:`GetoptError` will be raised. option :option:`--fo` will match as :option:`--foo`, but :option:`--f` will
not match uniquely, so :exc:`GetoptError` will be raised.
The return value consists of two elements: the first is a list of ``(option, The return value consists of two elements: the first is a list of ``(option,
value)`` pairs; the second is the list of program arguments left after the value)`` pairs; the second is the list of program arguments left after the

View File

@ -290,18 +290,22 @@ attributes:
Return true if the object is a getset descriptor. Return true if the object is a getset descriptor.
getsets are attributes defined in extension modules via ``PyGetSetDef`` .. impl-detail::
structures. For Python implementations without such types, this method will
always return ``False``. getsets are attributes defined in extension modules via
:ctype:`PyGetSetDef` structures. For Python implementations without such
types, this method will always return ``False``.
.. function:: ismemberdescriptor(object) .. function:: ismemberdescriptor(object)
Return true if the object is a member descriptor. Return true if the object is a member descriptor.
Member descriptors are attributes defined in extension modules via .. impl-detail::
``PyMemberDef`` structures. For Python implementations without such types,
this method will always return ``False``. Member descriptors are attributes defined in extension modules via
:ctype:`PyMemberDef` structures. For Python implementations without such
types, this method will always return ``False``.
.. _inspect-source: .. _inspect-source:
@ -508,10 +512,12 @@ line.
Return the frame object for the caller's stack frame. Return the frame object for the caller's stack frame.
This function relies on Python stack frame support in the interpreter, which .. impl-detail::
isn't guaranteed to exist in all implementations of Python. If running in
an implementation without Python stack frame support this function returns This function relies on Python stack frame support in the interpreter,
``None``. which isn't guaranteed to exist in all implementations of Python. If
running in an implementation without Python stack frame support this
function returns ``None``.
.. function:: stack(context=1) .. function:: stack(context=1)

View File

@ -595,7 +595,7 @@ Maildir, mbox, MH, Babyl, and MMDF.
`nmh - Message Handling System <http://www.nongnu.org/nmh/>`_ `nmh - Message Handling System <http://www.nongnu.org/nmh/>`_
Home page of :program:`nmh`, an updated version of the original :program:`mh`. Home page of :program:`nmh`, an updated version of the original :program:`mh`.
`MH & nmh: Email for Users & Programmers <http://www.ics.uci.edu/~mh/book/>`_ `MH & nmh: Email for Users & Programmers <http://rand-mh.sourceforge.net/book/>`_
A GPL-licensed book on :program:`mh` and :program:`nmh`, with some information A GPL-licensed book on :program:`mh` and :program:`nmh`, with some information
on the mailbox format. on the mailbox format.

View File

@ -291,7 +291,7 @@ Constants
The mathematical constant *e*. The mathematical constant *e*.
.. note:: .. impl-detail::
The :mod:`math` module consists mostly of thin wrappers around the platform C The :mod:`math` module consists mostly of thin wrappers around the platform C
math library functions. Behavior in exceptional cases is loosely specified math library functions. Behavior in exceptional cases is loosely specified

View File

@ -394,10 +394,10 @@ Directory Objects
.. seealso:: .. seealso::
`Directory Table <http://msdn.microsoft.com/library/en-us/msi/setup/directory_table.asp>`_ `Directory Table <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/directory_table.asp>`_
`File Table <http://msdn.microsoft.com/library/en-us/msi/setup/file_table.asp>`_ `File Table <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/file_table.asp>`_
`Component Table <http://msdn.microsoft.com/library/en-us/msi/setup/component_table.asp>`_ `Component Table <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/component_table.asp>`_
`FeatureComponents Table <http://msdn.microsoft.com/library/en-us/msi/setup/featurecomponents_table.asp>`_ `FeatureComponents Table <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/featurecomponents_table.asp>`_
.. _features: .. _features:
@ -422,7 +422,7 @@ Features
.. seealso:: .. seealso::
`Feature Table <http://msdn.microsoft.com/library/en-us/msi/setup/feature_table.asp>`_ `Feature Table <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/feature_table.asp>`_
.. _msi-gui: .. _msi-gui:
@ -516,13 +516,13 @@ to create MSI files with a user-interface for installing Python packages.
.. seealso:: .. seealso::
`Dialog Table <http://msdn.microsoft.com/library/en-us/msi/setup/dialog_table.asp>`_ `Dialog Table <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/dialog_table.asp>`_
`Control Table <http://msdn.microsoft.com/library/en-us/msi/setup/control_table.asp>`_ `Control Table <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/control_table.asp>`_
`Control Types <http://msdn.microsoft.com/library/en-us/msi/setup/controls.asp>`_ `Control Types <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/controls.asp>`_
`ControlCondition Table <http://msdn.microsoft.com/library/en-us/msi/setup/controlcondition_table.asp>`_ `ControlCondition Table <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/controlcondition_table.asp>`_
`ControlEvent Table <http://msdn.microsoft.com/library/en-us/msi/setup/controlevent_table.asp>`_ `ControlEvent Table <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/controlevent_table.asp>`_
`EventMapping Table <http://msdn.microsoft.com/library/en-us/msi/setup/eventmapping_table.asp>`_ `EventMapping Table <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/eventmapping_table.asp>`_
`RadioButton Table <http://msdn.microsoft.com/library/en-us/msi/setup/radiobutton_table.asp>`_ `RadioButton Table <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/radiobutton_table.asp>`_
.. _msi-tables: .. _msi-tables:
@ -551,5 +551,3 @@ definitions. Currently, these definitions are based on MSI version 2.0.
This module contains definitions for the UIText and ActionText tables, for the This module contains definitions for the UIText and ActionText tables, for the
standard installer actions. standard installer actions.

View File

@ -1578,9 +1578,9 @@ written in Python, such as a mail server's external command delivery program.
.. function:: system(command) .. function:: system(command)
Execute the command (a string) in a subshell. This is implemented by calling Execute the command (a string) in a subshell. This is implemented by calling
the Standard C function :cfunc:`system`, and has the same limitations. Changes the Standard C function :cfunc:`system`, and has the same limitations.
to :data:`os.environ`, :data:`sys.stdin`, etc. are not reflected in the Changes to :data:`sys.stdin`, etc. are not reflected in the environment of the
environment of the executed command. executed command.
On Unix, the return value is the exit status of the process encoded in the On Unix, the return value is the exit status of the process encoded in the
format specified for :func:`wait`. Note that POSIX does not specify the meaning format specified for :func:`wait`. Note that POSIX does not specify the meaning

View File

@ -43,7 +43,7 @@ also available for Python:
`PythonCAD <http://www.pythoncad.org/>`_. An online `tutorial `PythonCAD <http://www.pythoncad.org/>`_. An online `tutorial
<http://www.pygtk.org/pygtk2tutorial/index.html>`_ is available. <http://www.pygtk.org/pygtk2tutorial/index.html>`_ is available.
`PyQt <http://www.riverbankcomputing.co.uk/pyqt/index.php>`_ `PyQt <http://www.riverbankcomputing.co.uk/software/pyqt/>`_
PyQt is a :program:`sip`\ -wrapped binding to the Qt toolkit. Qt is an PyQt is a :program:`sip`\ -wrapped binding to the Qt toolkit. Qt is an
extensive C++ GUI application development framework that is extensive C++ GUI application development framework that is
available for Unix, Windows and Mac OS X. :program:`sip` is a tool available for Unix, Windows and Mac OS X. :program:`sip` is a tool

View File

@ -94,7 +94,7 @@ Cross Platform
.. function:: python_implementation() .. function:: python_implementation()
Returns a string identifying the Python implementation. Possible return values Returns a string identifying the Python implementation. Possible return values
are: 'CPython', 'IronPython', 'Jython' are: 'CPython', 'IronPython', 'Jython'.
.. function:: python_revision() .. function:: python_revision()

View File

@ -157,13 +157,14 @@ The :mod:`signal` module defines the following functions:
The old values are returned as a tuple: (delay, interval). The old values are returned as a tuple: (delay, interval).
Attempting to pass an invalid interval timer will cause a Attempting to pass an invalid interval timer will cause an
:exc:`ItimerError`. :exc:`ItimerError`. Availability: Unix.
.. function:: getitimer(which) .. function:: getitimer(which)
Returns current value of a given interval timer specified by *which*. Returns current value of a given interval timer specified by *which*.
Availability: Unix.
.. function:: set_wakeup_fd(fd) .. function:: set_wakeup_fd(fd)
@ -182,14 +183,14 @@ The :mod:`signal` module defines the following functions:
.. function:: siginterrupt(signalnum, flag) .. function:: siginterrupt(signalnum, flag)
Change system call restart behaviour: if *flag* is :const:`False`, system calls Change system call restart behaviour: if *flag* is :const:`False`, system
will be restarted when interrupted by signal *signalnum*, otherwise system calls will calls will be restarted when interrupted by signal *signalnum*, otherwise
be interrupted. Returns nothing. Availability: Unix (see the man page system calls will be interrupted. Returns nothing. Availability: Unix (see
:manpage:`siginterrupt(3)` for further information). the man page :manpage:`siginterrupt(3)` for further information).
Note that installing a signal handler with :func:`signal` will reset the restart Note that installing a signal handler with :func:`signal` will reset the
behaviour to interruptible by implicitly calling :cfunc:`siginterrupt` with a true *flag* restart behaviour to interruptible by implicitly calling
value for the given signal. :cfunc:`siginterrupt` with a true *flag* value for the given signal.
.. function:: signal(signalnum, handler) .. function:: signal(signalnum, handler)

View File

@ -772,13 +772,15 @@ Notes:
If *k* is ``None``, it is treated like ``1``. If *k* is ``None``, it is treated like ``1``.
(6) (6)
If *s* and *t* are both strings, some Python implementations such as CPython can .. impl-detail::
usually perform an in-place optimization for assignments of the form ``s=s+t``
or ``s+=t``. When applicable, this optimization makes quadratic run-time much If *s* and *t* are both strings, some Python implementations such as
less likely. This optimization is both version and implementation dependent. CPython can usually perform an in-place optimization for assignments of
For performance sensitive code, it is preferable to use the :meth:`str.join` the form ``s = s + t`` or ``s += t``. When applicable, this optimization
method which assures consistent linear concatenation performance across versions makes quadratic run-time much less likely. This optimization is both
and implementations. version and implementation dependent. For performance sensitive code, it
is preferable to use the :meth:`str.join` method which assures consistent
linear concatenation performance across versions and implementations.
.. _string-methods: .. _string-methods:
@ -950,12 +952,12 @@ functions based on regular expressions.
least one cased character, false otherwise. least one cased character, false otherwise.
.. method:: str.join(seq) .. method:: str.join(iterable)
Return a string which is the concatenation of the strings in the sequence Return a string which is the concatenation of the strings in the
*seq*. A :exc:`TypeError` will be raised if there are any non-string values :term:`iterable` *iterable*. A :exc:`TypeError` will be raised if there are
in *seq*, including :class:`bytes` objects. The separator between elements any non-string values in *seq*, including :class:`bytes` objects. The
is the string providing this method. separator between elements is the string providing this method.
.. method:: str.ljust(width[, fillchar]) .. method:: str.ljust(width[, fillchar])
@ -1509,14 +1511,17 @@ Notes:
that compare equal --- this is helpful for sorting in multiple passes (for that compare equal --- this is helpful for sorting in multiple passes (for
example, sort by department, then by salary grade). example, sort by department, then by salary grade).
While a list is being sorted, the effect of attempting to mutate, or even .. impl-detail::
inspect, the list is undefined. The C implementation
makes the list appear empty for the duration, and raises :exc:`ValueError` if it While a list is being sorted, the effect of attempting to mutate, or even
can detect that the list has been mutated during a sort. inspect, the list is undefined. The C implementation of Python makes the
list appear empty for the duration, and raises :exc:`ValueError` if it can
detect that the list has been mutated during a sort.
(8) (8)
:meth:`sort` is not supported by :class:`bytearray` objects. :meth:`sort` is not supported by :class:`bytearray` objects.
.. _bytes-methods: .. _bytes-methods:
Bytes and Byte Array Methods Bytes and Byte Array Methods

View File

@ -352,8 +352,10 @@ always available.
that is deeper than the call stack, :exc:`ValueError` is raised. The default that is deeper than the call stack, :exc:`ValueError` is raised. The default
for *depth* is zero, returning the frame at the top of the call stack. for *depth* is zero, returning the frame at the top of the call stack.
This function should be used for internal and specialized purposes only. It .. impl-detail::
is not guaranteed to exist in all implementations of Python.
This function should be used for internal and specialized purposes only.
It is not guaranteed to exist in all implementations of Python.
.. function:: getprofile() .. function:: getprofile()
@ -373,12 +375,12 @@ always available.
Get the trace function as set by :func:`settrace`. Get the trace function as set by :func:`settrace`.
.. note:: .. impl-detail::
The :func:`gettrace` function is intended only for implementing debuggers, The :func:`gettrace` function is intended only for implementing debuggers,
profilers, coverage tools and the like. Its behavior is part of the profilers, coverage tools and the like. Its behavior is part of the
implementation platform, rather than part of the language definition, implementation platform, rather than part of the language definition, and
and thus may not be available in all Python implementations. thus may not be available in all Python implementations.
.. function:: getwindowsversion() .. function:: getwindowsversion()
@ -749,12 +751,12 @@ always available.
For more information on code and frame objects, refer to :ref:`types`. For more information on code and frame objects, refer to :ref:`types`.
.. note:: .. impl-detail::
The :func:`settrace` function is intended only for implementing debuggers, The :func:`settrace` function is intended only for implementing debuggers,
profilers, coverage tools and the like. Its behavior is part of the profilers, coverage tools and the like. Its behavior is part of the
implementation platform, rather than part of the language definition, and thus implementation platform, rather than part of the language definition, and
may not be available in all Python implementations. thus may not be available in all Python implementations.
.. function:: settscdump(on_flag) .. function:: settscdump(on_flag)

View File

@ -77,5 +77,8 @@ The module defines the following names:
as ``datetime.timedelta.days``. This type is used as descriptor for simple C as ``datetime.timedelta.days``. This type is used as descriptor for simple C
data members which use standard conversion functions; it has the same purpose data members which use standard conversion functions; it has the same purpose
as the :class:`property` type, but for classes defined in extension modules. as the :class:`property` type, but for classes defined in extension modules.
In other implementations of Python, this type may be identical to
``GetSetDescriptorType``. .. impl-detail::
In other implementations of Python, this type may be identical to
``GetSetDescriptorType``.

View File

@ -69,9 +69,10 @@ support weak references but can add support through subclassing::
obj = Dict(red=1, green=2, blue=3) # this object is weak referenceable obj = Dict(red=1, green=2, blue=3) # this object is weak referenceable
Other built-in types such as :class:`tuple` and :class:`int` do not support .. impl-detail::
weak references even when subclassed (those types implemented as a
:ctype:`PyVarObject`). Other built-in types such as :class:`tuple` and :class:`long` do not support
weak references even when subclassed.
Extension types can easily be made to support weak references; see Extension types can easily be made to support weak references; see
:ref:`weakref-support`. :ref:`weakref-support`.

View File

@ -59,13 +59,16 @@ Objects are never explicitly destroyed; however, when they become unreachable
they may be garbage-collected. An implementation is allowed to postpone garbage they may be garbage-collected. An implementation is allowed to postpone garbage
collection or omit it altogether --- it is a matter of implementation quality collection or omit it altogether --- it is a matter of implementation quality
how garbage collection is implemented, as long as no objects are collected that how garbage collection is implemented, as long as no objects are collected that
are still reachable. (Implementation note: CPython currently uses a are still reachable.
reference-counting scheme with (optional) delayed detection of cyclically linked
garbage, which collects most objects as soon as they become unreachable, but is .. impl-detail::
not guaranteed to collect garbage containing circular references. See the
documentation of the :mod:`gc` module for information on controlling the CPython currently uses a reference-counting scheme with (optional) delayed
collection of cyclic garbage. Other implementations act differently and CPython detection of cyclically linked garbage, which collects most objects as soon
may change.) as they become unreachable, but is not guaranteed to collect garbage
containing circular references. See the documentation of the :mod:`gc`
module for information on controlling the collection of cyclic garbage.
Other implementations act differently and CPython may change.
Note that the use of the implementation's tracing or debugging facilities may Note that the use of the implementation's tracing or debugging facilities may
keep objects alive that would normally be collectable. Also note that catching keep objects alive that would normally be collectable. Also note that catching
@ -1469,15 +1472,15 @@ Notes on using *__slots__*
*__slots__*; otherwise, the class attribute would overwrite the descriptor *__slots__*; otherwise, the class attribute would overwrite the descriptor
assignment. assignment.
* The action of a *__slots__* declaration is limited to the class where it is
defined. As a result, subclasses will have a *__dict__* unless they also define
*__slots__* (which must only contain names of any *additional* slots).
* If a class defines a slot also defined in a base class, the instance variable * If a class defines a slot also defined in a base class, the instance variable
defined by the base class slot is inaccessible (except by retrieving its defined by the base class slot is inaccessible (except by retrieving its
descriptor directly from the base class). This renders the meaning of the descriptor directly from the base class). This renders the meaning of the
program undefined. In the future, a check may be added to prevent this. program undefined. In the future, a check may be added to prevent this.
* The action of a *__slots__* declaration is limited to the class where it is
defined. As a result, subclasses will have a *__dict__* unless they also define
*__slots__*.
* Nonempty *__slots__* does not work for classes derived from "variable-length" * Nonempty *__slots__* does not work for classes derived from "variable-length"
built-in types such as :class:`int`, :class:`str` and :class:`tuple`. built-in types such as :class:`int`, :class:`str` and :class:`tuple`.
@ -1714,12 +1717,16 @@ implemented as an iteration through a sequence. However, container objects can
supply the following special method with a more efficient implementation, which supply the following special method with a more efficient implementation, which
also does not require the object be a sequence. also does not require the object be a sequence.
.. method:: object.__contains__(self, item) .. method:: object.__contains__(self, item)
Called to implement membership test operators. Should return true if *item* is Called to implement membership test operators. Should return true if *item*
in *self*, false otherwise. For mapping objects, this should consider the keys is in *self*, false otherwise. For mapping objects, this should consider the
of the mapping rather than the values or the key-item pairs. keys of the mapping rather than the values or the key-item pairs.
For objects that don't define :meth:`__contains__`, the membership test first
tries iteration via :meth:`__iter__`, then the old sequence iteration
protocol via :meth:`__getitem__`, see :ref:`this section in the language
reference <membership-test-details>`.
.. _numeric-types: .. _numeric-types:

View File

@ -129,7 +129,7 @@ the built-in module :mod:`builtins`; when in any other module,
itself. ``__builtins__`` can be set to a user-created dictionary to create a itself. ``__builtins__`` can be set to a user-created dictionary to create a
weak form of restricted execution. weak form of restricted execution.
.. note:: .. impl-detail::
Users should not touch ``__builtins__``; it is strictly an implementation Users should not touch ``__builtins__``; it is strictly an implementation
detail. Users wanting to override values in the built-in namespace should detail. Users wanting to override values in the built-in namespace should

View File

@ -639,13 +639,13 @@ slots for which no default value is specified, a :exc:`TypeError` exception is
raised. Otherwise, the list of filled slots is used as the argument list for raised. Otherwise, the list of filled slots is used as the argument list for
the call. the call.
.. note:: .. impl-detail::
An implementation may provide built-in functions whose positional parameters do An implementation may provide built-in functions whose positional parameters
not have names, even if they are 'named' for the purpose of documentation, and do not have names, even if they are 'named' for the purpose of documentation,
which therefore cannot be supplied by keyword. In CPython, this is the case for and which therefore cannot be supplied by keyword. In CPython, this is the
functions implemented in C that use :cfunc:`PyArg_ParseTuple` to parse their case for functions implemented in C that use :cfunc:`PyArg_ParseTuple` to
arguments. parse their arguments.
If there are more positional arguments than there are formal parameter slots, a If there are more positional arguments than there are formal parameter slots, a
:exc:`TypeError` exception is raised, unless a formal parameter using the syntax :exc:`TypeError` exception is raised, unless a formal parameter using the syntax
@ -1053,6 +1053,8 @@ cross-type comparison is not supported, the comparison method returns
supported cross-type comparisons and unsupported comparisons. For example, supported cross-type comparisons and unsupported comparisons. For example,
``Decimal(2) == 2`` and `2 == float(2)`` but ``Decimal(2) != float(2)``. ``Decimal(2) == 2`` and `2 == float(2)`` but ``Decimal(2) != float(2)``.
.. _membership-test-details:
The operators :keyword:`in` and :keyword:`not in` test for membership. ``x in The operators :keyword:`in` and :keyword:`not in` test for membership. ``x in
s`` evaluates to true if *x* is a member of *s*, and false otherwise. ``x not s`` evaluates to true if *x* is a member of *s*, and false otherwise. ``x not
in s`` returns the negation of ``x in s``. All built-in sequences and set types in s`` returns the negation of ``x in s``. All built-in sequences and set types
@ -1069,7 +1071,12 @@ return ``True``.
For user-defined classes which define the :meth:`__contains__` method, ``x in For user-defined classes which define the :meth:`__contains__` method, ``x in
y`` is true if and only if ``y.__contains__(x)`` is true. y`` is true if and only if ``y.__contains__(x)`` is true.
For user-defined classes which do not define :meth:`__contains__` and do define For user-defined classes which do not define :meth:`__contains__` but do define
:meth:`__iter__`, ``x in y`` is true if some value ``z`` with ``x == z`` is
produced while iterating over ``y``. If an exception is raised during the
iteration, it is as if :keyword:`in` raised that exception.
Lastly, the old-style iteration protocol is tried: if a class defines
:meth:`__getitem__`, ``x in y`` is true if and only if there is a non-negative :meth:`__getitem__`, ``x in y`` is true if and only if there is a non-negative
integer index *i* such that ``x == y[i]``, and all lower integer indices do not integer index *i* such that ``x == y[i]``, and all lower integer indices do not
raise :exc:`IndexError` exception. (If any other exception is raised, it is as raise :exc:`IndexError` exception. (If any other exception is raised, it is as

View File

@ -236,9 +236,11 @@ Assignment of an object to a single target is recursively defined as follows.
from the length of the assigned sequence, thus changing the length of the from the length of the assigned sequence, thus changing the length of the
target sequence, if the object allows it. target sequence, if the object allows it.
(In the current implementation, the syntax for targets is taken to be the same .. impl-detail::
as for expressions, and invalid syntax is rejected during the code generation
phase, causing less detailed error messages.) In the current implementation, the syntax for targets is taken to be the same
as for expressions, and invalid syntax is rejected during the code generation
phase, causing less detailed error messages.
WARNING: Although the definition of assignment implies that overlaps between the WARNING: Although the definition of assignment implies that overlaps between the
left-hand side and the right-hand side are 'safe' (for example ``a, b = b, a`` left-hand side and the right-hand side are 'safe' (for example ``a, b = b, a``
@ -935,9 +937,11 @@ Names listed in a :keyword:`global` statement must not be defined as formal
parameters or in a :keyword:`for` loop control target, :keyword:`class` parameters or in a :keyword:`for` loop control target, :keyword:`class`
definition, function definition, or :keyword:`import` statement. definition, function definition, or :keyword:`import` statement.
(The current implementation does not enforce the latter two restrictions, but .. impl-detail::
programs should not abuse this freedom, as future implementations may enforce
them or silently change the meaning of the program.) The current implementation does not enforce the latter two restrictions, but
programs should not abuse this freedom, as future implementations may enforce
them or silently change the meaning of the program.
.. index:: .. index::
builtin: exec builtin: exec

View File

@ -35,6 +35,8 @@ from sphinx.locale import versionlabels
HTMLTranslator.visit_versionmodified = new_visit_versionmodified HTMLTranslator.visit_versionmodified = new_visit_versionmodified
# Support for marking up and linking to bugs.python.org issues
def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]): def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
issue = utils.unescape(text) issue = utils.unescape(text)
text = 'issue ' + issue text = 'issue ' + issue
@ -42,6 +44,34 @@ def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
return [refnode], [] return [refnode], []
# Support for marking up implementation details
from sphinx.util.compat import Directive
class ImplementationDetail(Directive):
has_content = True
required_arguments = 0
optional_arguments = 1
final_argument_whitespace = True
def run(self):
pnode = nodes.compound(classes=['impl-detail'])
content = self.content
add_text = nodes.strong('CPython implementation detail:',
'CPython implementation detail:')
if self.arguments:
n, m = self.state.inline_text(self.arguments[0], self.lineno)
pnode.append(nodes.paragraph('', '', *(n + m)))
self.state.nested_parse(content, self.content_offset, pnode)
if pnode.children and isinstance(pnode[0], nodes.paragraph):
pnode[0].insert(0, add_text)
pnode[0].insert(1, nodes.Text(' '))
else:
pnode.insert(0, nodes.paragraph('', '', add_text))
return [pnode]
# Support for building "topic help" for pydoc # Support for building "topic help" for pydoc
pydoc_topic_labels = [ pydoc_topic_labels = [
@ -108,10 +138,12 @@ class PydocTopicsBuilder(Builder):
finally: finally:
f.close() f.close()
# Support for checking for suspicious markup # Support for checking for suspicious markup
import suspicious import suspicious
# Support for documenting Opcodes # Support for documenting Opcodes
import re import re
@ -134,6 +166,7 @@ def parse_opcode_signature(env, sig, signode):
def setup(app): def setup(app):
app.add_role('issue', issue_role) app.add_role('issue', issue_role)
app.add_directive('impl-detail', ImplementationDetail)
app.add_builder(PydocTopicsBuilder) app.add_builder(PydocTopicsBuilder)
app.add_builder(suspicious.CheckSuspiciousMarkupBuilder) app.add_builder(suspicious.CheckSuspiciousMarkupBuilder)
app.add_description_unit('opcode', 'opcode', '%s (opcode)', app.add_description_unit('opcode', 'opcode', '%s (opcode)',

View File

@ -345,6 +345,21 @@ p.deprecated {
background-color: #ffa background-color: #ffa
} }
.impl-detail {
margin-top: 10px;
margin-bottom: 10px;
padding: 7px;
border: 1px solid #ccc;
}
.impl-detail .compound-first {
margin-top: 0;
}
.impl-detail .compound-last {
margin-bottom: 0;
}
/* -- code displays --------------------------------------------------------- */ /* -- code displays --------------------------------------------------------- */
pre { pre {
@ -405,7 +420,7 @@ span.eqno {
div.document, div.document,
div.documentwrapper, div.documentwrapper,
div.bodywrapper { div.bodywrapper {
margin: 0; margin: 0 !important;
width: 100%; width: 100%;
} }

View File

@ -28,18 +28,17 @@ features of the Python language and system. It helps to have a Python
interpreter handy for hands-on experience, but all examples are self-contained, interpreter handy for hands-on experience, but all examples are self-contained,
so the tutorial can be read off-line as well. so the tutorial can be read off-line as well.
For a description of standard objects and modules, see the Python Library For a description of standard objects and modules, see :ref:`library-index`.
Reference document. The Python Reference Manual gives a more formal definition :ref:`reference-index` gives a more formal definition of the language. To write
of the language. To write extensions in C or C++, read Extending and Embedding extensions in C or C++, read :ref:`extending-index` and
the Python Interpreter and Python/C API Reference. There are also several books :ref:`c-api-index`. There are also several books covering Python in depth.
covering Python in depth.
This tutorial does not attempt to be comprehensive and cover every single This tutorial does not attempt to be comprehensive and cover every single
feature, or even every commonly used feature. Instead, it introduces many of feature, or even every commonly used feature. Instead, it introduces many of
Python's most noteworthy features, and will give you a good idea of the Python's most noteworthy features, and will give you a good idea of the
language's flavor and style. After reading it, you will be able to read and language's flavor and style. After reading it, you will be able to read and
write Python modules and programs, and you will be ready to learn more about the write Python modules and programs, and you will be ready to learn more about the
various Python library modules described in the Python Library Reference. various Python library modules described in :ref:`library-index`.
The :ref:`glossary` is also worth going through. The :ref:`glossary` is also worth going through.

View File

@ -8,7 +8,7 @@ Command line and environment
The CPython interpreter scans the command line and the environment for various The CPython interpreter scans the command line and the environment for various
settings. settings.
.. note:: .. impl-detail::
Other implementations' command line schemes may differ. See Other implementations' command line schemes may differ. See
:ref:`implementations` for further resources. :ref:`implementations` for further resources.

View File

@ -67,7 +67,7 @@ key features:
`ActivePython <http://www.activestate.com/Products/activepython/>`_ `ActivePython <http://www.activestate.com/Products/activepython/>`_
Installer with multi-platform compatibility, documentation, PyWin32 Installer with multi-platform compatibility, documentation, PyWin32
`Python Enthought Edition <http://code.enthought.com/enthon/>`_ `Enthought Python Distribution <http://www.enthought.com/products/epd.php>`_
Popular modules (such as PyWin32) with their respective documentation, tool Popular modules (such as PyWin32) with their respective documentation, tool
suite for building extensible python applications suite for building extensible python applications
@ -221,8 +221,7 @@ utilities for:
* Win32 API calls * Win32 API calls
* Registry * Registry
* Event log * Event log
* `Microsoft Foundation Classes <http://msdn.microsoft.com/library/ * `Microsoft Foundation Classes <http://msdn.microsoft.com/en-us/library/fe1cf721%28VS.80%29.aspx>`_ (MFC)
en-us/vclib/html/_mfc_Class_Library_Reference_Introduction.asp>`_ (MFC)
user interfaces user interfaces
`PythonWin <http://web.archive.org/web/20060524042422/ `PythonWin <http://web.archive.org/web/20060524042422/
@ -299,7 +298,7 @@ For extension modules, consult :ref:`building-on-windows`.
MinGW gcc under Windows" or "Installing Python extension with distutils MinGW gcc under Windows" or "Installing Python extension with distutils
and without Microsoft Visual C++" by Sébastien Sauvage, 2003 and without Microsoft Visual C++" by Sébastien Sauvage, 2003
`MingW -- Python extensions <http://www.mingw.org/MinGWiki/index.php/Python%20extensions>`_ `MingW -- Python extensions <http://oldwiki.mingw.org/index.php/Python%20extensions>`_
by Trent Apted et al, 2007 by Trent Apted et al, 2007

View File

@ -572,8 +572,7 @@ Work has been done on porting Python to 64-bit Windows on the Itanium processor,
mostly by Trent Mick of ActiveState. (Confusingly, ``sys.platform`` is still mostly by Trent Mick of ActiveState. (Confusingly, ``sys.platform`` is still
``'win32'`` on Win64 because it seems that for ease of porting, MS Visual C++ ``'win32'`` on Win64 because it seems that for ease of porting, MS Visual C++
treats code as 32 bit on Itanium.) PythonWin also supports Windows CE; see the treats code as 32 bit on Itanium.) PythonWin also supports Windows CE; see the
Python CE page at http://starship.python.net/crew/mhammond/ce/ for more Python CE page at http://pythonce.sourceforge.net/ for more information.
information.
Another new platform is Darwin/MacOS X; initial support for it is in Python 2.0. Another new platform is Darwin/MacOS X; initial support for it is in Python 2.0.
Dynamic loading works, if you specify "configure --with-dyld --with-suffix=.x". Dynamic loading works, if you specify "configure --with-dyld --with-suffix=.x".
@ -1041,8 +1040,8 @@ sent over a socket. When compiling Python, you can edit :file:`Modules/Setup`
to include SSL support, which adds an additional function to the :mod:`socket` to include SSL support, which adds an additional function to the :mod:`socket`
module: :func:`socket.ssl(socket, keyfile, certfile)`, which takes a socket module: :func:`socket.ssl(socket, keyfile, certfile)`, which takes a socket
object and returns an SSL socket. The :mod:`httplib` and :mod:`urllib` modules object and returns an SSL socket. The :mod:`httplib` and :mod:`urllib` modules
were also changed to support "https://" URLs, though no one has implemented FTP were also changed to support ``https://`` URLs, though no one has implemented
or SMTP over SSL. FTP or SMTP over SSL.
The :mod:`httplib` module has been rewritten by Greg Stein to support HTTP/1.1. The :mod:`httplib` module has been rewritten by Greg Stein to support HTTP/1.1.
Backward compatibility with the 1.5 version of :mod:`httplib` is provided, Backward compatibility with the 1.5 version of :mod:`httplib` is provided,

View File

@ -30,7 +30,7 @@ understand the complete implementation and design rationale for a change, refer
to the PEP for a particular new feature. to the PEP for a particular new feature.
.. seealso:: .. seealso (now defunct)
http://www.unixreview.com/documents/s=1356/urm0109h/0109h.htm http://www.unixreview.com/documents/s=1356/urm0109h/0109h.htm
"What's So Special About Python 2.2?" is also about the new 2.2 features, and "What's So Special About Python 2.2?" is also about the new 2.2 features, and
@ -49,14 +49,14 @@ amazing new capabilities. Before beginning this, the longest and most
complicated section of this article, I'll provide an overview of the changes and complicated section of this article, I'll provide an overview of the changes and
offer some comments. offer some comments.
A long time ago I wrote a Web page (http://www.amk.ca/python/writing/warts.html) A long time ago I wrote a Web page listing flaws in Python's design. One of the
listing flaws in Python's design. One of the most significant flaws was that most significant flaws was that it's impossible to subclass Python types
it's impossible to subclass Python types implemented in C. In particular, it's implemented in C. In particular, it's not possible to subclass built-in types,
not possible to subclass built-in types, so you can't just subclass, say, lists so you can't just subclass, say, lists in order to add a single useful method to
in order to add a single useful method to them. The :mod:`UserList` module them. The :mod:`UserList` module provides a class that supports all of the
provides a class that supports all of the methods of lists and that can be methods of lists and that can be subclassed further, but there's lots of C code
subclassed further, but there's lots of C code that expects a regular Python that expects a regular Python list and won't accept a :class:`UserList`
list and won't accept a :class:`UserList` instance. instance.
Python 2.2 fixes this, and in the process adds some exciting new capabilities. Python 2.2 fixes this, and in the process adds some exciting new capabilities.
A brief summary: A brief summary:

View File

@ -1855,10 +1855,10 @@ and bundle it with the source of your extension.
.. seealso:: .. seealso::
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/python/python/dist/src/Objects/obmalloc.c http://svn.python.org/view/python/trunk/Objects/obmalloc.c
For the full details of the pymalloc implementation, see the comments at the top For the full details of the pymalloc implementation, see the comments at
of the file :file:`Objects/obmalloc.c` in the Python source code. The above the top of the file :file:`Objects/obmalloc.c` in the Python source code.
link points to the file within the SourceForge CVS browser. The above link points to the file within the python.org SVN browser.
.. ====================================================================== .. ======================================================================

View File

@ -680,9 +680,6 @@ includes a quick-start tutorial and a reference.
Written by Facundo Batista and implemented by Facundo Batista, Eric Price, Written by Facundo Batista and implemented by Facundo Batista, Eric Price,
Raymond Hettinger, Aahz, and Tim Peters. Raymond Hettinger, Aahz, and Tim Peters.
http://research.microsoft.com/~hollasch/cgindex/coding/ieeefloat.html
A more detailed overview of the IEEE-754 representation.
http://www.lahey.com/float.htm http://www.lahey.com/float.htm
The article uses Fortran code to illustrate many of the problems that floating- The article uses Fortran code to illustrate many of the problems that floating-
point inaccuracy can cause. point inaccuracy can cause.
@ -756,7 +753,7 @@ API that perform ASCII-only conversions, ignoring the locale setting:
:ctype:`double` to an ASCII string. :ctype:`double` to an ASCII string.
The code for these functions came from the GLib library The code for these functions came from the GLib library
(http://developer.gnome.org/arch/gtk/glib.html), whose developers kindly (http://library.gnome.org/devel/glib/stable/), whose developers kindly
relicensed the relevant functions and donated them to the Python Software relicensed the relevant functions and donated them to the Python Software
Foundation. The :mod:`locale` module can now change the numeric locale, Foundation. The :mod:`locale` module can now change the numeric locale,
letting extensions such as GTK+ produce the correct results. letting extensions such as GTK+ produce the correct results.

View File

@ -1828,7 +1828,7 @@ changes, or look through the Subversion logs for all the details.
The :mod:`bsddb.dbshelve` module now uses the highest pickling protocol The :mod:`bsddb.dbshelve` module now uses the highest pickling protocol
available, instead of restricting itself to protocol 1. available, instead of restricting itself to protocol 1.
(Contributed by W. Barnes; :issue:`1551443`.) (Contributed by W. Barnes.)
* The :mod:`cgi` module will now read variables from the query string * The :mod:`cgi` module will now read variables from the query string
of an HTTP POST request. This makes it possible to use form actions of an HTTP POST request. This makes it possible to use form actions
@ -2977,7 +2977,7 @@ Changes to Python's build process and to the C API include:
* The BerkeleyDB module now has a C API object, available as * The BerkeleyDB module now has a C API object, available as
``bsddb.db.api``. This object can be used by other C extensions ``bsddb.db.api``. This object can be used by other C extensions
that wish to use the :mod:`bsddb` module for their own purposes. that wish to use the :mod:`bsddb` module for their own purposes.
(Contributed by Duncan Grisby; :issue:`1551895`.) (Contributed by Duncan Grisby.)
* The new buffer interface, previously described in * The new buffer interface, previously described in
`the PEP 3118 section <#pep-3118-revised-buffer-protocol>`__, `the PEP 3118 section <#pep-3118-revised-buffer-protocol>`__,

View File

@ -119,7 +119,7 @@ class _RLock(_Verbose):
def release(self): def release(self):
if self._owner is not current_thread(): if self._owner is not current_thread():
raise RuntimeError("cannot release un-aquired lock") raise RuntimeError("cannot release un-acquired lock")
self._count = count = self._count - 1 self._count = count = self._count - 1
if not count: if not count:
self._owner = None self._owner = None
@ -211,7 +211,7 @@ class _Condition(_Verbose):
def wait(self, timeout=None): def wait(self, timeout=None):
if not self._is_owned(): if not self._is_owned():
raise RuntimeError("cannot wait on un-aquired lock") raise RuntimeError("cannot wait on un-acquired lock")
waiter = _allocate_lock() waiter = _allocate_lock()
waiter.acquire() waiter.acquire()
self._waiters.append(waiter) self._waiters.append(waiter)
@ -253,7 +253,7 @@ class _Condition(_Verbose):
def notify(self, n=1): def notify(self, n=1):
if not self._is_owned(): if not self._is_owned():
raise RuntimeError("cannot notify on un-aquired lock") raise RuntimeError("cannot notify on un-acquired lock")
__waiters = self._waiters __waiters = self._waiters
waiters = __waiters[:n] waiters = __waiters[:n]
if not waiters: if not waiters:

View File

@ -32,7 +32,14 @@ def filterwarnings(action, message="", category=Warning, module="", lineno=0,
append=False): append=False):
"""Insert an entry into the list of warnings filters (at the front). """Insert an entry into the list of warnings filters (at the front).
Use assertions to check that all arguments have the right type.""" 'action' -- one of "error", "ignore", "always", "default", "module",
or "once"
'message' -- a regex that the warning message must match
'category' -- a class that the warning must be a subclass of
'module' -- a regex that the module name must match
'lineno' -- an integer line number, 0 matches all warnings
'append' -- if true, append to the list of filters
"""
import re import re
assert action in ("error", "ignore", "always", "default", "module", assert action in ("error", "ignore", "always", "default", "module",
"once"), "invalid action: %r" % (action,) "once"), "invalid action: %r" % (action,)
@ -53,6 +60,11 @@ def simplefilter(action, category=Warning, lineno=0, append=False):
"""Insert a simple entry into the list of warnings filters (at the front). """Insert a simple entry into the list of warnings filters (at the front).
A simple filter matches all modules and messages. A simple filter matches all modules and messages.
'action' -- one of "error", "ignore", "always", "default", "module",
or "once"
'category' -- a class that the warning must be a subclass of
'lineno' -- an integer line number, 0 matches all warnings
'append' -- if true, append to the list of filters
""" """
assert action in ("error", "ignore", "always", "default", "module", assert action in ("error", "ignore", "always", "default", "module",
"once"), "invalid action: %r" % (action,) "once"), "invalid action: %r" % (action,)

View File

@ -1865,16 +1865,15 @@ PyCSimpleType_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
} }
fmt = _ctypes_get_fielddesc(proto_str); fmt = _ctypes_get_fielddesc(proto_str);
if (fmt == NULL) { if (fmt == NULL) {
Py_DECREF((PyObject *)result);
PyErr_Format(PyExc_ValueError, PyErr_Format(PyExc_ValueError,
"_type_ '%s' not supported", proto_str); "_type_ '%s' not supported", proto_str);
return NULL; goto error;
} }
stgdict = (StgDictObject *)PyObject_CallObject( stgdict = (StgDictObject *)PyObject_CallObject(
(PyObject *)&PyCStgDict_Type, NULL); (PyObject *)&PyCStgDict_Type, NULL);
if (!stgdict) if (!stgdict)
return NULL; goto error;
stgdict->ffi_type_pointer = *fmt->pffi_type; stgdict->ffi_type_pointer = *fmt->pffi_type;
stgdict->align = fmt->pffi_type->alignment; stgdict->align = fmt->pffi_type->alignment;
@ -1889,6 +1888,7 @@ PyCSimpleType_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
#endif #endif
if (stgdict->format == NULL) { if (stgdict->format == NULL) {
Py_DECREF(result); Py_DECREF(result);
Py_DECREF(proto);
Py_DECREF((PyObject *)stgdict); Py_DECREF((PyObject *)stgdict);
return NULL; return NULL;
} }

View File

@ -7708,10 +7708,10 @@ unicode_isprintable(PyObject *self)
} }
PyDoc_STRVAR(join__doc__, PyDoc_STRVAR(join__doc__,
"S.join(sequence) -> str\n\ "S.join(iterable) -> str\n\
\n\ \n\
Return a string which is the concatenation of the strings in the\n\ Return a string which is the concatenation of the strings in the\n\
sequence. The separator between elements is S."); iterable. The separator between elements is S.");
static PyObject* static PyObject*
unicode_join(PyObject *self, PyObject *data) unicode_join(PyObject *self, PyObject *data)

View File

@ -957,7 +957,9 @@ static int _PyCodecRegistry_Init(void)
{ {
"strict_errors", "strict_errors",
strict_errors, strict_errors,
METH_O METH_O,
PyDoc_STR("Implements the 'strict' error handling, which "
"raises a UnicodeError on coding errors.")
} }
}, },
{ {
@ -965,7 +967,9 @@ static int _PyCodecRegistry_Init(void)
{ {
"ignore_errors", "ignore_errors",
ignore_errors, ignore_errors,
METH_O METH_O,
PyDoc_STR("Implements the 'ignore' error handling, which "
"ignores malformed data and continues.")
} }
}, },
{ {
@ -973,7 +977,9 @@ static int _PyCodecRegistry_Init(void)
{ {
"replace_errors", "replace_errors",
replace_errors, replace_errors,
METH_O METH_O,
PyDoc_STR("Implements the 'replace' error handling, which "
"replaces malformed data with a replacement marker.")
} }
}, },
{ {
@ -981,7 +987,10 @@ static int _PyCodecRegistry_Init(void)
{ {
"xmlcharrefreplace_errors", "xmlcharrefreplace_errors",
xmlcharrefreplace_errors, xmlcharrefreplace_errors,
METH_O METH_O,
PyDoc_STR("Implements the 'xmlcharrefreplace' error handling, "
"which replaces an unencodable character with the "
"appropriate XML character reference.")
} }
}, },
{ {
@ -989,7 +998,10 @@ static int _PyCodecRegistry_Init(void)
{ {
"backslashreplace_errors", "backslashreplace_errors",
backslashreplace_errors, backslashreplace_errors,
METH_O METH_O,
PyDoc_STR("Implements the 'backslashreplace' error handling, "
"which replaces an unencodable character with a "
"backslashed escape sequence.")
} }
}, },
{ {