Author: Antonio Cuni <[email protected]>
Branch: py3k
Changeset: r53016:9a0f43982dd5
Date: 2012-02-29 11:50 +0100
http://bitbucket.org/pypy/pypy/changeset/9a0f43982dd5/

Log:    make sure that bin() calls __index__

diff --git a/pypy/module/__builtin__/app_operation.py 
b/pypy/module/__builtin__/app_operation.py
--- a/pypy/module/__builtin__/app_operation.py
+++ b/pypy/module/__builtin__/app_operation.py
@@ -1,4 +1,5 @@
+import operator
+
 def bin(x):
-    if not isinstance(x, int):
-        raise TypeError("%s object cannot be interpreted as an integer" % 
type(x))
+    x = operator.index(x)
     return x.__format__("#b")
diff --git a/pypy/module/__builtin__/test/test_builtin.py 
b/pypy/module/__builtin__/test/test_builtin.py
--- a/pypy/module/__builtin__/test/test_builtin.py
+++ b/pypy/module/__builtin__/test/test_builtin.py
@@ -77,10 +77,14 @@
             r"""'\'\x00"\n\r\t abcd\x85\xe9\U00012fff\ud800\U0001d121xxx.'"""
 
     def test_bin(self):
+        class Foo:
+            def __index__(self):
+                return 4
         assert bin(0) == "0b0"
         assert bin(-1) == "-0b1"
         assert bin(2) == "0b10"
         assert bin(-2) == "-0b10"
+        assert bin(Foo()) == "0b100"
         raises(TypeError, bin, 0.)
 
     def test_chr(self):
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to