summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorChristian Heimes <christian@cheimes.de>2008-02-04 18:48:49 (GMT)
committerChristian Heimes <christian@cheimes.de>2008-02-04 18:48:49 (GMT)
commit15ebc88d87d2ff8f520581a9f6a6816d78a7e504 (patch)
treedfe97b2aea5122d8dbfc8812d8783265007c7d1c /Lib
parentfdb6bb56c19c6c0d332d61fb3f6416cf91be2d02 (diff)
downloadcpython-15ebc88d87d2ff8f520581a9f6a6816d78a7e504.zip
cpython-15ebc88d87d2ff8f520581a9f6a6816d78a7e504.tar.gz
cpython-15ebc88d87d2ff8f520581a9f6a6816d78a7e504.tar.bz2
Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552-60567 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r60553 | neal.norwitz | 2008-02-03 17:53:09 +0100 (Sun, 03 Feb 2008) | 1 line Ignore leaky warnings from test_asynchat ........ r60555 | christian.heimes | 2008-02-03 20:51:13 +0100 (Sun, 03 Feb 2008) | 1 line Another int -> pid_t case ........ r60560 | amaury.forgeotdarc | 2008-02-03 23:51:43 +0100 (Sun, 03 Feb 2008) | 6 lines Ensure that PySet_Add() operates on a newly created frozenset, like PyTuple_SetItem does. Add PyFrozenSet_Check(), which was not needed before; The list of Py*Set_Check* macros seems to be complete now. Add missing NEWS entries about all this. ........ r60563 | amaury.forgeotdarc | 2008-02-04 00:14:32 +0100 (Mon, 04 Feb 2008) | 2 lines Nasty typo in setobject.h ........ r60564 | amaury.forgeotdarc | 2008-02-04 00:15:32 +0100 (Mon, 04 Feb 2008) | 3 lines Correct test_mailbox on win32: since the test sets a custom 'colon' attribute to the main mailbox, copy it to secondary mailbox instances. ........ r60565 | amaury.forgeotdarc | 2008-02-04 00:57:24 +0100 (Mon, 04 Feb 2008) | 2 lines Let test_socketserver pass on win32, which does not have AF_UNIX sockets. ........ r60566 | jeffrey.yasskin | 2008-02-04 02:04:35 +0100 (Mon, 04 Feb 2008) | 2 lines Make int() and long() fall back to __trunc__(). See issue 2002. ........ r60567 | christian.heimes | 2008-02-04 19:00:12 +0100 (Mon, 04 Feb 2008) | 3 lines Patch #1953 I implemented the function sys._compact_freelists() and C API functions PyInt_/PyFloat_CompactFreeList() to compact the pre-allocated blocks of ints and floats. They allow the user to reduce the memory usage of a Python process that deals with lots of numbers. The patch also renames sys._cleartypecache to sys._clear_type_cache ........
Diffstat (limited to 'Lib')
-rwxr-xr-xLib/rational.py2
-rwxr-xr-xLib/test/regrtest.py2
-rw-r--r--Lib/test/test_builtin.py52
-rw-r--r--Lib/test/test_mailbox.py1
-rw-r--r--Lib/test/test_socketserver.py15
-rw-r--r--Lib/test/test_sys.py14
6 files changed, 75 insertions, 11 deletions
diff --git a/Lib/rational.py b/Lib/rational.py
index e2fed23..6002964 100755
--- a/Lib/rational.py
+++ b/Lib/rational.py
@@ -406,8 +406,6 @@ class Rational(RationalAbc):
else:
return a.numerator // a.denominator
- __int__ = __trunc__
-
def __floor__(a):
"""Will be math.floor(a) in 3.0."""
return a.numerator // a.denominator
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index 5934e6b..9b6f14a 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -753,7 +753,7 @@ def dash_R_cleanup(fs, ps, pic, abcs):
sys.path_importer_cache.update(pic)
# clear type cache
- sys._cleartypecache()
+ sys._clear_type_cache()
# Clear ABC registries, restoring previously saved ABC registries.
for abc in [getattr(_abcoll, a) for a in _abcoll.__all__]:
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index cc31e93..1b9edc0 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -861,6 +861,14 @@ class BuiltinTest(unittest.TestCase):
def test_intconversion(self):
# Test __int__()
+ class ClassicMissingMethods:
+ pass
+ self.assertRaises(TypeError, int, ClassicMissingMethods())
+
+ class MissingMethods(object):
+ pass
+ self.assertRaises(TypeError, int, MissingMethods())
+
class Foo0:
def __int__(self):
return 42
@@ -892,6 +900,49 @@ class BuiltinTest(unittest.TestCase):
self.assertEqual(int(Foo4()), 42)
self.assertRaises(TypeError, int, Foo5())
+ class Classic:
+ pass
+ for base in (object, Classic):
+ class IntOverridesTrunc(base):
+ def __int__(self):
+ return 42
+ def __trunc__(self):
+ return -12
+ self.assertEqual(int(IntOverridesTrunc()), 42)
+
+ class JustTrunc(base):
+ def __trunc__(self):
+ return 42
+ self.assertEqual(int(JustTrunc()), 42)
+
+ for trunc_result_base in (object, Classic):
+ class Integral(trunc_result_base):
+ def __int__(self):
+ return 42
+
+ class TruncReturnsNonInt(base):
+ def __trunc__(self):
+ return Integral()
+ self.assertEqual(int(TruncReturnsNonInt()), 42)
+
+ class NonIntegral(trunc_result_base):
+ def __trunc__(self):
+ # Check that we avoid infinite recursion.
+ return NonIntegral()
+
+ class TruncReturnsNonIntegral(base):
+ def __trunc__(self):
+ return NonIntegral()
+ try:
+ int(TruncReturnsNonIntegral())
+ except TypeError as e:
+ self.assertEquals(str(e),
+ "__trunc__ returned non-Integral"
+ " (type NonIntegral)")
+ else:
+ self.fail("Failed to raise TypeError with %s" %
+ ((base, trunc_result_base),))
+
def test_iter(self):
self.assertRaises(TypeError, iter)
self.assertRaises(TypeError, iter, 42, 42)
@@ -1095,7 +1146,6 @@ class BuiltinTest(unittest.TestCase):
self.assertEqual(int('2br45qc', 35), 4294967297)
self.assertEqual(int('1z141z5', 36), 4294967297)
-
def test_longconversion(self):
# Test __long__()
class Foo0:
diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py
index 918116a..925f878 100644
--- a/Lib/test/test_mailbox.py
+++ b/Lib/test/test_mailbox.py
@@ -517,6 +517,7 @@ class TestMaildir(TestMailbox):
class FakeMessage(mailbox.MaildirMessage):
pass
box = mailbox.Maildir(self._path, factory=FakeMessage)
+ box.colon = self._box.colon
msg2 = box.get_message(key)
self.assert_(isinstance(msg2, FakeMessage))
diff --git a/Lib/test/test_socketserver.py b/Lib/test/test_socketserver.py
index 6a65b6c..0fccdd9 100644
--- a/Lib/test/test_socketserver.py
+++ b/Lib/test/test_socketserver.py
@@ -51,13 +51,14 @@ class MyDatagramHandler(MyMixinHandler,
SocketServer.DatagramRequestHandler):
pass
-class ForkingUnixStreamServer(SocketServer.ForkingMixIn,
- SocketServer.UnixStreamServer):
- pass
-
-class ForkingUnixDatagramServer(SocketServer.ForkingMixIn,
- SocketServer.UnixDatagramServer):
- pass
+if HAVE_UNIX_SOCKETS:
+ class ForkingUnixStreamServer(SocketServer.ForkingMixIn,
+ SocketServer.UnixStreamServer):
+ pass
+
+ class ForkingUnixDatagramServer(SocketServer.ForkingMixIn,
+ SocketServer.UnixDatagramServer):
+ pass
class MyMixinServer:
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 8979889..11251b7 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -330,6 +330,20 @@ class SysModuleTest(unittest.TestCase):
self.assertEqual(type(getattr(sys.flags, attr)), int, attr)
self.assert_(repr(sys.flags))
+ def test_clear_type_cache(self):
+ sys._clear_type_cache()
+
+ def test_compact_freelists(self):
+ sys._compact_freelists()
+ r = sys._compact_freelists()
+ # freed blocks shouldn't change
+ self.assertEqual(r[0][2], 0)
+ # fill freelists
+ floats = [float(i) for i in range(12000)]
+ del floats
+ # should free more than 200 blocks
+ r = sys._compact_freelists()
+ self.assert_(r[0][2] > 200, r[0][2])
def test_main():
test.test_support.run_unittest(SysModuleTest)