[Python-checkins] bpo-38787: Fix Argument Clinic defining_class_converter (GH-20074)
Victor Stinner
webhook-mailer at python.org
Wed May 13 18:31:39 EDT 2020
https://github.com/python/cpython/commit/97e1568325e4d8eff2fc80eeb174b3f3e5d1c350
commit: 97e1568325e4d8eff2fc80eeb174b3f3e5d1c350
branch: master
author: Victor Stinner <vstinner at python.org>
committer: GitHub <noreply at github.com>
date: 2020-05-14T00:31:31+02:00
summary:
bpo-38787: Fix Argument Clinic defining_class_converter (GH-20074)
Don't hardcode defining_class parameter name to "cls":
* Define CConverter.set_template_dict(): do nothing by default
* CLanguage.render_function() now calls set_template_dict() on all
converters.
files:
M Tools/clinic/clinic.py
diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py
index 281a749a935cc..b07ffdd928f15 100755
--- a/Tools/clinic/clinic.py
+++ b/Tools/clinic/clinic.py
@@ -724,7 +724,7 @@ def output_templates(self, f):
parser_prototype_def_class = normalize_snippet("""
static PyObject *
- {c_basename}({self_type}{self_name}, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
+ {c_basename}({self_type}{self_name}, PyTypeObject *{defining_class_name}, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
""")
# parser_body_fields remembers the fields passed in to the
@@ -1305,7 +1305,8 @@ def render_function(self, clinic, f):
template_dict['docstring'] = self.docstring_for_c_string(f)
template_dict['self_name'] = template_dict['self_type'] = template_dict['self_type_check'] = ''
- f_self.converter.set_template_dict(template_dict)
+ for converter in converters:
+ converter.set_template_dict(template_dict)
f.return_converter.render(f, data)
template_dict['impl_return_type'] = f.return_converter.type
@@ -2698,6 +2699,10 @@ def parse_arg(self, argname, displayname):
""".format(argname=argname, paramname=self.name, cast=cast)
return None
+ def set_template_dict(self, template_dict):
+ pass
+
+
type_checks = {
'&PyLong_Type': ('PyLong_Check', 'int'),
'&PyTuple_Type': ('PyTuple_Check', 'tuple'),
More information about the Python-checkins
mailing list