mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	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:
		
							parent
							
								
									1742e401c4
								
							
						
					
					
						commit
						4469d0ca56
					
				
					 23 changed files with 129 additions and 34 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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']
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,9 @@
 | 
			
		|||
#
 | 
			
		||||
# A test of `multiprocessing.Pool` class
 | 
			
		||||
#
 | 
			
		||||
# Copyright (c) 2006-2008, R Oudkerk
 | 
			
		||||
# All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
import multiprocessing
 | 
			
		||||
import time
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -46,7 +46,7 @@ def issue_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
 | 
			
		|||
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'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -797,7 +797,7 @@ def take_action(self, action, dest, opt, value, values, parser):
 | 
			
		|||
            parser.print_version()
 | 
			
		||||
            parser.exit()
 | 
			
		||||
        else:
 | 
			
		||||
            raise RuntimeError("unknown action %r" % self.action)
 | 
			
		||||
            raise ValueError("unknown action %r" % self.action)
 | 
			
		||||
 | 
			
		||||
        return 1
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -189,6 +189,10 @@ def test_pep263(self):
 | 
			
		|||
    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.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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\
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
	/* 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;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue