Skip to content

Commit 4469d0c

Browse files
committed
Merged revisions 67348,67355,67359,67362,67364-67365,67367-67368,67398,67423-67424,67432,67440-67441,67444-67445,67454-67455,67457-67458 via svnmerge from
svn+ssh://[email protected]/python/trunk ........ r67348 | benjamin.peterson | 2008-11-22 20:09:41 -0600 (Sat, 22 Nov 2008) | 1 line raise a better error ........ r67355 | georg.brandl | 2008-11-23 13:17:25 -0600 (Sun, 23 Nov 2008) | 2 lines #4392: fix parameter name. ........ r67359 | georg.brandl | 2008-11-23 15:57:30 -0600 (Sun, 23 Nov 2008) | 2 lines #4399: fix typo. ........ r67362 | gregory.p.smith | 2008-11-23 18:41:43 -0600 (Sun, 23 Nov 2008) | 2 lines Document PY_SSIZE_T_CLEAN for PyArg_ParseTuple. ........ r67364 | benjamin.peterson | 2008-11-23 19:16:29 -0600 (Sun, 23 Nov 2008) | 2 lines replace reference to debugger-hooks ........ r67365 | benjamin.peterson | 2008-11-23 22:09:03 -0600 (Sun, 23 Nov 2008) | 1 line #4396 make the parser module correctly validate the with syntax ........ r67367 | georg.brandl | 2008-11-24 10:16:07 -0600 (Mon, 24 Nov 2008) | 2 lines Fix typo. ........ r67368 | georg.brandl | 2008-11-24 13:56:47 -0600 (Mon, 24 Nov 2008) | 2 lines #4404: make clear what "path" is. ........ r67398 | benjamin.peterson | 2008-11-26 11:39:17 -0600 (Wed, 26 Nov 2008) | 1 line fix typo in sqlite3 docs ........ r67423 | jesse.noller | 2008-11-28 12:59:35 -0600 (Fri, 28 Nov 2008) | 2 lines issue4238: bsd support for cpu_count ........ r67424 | christian.heimes | 2008-11-28 13:33:33 -0600 (Fri, 28 Nov 2008) | 1 line Retain copyright of processing examples. This was requested by a Debian maintainer during packaging of the multiprocessing package for 2.4/2.5 ........ r67432 | benjamin.peterson | 2008-11-28 17:18:46 -0600 (Fri, 28 Nov 2008) | 1 line SVN format 9 is the same it seems ........ r67440 | jeremy.hylton | 2008-11-28 17:42:59 -0600 (Fri, 28 Nov 2008) | 4 lines Move definition int sval into branch of ifdef where it is used. Otherwise, you get a warning about an undefined variable. ........ r67441 | jeremy.hylton | 2008-11-28 18:09:16 -0600 (Fri, 28 Nov 2008) | 2 lines Reflow long lines. ........ r67444 | amaury.forgeotdarc | 2008-11-28 20:03:32 -0600 (Fri, 28 Nov 2008) | 2 lines Fix a small typo in docstring ........ r67445 | benjamin.peterson | 2008-11-29 21:07:33 -0600 (Sat, 29 Nov 2008) | 1 line StringIO.close() stops you from using the buffer, too ........ r67454 | benjamin.peterson | 2008-11-30 08:43:23 -0600 (Sun, 30 Nov 2008) | 1 line note the version that works ........ r67455 | martin.v.loewis | 2008-11-30 13:28:27 -0600 (Sun, 30 Nov 2008) | 1 line Issue #4365: Add crtassem.h constants to the msvcrt module. ........ r67457 | christian.heimes | 2008-11-30 15:16:28 -0600 (Sun, 30 Nov 2008) | 1 line w# requires Py_ssize_t ........ r67458 | benjamin.peterson | 2008-11-30 15:46:16 -0600 (Sun, 30 Nov 2008) | 1 line fix pyspecific extensions that were broken by Sphinx's grand renaming ........
1 parent 1742e40 commit 4469d0c

23 files changed

+129
-34
lines changed

Doc/c-api/arg.rst

+17-9
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ variable(s) whose address should be passed.
3232
converted to C strings using the default encoding. If this conversion fails, a
3333
:exc:`UnicodeError` is raised.
3434

35+
Starting with Python 2.5 the type of the length argument can be
36+
controlled by defining the macro :cmacro:`PY_SSIZE_T_CLEAN` before
37+
including :file:`Python.h`. If the macro is defined, length is a
38+
:ctype:`Py_ssize_t` rather than an int.
39+
3540
``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer \*]
3641
This is similar to ``s``, but the code fills a :ctype:`Py_buffer` structure
3742
provided by the caller. In this case the Python string may contain embedded
@@ -43,17 +48,20 @@ variable(s) whose address should be passed.
4348
has processed the data.
4449

4550
``s#`` (string, Unicode or any read buffer compatible object) [const char \*, int or :ctype:`Py_ssize_t`]
46-
This variant on ``s*`` stores into two C variables, the first one a pointer
47-
to a character string, the second one its length. All other read-buffer
48-
compatible objects pass back a reference to the raw internal data
49-
representation. Since this format doesn't allow writable buffer compatible
50-
objects like byte arrays, ``s*`` is to be preferred. The type of
51-
the length argument (int or :ctype:`Py_ssize_t`) is controlled by
51+
This variant on ``s`` stores into two C variables, the first one a pointer to
52+
a character string, the second one its length. In this case the Python
53+
string may contain embedded null bytes. Unicode objects pass back a pointer
54+
to the default encoded string version of the object if such a conversion is
55+
possible. All other read-buffer compatible objects pass back a reference to
56+
the raw internal data representation. Since this format doesn't allow writable buffer compatible objects like byte
57+
arrays, ``s*`` is to be preferred.
58+
59+
The type of the length argument (int or :ctype:`Py_ssize_t`) is controlled by
5260
defining the macro :cmacro:`PY_SSIZE_T_CLEAN` before including
5361
:file:`Python.h`. If the macro was defined, length is a :ctype:`Py_ssize_t`
54-
rather than an int. This behavior will change in a future Python
55-
version to only support :ctype:`Py_ssize_t` and drop int support.
56-
It is best to always define :cmacro:`PY_SSIZE_T_CLEAN`.
62+
rather than an int. This behavior will change in a future Python version to
63+
only support :ctype:`Py_ssize_t` and drop int support. It is best to always
64+
define :cmacro:`PY_SSIZE_T_CLEAN`.
5765

5866
``y`` (bytes object) [const char \*]
5967
This variant on ``s`` converts a Python bytes or bytearray object to a C

Doc/includes/mp_benchmarks.py

+3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
#
22
# Simple benchmarks for the multiprocessing package
33
#
4+
# Copyright (c) 2006-2008, R Oudkerk
5+
# All rights reserved.
6+
#
47

58
import time, sys, multiprocessing, threading, queue, gc
69

Doc/includes/mp_distributing.py

+3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
#
44
# Depends on `multiprocessing` package -- tested with `processing-0.60`
55
#
6+
# Copyright (c) 2006-2008, R Oudkerk
7+
# All rights reserved.
8+
#
69

710
__all__ = ['Cluster', 'Host', 'get_logger', 'current_process']
811

Doc/includes/mp_newtype.py

+3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
# This module shows how to use arbitrary callables with a subclass of
33
# `BaseManager`.
44
#
5+
# Copyright (c) 2006-2008, R Oudkerk
6+
# All rights reserved.
7+
#
58

69
from multiprocessing import freeze_support
710
from multiprocessing.managers import BaseManager, BaseProxy

Doc/includes/mp_pool.py

+3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
#
22
# A test of `multiprocessing.Pool` class
33
#
4+
# Copyright (c) 2006-2008, R Oudkerk
5+
# All rights reserved.
6+
#
47

58
import multiprocessing
69
import time

Doc/includes/mp_synchronize.py

+3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
#
22
# A test file for the `multiprocessing` package
33
#
4+
# Copyright (c) 2006-2008, R Oudkerk
5+
# All rights reserved.
6+
#
47

58
import time, sys, random
69
from queue import Empty

Doc/includes/mp_webserver.py

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
# Not sure if we should synchronize access to `socket.accept()` method by
99
# using a process-shared lock -- does not seem to be necessary.
1010
#
11+
# Copyright (c) 2006-2008, R Oudkerk
12+
# All rights reserved.
13+
#
1114

1215
import os
1316
import sys

Doc/includes/mp_workers.py

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
# in the original order then consider using `Pool.map()` or
88
# `Pool.imap()` (which will save on the amount of code needed anyway).
99
#
10+
# Copyright (c) 2006-2008, R Oudkerk
11+
# All rights reserved.
12+
#
1013

1114
import time
1215
import random

Doc/library/bdb.rst

+3-2
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,9 @@ The :mod:`bdb` module also defines two classes:
107107

108108
The *arg* parameter depends on the previous event.
109109

110-
For more information on trace functions, see :ref:`debugger-hooks`. For
111-
more information on code and frame objects, refer to :ref:`types`.
110+
See the documentation for :func:`sys.settrace` for more information on the
111+
trace function. For more information on code and frame objects, refer to
112+
:ref:`types`.
112113

113114
.. method:: dispatch_line(frame)
114115

Doc/library/collections.rst

+5-5
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ ABC Inherits Abstract Methods Mixin
4848
:class:`Iterable`, and ``__len__`` ``index``, and ``count``
4949
:class:`Container`
5050

51-
:class:`MutableSequnce` :class:`Sequence` ``__getitem__`` Inherited Sequence methods and
51+
:class:`MutableSequence` :class:`Sequence` ``__getitem__`` Inherited Sequence methods and
5252
``__delitem__``, ``append``, ``reverse``, ``extend``, ``pop``,
5353
``insert``, ``remove``, and ``__iadd__``
5454
and ``__len__``
@@ -466,16 +466,16 @@ Named tuples assign meaning to each position in a tuple and allow for more reada
466466
self-documenting code. They can be used wherever regular tuples are used, and
467467
they add the ability to access fields by name instead of position index.
468468

469-
.. function:: namedtuple(typename, fieldnames, [verbose])
469+
.. function:: namedtuple(typename, field_names, [verbose])
470470

471471
Returns a new tuple subclass named *typename*. The new subclass is used to
472472
create tuple-like objects that have fields accessible by attribute lookup as
473473
well as being indexable and iterable. Instances of the subclass also have a
474-
helpful docstring (with typename and fieldnames) and a helpful :meth:`__repr__`
474+
helpful docstring (with typename and field_names) and a helpful :meth:`__repr__`
475475
method which lists the tuple contents in a ``name=value`` format.
476476

477-
The *fieldnames* are a single string with each fieldname separated by whitespace
478-
and/or commas, for example ``'x y'`` or ``'x, y'``. Alternatively, *fieldnames*
477+
The *field_names* are a single string with each fieldname separated by whitespace
478+
and/or commas, for example ``'x y'`` or ``'x, y'``. Alternatively, *field_names*
479479
can be a sequence of strings such as ``['x', 'y']``.
480480

481481
Any valid Python identifier may be used for a fieldname except for names

Doc/library/ctypes.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -1368,7 +1368,7 @@ function exported by these libraries, and reacquired afterwards.
13681368

13691369
All these classes can be instantiated by calling them with at least one
13701370
argument, the pathname of the shared library. If you have an existing handle to
1371-
an already loaded shard library, it can be passed as the ``handle`` named
1371+
an already loaded shared library, it can be passed as the ``handle`` named
13721372
parameter, otherwise the underlying platforms ``dlopen`` or :meth:`LoadLibrary`
13731373
function is used to load the library into the process, and to get a handle to
13741374
it.

Doc/library/os.rst

+4-4
Original file line numberDiff line numberDiff line change
@@ -805,10 +805,10 @@ Files and Directories
805805

806806
.. function:: listdir(path)
807807

808-
Return a list containing the names of the entries in the directory. The list
809-
is in arbitrary order. It does not include the special entries ``.`` and
810-
``..`` even if they are present in the directory. Availability: Unix,
811-
Windows.
808+
Return a list containing the names of the entries in the directory given by
809+
*path*. The list is in arbitrary order. It does not include the special
810+
entries ``'.'`` and ``'..'`` even if they are present in the directory.
811+
Availability: Unix, Windows.
812812

813813
This function can be called with a bytes or string argument. In the bytes
814814
case, all filenames will be listed as returned by the underlying API. In the

Doc/library/sqlite3.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -221,8 +221,8 @@ Connection Objects
221221

222222
.. attribute:: Connection.isolation_level
223223

224-
Get or set the current isolation level. :const:`None` for autocommit mode or one of
225-
"DEFERRED", "IMMEDIATE" or "EXLUSIVE". See section
224+
Get or set the current isolation level. :const:`None` for autocommit mode or
225+
one of "DEFERRED", "IMMEDIATE" or "EXCLUSIVE". See section
226226
:ref:`sqlite3-controlling-transactions` for a more detailed explanation.
227227

228228

Doc/tools/sphinxext/pyspecific.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
4646
from docutils.io import StringOutput
4747
from docutils.utils import new_document
4848
from sphinx.builder import Builder
49-
from sphinx.textwriter import TextWriter
49+
from sphinx.writers.text import TextWriter
5050

5151
class PydocTopicsBuilder(Builder):
5252
name = 'pydoc-topics'

Lib/multiprocessing/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ def cpu_count():
112112
num = int(os.environ['NUMBER_OF_PROCESSORS'])
113113
except (ValueError, KeyError):
114114
num = 0
115-
elif sys.platform == 'darwin':
115+
elif 'bsd' in sys.platform or sys.platform == 'darwin':
116116
try:
117117
num = int(os.popen('sysctl -n hw.ncpu').read())
118118
except ValueError:

Lib/optparse.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -797,7 +797,7 @@ def take_action(self, action, dest, opt, value, values, parser):
797797
parser.print_version()
798798
parser.exit()
799799
else:
800-
raise RuntimeError("unknown action %r" % self.action)
800+
raise ValueError("unknown action %r" % self.action)
801801

802802
return 1
803803

Lib/test/test_parser.py

+4
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,10 @@ def test_pep263(self):
189189
def test_assert(self):
190190
self.check_suite("assert alo < ahi and blo < bhi\n")
191191

192+
def test_with(self):
193+
self.check_suite("with open('x'): pass\n")
194+
self.check_suite("with open('x') as f: pass\n")
195+
192196
def test_position(self):
193197
# An absolutely minimal test of position information. Better
194198
# tests would be a big project.

Modules/_multiprocessing/semaphore.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,6 @@ semlock_getvalue(SemLockObject *self)
512512
static PyObject *
513513
semlock_iszero(SemLockObject *self)
514514
{
515-
int sval;
516515
#if HAVE_BROKEN_SEM_GETVALUE
517516
if (sem_trywait(self->handle) < 0) {
518517
if (errno == EAGAIN)
@@ -524,6 +523,7 @@ semlock_iszero(SemLockObject *self)
524523
Py_RETURN_FALSE;
525524
}
526525
#else
526+
int sval;
527527
if (SEM_GETVALUE(self->handle, &sval) < 0)
528528
return mp_SetError(NULL, MP_STANDARD_ERROR);
529529
return PyBool_FromLong((long)sval == 0);

Modules/parsermodule.c

+37-1
Original file line numberDiff line numberDiff line change
@@ -1438,7 +1438,7 @@ validate_small_stmt(node *tree)
14381438

14391439

14401440
/* compound_stmt:
1441-
* if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef | decorated
1441+
* if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated
14421442
*/
14431443
static int
14441444
validate_compound_stmt(node *tree)
@@ -1456,6 +1456,7 @@ validate_compound_stmt(node *tree)
14561456
|| (ntype == while_stmt)
14571457
|| (ntype == for_stmt)
14581458
|| (ntype == try_stmt)
1459+
|| (ntype == with_stmt)
14591460
|| (ntype == funcdef)
14601461
|| (ntype == classdef)
14611462
|| (ntype == decorated))
@@ -2399,6 +2400,38 @@ validate_decorators(node *tree)
23992400
return ok;
24002401
}
24012402

2403+
/* with_var
2404+
with_var: 'as' expr
2405+
*/
2406+
static int
2407+
validate_with_var(node *tree)
2408+
{
2409+
int nch = NCH(tree);
2410+
int ok = (validate_ntype(tree, with_var)
2411+
&& (nch == 2)
2412+
&& validate_name(CHILD(tree, 0), "as")
2413+
&& validate_expr(CHILD(tree, 1)));
2414+
return ok;
2415+
}
2416+
2417+
/* with_stmt
2418+
* 0 1 2 -2 -1
2419+
with_stmt: 'with' test [ with_var ] ':' suite
2420+
*/
2421+
static int
2422+
validate_with_stmt(node *tree)
2423+
{
2424+
int nch = NCH(tree);
2425+
int ok = (validate_ntype(tree, with_stmt)
2426+
&& ((nch == 4) || (nch == 5))
2427+
&& validate_name(CHILD(tree, 0), "with")
2428+
&& validate_test(CHILD(tree, 1))
2429+
&& (nch == 4 || validate_with_var(CHILD(tree, 2)))
2430+
&& validate_colon(RCHILD(tree, -2))
2431+
&& validate_suite(RCHILD(tree, -1)));
2432+
return ok;
2433+
}
2434+
24022435
/* funcdef:
24032436
*
24042437
* -5 -4 -3 -2 -1
@@ -2775,6 +2808,9 @@ validate_node(node *tree)
27752808
case funcdef:
27762809
res = validate_funcdef(tree);
27772810
break;
2811+
case with_stmt:
2812+
res = validate_with_stmt(tree);
2813+
break;
27782814
case classdef:
27792815
res = validate_class(tree);
27802816
break;

Objects/unicodeobject.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -8030,7 +8030,7 @@ unicode_rsplit(PyUnicodeObject *self, PyObject *args)
80308030
}
80318031

80328032
PyDoc_STRVAR(splitlines__doc__,
8033-
"S.splitlines([keepends]]) -> list of strings\n\
8033+
"S.splitlines([keepends]) -> list of strings\n\
80348034
\n\
80358035
Return a list of the lines in S, breaking at line boundaries.\n\
80368036
Line breaks are not included in the resulting list unless keepends\n\

PC/msvcrtmodule.c

+26-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@
2424
#include <crtdbg.h>
2525
#include <windows.h>
2626

27+
#ifdef _MSC_VER
28+
#if _MSC_VER >= 1500
29+
#include <crtassem.h>
30+
#endif
31+
#endif
32+
2733
// Force the malloc heap to clean itself up, and free unused blocks
2834
// back to the OS. (According to the docs, only works on NT.)
2935
static PyObject *
@@ -373,6 +379,7 @@ static struct PyModuleDef msvcrtmodule = {
373379
PyMODINIT_FUNC
374380
PyInit_msvcrt(void)
375381
{
382+
int st;
376383
PyObject *d;
377384
PyObject *m = PyModule_Create(&msvcrtmodule);
378385
if (m == NULL)
@@ -401,5 +408,23 @@ PyInit_msvcrt(void)
401408
insertint(d, "CRTDBG_FILE_STDOUT", (int)_CRTDBG_FILE_STDOUT);
402409
insertint(d, "CRTDBG_REPORT_FILE", (int)_CRTDBG_REPORT_FILE);
403410
#endif
404-
return m;
411+
412+
/* constants for the crt versions */
413+
#ifdef _VC_ASSEMBLY_PUBLICKEYTOKEN
414+
st = PyModule_AddStringConstant(m, "VC_ASSEMBLY_PUBLICKEYTOKEN",
415+
_VC_ASSEMBLY_PUBLICKEYTOKEN);
416+
if (st < 0) return NULL;
417+
#endif
418+
#ifdef _CRT_ASSEMBLY_VERSION
419+
st = PyModule_AddStringConstant(m, "CRT_ASSEMBLY_VERSION",
420+
_CRT_ASSEMBLY_VERSION);
421+
if (st < 0) return NULL;
422+
#endif
423+
#ifdef __LIBRARIES_ASSEMBLY_NAME_PREFIX
424+
st = PyModule_AddStringConstant(m, "LIBRARIES_ASSEMBLY_NAME_PREFIX",
425+
__LIBRARIES_ASSEMBLY_NAME_PREFIX);
426+
if (st < 0) return NULL;
427+
#endif
428+
429+
return m;
405430
}

Tools/scripts/svneol.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ def propfiles(root, fn):
3939
format = int(open(os.path.join(root, ".svn", "format")).read().strip())
4040
except IOError:
4141
return []
42-
if format == 8:
43-
# In version 8, committed props are stored in prop-base,
44-
# local modifications in props
42+
if format in (8, 9):
43+
# In version 8 and 9, committed props are stored in prop-base, local
44+
# modifications in props
4545
return [os.path.join(root, ".svn", "prop-base", fn+".svn-base"),
4646
os.path.join(root, ".svn", "props", fn+".svn-work")]
4747
raise ValueError, "Unknown repository format"

configure.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
dnl ***********************************************
22
dnl * Please run autoreconf to test your changes! *
33
dnl ***********************************************
4-
dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.63).
4+
dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
55

66
# Set VERSION so we only need to edit in one place (i.e., here)
77
m4_define(PYTHON_VERSION, 3.0)

0 commit comments

Comments
 (0)