[Python-checkins] gh-104050: Argument Clinic: Annotate nested function parser_body() in the CLanguage class (#106699)
erlend-aasland
webhook-mailer at python.org
Wed Jul 12 18:49:33 EDT 2023
https://github.com/python/cpython/commit/2d43beec225a0495ffa0344f961b99717e5f1106
commit: 2d43beec225a0495ffa0344f961b99717e5f1106
branch: main
author: Erlend E. Aasland <erlend at python.org>
committer: erlend-aasland <erlend.aasland at protonmail.com>
date: 2023-07-12T22:49:30Z
summary:
gh-104050: Argument Clinic: Annotate nested function parser_body() in the CLanguage class (#106699)
files:
M Tools/clinic/clinic.py
diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py
index ce3039cdd8bff..8a75aba1e4de9 100755
--- a/Tools/clinic/clinic.py
+++ b/Tools/clinic/clinic.py
@@ -898,22 +898,24 @@ 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 = ()
- def parser_body(prototype, *fields, declarations=''):
+ def parser_body(
+ prototype: str,
+ *fields: str,
+ declarations: str = ''
+ ) -> str:
nonlocal parser_body_fields
add, output = text_accumulator()
add(prototype)
parser_body_fields = fields
- fields = list(fields)
- fields.insert(0, normalize_snippet("""
+ preamble = normalize_snippet("""
{{
{return_value_declaration}
{parser_declarations}
{declarations}
{initializers}
- """) + "\n")
- # just imagine--your code is here in the middle
- fields.append(normalize_snippet("""
+ """) + "\n"
+ finale = normalize_snippet("""
{modifications}
{return_value} = {c_basename}_impl({impl_arguments});
{return_conversion}
@@ -923,8 +925,8 @@ def parser_body(prototype, *fields, declarations=''):
{cleanup}
return return_value;
}}
- """))
- for field in fields:
+ """)
+ for field in preamble, *fields, finale:
add('\n')
add(field)
return linear_format(output(), parser_declarations=declarations)
More information about the Python-checkins
mailing list