[pypy-commit] pypy space-newtext: add a 'text' unwrap_spec

cfbolz pypy.commits at gmail.com
Tue Dec 6 06:42:52 EST 2016


Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: space-newtext
Changeset: r88900:8f14d8ae5141
Date: 2016-12-06 12:22 +0100
http://bitbucket.org/pypy/pypy/changeset/8f14d8ae5141/

Log:	add a 'text' unwrap_spec

diff --git a/pypy/interpreter/gateway.py b/pypy/interpreter/gateway.py
--- a/pypy/interpreter/gateway.py
+++ b/pypy/interpreter/gateway.py
@@ -151,6 +151,9 @@
     def visit_bytes(self, el, app_sig):
         self.checked_space_method(el, app_sig)
 
+    def visit_text(self, el, app_sig):
+        self.checked_space_method(el, app_sig)
+
     def visit_nonnegint(self, el, app_sig):
         self.checked_space_method(el, app_sig)
 
@@ -283,6 +286,9 @@
     def visit_bytes(self, typ):
         self.run_args.append("space.bytes_w(%s)" % (self.scopenext(),))
 
+    def visit_text(self, typ):
+        self.run_args.append("space.text_w(%s)" % (self.scopenext(),))
+
     def visit_nonnegint(self, typ):
         self.run_args.append("space.gateway_nonnegint_w(%s)" % (
             self.scopenext(),))
@@ -436,6 +442,9 @@
     def visit_bytes(self, typ):
         self.unwrap.append("space.bytes_w(%s)" % (self.nextarg(),))
 
+    def visit_text(self, typ):
+        self.unwrap.append("space.text_w(%s)" % (self.nextarg(),))
+
     def visit_nonnegint(self, typ):
         self.unwrap.append("space.gateway_nonnegint_w(%s)" % (self.nextarg(),))
 
diff --git a/pypy/interpreter/test/test_gateway.py b/pypy/interpreter/test/test_gateway.py
--- a/pypy/interpreter/test/test_gateway.py
+++ b/pypy/interpreter/test/test_gateway.py
@@ -253,7 +253,6 @@
         # we can't use the "bytes" object for the unwrap_spec, because that's
         # an alias for "str" on the underlying Python2
         space = self.space
-        w = space.wrap
         def g(space, b):
             return space.newbytes(b)
         app_g = gateway.interp2app(g, unwrap_spec=[gateway.ObjSpace, 'bytes'])
@@ -263,6 +262,17 @@
         assert self.space.eq_w(space.call_function(w_app_g, space.newbytes("abc")),
                                space.newbytes("abc"))
 
+    def test_interp2app_unwrap_spec_text(self):
+        space = self.space
+        def g(space, b):
+            return space.newbytes(b)
+        app_g = gateway.interp2app(g, unwrap_spec=[gateway.ObjSpace, 'text'])
+        app_g2 = gateway.interp2app(g, unwrap_spec=[gateway.ObjSpace, 'text'])
+        assert app_g is app_g2
+        w_app_g = space.wrap(app_g)
+        assert self.space.eq_w(space.call_function(w_app_g, space.newtext("abc")),
+                               space.newtext("abc"))
+
     def test_caching_methods(self):
         class Base(gateway.W_Root):
             def f(self):


More information about the pypy-commit mailing list