Merged revisions 83593 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/release27-maint

................
  r83593 | georg.brandl | 2010-08-02 23:44:25 +0200 (Mo, 02 Aug 2010) | 57 lines

  Merged revisions 83536,83546-83548,83550,83554-83555,83558,83563,83565,83571,83574-83575 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/branches/py3k

  ........
    r83536 | georg.brandl | 2010-08-02 19:49:25 +0200 (Mo, 02 Aug 2010) | 1 line

    #8578: mention danger of not incref'ing weak referenced object.
  ........
    r83546 | georg.brandl | 2010-08-02 21:16:34 +0200 (Mo, 02 Aug 2010) | 1 line

    #7973: Fix distutils options spelling.
  ........
    r83547 | georg.brandl | 2010-08-02 21:19:26 +0200 (Mo, 02 Aug 2010) | 1 line

    #7386: add example that shows that trailing path separators are stripped.
  ........
    r83548 | georg.brandl | 2010-08-02 21:23:34 +0200 (Mo, 02 Aug 2010) | 1 line

    #8172: how does one use a property?
  ........
    r83550 | georg.brandl | 2010-08-02 21:32:43 +0200 (Mo, 02 Aug 2010) | 1 line

    #9451: strengthen warning about __*__ special name usage.
  ........
    r83554 | georg.brandl | 2010-08-02 21:43:05 +0200 (Mo, 02 Aug 2010) | 1 line

    #7280: note about nasmw.exe.
  ........
    r83555 | georg.brandl | 2010-08-02 21:44:48 +0200 (Mo, 02 Aug 2010) | 1 line

    #8861: remove unused variable.
  ........
    r83558 | georg.brandl | 2010-08-02 22:05:19 +0200 (Mo, 02 Aug 2010) | 1 line

    #8648: document UTF-7 codec functions.
  ........
    r83563 | georg.brandl | 2010-08-02 22:21:21 +0200 (Mo, 02 Aug 2010) | 1 line

    #9037: add example how to raise custom exceptions from C code.
  ........
    r83565 | georg.brandl | 2010-08-02 22:27:20 +0200 (Mo, 02 Aug 2010) | 1 line

    #9111: document that do_help() looks at docstrings.
  ........
    r83571 | georg.brandl | 2010-08-02 22:44:34 +0200 (Mo, 02 Aug 2010) | 1 line

    Clarify that abs() is not a namespace.
  ........
    r83574 | georg.brandl | 2010-08-02 22:47:56 +0200 (Mo, 02 Aug 2010) | 1 line

    #6867: epoll.register() returns None.
  ........
    r83575 | georg.brandl | 2010-08-02 22:52:10 +0200 (Mo, 02 Aug 2010) | 1 line

    #9238: zipfile does handle archive comments.
  ........
................
This commit is contained in:
Georg Brandl 2010-08-02 21:45:43 +00:00
parent f287d640ad
commit 0771591fe1
15 changed files with 91 additions and 28 deletions

View File

@ -567,6 +567,38 @@ These are the UTF-16 codec APIs:
*NULL* if an exception was raised by the codec. *NULL* if an exception was raised by the codec.
UTF-7 Codecs
""""""""""""
These are the UTF-7 codec APIs:
.. cfunction:: PyObject* PyUnicode_DecodeUTF7(const char *s, Py_ssize_t size, const char *errors)
Create a Unicode object by decoding *size* bytes of the UTF-7 encoded string
*s*. Return *NULL* if an exception was raised by the codec.
.. cfunction:: PyObject* PyUnicode_DecodeUTF8Stateful(const char *s, Py_ssize_t size, const char *errors, Py_ssize_t *consumed)
If *consumed* is *NULL*, behave like :cfunc:`PyUnicode_DecodeUTF7`. If
*consumed* is not *NULL*, trailing incomplete UTF-7 base-64 sections will not
be treated as an error. Those bytes will not be decoded and the number of
bytes that have been decoded will be stored in *consumed*.
.. cfunction:: PyObject* PyUnicode_EncodeUTF7(const Py_UNICODE *s, Py_ssize_t size, int base64SetO, int base64WhiteSpace, const char *errors)
Encode the :ctype:`Py_UNICODE` buffer of the given size using UTF-7 and
return a Python bytes object. Return *NULL* if an exception was raised by
the codec.
If *base64SetO* is nonzero, "Set O" (punctuation that has no otherwise
special meaning) will be encoded in base-64. If *base64WhiteSpace* is
nonzero, whitespace will be encoded in base-64. Both are set to zero for the
Python "utf-7" codec.
Unicode-Escape Codecs Unicode-Escape Codecs
""""""""""""""""""""" """""""""""""""""""""

View File

@ -63,10 +63,17 @@ as much as it can.
.. cfunction:: PyObject* PyWeakref_GetObject(PyObject *ref) .. cfunction:: PyObject* PyWeakref_GetObject(PyObject *ref)
Return the referenced object from a weak reference, *ref*. If the referent is Return the referenced object from a weak reference, *ref*. If the referent is
no longer live, returns ``None``. no longer live, returns :const:`Py_None`.
.. versionadded:: 2.2 .. versionadded:: 2.2
.. warning::
This function returns a **borrowed reference** to the referenced object.
This means that you should always call :cfunc:`Py_INCREF` on the object
except if you know that it cannot be destroyed while you are still
using it.
.. cfunction:: PyObject* PyWeakref_GET_OBJECT(PyObject *ref) .. cfunction:: PyObject* PyWeakref_GET_OBJECT(PyObject *ref)

View File

@ -173,7 +173,7 @@ easily specify multiple formats in one run. If you need to do both, you can
explicitly specify multiple :command:`bdist_\*` commands and their options:: explicitly specify multiple :command:`bdist_\*` commands and their options::
python setup.py bdist_rpm --packager="John Doe <jdoe@example.org>" \ python setup.py bdist_rpm --packager="John Doe <jdoe@example.org>" \
bdist_wininst --target_version="2.0" bdist_wininst --target-version="2.0"
Creating RPM packages is driven by a :file:`.spec` file, much as using the Creating RPM packages is driven by a :file:`.spec` file, much as using the
Distutils is driven by the setup script. To make your life easier, the Distutils is driven by the setup script. To make your life easier, the

View File

@ -228,9 +228,28 @@ needed to ensure that it will not be discarded, causing :cdata:`SpamError` to
become a dangling pointer. Should it become a dangling pointer, C code which become a dangling pointer. Should it become a dangling pointer, C code which
raises the exception could cause a core dump or other unintended side effects. raises the exception could cause a core dump or other unintended side effects.
We discuss the use of PyMODINIT_FUNC as a function return type later in this We discuss the use of ``PyMODINIT_FUNC`` as a function return type later in this
sample. sample.
The :exc:`spam.error` exception can be raised in your extension module using a
call to :cfunc:`PyErr_SetString` as shown below::
static PyObject *
spam_system(PyObject *self, PyObject *args)
{
const char *command;
int sts;
if (!PyArg_ParseTuple(args, "s", &command))
return NULL;
sts = system(command);
if (sts < 0) {
PyErr_SetString(SpamError, "System command failed");
return NULL;
}
return PyLong_FromLong(sts);
}
.. _backtoexample: .. _backtoexample:

View File

@ -80,11 +80,13 @@ A :class:`Cmd` instance has the following methods:
are the beginning and ending indexes of the prefix text, which could be used to are the beginning and ending indexes of the prefix text, which could be used to
provide different completion depending upon which position the argument is in. provide different completion depending upon which position the argument is in.
All subclasses of :class:`Cmd` inherit a predefined :meth:`do_help`. This All subclasses of :class:`Cmd` inherit a predefined :meth:`do_help`. This
method, called with an argument ``'bar'``, invokes the corresponding method method, called with an argument ``'bar'``, invokes the corresponding method
:meth:`help_bar`. With no argument, :meth:`do_help` lists all available help :meth:`help_bar`, and if that is not present, prints the docstring of
topics (that is, all commands with corresponding :meth:`help_\*` methods), and :meth:`do_bar`, if available. With no argument, :meth:`do_help` lists all
also lists any undocumented commands. available help topics (that is, all commands with corresponding
:meth:`help_\*` methods or commands that have docstrings), and also lists any
undocumented commands.
.. method:: Cmd.onecmd(str) .. method:: Cmd.onecmd(str)

View File

@ -864,7 +864,7 @@ available. They are listed here in alphabetical order.
*fget* is a function for getting an attribute value, likewise *fset* is a *fget* is a function for getting an attribute value, likewise *fset* is a
function for setting, and *fdel* a function for del'ing, an attribute. Typical function for setting, and *fdel* a function for del'ing, an attribute. Typical
use is to define a managed attribute x:: use is to define a managed attribute ``x``::
class C(object): class C(object):
def __init__(self): def __init__(self):
@ -878,6 +878,9 @@ available. They are listed here in alphabetical order.
del self._x del self._x
x = property(getx, setx, delx, "I'm the 'x' property.") x = property(getx, setx, delx, "I'm the 'x' property.")
If then *c* is an instance of *C*, ``c.x`` will invoke the getter,
``c.x = value`` will invoke the setter and ``del c.x`` the deleter.
If given, *doc* will be the docstring of the property attribute. Otherwise, the If given, *doc* will be the docstring of the property attribute. Otherwise, the
property will copy *fget*'s docstring (if it exists). This makes it possible to property will copy *fget*'s docstring (if it exists). This makes it possible to
create read-only properties easily using :func:`property` as a :term:`decorator`:: create read-only properties easily using :func:`property` as a :term:`decorator`::

View File

@ -212,7 +212,9 @@ write files see :func:`open`, and for accessing the filesystem see the
.. function:: normpath(path) .. function:: normpath(path)
Normalize a pathname. This collapses redundant separators and up-level Normalize a pathname. This collapses redundant separators and up-level
references so that ``A//B``, ``A/./B`` and ``A/foo/../B`` all become ``A/B``. references so that ``A//B``, ``A/B/``, ``A/./B`` and ``A/foo/../B`` all become
``A/B``.
It does not normalize the case (use :func:`normcase` for that). On Windows, it It does not normalize the case (use :func:`normcase` for that). On Windows, it
converts forward slashes to backward slashes. It should be understood that this converts forward slashes to backward slashes. It should be understood that this
may change the meaning of the path if it contains symbolic links! may change the meaning of the path if it contains symbolic links!

View File

@ -15,10 +15,8 @@ advanced use of this module will require an understanding of the format, as
defined in `PKZIP Application Note defined in `PKZIP Application Note
<http://www.pkware.com/documents/casestudies/APPNOTE.TXT>`_. <http://www.pkware.com/documents/casestudies/APPNOTE.TXT>`_.
This module does not currently handle multi-disk ZIP files, or ZIP files This module does not currently handle multi-disk ZIP files.
which have appended comments (although it correctly handles comments It can handle ZIP files that use the ZIP64 extensions
added to individual archive members---for which see the :ref:`zipinfo-objects`
documentation). It can handle ZIP files that use the ZIP64 extensions
(that is ZIP files that are more than 4 GByte in size). It supports (that is ZIP files that are more than 4 GByte in size). It supports
decryption of encrypted files in ZIP archives, but it currently cannot decryption of encrypted files in ZIP archives, but it currently cannot
create an encrypted file. Decryption is extremely slow as it is create an encrypted file. Decryption is extremely slow as it is
@ -66,8 +64,7 @@ The module defines the following items:
.. function:: is_zipfile(filename) .. function:: is_zipfile(filename)
Returns ``True`` if *filename* is a valid ZIP file based on its magic number, Returns ``True`` if *filename* is a valid ZIP file based on its magic number,
otherwise returns ``False``. This module does not currently handle ZIP files otherwise returns ``False``.
which have appended comments.
.. data:: ZIP_STORED .. data:: ZIP_STORED

View File

@ -386,11 +386,12 @@ characters:
information on this convention. information on this convention.
``__*__`` ``__*__``
System-defined names. These names are defined by the interpreter and its System-defined names. These names are defined by the interpreter and its
implementation (including the standard library); applications should not expect implementation (including the standard library). Current system names are
to define additional names using this convention. The set of names of this discussed in the :ref:`specialnames` section and elsewhere. More will likely
class defined by Python may be extended in future versions. See section be defined in future versions of Python. *Any* use of ``__*__`` names, in
:ref:`specialnames`. any context, that does not follow explicitly documented use, is subject to
breakage without warning.
``__*`` ``__*``
Class-private names. Names in this category, when used within the context of a Class-private names. Names in this category, when used within the context of a

View File

@ -64,7 +64,7 @@ Let's begin with some definitions.
A *namespace* is a mapping from names to objects. Most namespaces are currently A *namespace* is a mapping from names to objects. Most namespaces are currently
implemented as Python dictionaries, but that's normally not noticeable in any implemented as Python dictionaries, but that's normally not noticeable in any
way (except for performance), and it may change in the future. Examples of way (except for performance), and it may change in the future. Examples of
namespaces are: the set of built-in names (functions such as :func:`abs`, and namespaces are: the set of built-in names (containing functions such as :func:`abs`, and
built-in exception names); the global names in a module; and the local names in built-in exception names); the global names in a module; and the local names in
a function invocation. In a sense the set of attributes of an object also form a function invocation. In a sense the set of attributes of an object also form
a namespace. The important thing to know about namespaces is that there is a namespace. The important thing to know about namespaces is that there is

View File

@ -17,10 +17,9 @@ def wrapper(func, *args, **kwds):
wrapper(). wrapper().
""" """
res = None
try: try:
# Initialize curses # Initialize curses
stdscr=curses.initscr() stdscr = curses.initscr()
# Turn off echoing of keys, and enter cbreak mode, # Turn off echoing of keys, and enter cbreak mode,
# where no buffering is performed on keyboard input # where no buffering is performed on keyboard input

View File

@ -138,7 +138,7 @@ class bdist_msi (Command):
if not self.skip_build and self.distribution.has_ext_modules()\ if not self.skip_build and self.distribution.has_ext_modules()\
and self.target_version != short_version: and self.target_version != short_version:
raise DistutilsOptionError, \ raise DistutilsOptionError, \
"target version can only be %s, or the '--skip_build'" \ "target version can only be %s, or the '--skip-build'" \
" option must be specified" % (short_version,) " option must be specified" % (short_version,)
else: else:
self.target_version = short_version self.target_version = short_version

View File

@ -93,7 +93,7 @@ class bdist_wininst (Command):
short_version = get_python_version() short_version = get_python_version()
if self.target_version and self.target_version != short_version: if self.target_version and self.target_version != short_version:
raise DistutilsOptionError, \ raise DistutilsOptionError, \
"target version can only be %s, or the '--skip_build'" \ "target version can only be %s, or the '--skip-build'" \
" option must be specified" % (short_version,) " option must be specified" % (short_version,)
self.target_version = short_version self.target_version = short_version

View File

@ -910,10 +910,9 @@ pyepoll_register(pyEpoll_Object *self, PyObject *args, PyObject *kwds)
} }
PyDoc_STRVAR(pyepoll_register_doc, PyDoc_STRVAR(pyepoll_register_doc,
"register(fd[, eventmask]) -> bool\n\ "register(fd[, eventmask]) -> None\n\
\n\ \n\
Registers a new fd or modifies an already registered fd. register() returns\n\ Registers a new fd or modifies an already registered fd.\n\
True if a new fd was registered or False if the event mask for fd was modified.\n\
fd is the target file descriptor of the operation.\n\ fd is the target file descriptor of the operation.\n\
events is a bit set composed of the various EPOLL constants; the default\n\ events is a bit set composed of the various EPOLL constants; the default\n\
is EPOLL_IN | EPOLL_OUT | EPOLL_PRI.\n\ is EPOLL_IN | EPOLL_OUT | EPOLL_PRI.\n\

View File

@ -155,6 +155,8 @@ _ssl
You must install the NASM assembler from You must install the NASM assembler from
http://nasm.sf.net http://nasm.sf.net
for x86 builds. Put nasmw.exe anywhere in your PATH. for x86 builds. Put nasmw.exe anywhere in your PATH.
Note: recent releases of nasm only have nasm.exe. Just rename it to
nasmw.exe.
You can also install ActivePerl from You can also install ActivePerl from
http://www.activestate.com/Products/ActivePerl/ http://www.activestate.com/Products/ActivePerl/