Merged revisions 79307,79408,79430,79533,79542,79579-79580,79585-79587,79607-79608,79622,79717,79820,79822,79828,79862,79875,79923-79924,79941-79943,79945,79947,79951-79952 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r79307 | florent.xicluna | 2010-03-22 17:45:50 -0500 (Mon, 22 Mar 2010) | 2 lines #7667: Fix doctest failures with non-ASCII paths. ........ r79408 | victor.stinner | 2010-03-24 20:18:38 -0500 (Wed, 24 Mar 2010) | 2 lines Fix a gcc warning introduced by r79397. ........ r79430 | brian.curtin | 2010-03-25 18:48:54 -0500 (Thu, 25 Mar 2010) | 2 lines Fix #6538. Markup RegexObject and MatchObject as classes. Patch by Ryan Arana. ........ r79533 | barry.warsaw | 2010-03-31 16:07:16 -0500 (Wed, 31 Mar 2010) | 6 lines - Issue #8233: When run as a script, py_compile.py optionally takes a single argument `-` which tells it to read files to compile from stdin. Each line is read on demand and the named file is compiled immediately. (Original patch by Piotr O?\197?\188arowski). ........ r79542 | r.david.murray | 2010-03-31 20:28:39 -0500 (Wed, 31 Mar 2010) | 3 lines A couple small grammar fixes in test.rst, and rewrite the check_warnings docs to be clearer. ........ r79579 | georg.brandl | 2010-04-02 03:34:41 -0500 (Fri, 02 Apr 2010) | 1 line Add 2.6.5. ........ r79580 | georg.brandl | 2010-04-02 03:39:09 -0500 (Fri, 02 Apr 2010) | 1 line #2768: add a note on how to get a file descriptor. ........ r79585 | georg.brandl | 2010-04-02 04:03:18 -0500 (Fri, 02 Apr 2010) | 1 line Remove col-spanning cells in logging docs. ........ r79586 | georg.brandl | 2010-04-02 04:07:42 -0500 (Fri, 02 Apr 2010) | 1 line Document PyImport_ExecCodeModuleEx(). ........ r79587 | georg.brandl | 2010-04-02 04:11:49 -0500 (Fri, 02 Apr 2010) | 1 line #8012: clarification in generator glossary entry. ........ r79607 | andrew.kuchling | 2010-04-02 12:48:23 -0500 (Fri, 02 Apr 2010) | 1 line #6647: document that catch_warnings is not thread-safe ........ r79608 | andrew.kuchling | 2010-04-02 12:54:26 -0500 (Fri, 02 Apr 2010) | 1 line #6647: add note to two examples ........ r79622 | tarek.ziade | 2010-04-02 16:34:19 -0500 (Fri, 02 Apr 2010) | 1 line removed documentation on code that was reverted and pushed into distutils2 ........ r79717 | antoine.pitrou | 2010-04-03 16:22:38 -0500 (Sat, 03 Apr 2010) | 4 lines Fix wording / typography, and a slightly misleading statement (memoryviews don't support complex structures right now) ........ r79820 | benjamin.peterson | 2010-04-05 22:34:09 -0500 (Mon, 05 Apr 2010) | 1 line ready _sre types ........ r79822 | georg.brandl | 2010-04-06 03:18:15 -0500 (Tue, 06 Apr 2010) | 1 line #8320: document return value of recv_into(). ........ r79828 | georg.brandl | 2010-04-06 09:33:44 -0500 (Tue, 06 Apr 2010) | 1 line Add JP. ........ r79862 | georg.brandl | 2010-04-06 15:27:59 -0500 (Tue, 06 Apr 2010) | 1 line Fix syntax. ........ r79875 | mark.dickinson | 2010-04-06 17:18:23 -0500 (Tue, 06 Apr 2010) | 1 line More NaN consistency doc fixes. ........ r79923 | georg.brandl | 2010-04-10 06:15:24 -0500 (Sat, 10 Apr 2010) | 1 line #8360: skipTest was added in 2.7. ........ r79924 | georg.brandl | 2010-04-10 06:16:59 -0500 (Sat, 10 Apr 2010) | 1 line #8346: update version. ........ r79941 | andrew.kuchling | 2010-04-10 20:39:36 -0500 (Sat, 10 Apr 2010) | 1 line Two grammar fixes ........ r79942 | andrew.kuchling | 2010-04-10 20:40:06 -0500 (Sat, 10 Apr 2010) | 1 line Punctuation fix ........ r79943 | andrew.kuchling | 2010-04-10 20:40:30 -0500 (Sat, 10 Apr 2010) | 1 line Add various items ........ r79945 | andrew.kuchling | 2010-04-10 20:40:49 -0500 (Sat, 10 Apr 2010) | 1 line name correct ........ r79947 | andrew.kuchling | 2010-04-10 20:44:13 -0500 (Sat, 10 Apr 2010) | 1 line Remove distutils section ........ r79951 | andrew.kuchling | 2010-04-11 07:48:08 -0500 (Sun, 11 Apr 2010) | 1 line Two typo fixes ........ r79952 | andrew.kuchling | 2010-04-11 07:49:37 -0500 (Sun, 11 Apr 2010) | 1 line Add two items ........
This commit is contained in:
parent
40b0c9ac4d
commit
08bf91c041
|
@ -115,6 +115,9 @@ Importing Modules
|
||||||
such modules have no way to know that the module object is an unknown (and
|
such modules have no way to know that the module object is an unknown (and
|
||||||
probably damaged with respect to the module author's intents) state.
|
probably damaged with respect to the module author's intents) state.
|
||||||
|
|
||||||
|
The module's :attr:`__file__` attribute will be set to the code object's
|
||||||
|
:cmember:`co_filename`.
|
||||||
|
|
||||||
This function will reload the module if it was already imported. See
|
This function will reload the module if it was already imported. See
|
||||||
:cfunc:`PyImport_ReloadModule` for the intended way to reload a module.
|
:cfunc:`PyImport_ReloadModule` for the intended way to reload a module.
|
||||||
|
|
||||||
|
@ -122,6 +125,12 @@ Importing Modules
|
||||||
structures not already created will still not be created.
|
structures not already created will still not be created.
|
||||||
|
|
||||||
|
|
||||||
|
.. cfunction:: PyObject* PyImport_ExecCodeModuleEx(char *name, PyObject *co, char *pathname)
|
||||||
|
|
||||||
|
Like :cfunc:`PyImport_ExecCodeModule`, but the :attr:`__file__` attribute of
|
||||||
|
the module object is set to *pathname* if it is non-``NULL``.
|
||||||
|
|
||||||
|
|
||||||
.. cfunction:: long PyImport_GetMagicNumber()
|
.. cfunction:: long PyImport_GetMagicNumber()
|
||||||
|
|
||||||
Return the magic number for Python bytecode files (a.k.a. :file:`.pyc` and
|
Return the magic number for Python bytecode files (a.k.a. :file:`.pyc` and
|
||||||
|
|
|
@ -499,6 +499,11 @@ PyImport_ExecCodeModule:PyObject*::+1:
|
||||||
PyImport_ExecCodeModule:char*:name::
|
PyImport_ExecCodeModule:char*:name::
|
||||||
PyImport_ExecCodeModule:PyObject*:co:0:
|
PyImport_ExecCodeModule:PyObject*:co:0:
|
||||||
|
|
||||||
|
PyImport_ExecCodeModuleEx:PyObject*::+1:
|
||||||
|
PyImport_ExecCodeModuleEx:char*:name::
|
||||||
|
PyImport_ExecCodeModuleEx:PyObject*:co:0:
|
||||||
|
PyImport_ExecCodeModuleEx:char*:pathname::
|
||||||
|
|
||||||
PyImport_GetMagicNumber:long:::
|
PyImport_GetMagicNumber:long:::
|
||||||
|
|
||||||
PyImport_GetModuleDict:PyObject*::0:
|
PyImport_GetModuleDict:PyObject*::0:
|
||||||
|
@ -518,6 +523,13 @@ PyImport_ImportModuleEx:PyObject*:globals:0:???
|
||||||
PyImport_ImportModuleEx:PyObject*:locals:0:???
|
PyImport_ImportModuleEx:PyObject*:locals:0:???
|
||||||
PyImport_ImportModuleEx:PyObject*:fromlist:0:???
|
PyImport_ImportModuleEx:PyObject*:fromlist:0:???
|
||||||
|
|
||||||
|
PyImport_ImportModuleLevel:PyObject*::+1:
|
||||||
|
PyImport_ImportModuleLevel:char*:name::
|
||||||
|
PyImport_ImportModuleLevel:PyObject*:globals:0:???
|
||||||
|
PyImport_ImportModuleLevel:PyObject*:locals:0:???
|
||||||
|
PyImport_ImportModuleLevel:PyObject*:fromlist:0:???
|
||||||
|
PyImport_ImportModuleLevel:int:level::
|
||||||
|
|
||||||
PyImport_ReloadModule:PyObject*::+1:
|
PyImport_ReloadModule:PyObject*::+1:
|
||||||
PyImport_ReloadModule:PyObject*:m:0:
|
PyImport_ReloadModule:PyObject*:m:0:
|
||||||
|
|
||||||
|
|
|
@ -1944,19 +1944,6 @@ This is described in more detail in :pep:`301`.
|
||||||
|
|
||||||
.. % todo
|
.. % todo
|
||||||
|
|
||||||
:mod:`distutils.command.check` --- Check the meta-data of a package
|
|
||||||
===================================================================
|
|
||||||
|
|
||||||
.. module:: distutils.command.check
|
|
||||||
:synopsis: Check the metadata of a package
|
|
||||||
|
|
||||||
|
|
||||||
The ``check`` command performs some tests on the meta-data of a package.
|
|
||||||
For example, it verifies that all required meta-data are provided as
|
|
||||||
the arguments passed to the :func:`setup` function.
|
|
||||||
|
|
||||||
.. % todo
|
|
||||||
|
|
||||||
|
|
||||||
Creating a new Distutils command
|
Creating a new Distutils command
|
||||||
================================
|
================================
|
||||||
|
|
|
@ -233,103 +233,6 @@ With exactly the same source tree layout, this extension can be put in the
|
||||||
ext_modules=[Extension('foopkg.foo', ['foo.c'])],
|
ext_modules=[Extension('foopkg.foo', ['foo.c'])],
|
||||||
)
|
)
|
||||||
|
|
||||||
Checking a package
|
|
||||||
==================
|
|
||||||
|
|
||||||
The ``check`` command allows you to verify if your package meta-data
|
|
||||||
meet the minimum requirements to build a distribution.
|
|
||||||
|
|
||||||
To run it, just call it using your :file:`setup.py` script. If something is
|
|
||||||
missing, ``check`` will display a warning.
|
|
||||||
|
|
||||||
Let's take an example with a simple script::
|
|
||||||
|
|
||||||
from distutils.core import setup
|
|
||||||
|
|
||||||
setup(name='foobar')
|
|
||||||
|
|
||||||
Running the ``check`` command will display some warnings::
|
|
||||||
|
|
||||||
$ python setup.py check
|
|
||||||
running check
|
|
||||||
warning: check: missing required meta-data: version, url
|
|
||||||
warning: check: missing meta-data: either (author and author_email) or
|
|
||||||
(maintainer and maintainer_email) must be supplied
|
|
||||||
|
|
||||||
|
|
||||||
If you use the reStructuredText syntax in the ``long_description`` field and
|
|
||||||
`docutils <http://docutils.sourceforge.net/>`_ is installed you can check if
|
|
||||||
the syntax is fine with the ``check`` command, using the ``restructuredtext``
|
|
||||||
option.
|
|
||||||
|
|
||||||
For example, if the :file:`setup.py` script is changed like this::
|
|
||||||
|
|
||||||
from distutils.core import setup
|
|
||||||
|
|
||||||
desc = """\
|
|
||||||
My description
|
|
||||||
=============
|
|
||||||
|
|
||||||
This is the description of the ``foobar`` package.
|
|
||||||
"""
|
|
||||||
|
|
||||||
setup(name='foobar', version='1', author='tarek',
|
|
||||||
author_email='tarek@ziade.org',
|
|
||||||
url='http://example.com', long_description=desc)
|
|
||||||
|
|
||||||
Where the long description is broken, ``check`` will be able to detect it
|
|
||||||
by using the :mod:`docutils` parser::
|
|
||||||
|
|
||||||
$ pythontrunk setup.py check --restructuredtext
|
|
||||||
running check
|
|
||||||
warning: check: Title underline too short. (line 2)
|
|
||||||
warning: check: Could not finish the parsing.
|
|
||||||
|
|
||||||
|
|
||||||
.. _reading-metadata:
|
|
||||||
|
|
||||||
Reading the metadata
|
|
||||||
====================
|
|
||||||
|
|
||||||
The :func:`distutils.core.setup` function provides a command-line interface
|
|
||||||
that allows you to query the metadata fields of a project through the
|
|
||||||
:file:`setup.py` script of a given project::
|
|
||||||
|
|
||||||
$ python setup.py --name
|
|
||||||
distribute
|
|
||||||
|
|
||||||
This call reads the ``name`` metadata by running the
|
|
||||||
:func:`distutils.core.setup` function. Although, when a source or binary
|
|
||||||
distribution is created with Distutils, the metadata fields are written
|
|
||||||
in a static file called :file:`PKG-INFO`. When a Distutils-based project is
|
|
||||||
installed in Python, the :file:`PKG-INFO` file is copied alongside the modules
|
|
||||||
and packages of the distribution under :file:`NAME-VERSION-pyX.X.egg-info`,
|
|
||||||
where ``NAME`` is the name of the project, ``VERSION`` its version as defined
|
|
||||||
in the Metadata, and ``pyX.X`` the major and minor version of Python like
|
|
||||||
``2.7`` or ``3.2``.
|
|
||||||
|
|
||||||
You can read back this static file, by using the
|
|
||||||
:class:`distutils.dist.DistributionMetadata` class and its
|
|
||||||
:func:`read_pkg_file` method::
|
|
||||||
|
|
||||||
>>> from distutils.dist import DistributionMetadata
|
|
||||||
>>> metadata = DistributionMetadata()
|
|
||||||
>>> metadata.read_pkg_file(open('distribute-0.6.8-py2.7.egg-info'))
|
|
||||||
>>> metadata.name
|
|
||||||
'distribute'
|
|
||||||
>>> metadata.version
|
|
||||||
'0.6.8'
|
|
||||||
>>> metadata.description
|
|
||||||
'Easily download, build, install, upgrade, and uninstall Python packages'
|
|
||||||
|
|
||||||
Notice that the class can also be instanciated with a metadata file path to
|
|
||||||
loads its values::
|
|
||||||
|
|
||||||
>>> pkg_info_path = 'distribute-0.6.8-py2.7.egg-info'
|
|
||||||
>>> DistributionMetadata(pkg_info_path).name
|
|
||||||
'distribute'
|
|
||||||
|
|
||||||
|
|
||||||
.. % \section{Multiple extension modules}
|
.. % \section{Multiple extension modules}
|
||||||
.. % \label{multiple-ext}
|
.. % \label{multiple-ext}
|
||||||
|
|
||||||
|
|
|
@ -212,6 +212,8 @@ Glossary
|
||||||
performs garbage collection via reference counting and a cyclic garbage
|
performs garbage collection via reference counting and a cyclic garbage
|
||||||
collector that is able to detect and break reference cycles.
|
collector that is able to detect and break reference cycles.
|
||||||
|
|
||||||
|
.. index:: single: generator
|
||||||
|
|
||||||
generator
|
generator
|
||||||
A function which returns an iterator. It looks like a normal function
|
A function which returns an iterator. It looks like a normal function
|
||||||
except that values are returned to the caller using a :keyword:`yield`
|
except that values are returned to the caller using a :keyword:`yield`
|
||||||
|
@ -225,7 +227,7 @@ Glossary
|
||||||
.. index:: single: generator expression
|
.. index:: single: generator expression
|
||||||
|
|
||||||
generator expression
|
generator expression
|
||||||
An expression that returns a generator. It looks like a normal expression
|
An expression that returns an iterator. It looks like a normal expression
|
||||||
followed by a :keyword:`for` expression defining a loop variable, range,
|
followed by a :keyword:`for` expression defining a loop variable, range,
|
||||||
and an optional :keyword:`if` expression. The combined expression
|
and an optional :keyword:`if` expression. The combined expression
|
||||||
generates values for an enclosing function::
|
generates values for an enclosing function::
|
||||||
|
|
|
@ -40,7 +40,7 @@ The :mod:`functools` module defines the following functions:
|
||||||
.. function:: total_ordering(cls)
|
.. function:: total_ordering(cls)
|
||||||
|
|
||||||
Given a class defining one or more rich comparison ordering methods, this
|
Given a class defining one or more rich comparison ordering methods, this
|
||||||
class decorator supplies the rest. This simplies the effort involved
|
class decorator supplies the rest. This simplifies the effort involved
|
||||||
in specifying all of the possible rich comparison operations:
|
in specifying all of the possible rich comparison operations:
|
||||||
|
|
||||||
The class must define one of :meth:`__lt__`, :meth:`__le__`,
|
The class must define one of :meth:`__lt__`, :meth:`__le__`,
|
||||||
|
|
|
@ -2012,6 +2012,84 @@ supports sending logging messages to a remote or local Unix syslog.
|
||||||
or integers - if strings are passed, internal mapping dictionaries are
|
or integers - if strings are passed, internal mapping dictionaries are
|
||||||
used to convert them to integers.
|
used to convert them to integers.
|
||||||
|
|
||||||
|
**Priorities**
|
||||||
|
|
||||||
|
+--------------------------+---------------+
|
||||||
|
| Name (string) | Symbolic value|
|
||||||
|
+==========================+===============+
|
||||||
|
| ``alert`` | LOG_ALERT |
|
||||||
|
+--------------------------+---------------+
|
||||||
|
| ``crit`` or ``critical`` | LOG_CRIT |
|
||||||
|
+--------------------------+---------------+
|
||||||
|
| ``debug`` | LOG_DEBUG |
|
||||||
|
+--------------------------+---------------+
|
||||||
|
| ``emerg`` or ``panic`` | LOG_EMERG |
|
||||||
|
+--------------------------+---------------+
|
||||||
|
| ``err`` or ``error`` | LOG_ERR |
|
||||||
|
+--------------------------+---------------+
|
||||||
|
| ``info`` | LOG_INFO |
|
||||||
|
+--------------------------+---------------+
|
||||||
|
| ``notice`` | LOG_NOTICE |
|
||||||
|
+--------------------------+---------------+
|
||||||
|
| ``warn`` or ``warning`` | LOG_WARNING |
|
||||||
|
+--------------------------+---------------+
|
||||||
|
|
||||||
|
**Facilities**
|
||||||
|
|
||||||
|
+---------------+---------------+
|
||||||
|
| Name (string) | Symbolic value|
|
||||||
|
+===============+===============+
|
||||||
|
| ``auth`` | LOG_AUTH |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``authpriv`` | LOG_AUTHPRIV |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``cron`` | LOG_CRON |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``daemon`` | LOG_DAEMON |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``ftp`` | LOG_FTP |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``kern`` | LOG_KERN |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``lpr`` | LOG_LPR |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``mail`` | LOG_MAIL |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``news`` | LOG_NEWS |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``syslog`` | LOG_SYSLOG |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``user`` | LOG_USER |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``uucp`` | LOG_UUCP |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``local0`` | LOG_LOCAL0 |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``local1`` | LOG_LOCAL1 |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``local2`` | LOG_LOCAL2 |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``local3`` | LOG_LOCAL3 |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``local4`` | LOG_LOCAL4 |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``local5`` | LOG_LOCAL5 |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``local6`` | LOG_LOCAL6 |
|
||||||
|
+---------------+---------------+
|
||||||
|
| ``local7`` | LOG_LOCAL7 |
|
||||||
|
+---------------+---------------+
|
||||||
|
|
||||||
|
.. method:: mapPriority(levelname)
|
||||||
|
|
||||||
|
Maps a logging level name to a syslog priority name.
|
||||||
|
You may need to override this if you are using custom levels, or
|
||||||
|
if the default algorithm is not suitable for your needs. The
|
||||||
|
default algorithm maps ``DEBUG``, ``INFO``, ``WARNING``, ``ERROR`` and
|
||||||
|
``CRITICAL`` to the equivalent syslog names, and all other level
|
||||||
|
names to "warning".
|
||||||
|
|
||||||
|
.. _nt-eventlog-handler:
|
||||||
|
|
||||||
NTEventLogHandler
|
NTEventLogHandler
|
||||||
^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
@ -345,9 +345,9 @@ Constants
|
||||||
:exc:`ValueError` for invalid operations like ``sqrt(-1.0)`` or ``log(0.0)``
|
:exc:`ValueError` for invalid operations like ``sqrt(-1.0)`` or ``log(0.0)``
|
||||||
(where C99 Annex F recommends signaling invalid operation or divide-by-zero),
|
(where C99 Annex F recommends signaling invalid operation or divide-by-zero),
|
||||||
and :exc:`OverflowError` for results that overflow (for example,
|
and :exc:`OverflowError` for results that overflow (for example,
|
||||||
``exp(1000.0)``). A *NaN* will not be returned from any of the functions
|
``exp(1000.0)``). A NaN will not be returned from any of the functions
|
||||||
above unless one or more of the input arguments was a *NaN*; in that case,
|
above unless one or more of the input arguments was a NaN; in that case,
|
||||||
most functions will return a *NaN*, but (again following C99 Annex F) there
|
most functions will return a NaN, but (again following C99 Annex F) there
|
||||||
are some exceptions to this rule, for example ``pow(float('nan'), 0.0)`` or
|
are some exceptions to this rule, for example ``pow(float('nan'), 0.0)`` or
|
||||||
``hypot(float('nan'), float('inf'))``.
|
``hypot(float('nan'), float('inf'))``.
|
||||||
|
|
||||||
|
|
|
@ -437,6 +437,10 @@ process will then be assigned 3, 4, 5, and so forth. The name "file descriptor"
|
||||||
is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
|
is slightly deceptive; on Unix platforms, sockets and pipes are also referenced
|
||||||
by file descriptors.
|
by file descriptors.
|
||||||
|
|
||||||
|
The :meth:`~file.fileno` method can be used to obtain the file descriptor
|
||||||
|
associated with a file object when required. Note that using the file
|
||||||
|
descriptor directly will bypass the file object methods, ignoring aspects such
|
||||||
|
as internal buffering of data.
|
||||||
|
|
||||||
.. function:: close(fd)
|
.. function:: close(fd)
|
||||||
|
|
||||||
|
|
|
@ -622,9 +622,9 @@ correspond to Unix system calls applicable to sockets.
|
||||||
|
|
||||||
Receive up to *nbytes* bytes from the socket, storing the data into a buffer
|
Receive up to *nbytes* bytes from the socket, storing the data into a buffer
|
||||||
rather than creating a new bytestring. If *nbytes* is not specified (or 0),
|
rather than creating a new bytestring. If *nbytes* is not specified (or 0),
|
||||||
receive up to the size available in the given buffer. See the Unix manual page
|
receive up to the size available in the given buffer. Returns the number of
|
||||||
:manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
|
bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
|
||||||
to zero.
|
of the optional argument *flags*; it defaults to zero.
|
||||||
|
|
||||||
|
|
||||||
.. method:: socket.send(bytes[, flags])
|
.. method:: socket.send(bytes[, flags])
|
||||||
|
|
|
@ -2143,12 +2143,12 @@ An example of dictionary view usage::
|
||||||
|
|
||||||
.. _typememoryview:
|
.. _typememoryview:
|
||||||
|
|
||||||
memoryview Types
|
memoryview type
|
||||||
================
|
===============
|
||||||
|
|
||||||
:class:`memoryview`\s allow Python code to access the internal data of an object
|
:class:`memoryview` objects allow Python code to access the internal data
|
||||||
that supports the buffer protocol without copying. Memory can be interpreted as
|
of an object that supports the buffer protocol without copying. Memory
|
||||||
simple bytes or complex data structures.
|
is generally interpreted as simple bytes.
|
||||||
|
|
||||||
.. class:: memoryview(obj)
|
.. class:: memoryview(obj)
|
||||||
|
|
||||||
|
|
|
@ -212,7 +212,7 @@ object, see :ref:`tarinfo-objects` for details.
|
||||||
A :class:`TarFile` object can be used as a context manager in a :keyword:`with`
|
A :class:`TarFile` object can be used as a context manager in a :keyword:`with`
|
||||||
statement. It will automatically be closed when the block is completed. Please
|
statement. It will automatically be closed when the block is completed. Please
|
||||||
note that in the event of an exception an archive opened for writing will not
|
note that in the event of an exception an archive opened for writing will not
|
||||||
be finalized, only the internally used file object will be closed. See the
|
be finalized; only the internally used file object will be closed. See the
|
||||||
:ref:`tar-examples` section for a use case.
|
:ref:`tar-examples` section for a use case.
|
||||||
|
|
||||||
.. versionadded:: 3.2
|
.. versionadded:: 3.2
|
||||||
|
|
|
@ -221,15 +221,15 @@ The :mod:`test.support` module defines the following constants:
|
||||||
|
|
||||||
.. data:: TESTFN
|
.. data:: TESTFN
|
||||||
|
|
||||||
Set to the name that a temporary file could use. Any temporary file that is
|
Set to a name that is safe to use as the name of a temporary file. Any
|
||||||
created should be closed and unlinked (removed).
|
temporary file that is created should be closed and unlinked (removed).
|
||||||
|
|
||||||
The :mod:`test.support` module defines the following functions:
|
The :mod:`test.support` module defines the following functions:
|
||||||
|
|
||||||
|
|
||||||
.. function:: forget(module_name)
|
.. function:: forget(module_name)
|
||||||
|
|
||||||
Remove the module named *module_name* from ``sys.modules`` and deletes any
|
Remove the module named *module_name* from ``sys.modules`` and delete any
|
||||||
byte-compiled files of the module.
|
byte-compiled files of the module.
|
||||||
|
|
||||||
|
|
||||||
|
@ -272,49 +272,55 @@ The :mod:`test.support` module defines the following functions:
|
||||||
This will run all tests defined in the named module.
|
This will run all tests defined in the named module.
|
||||||
|
|
||||||
|
|
||||||
.. function:: check_warnings(*filters, quiet=None)
|
.. function:: check_warnings(*filters, quiet=True)
|
||||||
|
|
||||||
A convenience wrapper for ``warnings.catch_warnings()`` that makes
|
A convenience wrapper for :func:`warnings.catch_warnings()` that makes it
|
||||||
it easier to test that a warning was correctly raised with a single
|
easier to test that a warning was correctly raised. It is approximately
|
||||||
assertion. It is approximately equivalent to calling
|
equivalent to calling ``warnings.catch_warnings(record=True)`` with
|
||||||
``warnings.catch_warnings(record=True)``.
|
:meth:`warnings.simplefilter` set to ``always`` and with the option to
|
||||||
|
automatically validate the results that are recorded.
|
||||||
|
|
||||||
It accepts 2-tuples ``("message regexp", WarningCategory)`` as positional
|
``check_warnings`` accepts 2-tuples of the form ``("message regexp",
|
||||||
arguments. If there's some ``*filters`` defined, or if the optional keyword
|
WarningCategory)`` as positional arguments. If one or more *filters* are
|
||||||
argument ``quiet`` is :const:`False`, it checks if the warnings are
|
provided, or if the optional keyword argument *quiet* is :const:`False`,
|
||||||
effective. If some filter did not catch any warning, the test fails. If some
|
it checks to make sure the warnings are as expected: each specified filter
|
||||||
warnings are not caught, the test fails, too. To disable these checks, set
|
must match at least one of the warnings raised by the enclosed code or the
|
||||||
argument ``quiet`` to :const:`True`.
|
test fails, and if any warnings are raised that do not match any of the
|
||||||
|
specified filters the test fails. To disable the first of these checks,
|
||||||
|
set *quiet* to :const:`True`.
|
||||||
|
|
||||||
Without argument, it defaults to::
|
If no arguments are specified, it defaults to::
|
||||||
|
|
||||||
check_warnings(("", Warning), quiet=True)
|
check_warnings(("", Warning), quiet=True)
|
||||||
|
|
||||||
Additionally, on entry to the context manager, a :class:`WarningRecorder`
|
In this case all warnings are caught and no errors are raised.
|
||||||
instance is returned. The underlying warnings list is available via the
|
|
||||||
recorder object's :attr:`warnings` attribute, while the attributes of the
|
|
||||||
last raised warning are also accessible directly on the object. If no
|
|
||||||
warning has been raised, then the latter attributes will all be
|
|
||||||
:const:`None`.
|
|
||||||
|
|
||||||
A :meth:`reset` method is also provided on the recorder object. This
|
On entry to the context manager, a :class:`WarningRecorder` instance is
|
||||||
method simply clears the warnings list.
|
returned. The underlying warnings list from
|
||||||
|
:func:`~warnings.catch_warnings` is available via the recorder object's
|
||||||
|
:attr:`warnings` attribute. As a convenience, the attributes of the object
|
||||||
|
representing the most recent warning can also be accessed directly through
|
||||||
|
the recorder object (see example below). If no warning has been raised,
|
||||||
|
then any of the attributes that would otherwise be expected on an object
|
||||||
|
representing a warning will return :const:`None`.
|
||||||
|
|
||||||
The context manager may be used like this::
|
The recorder object also has a :meth:`reset` method, which clears the
|
||||||
|
warnings list.
|
||||||
|
|
||||||
import warnings
|
The context manager is designed to be used like this::
|
||||||
|
|
||||||
with check_warnings(quiet=False):
|
|
||||||
exec('assert(False, "Hey!")')
|
|
||||||
warnings.warn(UserWarning("Hide me!"))
|
|
||||||
|
|
||||||
with check_warnings(("assertion is always true", SyntaxWarning),
|
with check_warnings(("assertion is always true", SyntaxWarning),
|
||||||
("", UserWarning)):
|
("", UserWarning)):
|
||||||
exec('assert(False, "Hey!")')
|
exec('assert(False, "Hey!")')
|
||||||
warnings.warn(UserWarning("Hide me!"))
|
warnings.warn(UserWarning("Hide me!"))
|
||||||
|
|
||||||
|
In this case if either warning was not raised, or some other warning was
|
||||||
|
raised, :func:`check_warnings` would raise an error.
|
||||||
|
|
||||||
|
When a test needs to look more deeply into the warnings, rather than
|
||||||
|
just checking whether or not they occurred, code like this can be used::
|
||||||
|
|
||||||
with check_warnings(quiet=True) as w:
|
with check_warnings(quiet=True) as w:
|
||||||
warnings.simplefilter("always")
|
|
||||||
warnings.warn("foo")
|
warnings.warn("foo")
|
||||||
assert str(w.args[0]) == "foo"
|
assert str(w.args[0]) == "foo"
|
||||||
warnings.warn("bar")
|
warnings.warn("bar")
|
||||||
|
@ -324,8 +330,12 @@ The :mod:`test.support` module defines the following functions:
|
||||||
w.reset()
|
w.reset()
|
||||||
assert len(w.warnings) == 0
|
assert len(w.warnings) == 0
|
||||||
|
|
||||||
|
|
||||||
|
Here all warnings will be caught, and the test code tests the captured
|
||||||
|
warnings directly.
|
||||||
|
|
||||||
.. versionchanged:: 3.2
|
.. versionchanged:: 3.2
|
||||||
New optional attributes ``*filters`` and ``quiet``.
|
New optional arguments *filters* and *quiet*.
|
||||||
|
|
||||||
|
|
||||||
.. function:: captured_stdout()
|
.. function:: captured_stdout()
|
||||||
|
|
|
@ -661,6 +661,8 @@ Test cases
|
||||||
Calling this during the a test method or :meth:`setUp` skips the current
|
Calling this during the a test method or :meth:`setUp` skips the current
|
||||||
test. See :ref:`unittest-skipping` for more information.
|
test. See :ref:`unittest-skipping` for more information.
|
||||||
|
|
||||||
|
.. versionadded:: 2.7
|
||||||
|
|
||||||
|
|
||||||
.. method:: debug()
|
.. method:: debug()
|
||||||
|
|
||||||
|
|
|
@ -180,7 +180,10 @@ the warning using the :class:`catch_warnings` context manager::
|
||||||
While within the context manager all warnings will simply be ignored. This
|
While within the context manager all warnings will simply be ignored. This
|
||||||
allows you to use known-deprecated code without having to see the warning while
|
allows you to use known-deprecated code without having to see the warning while
|
||||||
not suppressing the warning for other code that might not be aware of its use
|
not suppressing the warning for other code that might not be aware of its use
|
||||||
of deprecated code.
|
of deprecated code. Note: this can only be guaranteed in a single-threaded
|
||||||
|
application. If two or more threads use the :class:`catch_warnings` context
|
||||||
|
manager at the same time, the behavior is undefined.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. _warning-testing:
|
.. _warning-testing:
|
||||||
|
@ -218,7 +221,9 @@ Once the context manager exits, the warnings filter is restored to its state
|
||||||
when the context was entered. This prevents tests from changing the warnings
|
when the context was entered. This prevents tests from changing the warnings
|
||||||
filter in unexpected ways between tests and leading to indeterminate test
|
filter in unexpected ways between tests and leading to indeterminate test
|
||||||
results. The :func:`showwarning` function in the module is also restored to
|
results. The :func:`showwarning` function in the module is also restored to
|
||||||
its original value.
|
its original value. Note: this can only be guaranteed in a single-threaded
|
||||||
|
application. If two or more threads use the :class:`catch_warnings` context
|
||||||
|
manager at the same time, the behavior is undefined.
|
||||||
|
|
||||||
When testing multiple operations that raise the same kind of warning, it
|
When testing multiple operations that raise the same kind of warning, it
|
||||||
is important to test them in a manner that confirms each operation is raising
|
is important to test them in a manner that confirms each operation is raising
|
||||||
|
@ -337,3 +342,11 @@ Available Context Managers
|
||||||
module returned when you import :mod:`warnings` whose filter will be
|
module returned when you import :mod:`warnings` whose filter will be
|
||||||
protected. This argument exists primarily for testing the :mod:`warnings`
|
protected. This argument exists primarily for testing the :mod:`warnings`
|
||||||
module itself.
|
module itself.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
|
||||||
|
The :class:`catch_warnings` manager works by replacing and
|
||||||
|
then later restoring the module's
|
||||||
|
:func:`showwarning` function and internal list of filter
|
||||||
|
specifications. This means the context manager is modifying
|
||||||
|
global state and therefore is not thread-safe.
|
||||||
|
|
|
@ -914,7 +914,9 @@ the left or right by the number of bits given by the second argument.
|
||||||
A right shift by *n* bits is defined as division by ``pow(2,n)``. A left shift
|
A right shift by *n* bits is defined as division by ``pow(2,n)``. A left shift
|
||||||
by *n* bits is defined as multiplication with ``pow(2,n)``.
|
by *n* bits is defined as multiplication with ``pow(2,n)``.
|
||||||
|
|
||||||
.. note:: In the current implementation, the right-hand operand is required
|
.. note::
|
||||||
|
|
||||||
|
In the current implementation, the right-hand operand is required
|
||||||
to be at most :attr:`sys.maxsize`. If the right-hand operand is larger than
|
to be at most :attr:`sys.maxsize`. If the right-hand operand is larger than
|
||||||
:attr:`sys.maxsize` an :exc:`OverflowError` exception is raised.
|
:attr:`sys.maxsize` an :exc:`OverflowError` exception is raised.
|
||||||
|
|
||||||
|
|
|
@ -297,7 +297,7 @@ Miscellaneous options
|
||||||
the remaining fields. Empty fields match all values; trailing empty fields
|
the remaining fields. Empty fields match all values; trailing empty fields
|
||||||
may be omitted. The *message* field matches the start of the warning message
|
may be omitted. The *message* field matches the start of the warning message
|
||||||
printed; this match is case-insensitive. The *category* field matches the
|
printed; this match is case-insensitive. The *category* field matches the
|
||||||
warning category. This must be a class name; the match test whether the
|
warning category. This must be a class name; the match tests whether the
|
||||||
actual warning category of the message is a subclass of the specified warning
|
actual warning category of the message is a subclass of the specified warning
|
||||||
category. The full class name must be given. The *module* field matches the
|
category. The full class name must be given. The *module* field matches the
|
||||||
(fully-qualified) module name; this match is case-sensitive. The *line*
|
(fully-qualified) module name; this match is case-sensitive. The *line*
|
||||||
|
@ -476,7 +476,7 @@ These environment variables influence Python's behavior.
|
||||||
|
|
||||||
.. envvar:: PYTHONWARNINGS
|
.. envvar:: PYTHONWARNINGS
|
||||||
|
|
||||||
This is the equivalent to the :option:`-W` option. If set to a comma
|
This is equivalent to the :option:`-W` option. If set to a comma
|
||||||
separated string, it is equivalent to specifying :option:`-W` multiple
|
separated string, it is equivalent to specifying :option:`-W` multiple
|
||||||
times.
|
times.
|
||||||
|
|
||||||
|
|
|
@ -1792,7 +1792,7 @@ changes, or look through the Subversion logs for all the details.
|
||||||
were applied. (Maintained by Josiah Carlson; see :issue:`1736190` for
|
were applied. (Maintained by Josiah Carlson; see :issue:`1736190` for
|
||||||
one patch.)
|
one patch.)
|
||||||
|
|
||||||
* The :mod:`bsddb` module also has a new maintainer, Jesús Cea, and the package
|
* The :mod:`bsddb` module also has a new maintainer, Jesús Cea Avion, and the package
|
||||||
is now available as a standalone package. The web page for the package is
|
is now available as a standalone package. The web page for the package is
|
||||||
`www.jcea.es/programacion/pybsddb.htm
|
`www.jcea.es/programacion/pybsddb.htm
|
||||||
<http://www.jcea.es/programacion/pybsddb.htm>`__.
|
<http://www.jcea.es/programacion/pybsddb.htm>`__.
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
.. Big jobs: argparse, ElementTree 1.3, pep 391, 3106, sysconfig
|
.. Big jobs: argparse, ElementTree 1.3, pep 391, 3106, sysconfig
|
||||||
.. unittest test discovery
|
.. unittest test discovery
|
||||||
|
.. hyperlink all the methods & functions.
|
||||||
|
|
||||||
.. $Id$
|
.. $Id$
|
||||||
Rules for maintenance:
|
Rules for maintenance:
|
||||||
|
@ -238,10 +239,33 @@ module, but it's easier to use.
|
||||||
PEP 389: The argparse Module for Parsing Command Lines
|
PEP 389: The argparse Module for Parsing Command Lines
|
||||||
======================================================
|
======================================================
|
||||||
|
|
||||||
XXX write this section.
|
The :mod:`argparse` module for parsing command-line arguments was
|
||||||
|
added, intended as a more powerful replacement for the
|
||||||
|
:mod:`optparse` module.
|
||||||
|
|
||||||
|
This means Python now supports three different modules for parsing
|
||||||
|
command-line arguments: :mod:`getopt`, :mod:`optparse`, and
|
||||||
|
:mod:`argparse`. The :mod:`getopt` module closely resembles the C
|
||||||
|
:cfunc:`getopt` function, so it remains useful if you're writing a
|
||||||
|
Python prototype that will eventually be rewritten in C.
|
||||||
|
:mod:`optparse` becomes redundant, but there are no plans to remove it
|
||||||
|
because there are many scripts still using it, and there's no
|
||||||
|
automated way to update these scripts. (Making the :mod:`argparse`
|
||||||
|
API consistent with :mod:`optparse`'s interface was discussed but
|
||||||
|
rejected as too messy and difficult.)
|
||||||
|
|
||||||
|
To summarize, if you're writing a new script and don't need to worry
|
||||||
|
about compatibility with earlier versions of Python, use
|
||||||
|
:mod:`argparse` instead of :mod:`optparse`.
|
||||||
|
|
||||||
|
XXX need an example
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
|
`argparse module documentation <http://docs.python.org/dev/library/argparse.html>`__
|
||||||
|
|
||||||
|
`Upgrading optparse code to use argparse <http://docs.python.org/dev/library/argparse.html#upgrading-optparse-code>`__
|
||||||
|
|
||||||
:pep:`389` - argparse - New Command Line Parsing Module
|
:pep:`389` - argparse - New Command Line Parsing Module
|
||||||
PEP written and implemented by Steven Bethard.
|
PEP written and implemented by Steven Bethard.
|
||||||
|
|
||||||
|
@ -478,6 +502,29 @@ Some smaller changes made to the core Python language are:
|
||||||
|
|
||||||
.. ======================================================================
|
.. ======================================================================
|
||||||
|
|
||||||
|
.. _new-27-interpreter:
|
||||||
|
|
||||||
|
Interpreter Changes
|
||||||
|
-------------------------------
|
||||||
|
|
||||||
|
A new environment variable, :envvar:`PYTHONWARNINGS`,
|
||||||
|
allows controlling warnings. It should be set to a string
|
||||||
|
containing warning settings, equivalent to those
|
||||||
|
used with the :option:`-W` switch, separated by commas.
|
||||||
|
(Contributed by Brian Curtin; :issue:`7301`.)
|
||||||
|
|
||||||
|
For example, the following setting will print warnings every time
|
||||||
|
they occur, but turn warnings from the :mod:`Cookie` module into an
|
||||||
|
error. (The exact syntax for setting an environment variable varies
|
||||||
|
across operating systems and shells, so it may be different for you.)
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
export PYTHONWARNINGS=all,error:::Cookie:0
|
||||||
|
|
||||||
|
|
||||||
|
.. ======================================================================
|
||||||
|
|
||||||
|
|
||||||
Optimizations
|
Optimizations
|
||||||
-------------
|
-------------
|
||||||
|
@ -671,10 +718,13 @@ changes, or look through the Subversion logs for all the details.
|
||||||
|
|
||||||
(Added by Raymond Hettinger; :issue:`1818`.)
|
(Added by Raymond Hettinger; :issue:`1818`.)
|
||||||
|
|
||||||
The :class:`~collections.deque` data type now exposes its maximum length as the
|
The :class:`~collections.deque` data type now has a
|
||||||
read-only :attr:`~collections.deque.maxlen` attribute, and has a
|
:meth:`~collections.deque.count` method that returns the number of
|
||||||
:meth:`~collections.deque.reverse` method that reverses the elements of the deque in-place.
|
contained elements equal to the supplied argument *x*, and a
|
||||||
(Added by Raymond Hettinger.)
|
:meth:`~collections.deque.reverse` method that reverses the elements
|
||||||
|
of the deque in-place. :class:`deque` also exposes its maximum
|
||||||
|
length as the read-only :attr:`~collections.deque.maxlen` attribute.
|
||||||
|
(Both features added by Raymond Hettinger.)
|
||||||
|
|
||||||
* The :mod:`copy` module's :func:`~copy.deepcopy` function will now
|
* The :mod:`copy` module's :func:`~copy.deepcopy` function will now
|
||||||
correctly copy bound instance methods. (Implemented by
|
correctly copy bound instance methods. (Implemented by
|
||||||
|
@ -720,6 +770,12 @@ changes, or look through the Subversion logs for all the details.
|
||||||
as arguments to its constructor.
|
as arguments to its constructor.
|
||||||
(Implemented by Mark Dickinson; :issue:`5812`.)
|
(Implemented by Mark Dickinson; :issue:`5812`.)
|
||||||
|
|
||||||
|
An oversight was fixed, making the :class:`Fraction` match the other
|
||||||
|
numeric types; ordering comparisons (``<``, ``<=``, ``>``, ``>=``) between
|
||||||
|
fractions and complex numbers now raise a :exc:`TypeError`.
|
||||||
|
|
||||||
|
.. revision 79455
|
||||||
|
|
||||||
* New class: a new :class:`~ftplib.FTP_TLS` class in
|
* New class: a new :class:`~ftplib.FTP_TLS` class in
|
||||||
the :mod:`ftplib` module provides secure FTP
|
the :mod:`ftplib` module provides secure FTP
|
||||||
connections using TLS encapsulation of authentication as well as
|
connections using TLS encapsulation of authentication as well as
|
||||||
|
@ -730,6 +786,21 @@ changes, or look through the Subversion logs for all the details.
|
||||||
uploads thanks to an added *rest* parameter (patch by Pablo Mouzo;
|
uploads thanks to an added *rest* parameter (patch by Pablo Mouzo;
|
||||||
:issue:`6845`.)
|
:issue:`6845`.)
|
||||||
|
|
||||||
|
* New class decorator: :func:`total_ordering` in the :mod:`functools`
|
||||||
|
module takes a class that defines an :meth:`__eq__` method and one of
|
||||||
|
:meth:`__lt__`, :meth:`__le__`, :meth:`__gt__`, or :meth:`__ge__`,
|
||||||
|
and generates the missing comparison methods. Since the
|
||||||
|
:meth:`__cmp__` method is being deprecated in Python 3.x,
|
||||||
|
this decorator makes it easier to define ordered classes.
|
||||||
|
(Added by Raymond Hettinger; :issue:`5479`.)
|
||||||
|
|
||||||
|
New function: :func:`cmp_to_key` will take an old-style comparison
|
||||||
|
function that expects two arguments and return a new callable that
|
||||||
|
can be used as the *key* parameter to functions such as
|
||||||
|
:func:`sorted`, :func:`min` and :func:`max`, etc. The primary
|
||||||
|
intended use is to help with making code compatible with Python 3.x.
|
||||||
|
(Added by Raymond Hettinger.)
|
||||||
|
|
||||||
* New function: the :mod:`gc` module's :func:`~gc.is_tracked` returns
|
* New function: the :mod:`gc` module's :func:`~gc.is_tracked` returns
|
||||||
true if a given instance is tracked by the garbage collector, false
|
true if a given instance is tracked by the garbage collector, false
|
||||||
otherwise. (Contributed by Antoine Pitrou; :issue:`4688`.)
|
otherwise. (Contributed by Antoine Pitrou; :issue:`4688`.)
|
||||||
|
@ -905,7 +976,12 @@ changes, or look through the Subversion logs for all the details.
|
||||||
|
|
||||||
* The :mod:`socket` module's :class:`~ssl.SSL` objects now support the
|
* The :mod:`socket` module's :class:`~ssl.SSL` objects now support the
|
||||||
buffer API, which fixed a test suite failure. (Fixed by Antoine
|
buffer API, which fixed a test suite failure. (Fixed by Antoine
|
||||||
Pitrou; :issue:`7133`.)
|
Pitrou; :issue:`7133`.) The version of OpenSSL being used is
|
||||||
|
now available as the module attributes
|
||||||
|
:attr:`OPENSSL_VERSION` (a string),
|
||||||
|
:attr:`OPENSSL_VERSION_INFO` (a 5-tuple), and
|
||||||
|
:attr:`OPENSSL_VERSION_NUMBER` (an integer). (Added by Antoine Pitrou;
|
||||||
|
:issue:`8321`.)
|
||||||
|
|
||||||
The :func:`~socket.create_connection` function
|
The :func:`~socket.create_connection` function
|
||||||
gained a *source_address* parameter, a ``(host, port)`` 2-tuple
|
gained a *source_address* parameter, a ``(host, port)`` 2-tuple
|
||||||
|
@ -1057,58 +1133,6 @@ XXX write this.
|
||||||
.. whole new modules get described in subsections here
|
.. whole new modules get described in subsections here
|
||||||
|
|
||||||
|
|
||||||
Distutils Enhancements
|
|
||||||
---------------------------------
|
|
||||||
|
|
||||||
XXX all of this work has been moved to Distutils2
|
|
||||||
XXX Not sure what we should say here
|
|
||||||
|
|
||||||
Distutils is being more actively developed, thanks to Tarek Ziadé
|
|
||||||
who has taken over maintenance of the package, so there are a number
|
|
||||||
of fixes and improvements.
|
|
||||||
|
|
||||||
A new :file:`setup.py` subcommand, ``check``, will check that the
|
|
||||||
arguments being passed to the :func:`setup` function are complete
|
|
||||||
and correct (:issue:`5732`).
|
|
||||||
|
|
||||||
Byte-compilation by the ``install_lib`` subcommand is now only done
|
|
||||||
if the ``sys.dont_write_bytecode`` setting allows it (:issue:`7071`).
|
|
||||||
|
|
||||||
:func:`distutils.sdist.add_defaults` now uses
|
|
||||||
*package_dir* and *data_files* to create the MANIFEST file.
|
|
||||||
:mod:`distutils.sysconfig` now reads the :envvar:`AR` and
|
|
||||||
:envvar:`ARFLAGS` environment variables.
|
|
||||||
|
|
||||||
.. ARFLAGS done in #5941
|
|
||||||
|
|
||||||
It is no longer mandatory to store clear-text passwords in the
|
|
||||||
:file:`.pypirc` file when registering and uploading packages to PyPI. As long
|
|
||||||
as the username is present in that file, the :mod:`distutils` package will
|
|
||||||
prompt for the password if not present. (Added by Tarek Ziadé,
|
|
||||||
based on an initial contribution by Nathan Van Gheem; :issue:`4394`.)
|
|
||||||
|
|
||||||
A Distutils setup can now specify that a C extension is optional by
|
|
||||||
setting the *optional* option setting to true. If this optional is
|
|
||||||
supplied, failure to build the extension will not abort the build
|
|
||||||
process, but instead simply not install the failing extension.
|
|
||||||
(Contributed by Georg Brandl; :issue:`5583`.)
|
|
||||||
|
|
||||||
The :class:`distutils.dist.DistributionMetadata` class'
|
|
||||||
:meth:`read_pkg_file` method will read the contents of a package's
|
|
||||||
:file:`PKG-INFO` metadata file. For an example of its use, see
|
|
||||||
:ref:`reading-metadata`.
|
|
||||||
(Contributed by Tarek Ziadé; :issue:`7457`.)
|
|
||||||
|
|
||||||
:file:`setup.py` files will now accept a :option:`--no-user-cfg` switch
|
|
||||||
to skip reading the :file:`~/.pydistutils.cfg` file. (Suggested by
|
|
||||||
by Michael Hoffman, and implemented by Paul Winkler; :issue:`1180`.)
|
|
||||||
|
|
||||||
When creating a tar-format archive, the ``sdist`` subcommand now
|
|
||||||
allows specifying the user id and group that will own the files in the
|
|
||||||
archives using the :option:`--owner` and :option:`--group` switches
|
|
||||||
(:issue:`6516`).
|
|
||||||
|
|
||||||
|
|
||||||
Unit Testing Enhancements
|
Unit Testing Enhancements
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
|
|
1
LICENSE
1
LICENSE
|
@ -62,6 +62,7 @@ the various releases.
|
||||||
2.6.2 2.6.1 2009 PSF yes
|
2.6.2 2.6.1 2009 PSF yes
|
||||||
2.6.3 2.6.2 2009 PSF yes
|
2.6.3 2.6.2 2009 PSF yes
|
||||||
2.6.4 2.6.3 2009 PSF yes
|
2.6.4 2.6.3 2009 PSF yes
|
||||||
|
2.6.5 2.6.4 2010 PSF yes
|
||||||
3.0 2.6 2008 PSF yes
|
3.0 2.6 2008 PSF yes
|
||||||
3.0.1 3.0 2009 PSF yes
|
3.0.1 3.0 2009 PSF yes
|
||||||
3.1 3.0.1 2009 PSF yes
|
3.1 3.0.1 2009 PSF yes
|
||||||
|
|
|
@ -1323,7 +1323,8 @@ class DocTestRunner:
|
||||||
m = self.__LINECACHE_FILENAME_RE.match(filename)
|
m = self.__LINECACHE_FILENAME_RE.match(filename)
|
||||||
if m and m.group('name') == self.test.name:
|
if m and m.group('name') == self.test.name:
|
||||||
example = self.test.examples[int(m.group('examplenum'))]
|
example = self.test.examples[int(m.group('examplenum'))]
|
||||||
return example.source.splitlines(True)
|
source = example.source.encode('ascii', 'backslashreplace')
|
||||||
|
return source.splitlines(True)
|
||||||
else:
|
else:
|
||||||
return self.save_linecache_getlines(filename, module_globals)
|
return self.save_linecache_getlines(filename, module_globals)
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,10 @@ for details. When the agreement is signed, please note it in this log.
|
||||||
Permissions History
|
Permissions History
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
- Brian Curtin was given commit access on March 24 by MvL.
|
- Jean-Paul Calderone was given commit access on April 6 2010 by
|
||||||
|
GFB, at suggestion of Michael Foord and others.
|
||||||
|
|
||||||
|
- Brian Curtin was given commit access on March 24 2010 by MvL.
|
||||||
|
|
||||||
- Florent Xicluna was given commit access on February 25 2010 by
|
- Florent Xicluna was given commit access on February 25 2010 by
|
||||||
MvL, based on Antoine Pitrou's recommendation.
|
MvL, based on Antoine Pitrou's recommendation.
|
||||||
|
|
|
@ -3903,12 +3903,9 @@ PyMODINIT_FUNC PyInit__sre(void)
|
||||||
PyObject* d;
|
PyObject* d;
|
||||||
PyObject* x;
|
PyObject* x;
|
||||||
|
|
||||||
/* Initialize object types */
|
/* Patch object types */
|
||||||
if (PyType_Ready(&Pattern_Type) < 0)
|
if (PyType_Ready(&Pattern_Type) || PyType_Ready(&Match_Type) ||
|
||||||
return NULL;
|
PyType_Ready(&Scanner_Type))
|
||||||
if (PyType_Ready(&Match_Type) < 0)
|
|
||||||
return NULL;
|
|
||||||
if (PyType_Ready(&Scanner_Type) < 0)
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
m = PyModule_Create(&sremodule);
|
m = PyModule_Create(&sremodule);
|
||||||
|
|
|
@ -4803,10 +4803,10 @@ PyInit_datetime(void)
|
||||||
Py_INCREF(&PyDateTime_TZInfoType);
|
Py_INCREF(&PyDateTime_TZInfoType);
|
||||||
PyModule_AddObject(m, "tzinfo", (PyObject *) &PyDateTime_TZInfoType);
|
PyModule_AddObject(m, "tzinfo", (PyObject *) &PyDateTime_TZInfoType);
|
||||||
|
|
||||||
x = PyCapsule_New(&CAPI, PyDateTime_CAPSULE_NAME, NULL);
|
x = PyCapsule_New(&CAPI, PyDateTime_CAPSULE_NAME, NULL);
|
||||||
if (x == NULL)
|
if (x == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
PyModule_AddObject(m, "datetime_CAPI", x);
|
PyModule_AddObject(m, "datetime_CAPI", x);
|
||||||
|
|
||||||
/* A 4-year cycle has an extra leap day over what we'd get from
|
/* A 4-year cycle has an extra leap day over what we'd get from
|
||||||
* pasting together 4 single years.
|
* pasting together 4 single years.
|
||||||
|
|
Loading…
Reference in New Issue