summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorÉric Araujo <merwok@netwok.org>2011-07-29 01:11:09 (GMT)
committerÉric Araujo <merwok@netwok.org>2011-07-29 01:11:09 (GMT)
commit2527796a22404d5b8cb0e498a965c6b4a743caac (patch)
tree5bc07b91dde0085cc09c3336ed740f6817f11fc3
parent1e3a68d36b08cd9d59084a37c8cb6c2d911868ce (diff)
parentcf534817adc49b2562d175fabd3e3992d25063fe (diff)
downloadcpython-2527796a22404d5b8cb0e498a965c6b4a743caac.zip
cpython-2527796a22404d5b8cb0e498a965c6b4a743caac.tar.gz
cpython-2527796a22404d5b8cb0e498a965c6b4a743caac.tar.bz2
Merge from 3.2 (#10318, #12255, #12043, #12417 and other fixes)
-rw-r--r--.bzrignore1
-rw-r--r--.gitignore1
-rw-r--r--.hgignore3
-rw-r--r--Doc/ACKS.txt1
-rw-r--r--Doc/distutils/apiref.rst4
-rw-r--r--Doc/distutils/install.rst2
-rw-r--r--Doc/glossary.rst3
-rw-r--r--Doc/library/ossaudiodev.rst2
-rw-r--r--Doc/library/packaging.dist.rst4
-rw-r--r--Doc/library/profile.rst26
-rw-r--r--Doc/library/shutil.rst26
-rw-r--r--Doc/license.rst30
-rw-r--r--Doc/tools/sphinxext/susp-ignored.csv2
-rw-r--r--Doc/tutorial/classes.rst28
-rw-r--r--Lib/pstats.py4
-rw-r--r--Lib/test/list_tests.py16
-rw-r--r--Lib/test/test_sort.py23
-rw-r--r--Python/marshal.c6
-rwxr-xr-x[-rw-r--r--]Tools/scripts/abitype.py1
-rwxr-xr-x[-rw-r--r--]Tools/scripts/cleanfuture.py0
-rwxr-xr-x[-rw-r--r--]Tools/scripts/combinerefs.py0
-rwxr-xr-x[-rw-r--r--]Tools/scripts/db2pickle.py0
-rwxr-xr-x[-rw-r--r--]Tools/scripts/diff.py1
-rwxr-xr-x[-rw-r--r--]Tools/scripts/find_recursionlimit.py0
-rwxr-xr-x[-rw-r--r--]Tools/scripts/get-remote-certificate.py0
-rwxr-xr-x[-rw-r--r--]Tools/scripts/mailerdaemon.py25
-rwxr-xr-x[-rw-r--r--]Tools/scripts/make_ctype.py1
-rwxr-xr-x[-rw-r--r--]Tools/scripts/md5sum.py0
-rwxr-xr-x[-rw-r--r--]Tools/scripts/patchcheck.py1
-rwxr-xr-x[-rw-r--r--]Tools/scripts/pickle2db.py0
-rwxr-xr-x[-rw-r--r--]Tools/scripts/pysource.py0
-rwxr-xr-xTools/scripts/reindent-rst.py2
-rwxr-xr-x[-rw-r--r--]Tools/scripts/svneol.py0
33 files changed, 81 insertions, 132 deletions
diff --git a/.bzrignore b/.bzrignore
index e893a7d..959a7df 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -14,6 +14,7 @@ platform
pybuilddir.txt
pyconfig.h
libpython*.a
+libpython*.so*
python.exe
python-gdb.py
reflog.txt
diff --git a/.gitignore b/.gitignore
index 63f4314..da0ca02 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,7 @@ build/
config.log
config.status
libpython*.a
+libpython*.so*
pybuilddir.txt
pyconfig.h
python
diff --git a/.hgignore b/.hgignore
index 6a2615b..3919a03 100644
--- a/.hgignore
+++ b/.hgignore
@@ -41,14 +41,13 @@ PCbuild/amd64/
syntax: glob
libpython*.a
+libpython*.so*
*.swp
*.o
*.pyc
*.pyo
*.pyd
*.cover
-*.orig
-*.rej
*~
Lib/lib2to3/*.pickle
Lib/test/data/*
diff --git a/Doc/ACKS.txt b/Doc/ACKS.txt
index 433c9ee..5faa706 100644
--- a/Doc/ACKS.txt
+++ b/Doc/ACKS.txt
@@ -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
* Nadeem Vawda
* Martijn Vries
diff --git a/Doc/distutils/apiref.rst b/Doc/distutils/apiref.rst
index 1fb6f9e..124d891 100644
--- a/Doc/distutils/apiref.rst
+++ b/Doc/distutils/apiref.rst
@@ -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` |
diff --git a/Doc/distutils/install.rst b/Doc/distutils/install.rst
index f8d6305..6f4de7a 100644
--- a/Doc/distutils/install.rst
+++ b/Doc/distutils/install.rst
@@ -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
diff --git a/Doc/glossary.rst b/Doc/glossary.rst
index 2961af1..6984bf2 100644
--- a/Doc/glossary.rst
+++ b/Doc/glossary.rst
@@ -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`.
diff --git a/Doc/library/ossaudiodev.rst b/Doc/library/ossaudiodev.rst
index 3b5a7e4..0a08428 100644
--- a/Doc/library/ossaudiodev.rst
+++ b/Doc/library/ossaudiodev.rst
@@ -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:
diff --git a/Doc/library/packaging.dist.rst b/Doc/library/packaging.dist.rst
index fb05b69..7184f7f 100644
--- a/Doc/library/packaging.dist.rst
+++ b/Doc/library/packaging.dist.rst
@@ -67,8 +67,8 @@ module distribution being built/packaged/distributed/installed.
| | be built | :class:`packaging.compiler.extension.Extension` |
+--------------------+--------------------------------+-------------------------------------------------------------+
| *classifiers* | A list of categories for the | The list of available |
- | | distribution | categorizations is at |
- | | | http://pypi.python.org/pypi?:action=list_classifiers. |
+ | | distribution | categorizations is available on `PyPI |
+ | | | <http://pypi.python.org/pypi?:action=list_classifiers>`_. |
+--------------------+--------------------------------+-------------------------------------------------------------+
| *distclass* | the :class:`Distribution` | A subclass of |
| | class to use | :class:`packaging.dist.Distribution` |
diff --git a/Doc/library/profile.rst b/Doc/library/profile.rst
index 3931836..ca54021 100644
--- a/Doc/library/profile.rst
+++ b/Doc/library/profile.rst
@@ -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.
diff --git a/Doc/library/shutil.rst b/Doc/library/shutil.rst
index f8a1b60..799230c 100644
--- a/Doc/library/shutil.rst
+++ b/Doc/library/shutil.rst
@@ -159,12 +159,18 @@ 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.
.. function:: disk_usage(path)
@@ -177,9 +183,9 @@ Directory and files operations
.. 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:
@@ -277,7 +283,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:
@@ -295,7 +301,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
diff --git a/Doc/license.rst b/Doc/license.rst
index 615b18c..d0b370f 100644
--- a/Doc/license.rst
+++ b/Doc/license.rst
@@ -494,36 +494,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
-----------------
diff --git a/Doc/tools/sphinxext/susp-ignored.csv b/Doc/tools/sphinxext/susp-ignored.csv
index 57d2f9c..8211d62 100644
--- a/Doc/tools/sphinxext/susp-ignored.csv
+++ b/Doc/tools/sphinxext/susp-ignored.csv
@@ -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)) {"
@@ -495,7 +494,6 @@ library/pprint,209,::,"'Programming Language :: Python :: 2.6',"
library/pprint,209,::,"'Programming Language :: Python :: 2.7',"
library/pprint,209,::,"'Topic :: Software Development :: Libraries',"
library/pprint,209,::,"'Topic :: Software Development :: Libraries :: Python Modules'],"
-library/packaging.dist,,:action,http://pypi.python.org/pypi?:action=list_classifiers
packaging/examples,,`,This is the description of the ``foobar`` project.
packaging/setupcfg,,::,Development Status :: 3 - Alpha
packaging/setupcfg,,::,License :: OSI Approved :: Mozilla Public License 1.1 (MPL 1.1)
diff --git a/Doc/tutorial/classes.rst b/Doc/tutorial/classes.rst
index 336d074..4926280 100644
--- a/Doc/tutorial/classes.rst
+++ b/Doc/tutorial/classes.rst
@@ -598,24 +598,24 @@ occurs within the definition of a class.
Name mangling is helpful for letting subclasses override methods without
breaking intraclass method calls. For example::
- class Mapping:
- def __init__(self, iterable):
- self.items_list = []
- self.__update(iterable)
+ class Mapping:
+ def __init__(self, iterable):
+ self.items_list = []
+ self.__update(iterable)
- def update(self, iterable):
- for item in iterable:
- self.items_list.append(item)
+ def update(self, iterable):
+ for item in iterable:
+ self.items_list.append(item)
- __update = update # private copy of original update() method
+ __update = update # private copy of original update() method
- class MappingSubclass(Mapping):
+ class MappingSubclass(Mapping):
- def update(self, keys, values):
- # provides new signature for update()
- # but does not break __init__()
- for item in zip(keys, values):
- self.items_list.append(item)
+ def update(self, keys, values):
+ # provides new signature for update()
+ # but does not break __init__()
+ for item in zip(keys, values):
+ self.items_list.append(item)
Note that the mangling rules are designed mostly to avoid accidents; it still is
possible to access or modify a variable that is considered private. This can
diff --git a/Lib/pstats.py b/Lib/pstats.py
index 8a025cd..3f0add2 100644
--- a/Lib/pstats.py
+++ b/Lib/pstats.py
@@ -1,13 +1,9 @@
"""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
#
diff --git a/Lib/test/list_tests.py b/Lib/test/list_tests.py
index 0c656fd..42e118b 100644
--- a/Lib/test/list_tests.py
+++ b/Lib/test/list_tests.py
@@ -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):
@@ -484,7 +477,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:
@@ -497,7 +490,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)
@@ -509,7 +502,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)
diff --git a/Lib/test/test_sort.py b/Lib/test/test_sort.py
index 55503b5..8f6af64 100644
--- a/Lib/test/test_sort.py
+++ b/Lib/test/test_sort.py
@@ -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)
diff --git a/Python/marshal.c b/Python/marshal.c
index 35fcd3a..edf0366 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -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;
PyObject *current_filename;
char *ptr;
@@ -467,7 +467,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) {
@@ -566,7 +566,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);
diff --git a/Tools/scripts/abitype.py b/Tools/scripts/abitype.py
index e35ef6a..4d96c8b 100644..100755
--- a/Tools/scripts/abitype.py
+++ b/Tools/scripts/abitype.py
@@ -1,3 +1,4 @@
+#!/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
diff --git a/Tools/scripts/cleanfuture.py b/Tools/scripts/cleanfuture.py
index b48ab60..b48ab60 100644..100755
--- a/Tools/scripts/cleanfuture.py
+++ b/Tools/scripts/cleanfuture.py
diff --git a/Tools/scripts/combinerefs.py b/Tools/scripts/combinerefs.py
index e10e49a..e10e49a 100644..100755
--- a/Tools/scripts/combinerefs.py
+++ b/Tools/scripts/combinerefs.py
diff --git a/Tools/scripts/db2pickle.py b/Tools/scripts/db2pickle.py
index a5532a8..a5532a8 100644..100755
--- a/Tools/scripts/db2pickle.py
+++ b/Tools/scripts/db2pickle.py
diff --git a/Tools/scripts/diff.py b/Tools/scripts/diff.py
index 52dcab1..9efb078 100644..100755
--- a/Tools/scripts/diff.py
+++ b/Tools/scripts/diff.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
""" Command line interface to difflib.py providing diffs in four formats:
* ndiff: lists every line and highlights interline changes.
diff --git a/Tools/scripts/find_recursionlimit.py b/Tools/scripts/find_recursionlimit.py
index 443f052..443f052 100644..100755
--- a/Tools/scripts/find_recursionlimit.py
+++ b/Tools/scripts/find_recursionlimit.py
diff --git a/Tools/scripts/get-remote-certificate.py b/Tools/scripts/get-remote-certificate.py
index 5811f20..5811f20 100644..100755
--- a/Tools/scripts/get-remote-certificate.py
+++ b/Tools/scripts/get-remote-certificate.py
diff --git a/Tools/scripts/mailerdaemon.py b/Tools/scripts/mailerdaemon.py
index 4934b92..aeb451e 100644..100755
--- a/Tools/scripts/mailerdaemon.py
+++ b/Tools/scripts/mailerdaemon.py
@@ -1,4 +1,5 @@
-"""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)
diff --git a/Tools/scripts/make_ctype.py b/Tools/scripts/make_ctype.py
index 359d6b3..afee1c5 100644..100755
--- a/Tools/scripts/make_ctype.py
+++ b/Tools/scripts/make_ctype.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
"""Script that generates the ctype.h-replacement in stringobject.c."""
NAMES = ("LOWER", "UPPER", "ALPHA", "DIGIT", "XDIGIT", "ALNUM", "SPACE")
diff --git a/Tools/scripts/md5sum.py b/Tools/scripts/md5sum.py
index 743da72..743da72 100644..100755
--- a/Tools/scripts/md5sum.py
+++ b/Tools/scripts/md5sum.py
diff --git a/Tools/scripts/patchcheck.py b/Tools/scripts/patchcheck.py
index d42bc8a..8b0d3cd 100644..100755
--- a/Tools/scripts/patchcheck.py
+++ b/Tools/scripts/patchcheck.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env python3
import re
import sys
import shutil
diff --git a/Tools/scripts/pickle2db.py b/Tools/scripts/pickle2db.py
index b5b6571..b5b6571 100644..100755
--- a/Tools/scripts/pickle2db.py
+++ b/Tools/scripts/pickle2db.py
diff --git a/Tools/scripts/pysource.py b/Tools/scripts/pysource.py
index c7dbe60..c7dbe60 100644..100755
--- a/Tools/scripts/pysource.py
+++ b/Tools/scripts/pysource.py
diff --git a/Tools/scripts/reindent-rst.py b/Tools/scripts/reindent-rst.py
index ceb84bf..25608af 100755
--- a/Tools/scripts/reindent-rst.py
+++ b/Tools/scripts/reindent-rst.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# Make a reST file compliant to our pre-commit hook.
# Currently just remove trailing whitespace.
diff --git a/Tools/scripts/svneol.py b/Tools/scripts/svneol.py
index 8abdd01..8abdd01 100644..100755
--- a/Tools/scripts/svneol.py
+++ b/Tools/scripts/svneol.py