Merge 3.1

This commit is contained in:
Éric Araujo 2011-04-20 19:24:09 +02:00
commit 37e6c54ba1
7 changed files with 55 additions and 34 deletions

View File

@ -511,13 +511,12 @@ interpreter can only be used after the interpreter has been initialized.
module: builtins module: builtins
module: __main__ module: __main__
module: sys module: sys
module: exceptions
triple: module; search; path triple: module; search; path
single: path (in module sys) single: path (in module sys)
The basic initialization function is :c:func:`Py_Initialize`. This initializes The basic initialization function is :c:func:`Py_Initialize`. This initializes
the table of loaded modules, and creates the fundamental modules the table of loaded modules, and creates the fundamental modules
:mod:`builtins`, :mod:`__main__`, :mod:`sys`, and :mod:`exceptions`. It also :mod:`builtins`, :mod:`__main__`, and :mod:`sys`. It also
initializes the module search path (``sys.path``). initializes the module search path (``sys.path``).
.. index:: single: PySys_SetArgvEx() .. index:: single: PySys_SetArgvEx()

View File

@ -152,7 +152,7 @@ The directives are:
Describes global data in a module, including both variables and values used Describes global data in a module, including both variables and values used
as "defined constants." Class and object attributes are not documented as "defined constants." Class and object attributes are not documented
using this environment. using this directive.
.. describe:: exception .. describe:: exception
@ -165,7 +165,7 @@ The directives are:
parameters, enclosing optional parameters in brackets. Default values can be parameters, enclosing optional parameters in brackets. Default values can be
given if it enhances clarity. For example:: given if it enhances clarity. For example::
.. function:: Timer.repeat([repeat=3[, number=1000000]]) .. function:: repeat([repeat=3[, number=1000000]])
Object methods are not documented using this directive. Bound object methods Object methods are not documented using this directive. Bound object methods
placed in the module namespace as part of the public interface of the module placed in the module namespace as part of the public interface of the module
@ -217,13 +217,30 @@ The directives are:
Describes an object data attribute. The description should include Describes an object data attribute. The description should include
information about the type of the data to be expected and whether it may be information about the type of the data to be expected and whether it may be
changed directly. changed directly. This directive should be nested in a class directive,
like in this example::
.. class:: Spam
Description of the class.
.. data:: ham
Description of the attribute.
If is also possible to document an attribute outside of a class directive,
for example if the documentation for different attributes and methods is
split in multiple sections. The class name should then be included
explicitly::
.. data:: Spam.eggs
.. describe:: method .. describe:: method
Describes an object method. The parameters should not include the ``self`` Describes an object method. The parameters should not include the ``self``
parameter. The description should include similar information to that parameter. The description should include similar information to that
described for ``function``. described for ``function``. This method should be nested in a class
method, like in the example above.
.. describe:: decoratormethod .. describe:: decoratormethod

View File

@ -30,9 +30,9 @@ the Oracle Berkeley DB.
name, such as ``'dbm.ndbm'`` or ``'dbm.gnu'``. name, such as ``'dbm.ndbm'`` or ``'dbm.gnu'``.
.. function:: open(filename, flag='r', mode=0o666) .. function:: open(file, flag='r', mode=0o666)
Open the database file *filename* and return a corresponding object. Open the database file *file* and return a corresponding object.
If the database file already exists, the :func:`whichdb` function is used to If the database file already exists, the :func:`whichdb` function is used to
determine its type and the appropriate module is used; if it does not exist, determine its type and the appropriate module is used; if it does not exist,

View File

@ -23,16 +23,8 @@ It has the following interface (key and data are strings):
list = d.keys() # return a list of all existing keys (slow!) list = d.keys() # return a list of all existing keys (slow!)
Future versions may change the order in which implementations are Future versions may change the order in which implementations are
tested for existence, add interfaces to other dbm-like tested for existence, and add interfaces to other dbm-like
implementations. implementations.
The open function has an optional second argument. This can be 'r',
for read-only access, 'w', for read-write access of an existing
database, 'c' for read-write access to a new or existing database, and
'n' for read-write access to a new database. The default is 'r'.
Note: 'r' and 'w' fail if the database doesn't exist; 'c' creates it
only if it doesn't exist; and 'n' always creates a new database.
""" """
__all__ = ['open', 'whichdb', 'error'] __all__ = ['open', 'whichdb', 'error']
@ -53,7 +45,17 @@ _modules = {}
error = (error, IOError) error = (error, IOError)
def open(file, flag = 'r', mode = 0o666): def open(file, flag='r', mode=0o666):
"""Open or create database at path given by *file*.
Optional argument *flag* can be 'r' (default) for read-only access, 'w'
for read-write access of an existing database, 'c' for read-write access
to a new or existing database, and 'n' for read-write access to a new
database.
Note: 'r' and 'w' fail if the database doesn't exist; 'c' creates it
only if it doesn't exist; and 'n' always creates a new database.
"""
global _defaultmod global _defaultmod
if _defaultmod is None: if _defaultmod is None:
for name in _names: for name in _names:

View File

@ -294,17 +294,20 @@ class sdist(Command):
join_lines=1, lstrip_ws=1, rstrip_ws=1, join_lines=1, lstrip_ws=1, rstrip_ws=1,
collapse_join=1) collapse_join=1)
while True: try:
line = template.readline() while True:
if line is None: # end of file line = template.readline()
break if line is None: # end of file
break
try: try:
self.filelist.process_template_line(line) self.filelist.process_template_line(line)
except DistutilsTemplateError as msg: except DistutilsTemplateError as msg:
self.warn("%s, line %d: %s" % (template.filename, self.warn("%s, line %d: %s" % (template.filename,
template.current_line, template.current_line,
msg)) msg))
finally:
template.close()
def prune_file_list(self): def prune_file_list(self):
"""Prune off branches that might slip into the file list as created """Prune off branches that might slip into the file list as created

View File

@ -137,7 +137,7 @@ class RegisterTestCase(PyPIRCCommandTestCase):
# let's see what the server received : we should # let's see what the server received : we should
# have 2 similar requests # have 2 similar requests
self.assertTrue(self.conn.reqs, 2) self.assertEqual(len(self.conn.reqs), 2)
req1 = dict(self.conn.reqs[0].headers) req1 = dict(self.conn.reqs[0].headers)
req2 = dict(self.conn.reqs[1].headers) req2 = dict(self.conn.reqs[1].headers)
@ -169,7 +169,7 @@ class RegisterTestCase(PyPIRCCommandTestCase):
del register_module.input del register_module.input
# we should have send a request # we should have send a request
self.assertTrue(self.conn.reqs, 1) self.assertEqual(len(self.conn.reqs), 1)
req = self.conn.reqs[0] req = self.conn.reqs[0]
headers = dict(req.headers) headers = dict(req.headers)
self.assertEqual(headers['Content-length'], '608') self.assertEqual(headers['Content-length'], '608')
@ -187,7 +187,7 @@ class RegisterTestCase(PyPIRCCommandTestCase):
del register_module.input del register_module.input
# we should have send a request # we should have send a request
self.assertTrue(self.conn.reqs, 1) self.assertEqual(len(self.conn.reqs), 1)
req = self.conn.reqs[0] req = self.conn.reqs[0]
headers = dict(req.headers) headers = dict(req.headers)
self.assertEqual(headers['Content-length'], '290') self.assertEqual(headers['Content-length'], '290')

View File

@ -170,7 +170,7 @@ def heappushpop(heap, item):
return item return item
def heapify(x): def heapify(x):
"""Transform list into a heap, in-place, in O(len(heap)) time.""" """Transform list into a heap, in-place, in O(len(x)) time."""
n = len(x) n = len(x)
# Transform bottom-up. The largest index there's any point to looking at # Transform bottom-up. The largest index there's any point to looking at
# is the largest with a child index in-range, so must have 2*i + 1 < n, # is the largest with a child index in-range, so must have 2*i + 1 < n,
@ -360,7 +360,7 @@ def nsmallest(n, iterable, key=None):
return [min(chain(head, it))] return [min(chain(head, it))]
return [min(chain(head, it), key=key)] return [min(chain(head, it), key=key)]
# When n>=size, it's faster to use sort() # When n>=size, it's faster to use sorted()
try: try:
size = len(iterable) size = len(iterable)
except (TypeError, AttributeError): except (TypeError, AttributeError):
@ -398,7 +398,7 @@ def nlargest(n, iterable, key=None):
return [max(chain(head, it))] return [max(chain(head, it))]
return [max(chain(head, it), key=key)] return [max(chain(head, it), key=key)]
# When n>=size, it's faster to use sort() # When n>=size, it's faster to use sorted()
try: try:
size = len(iterable) size = len(iterable)
except (TypeError, AttributeError): except (TypeError, AttributeError):