[pypy-commit] pypy py3k: Add FunctionType.__globals__, and update some tests because "import new" fails with py3k.

amauryfa noreply at buildbot.pypy.org
Wed Oct 12 01:45:37 CEST 2011


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: py3k
Changeset: r47960:b9757b3532e9
Date: 2011-10-12 01:15 +0200
http://bitbucket.org/pypy/pypy/changeset/b9757b3532e9/

Log:	Add FunctionType.__globals__, and update some tests because "import
	new" fails with py3k.

diff --git a/pypy/interpreter/test/test_function.py b/pypy/interpreter/test/test_function.py
--- a/pypy/interpreter/test/test_function.py
+++ b/pypy/interpreter/test/test_function.py
@@ -34,6 +34,7 @@
         assert f.__dict__ is f.func_dict
         assert f.__code__ is f.func_code
         assert f.__defaults__ is f.func_defaults
+        assert f.__globals__ is f.func_globals
         assert hasattr(f, '__class__')
 
     def test_classmethod(self):
@@ -438,16 +439,16 @@
         class A(object):
             def __call__(self, x):
                 return x
-        import new
-        im = new.instancemethod(A(), 3)
+        import types
+        im = types.MethodType(A(), 3)
         assert im() == 3
 
     def test_method_w_callable_call_function(self):
         class A(object):
             def __call__(self, x, y):
                 return x+y
-        import new
-        im = new.instancemethod(A(), 3)
+        import types
+        im = types.MethodType(A(), 3)
         assert map(im, [4]) == [7]
 
     def test_unbound_typecheck(self):
@@ -474,15 +475,15 @@
         assert Fun[:2] == ('Fun', ())
 
     def test_unbound_abstract_typecheck(self):
-        import new
+        import types
         def f(*args):
             return args
-        m = new.instancemethod(f, None, "foobar")
+        m = types.MethodType(f, None, "foobar")
         raises(TypeError, m)
         raises(TypeError, m, None)
         raises(TypeError, m, "egg")
 
-        m = new.instancemethod(f, None, (str, int))     # really obscure...
+        m = types.MethodType(f, None, (str, int))     # really obscure...
         assert m(4) == (4,)
         assert m("uh") == ("uh",)
         raises(TypeError, m, [])
@@ -506,7 +507,7 @@
         BSub1.__bases__ = (BBase,)
         BSub2.__bases__ = (BBase,)
         x = MyInst(BSub1)
-        m = new.instancemethod(f, None, BSub1)
+        m = types.MethodType(f, None, BSub1)
         assert m(x) == (x,)
         raises(TypeError, m, MyInst(BBase))
         raises(TypeError, m, MyInst(BSub2))
@@ -514,9 +515,9 @@
         raises(TypeError, m, MyInst(42))
 
     def test_invalid_creation(self):
-        import new
+        import types
         def f(): pass
-        raises(TypeError, new.instancemethod, f, None)
+        raises(TypeError, types.MethodType, f, None)
 
     def test_empty_arg_kwarg_call(self):
         def f():
diff --git a/pypy/interpreter/typedef.py b/pypy/interpreter/typedef.py
--- a/pypy/interpreter/typedef.py
+++ b/pypy/interpreter/typedef.py
@@ -768,6 +768,7 @@
     __name__ = getset_func_name,
     __dict__ = getset_func_dict,
     __defaults__ = getset_func_defaults,
+    __globals__ = interp_attrproperty_w('w_func_globals', cls=Function),
     __module__ = getset___module__,
     __weakref__ = make_weakref_descr(Function),
     )


More information about the pypy-commit mailing list