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:
parent
f287d640ad
commit
0771591fe1
|
@ -567,6 +567,38 @@ These are the UTF-16 codec APIs:
|
|||
*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
|
||||
"""""""""""""""""""""
|
||||
|
||||
|
|
|
@ -63,10 +63,17 @@ as much as it can.
|
|||
.. cfunction:: PyObject* PyWeakref_GetObject(PyObject *ref)
|
||||
|
||||
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
|
||||
|
||||
.. 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)
|
||||
|
||||
|
|
|
@ -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::
|
||||
|
||||
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
|
||||
Distutils is driven by the setup script. To make your life easier, the
|
||||
|
|
|
@ -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
|
||||
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.
|
||||
|
||||
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:
|
||||
|
||||
|
|
|
@ -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
|
||||
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
|
||||
:meth:`help_bar`. With no argument, :meth:`do_help` lists all available help
|
||||
topics (that is, all commands with corresponding :meth:`help_\*` methods), and
|
||||
also lists any undocumented commands.
|
||||
:meth:`help_bar`, and if that is not present, prints the docstring of
|
||||
:meth:`do_bar`, if available. With no argument, :meth:`do_help` lists all
|
||||
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)
|
||||
|
|
|
@ -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
|
||||
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):
|
||||
def __init__(self):
|
||||
|
@ -878,6 +878,9 @@ available. They are listed here in alphabetical order.
|
|||
del self._x
|
||||
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
|
||||
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`::
|
||||
|
|
|
@ -212,7 +212,9 @@ write files see :func:`open`, and for accessing the filesystem see the
|
|||
.. function:: normpath(path)
|
||||
|
||||
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
|
||||
converts forward slashes to backward slashes. It should be understood that this
|
||||
may change the meaning of the path if it contains symbolic links!
|
||||
|
|
|
@ -15,10 +15,8 @@ advanced use of this module will require an understanding of the format, as
|
|||
defined in `PKZIP Application Note
|
||||
<http://www.pkware.com/documents/casestudies/APPNOTE.TXT>`_.
|
||||
|
||||
This module does not currently handle multi-disk ZIP files, or ZIP files
|
||||
which have appended comments (although it correctly handles comments
|
||||
added to individual archive members---for which see the :ref:`zipinfo-objects`
|
||||
documentation). It can handle ZIP files that use the ZIP64 extensions
|
||||
This module does not currently handle multi-disk ZIP files.
|
||||
It can handle ZIP files that use the ZIP64 extensions
|
||||
(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
|
||||
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)
|
||||
|
||||
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
|
||||
which have appended comments.
|
||||
otherwise returns ``False``.
|
||||
|
||||
|
||||
.. data:: ZIP_STORED
|
||||
|
|
|
@ -386,11 +386,12 @@ characters:
|
|||
information on this convention.
|
||||
|
||||
``__*__``
|
||||
System-defined names. These names are defined by the interpreter and its
|
||||
implementation (including the standard library); applications should not expect
|
||||
to define additional names using this convention. The set of names of this
|
||||
class defined by Python may be extended in future versions. See section
|
||||
:ref:`specialnames`.
|
||||
System-defined names. These names are defined by the interpreter and its
|
||||
implementation (including the standard library). Current system names are
|
||||
discussed in the :ref:`specialnames` section and elsewhere. More will likely
|
||||
be defined in future versions of Python. *Any* use of ``__*__`` names, in
|
||||
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
|
||||
|
|
|
@ -64,7 +64,7 @@ Let's begin with some definitions.
|
|||
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
|
||||
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
|
||||
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
|
||||
|
|
|
@ -17,10 +17,9 @@ def wrapper(func, *args, **kwds):
|
|||
wrapper().
|
||||
"""
|
||||
|
||||
res = None
|
||||
try:
|
||||
# Initialize curses
|
||||
stdscr=curses.initscr()
|
||||
stdscr = curses.initscr()
|
||||
|
||||
# Turn off echoing of keys, and enter cbreak mode,
|
||||
# where no buffering is performed on keyboard input
|
||||
|
|
|
@ -138,7 +138,7 @@ class bdist_msi (Command):
|
|||
if not self.skip_build and self.distribution.has_ext_modules()\
|
||||
and self.target_version != short_version:
|
||||
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,)
|
||||
else:
|
||||
self.target_version = short_version
|
||||
|
|
|
@ -93,7 +93,7 @@ class bdist_wininst (Command):
|
|||
short_version = get_python_version()
|
||||
if self.target_version and self.target_version != short_version:
|
||||
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,)
|
||||
self.target_version = short_version
|
||||
|
||||
|
|
|
@ -910,10 +910,9 @@ pyepoll_register(pyEpoll_Object *self, PyObject *args, PyObject *kwds)
|
|||
}
|
||||
|
||||
PyDoc_STRVAR(pyepoll_register_doc,
|
||||
"register(fd[, eventmask]) -> bool\n\
|
||||
"register(fd[, eventmask]) -> None\n\
|
||||
\n\
|
||||
Registers a new fd or modifies an already registered fd. register() returns\n\
|
||||
True if a new fd was registered or False if the event mask for fd was modified.\n\
|
||||
Registers a new fd or modifies an already registered fd.\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\
|
||||
is EPOLL_IN | EPOLL_OUT | EPOLL_PRI.\n\
|
||||
|
|
|
@ -155,6 +155,8 @@ _ssl
|
|||
You must install the NASM assembler from
|
||||
http://nasm.sf.net
|
||||
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
|
||||
http://www.activestate.com/Products/ActivePerl/
|
||||
|
|
Loading…
Reference in New Issue