]> granicus.if.org Git - python/commitdiff
Merged revisions 67348,67355,67359,67362,67364-67365,67367-67368,67398,67423-67424...
authorBenjamin Peterson <benjamin@python.org>
Sun, 30 Nov 2008 22:46:23 +0000 (22:46 +0000)
committerBenjamin Peterson <benjamin@python.org>
Sun, 30 Nov 2008 22:46:23 +0000 (22:46 +0000)
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
........

23 files changed:
Doc/c-api/arg.rst
Doc/includes/mp_benchmarks.py
Doc/includes/mp_distributing.py
Doc/includes/mp_newtype.py
Doc/includes/mp_pool.py
Doc/includes/mp_synchronize.py
Doc/includes/mp_webserver.py
Doc/includes/mp_workers.py
Doc/library/bdb.rst
Doc/library/collections.rst
Doc/library/ctypes.rst
Doc/library/os.rst
Doc/library/sqlite3.rst
Doc/tools/sphinxext/pyspecific.py
Lib/multiprocessing/__init__.py
Lib/optparse.py
Lib/test/test_parser.py
Modules/_multiprocessing/semaphore.c
Modules/parsermodule.c
Objects/unicodeobject.c
PC/msvcrtmodule.c
Tools/scripts/svneol.py
configure.in

index e4b91b9a2b6fce3ea1c0b02ad57d4a5192682a29..d64cc5c3abce50a3cb8585173efd4ac6676203e2 100644 (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
index 4556de0808ce017efab8860e93840e4fa21e00d6..72d4426c257a88d707496119e5972e6a7efc2614 100644 (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
 
index 3c619021b4762f57316e493035b2288c83aef1ff..ef1e862dd7ceb51ae18980a920081e771720e3bc 100644 (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']
 
index f020c93068cd3ddc1ba2ead68dc1e429f1757aa0..d1a55a661c44821d47eb4f9aca2368fca0e8703b 100644 (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
index c9f5815d1882d01cf084caeb25978ed6b307199f..46eac5a8a90cbad792f86b74132a4584d70984ef 100644 (file)
@@ -1,6 +1,9 @@
 #
 # A test of `multiprocessing.Pool` class
 #
+# Copyright (c) 2006-2008, R Oudkerk
+# All rights reserved.
+#
 
 import multiprocessing
 import time
index 2939fc64f68d9288ca2fdc915dc51129eff50b8a..fd393f28881fd2f3d400d395be420355b24b58e2 100644 (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
index b0f001d28358334fbcb4beaabc9ec993ff439d2c..0878de110df4e707f23c8226fa3e8af130b69360 100644 (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
index 47dfb54d7296350947d559b4d17cdf7df86ee5bc..e66d97bd50bfadf3229b3b63211fc0dec0dc1bd3 100644 (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
index fefb2ad7e30b860defb940eb18897dbc177a6004..555b634a6a2ee02ec8b95fb60a8f65a44843c13a 100644 (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)
 
index 2edbbac7bf5633002616978603d658d1591c0723..b12bd7ae31ce1217de52b4a8a4f133c1b2487b98 100644 (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
index cacb5ab04d0df57424a52f0fb6904b4343fd4f23..a574b5698e00d670fb501c05b955e516b1d7c193 100644 (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.
index 81a3f35fa5974c76a026a57abdeed4c361adfafa..3cc77bc80dc7fe5f9fef0bb67a13eaad646b7969 100644 (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
index 5a22ae4b309ef465cd24c74ec2ff1bb45f56ff08..2dd29c11ccdedc4d5885c4eae2fcf76513fa805e 100644 (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.
 
 
index 42bb1bfceef9660eba5fa45ab0118e30cf2e95d7..9ff9a7a538557d969561cb3118e29a033316506d 100644 (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'
index a9e2086c4eca39f31c7778b81aa36c0c0975e587..aad41914399709c88aa3b479fcae3e46bb31effd 100644 (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:
index 3792e76c61c60521d4a1e0f08a737c74ca6ff3af..2511595d6a3732c09b90ffaa57a1093e736727cb 100644 (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
 
index 449005276a92a95dceb260691e9948fc3e45491b..17d19886cde0c515675d7f96f79ae58665151e98 100644 (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.
index a7ffd1ea7a628950707b3509078d6528786dc312..a5ba71e30ca8f701d138094a93b44b21f7624107 100644 (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);
index 58d7dfb29c56608bf2d0dee96f3310e75fa5cd5b..51660aaad05fe66f9cc25c56ad6abf7626ff90bf 100644 (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;
index 2beb0984b45a64eb5816a8a4cb697c16c6a38cd8..6f64a0791dbe71fe44601fd0acdf97e75c3d9ec4 100644 (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\
index 542b4f73016425f4c8cdd214711b612e618e4a38..f441aa386c895fa8d84f084d598d9bd8dc123e2f 100755 (executable)
 #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;
 }
index 9e57bb4c0f82c0666fc9aafb5aefd09e77e65f21..9357c7ed8d2ef4c720c707a1e740bb7b6f0c9f4b 100644 (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"
index 5a8bfe82a4a3f67f76805760c1094e62b6f2ff8b..4f10986335ec6907ca62f6a67b0535884591254a 100644 (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)