[pypy-svn] r58776 - in pypy/branch/2.5-merge/pypy/module/operator: . test

jlg at codespeak.net jlg at codespeak.net
Tue Oct 7 17:45:06 CEST 2008


Author: jlg
Date: Tue Oct  7 17:45:05 2008
New Revision: 58776

Modified:
   pypy/branch/2.5-merge/pypy/module/operator/app_operator.py
   pypy/branch/2.5-merge/pypy/module/operator/test/test_operator.py
Log:
isSequenceType() returns False with mapping type

Modified: pypy/branch/2.5-merge/pypy/module/operator/app_operator.py
==============================================================================
--- pypy/branch/2.5-merge/pypy/module/operator/app_operator.py	(original)
+++ pypy/branch/2.5-merge/pypy/module/operator/app_operator.py	Tue Oct  7 17:45:05 2008
@@ -48,7 +48,7 @@
 
 def isSequenceType(obj,):
     'isSequenceType(a) -- Return True if a has a sequence type, False otherwise.'
-    return hasattr(obj, '__getitem__')
+    return hasattr(obj, '__getitem__') and not hasattr(obj, 'keys')
 
 def repeat(obj, num):
     'repeat(a, b) -- Return a * b, where a is a sequence, and b is an integer.'

Modified: pypy/branch/2.5-merge/pypy/module/operator/test/test_operator.py
==============================================================================
--- pypy/branch/2.5-merge/pypy/module/operator/test/test_operator.py	(original)
+++ pypy/branch/2.5-merge/pypy/module/operator/test/test_operator.py	Tue Oct  7 17:45:05 2008
@@ -129,3 +129,15 @@
         assert operator.repeat(a, 0) == []
         raises(TypeError, operator.repeat, 6, 7)
 
+    def test_isSequenceType(self):
+        import operator
+
+        raises(TypeError, operator.isSequenceType)
+        assert operator.isSequenceType(dir())
+        assert operator.isSequenceType(())
+        assert operator.isSequenceType(xrange(10))
+        assert operator.isSequenceType('yeahbuddy')
+        assert not operator.isSequenceType(3)
+        class Dict(dict): pass
+        assert not operator.isSequenceType(Dict())
+



More information about the Pypy-commit mailing list