[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