summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/library/audioop.rst12
-rw-r--r--Doc/library/random.rst10
-rw-r--r--Lib/copy.py3
-rw-r--r--Lib/test/test_deque.py23
-rw-r--r--Lib/test/test_set.py4
-rw-r--r--Lib/test/test_signal.py19
-rw-r--r--Modules/binascii.c8
-rw-r--r--Modules/zlibmodule.c11
-rw-r--r--Objects/unicodeobject.c4
-rw-r--r--PC/_winreg.c1
-rw-r--r--PC/w9xpopen.c2
-rw-r--r--Python/peephole.c4
12 files changed, 74 insertions, 27 deletions
diff --git a/Doc/library/audioop.rst b/Doc/library/audioop.rst
index 8ee2795..9eb315f 100644
--- a/Doc/library/audioop.rst
+++ b/Doc/library/audioop.rst
@@ -136,6 +136,18 @@ The module defines the following variables and functions:
Convert samples between 1-, 2- and 4-byte formats.
+ .. note::
+
+ In some audio formats, such as .WAV files, 16 and 32 bit samples are
+ signed, but 8 bit samples are unsigned. So when converting to 8 bit wide
+ samples for these formats, you need to also add 128 to the result::
+
+ new_frames = audioop.lin2lin(frames, old_width, 1)
+ new_frames = audioop.bias(new_frames, 1, 128)
+
+ The same, in reverse, has to be applied when converting from 8 to 16 or 32
+ bit width samples.
+
.. function:: lin2ulaw(fragment, width)
diff --git a/Doc/library/random.rst b/Doc/library/random.rst
index 0b82bf4..86a9a95 100644
--- a/Doc/library/random.rst
+++ b/Doc/library/random.rst
@@ -155,13 +155,13 @@ be found in any statistics text.
.. function:: triangular(low, high, mode)
- Return a random floating point number *N* such that ``low <= N < high``
- and with the specified *mode* between those bounds.
+ Return a random floating point number *N* such that ``low <= N < high`` and
+ with the specified *mode* between those bounds. The *low* and *high* bounds
+ default to zero and one. The *mode* argument defaults to the midpoint
+ between the bounds, giving a symmetric distribution.
- If *mode* is not specified or is ``None``, it defaults to the midpoint
- between the upper and lower bounds, producing a symmetric distribution.
+ .. versionadded:: 2.6
- The default values for *low* and *high* are zero and one.
.. function:: betavariate(alpha, beta)
diff --git a/Lib/copy.py b/Lib/copy.py
index 1a14f0e..ec108b7 100644
--- a/Lib/copy.py
+++ b/Lib/copy.py
@@ -101,7 +101,7 @@ def _copy_immutable(x):
return x
for t in (type(None), int, float, bool, str, tuple,
frozenset, type, range,
- types.BuiltinFunctionType,
+ types.BuiltinFunctionType, type(Ellipsis),
types.FunctionType):
d[t] = _copy_immutable
t = getattr(types, "CodeType", None)
@@ -180,6 +180,7 @@ _deepcopy_dispatch = d = {}
def _deepcopy_atomic(x, memo):
return x
d[type(None)] = _deepcopy_atomic
+d[type(Ellipsis)] = _deepcopy_atomic
d[int] = _deepcopy_atomic
d[float] = _deepcopy_atomic
d[bool] = _deepcopy_atomic
diff --git a/Lib/test/test_deque.py b/Lib/test/test_deque.py
index 12f77a9..c8d0c7e 100644
--- a/Lib/test/test_deque.py
+++ b/Lib/test/test_deque.py
@@ -64,8 +64,27 @@ class TestBasic(unittest.TestCase):
self.assertEqual(list(d), [7, 8, 9])
d = deque(range(200), maxlen=10)
d.append(d)
+ fo = open(test_support.TESTFN, "w")
+ try:
+ fo.write(str(d))
+ fo.close()
+ fo = open(test_support.TESTFN, "r")
+ self.assertEqual(fo.read(), repr(d))
+ finally:
+ fo.close()
+ test_support.unlink(test_support.TESTFN)
+
d = deque(range(10), maxlen=None)
self.assertEqual(repr(d), 'deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])')
+ fo = open(test_support.TESTFN, "w")
+ try:
+ fo.write(str(d))
+ fo.close()
+ fo = open(test_support.TESTFN, "r")
+ self.assertEqual(fo.read(), repr(d))
+ finally:
+ fo.close()
+ test_support.unlink(test_support.TESTFN)
def test_comparisons(self):
d = deque('xabc'); d.popleft()
@@ -265,13 +284,13 @@ class TestBasic(unittest.TestCase):
d.append(d)
try:
fo = open(test_support.TESTFN, "w")
- fo.write(str(d))
+ print(d, file=fo, end='')
fo.close()
fo = open(test_support.TESTFN, "r")
self.assertEqual(fo.read(), repr(d))
finally:
fo.close()
- os.remove(test_support.TESTFN)
+ test_support.unlink(test_support.TESTFN)
def test_init(self):
self.assertRaises(TypeError, deque, 'abc', 2, 3);
diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py
index ca3c02e..44a45af 100644
--- a/Lib/test/test_set.py
+++ b/Lib/test/test_set.py
@@ -295,7 +295,7 @@ class TestJointOps(unittest.TestCase):
self.assertEqual(fo.read(), repr(s))
finally:
fo.close()
- os.remove(test_support.TESTFN)
+ test_support.unlink(test_support.TESTFN)
def test_do_not_rehash_dict_keys(self):
n = 10
@@ -679,7 +679,7 @@ class TestBasicOps(unittest.TestCase):
self.assertEqual(fo.read(), repr(self.set))
finally:
fo.close()
- os.remove(test_support.TESTFN)
+ test_support.unlink(test_support.TESTFN)
def test_length(self):
self.assertEqual(len(self.set), self.length)
diff --git a/Lib/test/test_signal.py b/Lib/test/test_signal.py
index 2cee626..3c039a1 100644
--- a/Lib/test/test_signal.py
+++ b/Lib/test/test_signal.py
@@ -1,6 +1,7 @@
import unittest
from test import test_support
from contextlib import closing, nested
+import gc
import pickle
import select
import signal
@@ -30,6 +31,14 @@ def exit_subprocess():
class InterProcessSignalTests(unittest.TestCase):
MAX_DURATION = 20 # Entire test should last at most 20 sec.
+ def setUp(self):
+ self.using_gc = gc.isenabled()
+ gc.disable()
+
+ def tearDown(self):
+ if self.using_gc:
+ gc.enable()
+
def handlerA(self, *args):
self.a_called = True
if test_support.verbose:
@@ -263,8 +272,10 @@ class ItimerTest(unittest.TestCase):
self.hndl_called = False
self.hndl_count = 0
self.itimer = None
+ self.old_alarm = signal.signal(signal.SIGALRM, self.sig_alrm)
def tearDown(self):
+ signal.signal(signal.SIGALRM, self.old_alarm)
if self.itimer is not None: # test_itimer_exc doesn't change this attr
# just ensure that itimer is stopped
signal.setitimer(self.itimer, 0)
@@ -303,13 +314,13 @@ class ItimerTest(unittest.TestCase):
# XXX I'm assuming -1 is an invalid itimer, but maybe some platform
# defines it ?
self.assertRaises(signal.ItimerError, signal.setitimer, -1, 0)
- # negative time
- self.assertRaises(signal.ItimerError, signal.setitimer,
- signal.ITIMER_REAL, -1)
+ # Negative times are treated as zero on some platforms.
+ if 0:
+ self.assertRaises(signal.ItimerError,
+ signal.setitimer, signal.ITIMER_REAL, -1)
def test_itimer_real(self):
self.itimer = signal.ITIMER_REAL
- signal.signal(signal.SIGALRM, self.sig_alrm)
signal.setitimer(self.itimer, 1.0)
if test_support.verbose:
print("\ncall pause()...")
diff --git a/Modules/binascii.c b/Modules/binascii.c
index b90905f..b65bdab 100644
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -784,13 +784,15 @@ PyDoc_STRVAR(doc_crc32,
static PyObject *
binascii_crc32(PyObject *self, PyObject *args)
{
- uLong crc32val = 0; /* crc32(0L, Z_NULL, 0) */
+ unsigned int crc32val = 0; /* crc32(0L, Z_NULL, 0) */
Byte *buf;
Py_ssize_t len;
+ int signed_val;
+
if (!PyArg_ParseTuple(args, "s#|I:crc32", &buf, &len, &crc32val))
return NULL;
- crc32val = crc32(crc32val, buf, len);
- return PyLong_FromUnsignedLong(crc32val & 0xffffffffU);
+ signed_val = crc32(crc32val, buf, len);
+ return PyLong_FromUnsignedLong(signed_val & 0xffffffffU);
}
#else /* USE_ZLIB_CRC32 */
/* Crc - 32 BIT ANSI X3.66 CRC checksum files
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c
index cecb9cf..24efb00 100644
--- a/Modules/zlibmodule.c
+++ b/Modules/zlibmodule.c
@@ -915,7 +915,7 @@ PyDoc_STRVAR(adler32__doc__,
static PyObject *
PyZlib_adler32(PyObject *self, PyObject *args)
{
- uLong adler32val = 1; /* adler32(0L, Z_NULL, 0) */
+ unsigned int adler32val = 1; /* adler32(0L, Z_NULL, 0) */
Byte *buf;
int len;
@@ -934,13 +934,14 @@ PyDoc_STRVAR(crc32__doc__,
static PyObject *
PyZlib_crc32(PyObject *self, PyObject *args)
{
- uLong crc32val = 0; /* crc32(0L, Z_NULL, 0) */
+ unsigned int crc32val = 0; /* crc32(0L, Z_NULL, 0) */
Byte *buf;
- int len;
+ int len, signed_val;
+
if (!PyArg_ParseTuple(args, "s#|I:crc32", &buf, &len, &crc32val))
return NULL;
- crc32val = crc32(crc32val, buf, len);
- return PyLong_FromUnsignedLong(crc32val & 0xffffffffU);
+ signed_val = crc32(crc32val, buf, len);
+ return PyLong_FromUnsignedLong(signed_val & 0xffffffffU);
}
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index bbcb7dc..60cbffa 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -3204,7 +3204,7 @@ PyObject *PyUnicode_DecodeRawUnicodeEscape(const char *s,
/* UCS-4 character. Either store directly, or as
surrogate pair. */
#ifdef Py_UNICODE_WIDE
- *p++ = (Py_UNIC0DE) x;
+ *p++ = (Py_UNICODE) x;
#else
x -= 0x10000L;
*p++ = 0xD800 + (Py_UNICODE) (x >> 10);
@@ -7384,7 +7384,7 @@ unicode_repeat(PyUnicodeObject *str, Py_ssize_t len)
done = str->length;
}
while (done < nchars) {
- int n = (done <= nchars-done) ? done : nchars-done;
+ Py_ssize_t n = (done <= nchars-done) ? done : nchars-done;
Py_UNICODE_COPY(p+done, p, n);
done += n;
}
diff --git a/PC/_winreg.c b/PC/_winreg.c
index 0dcade8..5c5023d 100644
--- a/PC/_winreg.c
+++ b/PC/_winreg.c
@@ -703,6 +703,7 @@ countStrings(wchar_t *data, int len)
static BOOL
Py2Reg(PyObject *value, DWORD typ, BYTE **retDataBuf, DWORD *retDataSize)
{
+ Py_ssize_t i,j;
switch (typ) {
case REG_DWORD:
if (value != Py_None && !PyLong_Check(value))
diff --git a/PC/w9xpopen.c b/PC/w9xpopen.c
index f8439f2..b3978dd 100644
--- a/PC/w9xpopen.c
+++ b/PC/w9xpopen.c
@@ -30,7 +30,7 @@ int main(int argc, char *argv[])
STARTUPINFO si;
PROCESS_INFORMATION pi;
DWORD exit_code=0;
- int cmdlen = 0;
+ size_t cmdlen = 0;
int i;
char *cmdline, *cmdlinefill;
diff --git a/Python/peephole.c b/Python/peephole.c
index a37abf9..db5ca33 100644
--- a/Python/peephole.c
+++ b/Python/peephole.c
@@ -29,7 +29,7 @@
Also works for BUILD_LIST when followed by an "in" or "not in" test.
*/
static int
-tuple_of_constants(unsigned char *codestr, int n, PyObject *consts)
+tuple_of_constants(unsigned char *codestr, Py_ssize_t n, PyObject *consts)
{
PyObject *newconst, *constant;
Py_ssize_t i, arg, len_consts;
@@ -220,7 +220,7 @@ fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts)
}
static unsigned int *
-markblocks(unsigned char *code, int len)
+markblocks(unsigned char *code, Py_ssize_t len)
{
unsigned int *blocks = (unsigned int *)PyMem_Malloc(len*sizeof(int));
int i,j, opcode, blockcnt = 0;