Author: Matti Picus <[email protected]>
Branch: py3.6
Changeset: r97912:33fe0dcb31b8
Date: 2019-10-31 19:37 +0200
http://bitbucket.org/pypy/pypy/changeset/33fe0dcb31b8/
Log: merge heads
diff --git a/pypy/interpreter/pyframe.py b/pypy/interpreter/pyframe.py
--- a/pypy/interpreter/pyframe.py
+++ b/pypy/interpreter/pyframe.py
@@ -536,7 +536,7 @@
return w_function.name + '()'
if isinstance(w_function, Method):
return self._guess_function_name_parens(None,
w_function.w_function)
- return w_function.getname(self.space) + ' object'
+ return self.space.type(w_function).getname(self.space) + ' object'
def make_arguments(self, nargs, methodcall=False, w_function=None,
fnname=None):
fnname_parens = self._guess_function_name_parens(fnname, w_function)
diff --git a/pypy/interpreter/test/apptest_function.py
b/pypy/interpreter/test/apptest_function.py
--- a/pypy/interpreter/test/apptest_function.py
+++ b/pypy/interpreter/test/apptest_function.py
@@ -542,6 +542,25 @@
im = MethodType(A(), 3)
assert list(map(im, [4])) == [7]
+
+class CallableBadGetattr:
+ def __getattr__(self, name):
+ # Ensure that __getattr__ doesn't get called
+ raise RuntimeError
+
+ def __call__(self, a, b, c):
+ return a, b, c
+
+def test_custom_callable_errors():
+ fn = CallableBadGetattr()
+ with raises(TypeError) as excinfo:
+ fn(*1)
+ assert excinfo.value.args[0].startswith('CallableBadGetattr object')
+ with raises(TypeError) as excinfo:
+ fn()
+ assert excinfo.value.args[0].startswith('__call__()')
+ assert fn(1, 2, 3) == (1, 2, 3)
+
def test_invalid_creation():
def f(): pass
with raises(TypeError):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit