[Jython-checkins] jython: list.__reversed__, is_alive, skip part of test_collections for Jython.

frank.wierzbicki jython-checkins at python.org
Fri Apr 27 00:20:21 CEST 2012


http://hg.python.org/jython/rev/f2ff81193866
changeset:   6622:f2ff81193866
user:        Frank Wierzbicki <fwierzbicki at gmail.com>
date:        Mon Apr 23 21:37:13 2012 -0700
summary:
  list.__reversed__, is_alive, skip part of test_collections for Jython.

files:
  Lib/test/test_collections.py         |  34 ++++++++-------
  Lib/threading.py                     |   2 +
  src/org/python/core/PyList.java      |  11 ++++-
  src/org/python/core/__builtin__.java |   8 ++-
  4 files changed, 36 insertions(+), 19 deletions(-)


diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -143,22 +143,24 @@
         names = list(set(''.join([random.choice(string.ascii_letters)
                                   for j in range(10)]) for i in range(n)))
         n = len(names)
-        Big = namedtuple('Big', names)
-        b = Big(*range(n))
-        self.assertEqual(b, tuple(range(n)))
-        self.assertEqual(Big._make(range(n)), tuple(range(n)))
-        for pos, name in enumerate(names):
-            self.assertEqual(getattr(b, name), pos)
-        repr(b)                                 # make sure repr() doesn't blow-up
-        d = b._asdict()
-        d_expected = dict(zip(names, range(n)))
-        self.assertEqual(d, d_expected)
-        b2 = b._replace(**dict([(names[1], 999),(names[-5], 42)]))
-        b2_expected = range(n)
-        b2_expected[1] = 999
-        b2_expected[-5] = 42
-        self.assertEqual(b2, tuple(b2_expected))
-        self.assertEqual(b._fields, tuple(names))
+        #XXX: currently Jython's classfile limits are exceeded by Big tests.
+        if not test_support.is_jython:
+            Big = namedtuple('Big', names)
+            b = Big(*range(n))
+            self.assertEqual(b, tuple(range(n)))
+            self.assertEqual(Big._make(range(n)), tuple(range(n)))
+            for pos, name in enumerate(names):
+                self.assertEqual(getattr(b, name), pos)
+            repr(b)                                 # make sure repr() doesn't blow-up
+            d = b._asdict()
+            d_expected = dict(zip(names, range(n)))
+            self.assertEqual(d, d_expected)
+            b2 = b._replace(**dict([(names[1], 999),(names[-5], 42)]))
+            b2_expected = range(n)
+            b2_expected[1] = 999
+            b2_expected[-5] = 42
+            self.assertEqual(b2, tuple(b2_expected))
+            self.assertEqual(b._fields, tuple(names))
 
     def test_pickle(self):
         p = TestNT(x=10, y=20, z=30)
diff --git a/Lib/threading.py b/Lib/threading.py
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -136,6 +136,8 @@
     def isAlive(self):
         return self._thread.isAlive()
 
+    is_alive = isAlive
+
     def isDaemon(self):
         return self._thread.isDaemon()
 
diff --git a/src/org/python/core/PyList.java b/src/org/python/core/PyList.java
--- a/src/org/python/core/PyList.java
+++ b/src/org/python/core/PyList.java
@@ -423,6 +423,16 @@
         return new PyFastSequenceIter(this);
     }
 
+    //@Override
+    public PyIterator __reversed__() {
+        return list___reversed__();
+    }
+
+    @ExposedMethod(doc = BuiltinDocs.list___reversed___doc)
+    final synchronized PyIterator list___reversed__() {
+        return new PyReversedIterator(this);
+    }
+
     @ExposedMethod(defaults = "null", doc = BuiltinDocs.list___getslice___doc)
     final synchronized PyObject list___getslice__(PyObject start, PyObject stop, PyObject step) {
         return seq___getslice__(start, stop, step);
@@ -1021,7 +1031,6 @@
                 iter.remove();
             }
         };
-
     }
 
     @Override
diff --git a/src/org/python/core/__builtin__.java b/src/org/python/core/__builtin__.java
--- a/src/org/python/core/__builtin__.java
+++ b/src/org/python/core/__builtin__.java
@@ -1078,12 +1078,16 @@
     }
 
     public static PyObject reversed(PyObject seq) {
-        if (seq.__findattr__("__getitem__") != null && seq.__findattr__("__len__") != null
+        PyObject reversed = seq.__findattr__("__reversed__");
+        if (reversed != null) {
+            return reversed.__call__();
+        } else if (seq.__findattr__("__getitem__") != null && seq.__findattr__("__len__") != null
             && seq.__findattr__("keys") == null) {
-            return new PyReversedIterator(seq);
+            reversed = new PyReversedIterator(seq);
         } else {
             throw Py.TypeError("argument to reversed() must be a sequence");
         }
+        return reversed;
     }
 
     public static PyObject sum(PyObject seq) {

-- 
Repository URL: http://hg.python.org/jython


More information about the Jython-checkins mailing list