[Python-checkins] gh-104050: Argument Clinic: Annotate `output_templates()` (#106732)
AlexWaygood
webhook-mailer at python.org
Fri Jul 14 08:21:01 EDT 2023
https://github.com/python/cpython/commit/7c95345e4f93f4a2475418f17df5aae39dea861f
commit: 7c95345e4f93f4a2475418f17df5aae39dea861f
branch: main
author: Erlend E. Aasland <erlend at python.org>
committer: AlexWaygood <Alex.Waygood at Gmail.com>
date: 2023-07-14T12:20:58Z
summary:
gh-104050: Argument Clinic: Annotate `output_templates()` (#106732)
Co-authored-by: AlexWaygood <alex.waygood at gmail.com>
files:
M Tools/clinic/clinic.py
diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py
index 2dce33690993d..726ebc04f55bd 100755
--- a/Tools/clinic/clinic.py
+++ b/Tools/clinic/clinic.py
@@ -792,11 +792,14 @@ def docstring_for_c_string(
add('"')
return ''.join(text)
- def output_templates(self, f):
+ def output_templates(
+ self,
+ f: Function
+ ) -> dict[str, str]:
parameters = list(f.parameters.values())
assert parameters
- assert isinstance(parameters[0].converter, self_converter)
- del parameters[0]
+ first_param = parameters.pop(0)
+ assert isinstance(first_param.converter, self_converter)
requires_defining_class = False
if parameters and isinstance(parameters[0].converter, defining_class_converter):
requires_defining_class = True
@@ -809,7 +812,7 @@ def output_templates(self, f):
new_or_init = f.kind.new_or_init
- vararg = NO_VARARG
+ vararg: int | str = NO_VARARG
pos_only = min_pos = max_pos = min_kw_only = pseudo_args = 0
for i, p in enumerate(parameters, 1):
if p.is_keyword_only():
@@ -897,7 +900,7 @@ def output_templates(self, f):
# parser_body_fields remembers the fields passed in to the
# previous call to parser_body. this is used for an awful hack.
- parser_body_fields = ()
+ parser_body_fields: tuple[str, ...] = ()
def parser_body(
prototype: str,
*fields: str,
@@ -932,6 +935,7 @@ def parser_body(
return linear_format(output(), parser_declarations=declarations)
if not parameters:
+ parser_code: list[str] | None
if not requires_defining_class:
# no parameters, METH_NOARGS
flags = "METH_NOARGS"
@@ -1165,7 +1169,7 @@ def parser_body(
flags = 'METH_METHOD|' + flags
parser_prototype = parser_prototype_def_class
- add_label = None
+ add_label: str | None = None
for i, p in enumerate(parameters):
if isinstance(p.converter, defining_class_converter):
raise ValueError("defining_class should be the first "
@@ -1308,6 +1312,8 @@ def parser_body(
cpp_if = "#if " + conditional
cpp_endif = "#endif /* " + conditional + " */"
+ assert clinic is not None
+ assert f.full_name is not None
if methoddef_define and f.full_name not in clinic.ifndef_symbols:
clinic.ifndef_symbols.add(f.full_name)
methoddef_ifndef = normalize_snippet("""
More information about the Python-checkins
mailing list