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://pythondev@svn.python.org/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
........
This commit is contained in:
Benjamin Peterson 2008-11-30 22:46:23 +00:00
parent 1742e401c4
commit 4469d0ca56
23 changed files with 129 additions and 34 deletions

View File

@ -32,6 +32,11 @@ variable(s) whose address should be passed.
converted to C strings using the default encoding. If this conversion fails, a
:exc:`UnicodeError` is raised.
Starting with Python 2.5 the type of the length argument can be
controlled by defining the macro :cmacro:`PY_SSIZE_T_CLEAN` before
including :file:`Python.h`. If the macro is defined, length is a
:ctype:`Py_ssize_t` rather than an int.
``s*`` (string, Unicode, or any buffer compatible object) [Py_buffer \*]
This is similar to ``s``, but the code fills a :ctype:`Py_buffer` structure
provided by the caller. In this case the Python string may contain embedded
@ -43,17 +48,20 @@ variable(s) whose address should be passed.
has processed the data.
``s#`` (string, Unicode or any read buffer compatible object) [const char \*, int or :ctype:`Py_ssize_t`]
This variant on ``s*`` stores into two C variables, the first one a pointer
to a character string, the second one its length. All other read-buffer
compatible objects pass back a reference to the raw internal data
representation. Since this format doesn't allow writable buffer compatible
objects like byte arrays, ``s*`` is to be preferred. The type of
the length argument (int or :ctype:`Py_ssize_t`) is controlled by
This variant on ``s`` stores into two C variables, the first one a pointer to
a character string, the second one its length. In this case the Python
string may contain embedded null bytes. Unicode objects pass back a pointer
to the default encoded string version of the object if such a conversion is
possible. All other read-buffer compatible objects pass back a reference to
the raw internal data representation. Since this format doesn't allow writable buffer compatible objects like byte
arrays, ``s*`` is to be preferred.
The type of the length argument (int or :ctype:`Py_ssize_t`) is controlled by
defining the macro :cmacro:`PY_SSIZE_T_CLEAN` before including
:file:`Python.h`. If the macro was defined, length is a :ctype:`Py_ssize_t`
rather than an int. This behavior will change in a future Python
version to only support :ctype:`Py_ssize_t` and drop int support.
It is best to always define :cmacro:`PY_SSIZE_T_CLEAN`.
rather than an int. This behavior will change in a future Python version to
only support :ctype:`Py_ssize_t` and drop int support. It is best to always
define :cmacro:`PY_SSIZE_T_CLEAN`.
``y`` (bytes object) [const char \*]
This variant on ``s`` converts a Python bytes or bytearray object to a C

View File

@ -1,6 +1,9 @@
#
# Simple benchmarks for the multiprocessing package
#
# Copyright (c) 2006-2008, R Oudkerk
# All rights reserved.
#
import time, sys, multiprocessing, threading, queue, gc

View File

@ -3,6 +3,9 @@
#
# Depends on `multiprocessing` package -- tested with `processing-0.60`
#
# Copyright (c) 2006-2008, R Oudkerk
# All rights reserved.
#
__all__ = ['Cluster', 'Host', 'get_logger', 'current_process']

View File

@ -2,6 +2,9 @@
# This module shows how to use arbitrary callables with a subclass of
# `BaseManager`.
#
# Copyright (c) 2006-2008, R Oudkerk
# All rights reserved.
#
from multiprocessing import freeze_support
from multiprocessing.managers import BaseManager, BaseProxy

View File

@ -1,6 +1,9 @@
#
# A test of `multiprocessing.Pool` class
#
# Copyright (c) 2006-2008, R Oudkerk
# All rights reserved.
#
import multiprocessing
import time

View File

@ -1,6 +1,9 @@
#
# A test file for the `multiprocessing` package
#
# Copyright (c) 2006-2008, R Oudkerk
# All rights reserved.
#
import time, sys, random
from queue import Empty

View File

@ -8,6 +8,9 @@
# Not sure if we should synchronize access to `socket.accept()` method by
# using a process-shared lock -- does not seem to be necessary.
#
# Copyright (c) 2006-2008, R Oudkerk
# All rights reserved.
#
import os
import sys

View File

@ -7,6 +7,9 @@
# in the original order then consider using `Pool.map()` or
# `Pool.imap()` (which will save on the amount of code needed anyway).
#
# Copyright (c) 2006-2008, R Oudkerk
# All rights reserved.
#
import time
import random

View File

@ -107,8 +107,9 @@ The :mod:`bdb` module also defines two classes:
The *arg* parameter depends on the previous event.
For more information on trace functions, see :ref:`debugger-hooks`. For
more information on code and frame objects, refer to :ref:`types`.
See the documentation for :func:`sys.settrace` for more information on the
trace function. For more information on code and frame objects, refer to
:ref:`types`.
.. method:: dispatch_line(frame)

View File

@ -48,7 +48,7 @@ ABC Inherits Abstract Methods Mixin
:class:`Iterable`, and ``__len__`` ``index``, and ``count``
:class:`Container`
:class:`MutableSequnce` :class:`Sequence` ``__getitem__`` Inherited Sequence methods and
:class:`MutableSequence` :class:`Sequence` ``__getitem__`` Inherited Sequence methods and
``__delitem__``, ``append``, ``reverse``, ``extend``, ``pop``,
``insert``, ``remove``, and ``__iadd__``
and ``__len__``
@ -466,16 +466,16 @@ Named tuples assign meaning to each position in a tuple and allow for more reada
self-documenting code. They can be used wherever regular tuples are used, and
they add the ability to access fields by name instead of position index.
.. function:: namedtuple(typename, fieldnames, [verbose])
.. function:: namedtuple(typename, field_names, [verbose])
Returns a new tuple subclass named *typename*. The new subclass is used to
create tuple-like objects that have fields accessible by attribute lookup as
well as being indexable and iterable. Instances of the subclass also have a
helpful docstring (with typename and fieldnames) and a helpful :meth:`__repr__`
helpful docstring (with typename and field_names) and a helpful :meth:`__repr__`
method which lists the tuple contents in a ``name=value`` format.
The *fieldnames* are a single string with each fieldname separated by whitespace
and/or commas, for example ``'x y'`` or ``'x, y'``. Alternatively, *fieldnames*
The *field_names* are a single string with each fieldname separated by whitespace
and/or commas, for example ``'x y'`` or ``'x, y'``. Alternatively, *field_names*
can be a sequence of strings such as ``['x', 'y']``.
Any valid Python identifier may be used for a fieldname except for names

View File

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

View File

@ -805,10 +805,10 @@ Files and Directories
.. function:: listdir(path)
Return a list containing the names of the entries in the directory. The list
is in arbitrary order. It does not include the special entries ``.`` and
``..`` even if they are present in the directory. Availability: Unix,
Windows.
Return a list containing the names of the entries in the directory given by
*path*. The list is in arbitrary order. It does not include the special
entries ``'.'`` and ``'..'`` even if they are present in the directory.
Availability: Unix, Windows.
This function can be called with a bytes or string argument. In the bytes
case, all filenames will be listed as returned by the underlying API. In the

View File

@ -221,8 +221,8 @@ Connection Objects
.. attribute:: Connection.isolation_level
Get or set the current isolation level. :const:`None` for autocommit mode or one of
"DEFERRED", "IMMEDIATE" or "EXLUSIVE". See section
Get or set the current isolation level. :const:`None` for autocommit mode or
one of "DEFERRED", "IMMEDIATE" or "EXCLUSIVE". See section
:ref:`sqlite3-controlling-transactions` for a more detailed explanation.

View File

@ -46,7 +46,7 @@ from pprint import pformat
from docutils.io import StringOutput
from docutils.utils import new_document
from sphinx.builder import Builder
from sphinx.textwriter import TextWriter
from sphinx.writers.text import TextWriter
class PydocTopicsBuilder(Builder):
name = 'pydoc-topics'

View File

@ -112,7 +112,7 @@ def cpu_count():
num = int(os.environ['NUMBER_OF_PROCESSORS'])
except (ValueError, KeyError):
num = 0
elif sys.platform == 'darwin':
elif 'bsd' in sys.platform or sys.platform == 'darwin':
try:
num = int(os.popen('sysctl -n hw.ncpu').read())
except ValueError:

View File

@ -797,7 +797,7 @@ class Option:
parser.print_version()
parser.exit()
else:
raise RuntimeError("unknown action %r" % self.action)
raise ValueError("unknown action %r" % self.action)
return 1

View File

@ -189,6 +189,10 @@ class RoundtripLegalSyntaxTestCase(unittest.TestCase):
def test_assert(self):
self.check_suite("assert alo < ahi and blo < bhi\n")
def test_with(self):
self.check_suite("with open('x'): pass\n")
self.check_suite("with open('x') as f: pass\n")
def test_position(self):
# An absolutely minimal test of position information. Better
# tests would be a big project.

View File

@ -512,7 +512,6 @@ semlock_getvalue(SemLockObject *self)
static PyObject *
semlock_iszero(SemLockObject *self)
{
int sval;
#if HAVE_BROKEN_SEM_GETVALUE
if (sem_trywait(self->handle) < 0) {
if (errno == EAGAIN)
@ -524,6 +523,7 @@ semlock_iszero(SemLockObject *self)
Py_RETURN_FALSE;
}
#else
int sval;
if (SEM_GETVALUE(self->handle, &sval) < 0)
return mp_SetError(NULL, MP_STANDARD_ERROR);
return PyBool_FromLong((long)sval == 0);

View File

@ -1438,7 +1438,7 @@ validate_small_stmt(node *tree)
/* compound_stmt:
* if_stmt | while_stmt | for_stmt | try_stmt | funcdef | classdef | decorated
* if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated
*/
static int
validate_compound_stmt(node *tree)
@ -1456,6 +1456,7 @@ validate_compound_stmt(node *tree)
|| (ntype == while_stmt)
|| (ntype == for_stmt)
|| (ntype == try_stmt)
|| (ntype == with_stmt)
|| (ntype == funcdef)
|| (ntype == classdef)
|| (ntype == decorated))
@ -2399,6 +2400,38 @@ validate_decorators(node *tree)
return ok;
}
/* with_var
with_var: 'as' expr
*/
static int
validate_with_var(node *tree)
{
int nch = NCH(tree);
int ok = (validate_ntype(tree, with_var)
&& (nch == 2)
&& validate_name(CHILD(tree, 0), "as")
&& validate_expr(CHILD(tree, 1)));
return ok;
}
/* with_stmt
* 0 1 2 -2 -1
with_stmt: 'with' test [ with_var ] ':' suite
*/
static int
validate_with_stmt(node *tree)
{
int nch = NCH(tree);
int ok = (validate_ntype(tree, with_stmt)
&& ((nch == 4) || (nch == 5))
&& validate_name(CHILD(tree, 0), "with")
&& validate_test(CHILD(tree, 1))
&& (nch == 4 || validate_with_var(CHILD(tree, 2)))
&& validate_colon(RCHILD(tree, -2))
&& validate_suite(RCHILD(tree, -1)));
return ok;
}
/* funcdef:
*
* -5 -4 -3 -2 -1
@ -2775,6 +2808,9 @@ validate_node(node *tree)
case funcdef:
res = validate_funcdef(tree);
break;
case with_stmt:
res = validate_with_stmt(tree);
break;
case classdef:
res = validate_class(tree);
break;

View File

@ -8030,7 +8030,7 @@ unicode_rsplit(PyUnicodeObject *self, PyObject *args)
}
PyDoc_STRVAR(splitlines__doc__,
"S.splitlines([keepends]]) -> list of strings\n\
"S.splitlines([keepends]) -> list of strings\n\
\n\
Return a list of the lines in S, breaking at line boundaries.\n\
Line breaks are not included in the resulting list unless keepends\n\

View File

@ -24,6 +24,12 @@
#include <crtdbg.h>
#include <windows.h>
#ifdef _MSC_VER
#if _MSC_VER >= 1500
#include <crtassem.h>
#endif
#endif
// Force the malloc heap to clean itself up, and free unused blocks
// back to the OS. (According to the docs, only works on NT.)
static PyObject *
@ -373,6 +379,7 @@ static struct PyModuleDef msvcrtmodule = {
PyMODINIT_FUNC
PyInit_msvcrt(void)
{
int st;
PyObject *d;
PyObject *m = PyModule_Create(&msvcrtmodule);
if (m == NULL)
@ -401,5 +408,23 @@ PyInit_msvcrt(void)
insertint(d, "CRTDBG_FILE_STDOUT", (int)_CRTDBG_FILE_STDOUT);
insertint(d, "CRTDBG_REPORT_FILE", (int)_CRTDBG_REPORT_FILE);
#endif
return m;
/* constants for the crt versions */
#ifdef _VC_ASSEMBLY_PUBLICKEYTOKEN
st = PyModule_AddStringConstant(m, "VC_ASSEMBLY_PUBLICKEYTOKEN",
_VC_ASSEMBLY_PUBLICKEYTOKEN);
if (st < 0) return NULL;
#endif
#ifdef _CRT_ASSEMBLY_VERSION
st = PyModule_AddStringConstant(m, "CRT_ASSEMBLY_VERSION",
_CRT_ASSEMBLY_VERSION);
if (st < 0) return NULL;
#endif
#ifdef __LIBRARIES_ASSEMBLY_NAME_PREFIX
st = PyModule_AddStringConstant(m, "LIBRARIES_ASSEMBLY_NAME_PREFIX",
__LIBRARIES_ASSEMBLY_NAME_PREFIX);
if (st < 0) return NULL;
#endif
return m;
}

View File

@ -39,9 +39,9 @@ def propfiles(root, fn):
format = int(open(os.path.join(root, ".svn", "format")).read().strip())
except IOError:
return []
if format == 8:
# In version 8, committed props are stored in prop-base,
# local modifications in props
if format in (8, 9):
# In version 8 and 9, committed props are stored in prop-base, local
# modifications in props
return [os.path.join(root, ".svn", "prop-base", fn+".svn-base"),
os.path.join(root, ".svn", "props", fn+".svn-work")]
raise ValueError, "Unknown repository format"

View File

@ -1,7 +1,7 @@
dnl ***********************************************
dnl * Please run autoreconf to test your changes! *
dnl ***********************************************
dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.63).
dnl NOTE: autoconf 2.64 doesn't seem to work (use 2.61).
# Set VERSION so we only need to edit in one place (i.e., here)
m4_define(PYTHON_VERSION, 3.0)