Commit 158d7696 authored by Éric Araujo's avatar Éric Araujo

Branch merge

parents 3a081f52 aa95ccd0
......@@ -14,6 +14,7 @@ platform
pybuilddir.txt
pyconfig.h
libpython*.a
libpython*.so*
python.exe
python-gdb.py
reflog.txt
......
......@@ -37,6 +37,7 @@ build/
config.log
config.status
libpython*.a
libpython*.so*
pybuilddir.txt
pyconfig.h
python
......
......@@ -39,14 +39,13 @@ Parser/pgen.stamp$
syntax: glob
libpython*.a
libpython*.so*
*.swp
*.o
*.pyc
*.pyo
*.pyd
*.cover
*.orig
*.rej
*~
Lib/lib2to3/*.pickle
Lib/test/data/*
......
......@@ -203,6 +203,7 @@ docs@python.org), and we'll be glad to correct the problem.
* Kalle Svensson
* Jim Tittsler
* David Turner
* Sandro Tosi
* Ville Vainio
* Martijn Vries
* Charles G. Waldman
......
......@@ -72,8 +72,8 @@ setup script). Indirectly provides the :class:`distutils.dist.Distribution` and
| | be built | :class:`distutils.core.Extension` |
+--------------------+--------------------------------+-------------------------------------------------------------+
| *classifiers* | A list of categories for the | The list of available |
| | package | categorizations is at |
| | | http://pypi.python.org/pypi?:action=list_classifiers. |
| | package | categorizations is available on `PyPI |
| | | <http://pypi.python.org/pypi?:action=list_classifiers>`_. |
+--------------------+--------------------------------+-------------------------------------------------------------+
| *distclass* | the :class:`Distribution` | A subclass of |
| | class to use | :class:`distutils.core.Distribution` |
......
......@@ -431,7 +431,8 @@ Glossary
mapping
A container object that supports arbitrary key lookups and implements the
methods specified in the :class:`Mapping` or :class:`MutableMapping`
methods specified in the :class:`~collections.Mapping` or
:class:`~collections.MutableMapping`
:ref:`abstract base classes <collections-abstract-base-classes>`. Examples
include :class:`dict`, :class:`collections.defaultdict`,
:class:`collections.OrderedDict` and :class:`collections.Counter`.
......
......@@ -72,7 +72,7 @@ In that case, you would download the installer appropriate to your platform and
do the obvious thing with it: run it if it's an executable installer, ``rpm
--install`` it if it's an RPM, etc. You don't need to run Python or a setup
script, you don't need to compile anything---you might not even need to read any
instructions (although it's always a good idea to do so anyways).
instructions (although it's always a good idea to do so anyway).
Of course, things will not always be that easy. You might be interested in a
module distribution that doesn't have an easy-to-use installer for your
......
......@@ -14,7 +14,7 @@ the standard audio interface for Linux and recent versions of FreeBSD.
ALSA is in the standard kernel as of 2.5.x. Presumably if you
use ALSA, you'll have to make sure its OSS compatibility layer
is active to use ossaudiodev, but you're gonna need it for the vast
majority of Linux audio apps anyways.
majority of Linux audio apps anyway.
Sounds like things are also complicated for other BSDs. In response
to my python-dev query, Thomas Wouters said:
......
......@@ -39,7 +39,7 @@ The Python standard library provides two different profilers:
2. :mod:`profile`, a pure Python module whose interface is imitated by
:mod:`cProfile`. Adds significant overhead to profiled programs. If you're
trying to extend the profiler in some way, the task might be easier with this
module. Copyright © 1994, by InfoSeek Corporation.
module.
The :mod:`profile` and :mod:`cProfile` modules export the same interface, so
they are mostly interchangeable; :mod:`cProfile` has a much lower overhead but
......@@ -592,27 +592,3 @@ The resulting profiler will then call :func:`your_time_func`.
functions should be used with care and should be as fast as possible. For the
best results with a custom timer, it might be necessary to hard-code it in the C
source of the internal :mod:`_lsprof` module.
Copyright and License Notices
=============================
Copyright © 1994, by InfoSeek Corporation, all rights reserved.
Permission to use, copy, modify, and distribute this Python software and its
associated documentation for any purpose (subject to the restriction in the
following sentence) without fee is hereby granted, provided that the above
copyright notice appears in all copies, and that both that copyright notice and
this permission notice appear in supporting documentation, and that the name of
InfoSeek not be used in advertising or publicity pertaining to distribution of
the software without specific, written prior permission. This permission is
explicitly restricted to the copying and modification of the software to remain
in Python, compiled Python, or other languages (such as C) wherein the modified
or derived code is exclusively imported into a Python module.
INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT
SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
......@@ -159,19 +159,25 @@ Directory and files operations
.. function:: move(src, dst)
Recursively move a file or directory to another location.
Recursively move a file or directory (*src*) to another location (*dst*).
Uses :func:`os.rename` to perform the move. If it fails, for reasons such as
when *src* and *dst* are on different filesystems or in case of windows where
rename is not supported when *dst* exists, fallback to copying *src* (with
:func:`copy2`) to the *dst* and then remove *src*.
If the destination is a directory or a symlink to a directory, then *src* is
moved inside that directory.
The destination directory must not already exist. If the destination already
exists but is not a directory, it may be overwritten depending on
:func:`os.rename` semantics.
If the destination is on the current filesystem, then :func:`os.rename` is
used. Otherwise, *src* is copied (using :func:`copy2`) to *dst* and then
removed.
.. exception:: Error
This exception collects exceptions that raised during a multi-file operation. For
:func:`copytree`, the exception argument is a list of 3-tuples (*srcname*,
*dstname*, *exception*).
This exception collects exceptions that are raised during a multi-file
operation. For :func:`copytree`, the exception argument is a list of 3-tuples
(*srcname*, *dstname*, *exception*).
.. _shutil-example:
......@@ -269,7 +275,7 @@ Archiving operations
.. function:: get_archive_formats()
Returns a list of supported formats for archiving.
Return a list of supported formats for archiving.
Each element of the returned sequence is a tuple ``(name, description)``
By default :mod:`shutil` provides these formats:
......@@ -287,7 +293,7 @@ Archiving operations
.. function:: register_archive_format(name, function, [extra_args, [description]])
Registers an archiver for the format *name*. *function* is a callable that
Register an archiver for the format *name*. *function* is a callable that
will be used to invoke the archiver.
If given, *extra_args* is a sequence of ``(name, value)`` pairs that will be
......
......@@ -492,36 +492,6 @@ The :mod:`http.cookies` module contains the following notice::
PERFORMANCE OF THIS SOFTWARE.
Profiling
---------
The :mod:`profile` and :mod:`pstats` modules contain the following notice::
Copyright 1994, by InfoSeek Corporation, all rights reserved.
Written by James Roskind
Permission to use, copy, modify, and distribute this Python software
and its associated documentation for any purpose (subject to the
restriction in the following sentence) without fee is hereby granted,
provided that the above copyright notice appears in all copies, and
that both that copyright notice and this permission notice appear in
supporting documentation, and that the name of InfoSeek not be used in
advertising or publicity pertaining to distribution of the software
without specific, written prior permission. This permission is
explicitly restricted to the copying and modification of the software
to remain in Python, compiled Python, or other languages (such as C)
wherein the modified or derived code is exclusively imported into a
Python module.
INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY
SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
Execution tracing
-----------------
......
......@@ -5,7 +5,6 @@ c-api/sequence,,:i2,o[i1:i2]
c-api/sequence,,:i2,o[i1:i2] = v
c-api/sequence,,:i2,del o[i1:i2]
c-api/unicode,,:end,str[start:end]
distutils/apiref,,:action,http://pypi.python.org/pypi?:action=list_classifiers
distutils/setupscript,,::,
extending/embedding,,:numargs,"if(!PyArg_ParseTuple(args, "":numargs""))"
extending/extending,,:set,"if (PyArg_ParseTuple(args, ""O:set_callback"", &temp)) {"
......
"""Class for printing reports on profiled python code."""
# Class for printing reports on profiled python code. rev 1.0 4/1/94
#
# Written by James Roskind
# Based on prior profile module by Sjoerd Mullender...
# which was hacked somewhat by: Guido van Rossum
"""Class for profiling Python code."""
# Copyright Disney Enterprises, Inc. All Rights Reserved.
# Licensed to PSF under a Contributor Agreement
#
......
......@@ -4,17 +4,10 @@ Tests common to list and UserList.UserList
import sys
import os
from functools import cmp_to_key
from test import support, seq_tests
def CmpToKey(mycmp):
'Convert a cmp= function into a key= function'
class K(object):
def __init__(self, obj):
self.obj = obj
def __lt__(self, other):
return mycmp(self.obj, other.obj) == -1
return K
class CommonTest(seq_tests.CommonTest):
......@@ -443,7 +436,7 @@ class CommonTest(seq_tests.CommonTest):
return 1
else: # a > b
return -1
u.sort(key=CmpToKey(revcmp))
u.sort(key=cmp_to_key(revcmp))
self.assertEqual(u, self.type2test([2,1,0,-1,-2]))
# The following dumps core in unpatched Python 1.5:
......@@ -456,7 +449,7 @@ class CommonTest(seq_tests.CommonTest):
else: # xmod > ymod
return 1
z = self.type2test(range(12))
z.sort(key=CmpToKey(myComparison))
z.sort(key=cmp_to_key(myComparison))
self.assertRaises(TypeError, z.sort, 2)
......@@ -468,7 +461,8 @@ class CommonTest(seq_tests.CommonTest):
return -1
else: # x > y
return 1
self.assertRaises(ValueError, z.sort, key=CmpToKey(selfmodifyingComparison))
self.assertRaises(ValueError, z.sort,
key=cmp_to_key(selfmodifyingComparison))
self.assertRaises(TypeError, z.sort, 42, 42, 42, 42)
......
......@@ -2,18 +2,11 @@ from test import support
import random
import sys
import unittest
from functools import cmp_to_key
verbose = support.verbose
nerrors = 0
def CmpToKey(mycmp):
'Convert a cmp= function into a key= function'
class K(object):
def __init__(self, obj):
self.obj = obj
def __lt__(self, other):
return mycmp(self.obj, other.obj) == -1
return K
def check(tag, expected, raw, compare=None):
global nerrors
......@@ -23,7 +16,7 @@ def check(tag, expected, raw, compare=None):
orig = raw[:] # save input in case of error
if compare:
raw.sort(key=CmpToKey(compare))
raw.sort(key=cmp_to_key(compare))
else:
raw.sort()
......@@ -108,7 +101,7 @@ class TestBase(unittest.TestCase):
print(" Checking against an insane comparison function.")
print(" If the implementation isn't careful, this may segfault.")
s = x[:]
s.sort(key=CmpToKey(lambda a, b: int(random.random() * 3) - 1))
s.sort(key=cmp_to_key(lambda a, b: int(random.random() * 3) - 1))
check("an insane function left some permutation", x, s)
if len(x) >= 2:
......@@ -165,12 +158,12 @@ class TestBugs(unittest.TestCase):
L.pop()
return (x > y) - (x < y)
L = [1,2]
self.assertRaises(ValueError, L.sort, key=CmpToKey(mutating_cmp))
self.assertRaises(ValueError, L.sort, key=cmp_to_key(mutating_cmp))
def mutating_cmp(x, y):
L.append(3)
del L[:]
return (x > y) - (x < y)
self.assertRaises(ValueError, L.sort, key=CmpToKey(mutating_cmp))
self.assertRaises(ValueError, L.sort, key=cmp_to_key(mutating_cmp))
memorywaster = [memorywaster]
#==============================================================================
......@@ -185,7 +178,7 @@ class TestDecorateSortUndecorate(unittest.TestCase):
def my_cmp(x, y):
xlower, ylower = x.lower(), y.lower()
return (xlower > ylower) - (xlower < ylower)
copy.sort(key=CmpToKey(my_cmp))
copy.sort(key=cmp_to_key(my_cmp))
def test_baddecorator(self):
data = 'The quick Brown fox Jumped over The lazy Dog'.split()
......@@ -261,8 +254,8 @@ class TestDecorateSortUndecorate(unittest.TestCase):
def my_cmp_reversed(x, y):
x0, y0 = x[0], y[0]
return (y0 > x0) - (y0 < x0)
data.sort(key=CmpToKey(my_cmp), reverse=True)
copy1.sort(key=CmpToKey(my_cmp_reversed))
data.sort(key=cmp_to_key(my_cmp), reverse=True)
copy1.sort(key=cmp_to_key(my_cmp_reversed))
self.assertEqual(data, copy1)
copy2.sort(key=lambda x: x[0], reverse=True)
self.assertEqual(data, copy2)
......
......@@ -10,6 +10,12 @@ What's New in Python 3.2.2?
Core and Builtins
-----------------
- Issue #11603: Fix a crash when __str__ is rebound as __repr__. Patch by
Andreas Stührk.
- Issue #11321: Fix a crash with multiple imports of the _pickle module when
embedding Python. Patch by Andreas Stührk.
- Verify the types of AST strings and identifiers provided by the user before
compiling them.
......@@ -26,8 +32,6 @@ Core and Builtins
deallocator calls one of the methods on the type (e.g. when subclassing
IOBase). Diagnosis and patch by Davide Rizzo.
- Issue #9611, #9015: FileIO.read() clamps the length to INT_MAX on Windows.
- When a generator yields, do not retain the caller's exception state on the
generator.
......@@ -51,11 +55,6 @@ Library
- Issue #12576: Fix urlopen behavior on sites which do not send (or obfuscates)
Connection:close header.
- Issue #12102: Document that buffered files must be flushed before being used
with mmap. Patch by Steffen Daode Nurpmeso.
- Issue #12560: Build libpython.so on OpenBSD. Patch by Stefan Sperling.
- Issue #1813: Fix codec lookup under Turkish locales.
- Issue #12591: Improve support of "universal newlines" in the subprocess
......@@ -65,11 +64,9 @@ Library
a read1() method), and add an undocumented *write_through* parameter to
mandate unbuffered writes.
- Issue #10883: Fix socket leaks in urllib.request when using FTP.
- Issue #12592: Make Python build on OpenBSD 5 (and future major releases).
- Issue #9611, #9015: FileIO.read() clamps the length to INT_MAX on Windows.
- Issue #12372: POSIX semaphores are broken on AIX: don't use them.
- Issue #10883: Fix socket leaks in urllib.request when using FTP.
- Issue #12571: Add a plat-linux3 directory mirroring the plat-linux2
directory, so that "import DLFCN" and other similar imports work on
......@@ -81,16 +78,10 @@ Library
- Close the call queue in concurrent.futures.ProcessPoolExecutor when
shutdown() is called, without waiting for the garbage collector to kick in.
- Issue #11603: Fix a crash when __str__ is rebound as __repr__. Patch by
Andreas Stührk.
- Issue #11321: Fix a crash with multiple imports of the _pickle module when
embedding Python. Patch by Andreas Stührk.
- Issue #12502: asyncore: fix polling loop with AF_UNIX sockets.
- Issue #4376: ctypes now supports nested structures in a endian different than
the parent structure. Patch by Vlad Riscutia.
- Issue #4376: ctypes now supports nested structures with an endianness
different than that of the parent structure. Patch by Vlad Riscutia.
- Raise ValueError when attempting to set the _CHUNK_SIZE attribute of a
TextIOWrapper to a huge value, not TypeError.
......@@ -99,15 +90,15 @@ Library
if the process has only one pipe.
- Issue #12451: pydoc: html_getfile() now uses tokenize.open() to support
Python scripts using a encoding different than UTF-8 (read the coding cookie
of the script).
Python modules using a encoding different than UTF-8 (reading the coding
cookie of the module).
- Issue #12451: pydoc: importfile() now opens the Python script in binary mode,
- Issue #12451: pydoc: importfile() now opens the Python module in binary mode,
instead of text mode using the locale encoding, to avoid encoding issues.
- Issue #12451: runpy: run_path() now opens the Python script in binary mode,
- Issue #12451: runpy: run_path() now opens the Python module in binary mode,
instead of text mode using the locale encoding, to support other encodings
than UTF-8 (scripts using the coding cookie).
than UTF-8 (modules using the coding cookie).
- Issue #12451: xml.dom.pulldom: parse() now opens files in binary mode instead
of the text mode (using the locale encoding) to avoid encoding issues.
......@@ -122,6 +113,21 @@ Extension Modules
C-API
-----
Build
-----
- Issue #12560: Build libpython.so on OpenBSD. Patch by Stefan Sperling.
- Issue #12592: Make Python build on OpenBSD 5 (and future major releases).
- Issue #12372: POSIX semaphores are broken on AIX: don't use them.
Tools/Demos
-----------
- Issue #10639: reindent.py no longer converts newlines and will raise
an error if attempting to convert a file with mixed newlines.
Tests
-----
......@@ -225,7 +231,7 @@ Library
to avoid encoding issues.
- Issue #12451: pydoc.synopsis() now reads the encoding cookie if available, to
read the Python script from the right encoding.
read the Python module from the right encoding.
- Issue #12451: distutils now opens the setup script in binary mode to read the
encoding cookie, instead of opening it in UTF-8.
......@@ -241,9 +247,6 @@ Library
greater or equal to the default value, the value with which the interpreter
was built.
- Issue #12404: Remove C89 incompatible code from mmap module. Patch by Akira
Kitada.
- Issue #12383: Fix subprocess module with env={}: don't copy the environment
variables, start with an empty environment.
......@@ -310,6 +313,9 @@ Library
Extension Modules
-----------------
- Issue #12404: Remove C89 incompatible code from mmap module. Patch by Akira
Kitada.
- Issue #12221: Replace pyexpat.__version__ with the Python version.
Build
......@@ -324,11 +330,6 @@ Build
"make install" creates symlinks in --prefix bin for the "-32" files in the
framework bin directory like the installer does.
Tools/Demos
-----------
- Issue #10639: reindent.py no longer converts newlines and will raise
an error if attempting to convert a file with mixed newlines.
Tests
-----
......
......@@ -57,7 +57,7 @@ typedef struct {
int error; /* see WFERR_* values */
int depth;
/* If fp == NULL, the following are valid: */
PyObject * readable; /* Stream-like object being read from */
PyObject *readable; /* Stream-like object being read from */
PyObject *str;
char *ptr;
char *end;
......@@ -470,7 +470,7 @@ typedef WFILE RFILE; /* Same struct with different invariants */
static int
r_string(char *s, int n, RFILE *p)
{
char * ptr;
char *ptr;
int read, left;
if (!p->readable) {
......@@ -569,7 +569,7 @@ r_long(RFILE *p)
static PyObject *
r_long64(RFILE *p)
{
PyObject * result = NULL;
PyObject *result = NULL;
long lo4 = r_long(p);
long hi4 = r_long(p);
......
#!/usr/bin/env python3
# This script converts a C file to use the PEP 384 type definition API
# Usage: abitype.py < old_code > new_code
import re, sys
......
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
#!/usr/bin/env python3
""" Command line interface to difflib.py providing diffs in four formats:
* ndiff: lists every line and highlights interline changes.
......
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
"""mailerdaemon - classes to parse mailer-daemon messages"""
#!/usr/bin/env python3
"""Classes to parse mailer-daemon messages."""
import calendar
import email.message
......@@ -6,7 +7,10 @@ import re
import os
import sys
Unparseable = 'mailerdaemon.Unparseable'
class Unparseable(Exception):
pass
class ErrorMessage(email.message.Message):
def __init__(self):
......@@ -18,8 +22,10 @@ class ErrorMessage(email.message.Message):
if not sub:
return 0
sub = sub.lower()
if sub.startswith('waiting mail'): return 1
if 'warning' in sub: return 1
if sub.startswith('waiting mail'):
return 1
if 'warning' in sub:
return 1
self.sub = sub
return 0
......@@ -145,14 +151,17 @@ def emparse_list(fp, sub):
errors.append(' '.join((email.strip()+': '+reason).split()))
return errors
EMPARSERS = [emparse_list, ]
EMPARSERS = [emparse_list]
def sort_numeric(a, b):
a = int(a)
b = int(b)
if a < b: return -1
elif a > b: return 1
else: return 0
if a < b:
return -1
elif a > b:
return 1
else:
return 0
def parsedir(dir, modify):
os.chdir(dir)
......
#!/usr/bin/env python3
"""Script that generates the ctype.h-replacement in stringobject.c."""
NAMES = ("LOWER", "UPPER", "ALPHA", "DIGIT", "XDIGIT", "ALNUM", "SPACE")
......
File mode changed from 100644 to 100755
#!/usr/bin/env python3
import re
import sys
import shutil
......
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
#!/usr/bin/env python
#!/usr/bin/env python3
# Make a reST file compliant to our pre-commit hook.
# Currently just remove trailing whitespace.
......
File mode changed from 100644 to 100755
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment