##// END OF EJS Templates
Fix "super" objects pretty printing in PyPy...
Danilo J. S. Bellini -
Show More
@@ -85,7 +85,7 b' import re'
85 import datetime
85 import datetime
86 from collections import deque
86 from collections import deque
87
87
88 from IPython.utils.py3compat import PY3, cast_unicode, string_types
88 from IPython.utils.py3compat import PY3, PYPY, cast_unicode, string_types
89 from IPython.utils.encoding import get_stream_enc
89 from IPython.utils.encoding import get_stream_enc
90
90
91 from io import StringIO
91 from io import StringIO
@@ -632,7 +632,11 b' def _super_pprint(obj, p, cycle):'
632 p.pretty(obj.__thisclass__)
632 p.pretty(obj.__thisclass__)
633 p.text(',')
633 p.text(',')
634 p.breakable()
634 p.breakable()
635 p.pretty(obj.__self__)
635 if PYPY: # In PyPy, super() objects doesn't have __self__ attributes
636 dself = obj.__repr__.__self__
637 p.pretty(None if dself is obj else dself)
638 else:
639 p.pretty(obj.__self__)
636 p.end_group(8, '>')
640 p.end_group(8, '>')
637
641
638
642
@@ -188,12 +188,14 b' class SB(SA):'
188 pass
188 pass
189
189
190 def test_super_repr():
190 def test_super_repr():
191 # "<super: module_name.SA, None>"
191 output = pretty.pretty(super(SA))
192 output = pretty.pretty(super(SA))
192 nt.assert_in("SA", output)
193 nt.assert_regexp_matches(output, r"<super: \S+.SA, None>")
193
194
195 # "<super: module_name.SA, <module_name.SB at 0x...>>"
194 sb = SB()
196 sb = SB()
195 output = pretty.pretty(super(SA, sb))
197 output = pretty.pretty(super(SA, sb))
196 nt.assert_in("SA", output)
198 nt.assert_regexp_matches(output, r"<super: \S+.SA,\s+<\S+.SB at 0x\S+>>")
197
199
198
200
199 def test_long_list():
201 def test_long_list():
General Comments 0
You need to be logged in to leave comments. Login now