[Python-3000-checkins] r61894 - in python/branches/py3k: Doc/library/audioop.rst Doc/library/random.rst Lib/copy.py Lib/test/test_deque.py Lib/test/test_set.py Lib/test/test_signal.py Modules/binascii.c Modules/zlibmodule.c Objects/unicodeobject.c PC/_winreg.c PC/w9xpopen.c Python/peephole.c

christian.heimes python-3000-checkins at python.org
Tue Mar 25 15:56:37 CET 2008


Author: christian.heimes
Date: Tue Mar 25 15:56:36 2008
New Revision: 61894

Modified:
   python/branches/py3k/   (props changed)
   python/branches/py3k/Doc/library/audioop.rst
   python/branches/py3k/Doc/library/random.rst
   python/branches/py3k/Lib/copy.py
   python/branches/py3k/Lib/test/test_deque.py
   python/branches/py3k/Lib/test/test_set.py
   python/branches/py3k/Lib/test/test_signal.py
   python/branches/py3k/Modules/binascii.c
   python/branches/py3k/Modules/zlibmodule.c
   python/branches/py3k/Objects/unicodeobject.c
   python/branches/py3k/PC/_winreg.c
   python/branches/py3k/PC/w9xpopen.c
   python/branches/py3k/Python/peephole.c
Log:
Merged revisions 61834,61841-61842,61851-61853,61863-61864,61869-61870,61874,61889 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r61834 | raymond.hettinger | 2008-03-24 07:07:49 +0100 (Mon, 24 Mar 2008) | 1 line
  
  Tighten documentation for Random.triangular.
........
  r61841 | raymond.hettinger | 2008-03-24 09:17:39 +0100 (Mon, 24 Mar 2008) | 1 line
  
  Issue 2460: Make Ellipsis objects copyable.
........
  r61842 | georg.brandl | 2008-03-24 10:34:34 +0100 (Mon, 24 Mar 2008) | 2 lines
  
  #1700821: add a note to audioop docs about signedness of sample formats.
........
  r61851 | christian.heimes | 2008-03-24 20:57:42 +0100 (Mon, 24 Mar 2008) | 1 line
  
  Added quick hack for bzr
........
  r61852 | christian.heimes | 2008-03-24 20:58:17 +0100 (Mon, 24 Mar 2008) | 1 line
  
  Added quick hack for bzr
........
  r61853 | amaury.forgeotdarc | 2008-03-24 22:04:10 +0100 (Mon, 24 Mar 2008) | 4 lines
  
  Issue2469: Correct a typo I introduced at r61793: compilation error with UCS4 builds.
  
  All buildbots compile with UCS2...
........
  r61863 | neal.norwitz | 2008-03-25 05:17:38 +0100 (Tue, 25 Mar 2008) | 2 lines
  
  Fix a bunch of UnboundLocalErrors when the tests fail.
........
  r61864 | neal.norwitz | 2008-03-25 05:18:18 +0100 (Tue, 25 Mar 2008) | 2 lines
  
  Try to fix a bunch of compiler warnings on Win64.
........
  r61869 | neal.norwitz | 2008-03-25 07:35:10 +0100 (Tue, 25 Mar 2008) | 3 lines
  
  Don't try to close a non-open file.
  Don't let file removal cause the test to fail.
........
  r61870 | neal.norwitz | 2008-03-25 08:00:39 +0100 (Tue, 25 Mar 2008) | 7 lines
  
  Try to get this test to be more stable:
   * disable gc during the test run because we are spawning objects and there
     was an exception when calling Popen.__del__
   * Always set an alarm handler so the process doesn't exit if the test fails
     (should probably add assertions on the value of hndl_called in more places)
   * Using a negative time causes Linux to treat it as zero, so disable that test.
........
  r61874 | gregory.p.smith | 2008-03-25 08:31:28 +0100 (Tue, 25 Mar 2008) | 2 lines
  
  Use a 32-bit unsigned int here, a long is not needed.
........
  r61889 | georg.brandl | 2008-03-25 12:59:51 +0100 (Tue, 25 Mar 2008) | 2 lines
  
  Move declarations to block start.
........


Modified: python/branches/py3k/Doc/library/audioop.rst
==============================================================================
--- python/branches/py3k/Doc/library/audioop.rst	(original)
+++ python/branches/py3k/Doc/library/audioop.rst	Tue Mar 25 15:56:36 2008
@@ -136,6 +136,18 @@
 
    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)
 

Modified: python/branches/py3k/Doc/library/random.rst
==============================================================================
--- python/branches/py3k/Doc/library/random.rst	(original)
+++ python/branches/py3k/Doc/library/random.rst	Tue Mar 25 15:56:36 2008
@@ -155,13 +155,13 @@
 
 .. 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)
 

Modified: python/branches/py3k/Lib/copy.py
==============================================================================
--- python/branches/py3k/Lib/copy.py	(original)
+++ python/branches/py3k/Lib/copy.py	Tue Mar 25 15:56:36 2008
@@ -101,7 +101,7 @@
     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 @@
 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

Modified: python/branches/py3k/Lib/test/test_deque.py
==============================================================================
--- python/branches/py3k/Lib/test/test_deque.py	(original)
+++ python/branches/py3k/Lib/test/test_deque.py	Tue Mar 25 15:56:36 2008
@@ -64,8 +64,27 @@
         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 @@
         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);

Modified: python/branches/py3k/Lib/test/test_set.py
==============================================================================
--- python/branches/py3k/Lib/test/test_set.py	(original)
+++ python/branches/py3k/Lib/test/test_set.py	Tue Mar 25 15:56:36 2008
@@ -295,7 +295,7 @@
             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 @@
             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)

Modified: python/branches/py3k/Lib/test/test_signal.py
==============================================================================
--- python/branches/py3k/Lib/test/test_signal.py	(original)
+++ python/branches/py3k/Lib/test/test_signal.py	Tue Mar 25 15:56:36 2008
@@ -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 @@
 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 @@
         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 @@
         # 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()...")

Modified: python/branches/py3k/Modules/binascii.c
==============================================================================
--- python/branches/py3k/Modules/binascii.c	(original)
+++ python/branches/py3k/Modules/binascii.c	Tue Mar 25 15:56:36 2008
@@ -784,13 +784,15 @@
 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

Modified: python/branches/py3k/Modules/zlibmodule.c
==============================================================================
--- python/branches/py3k/Modules/zlibmodule.c	(original)
+++ python/branches/py3k/Modules/zlibmodule.c	Tue Mar 25 15:56:36 2008
@@ -915,7 +915,7 @@
 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 @@
 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);
 }
 
 

Modified: python/branches/py3k/Objects/unicodeobject.c
==============================================================================
--- python/branches/py3k/Objects/unicodeobject.c	(original)
+++ python/branches/py3k/Objects/unicodeobject.c	Tue Mar 25 15:56:36 2008
@@ -3204,7 +3204,7 @@
                 /* 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 @@
             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;
 	}

Modified: python/branches/py3k/PC/_winreg.c
==============================================================================
--- python/branches/py3k/PC/_winreg.c	(original)
+++ python/branches/py3k/PC/_winreg.c	Tue Mar 25 15:56:36 2008
@@ -703,6 +703,7 @@
 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))

Modified: python/branches/py3k/PC/w9xpopen.c
==============================================================================
--- python/branches/py3k/PC/w9xpopen.c	(original)
+++ python/branches/py3k/PC/w9xpopen.c	Tue Mar 25 15:56:36 2008
@@ -30,7 +30,7 @@
     STARTUPINFO si;
     PROCESS_INFORMATION pi;
     DWORD exit_code=0;
-    int cmdlen = 0;
+    size_t cmdlen = 0;
     int i;
     char *cmdline, *cmdlinefill;
 

Modified: python/branches/py3k/Python/peephole.c
==============================================================================
--- python/branches/py3k/Python/peephole.c	(original)
+++ python/branches/py3k/Python/peephole.c	Tue Mar 25 15:56:36 2008
@@ -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 @@
 }
 
 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;


More information about the Python-3000-checkins mailing list