[pypy-svn] pypy fast-forward: CPython issue5037: proxy __unicode__ correctly
amauryfa
commits-noreply at bitbucket.org
Tue Jan 4 19:02:43 CET 2011
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: fast-forward
Changeset: r40392:08bb0e36d878
Date: 2011-01-04 19:01 +0100
http://bitbucket.org/pypy/pypy/changeset/08bb0e36d878/
Log: CPython issue5037: proxy __unicode__ correctly
diff --git a/pypy/module/_weakref/interp__weakref.py b/pypy/module/_weakref/interp__weakref.py
--- a/pypy/module/_weakref/interp__weakref.py
+++ b/pypy/module/_weakref/interp__weakref.py
@@ -297,6 +297,15 @@
callable_proxy_typedef_dict[special_method] = interp2app(
func, unwrap_spec=[ObjSpace] + [W_Root] * arity)
+# __unicode__ is not yet a space operation
+def proxy_unicode(space, w_obj):
+ w_obj = force(space, w_obj)
+ return space.call_method(w_obj, '__unicode__')
+proxy_typedef_dict['__unicode__'] = interp2app(
+ proxy_unicode, unwrap_spec=[ObjSpace, W_Root])
+callable_proxy_typedef_dict['__unicode__'] = interp2app(
+ proxy_unicode, unwrap_spec=[ObjSpace, W_Root])
+
W_Proxy.typedef = TypeDef("weakproxy",
__new__ = interp2app(descr__new__proxy),
diff --git a/pypy/module/_weakref/test/test_weakref.py b/pypy/module/_weakref/test/test_weakref.py
--- a/pypy/module/_weakref/test/test_weakref.py
+++ b/pypy/module/_weakref/test/test_weakref.py
@@ -396,6 +396,18 @@
print s
assert "dead" in s
+ def test_unicode(self):
+ import _weakref
+ class C(object):
+ def __str__(self):
+ return "string"
+ def __unicode__(self):
+ return u"unicode"
+ instance = C()
+ assert "__unicode__" in dir(_weakref.proxy(instance))
+ assert str(_weakref.proxy(instance)) == "string"
+ assert unicode(_weakref.proxy(instance)) == u"unicode"
+
def test_eq(self):
import _weakref
class A(object):
More information about the Pypy-commit
mailing list