Author: Antonio Cuni <[email protected]>
Branch: cpyext-refactor-methodobject
Changeset: r92819:1c00ece5b913
Date: 2017-10-21 15:55 +0200
http://bitbucket.org/pypy/pypy/changeset/1c00ece5b913/
Log: implement call_KEYWORDS and fix the test
diff --git a/pypy/module/cpyext/methodobject.py
b/pypy/module/cpyext/methodobject.py
--- a/pypy/module/cpyext/methodobject.py
+++ b/pypy/module/cpyext/methodobject.py
@@ -99,9 +99,21 @@
decref(space, py_args)
def call_keywords(self, space, w_self, __args__):
- import pdb;pdb.set_trace()
func = rffi.cast(PyCFunctionKwArgs, self.ml.c_ml_meth)
- return generic_cpy_call(space, func, w_self, w_args, w_kw)
+ py_args = tuple_from_args_w(space, __args__.arguments_w)
+ w_kwargs = None
+ if __args__.keywords:
+ # CCC: we should probably have a @jit.look_inside_iff if the
+ # keyword count is constant, as we do in Arguments.unpack
+ w_kwargs = space.newdict()
+ for i in range(len(__args__.keywords)):
+ key = __args__.keywords[i]
+ w_obj = __args__.keywords_w[i]
+ space.setitem(w_kwargs, space.newtext(key), w_obj)
+ try:
+ return generic_cpy_call(space, func, w_self, py_args, w_kwargs)
+ finally:
+ decref(space, py_args)
def call_oldargs(self, space, w_self, __args__):
func = self.ml.c_ml_meth
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit