gh-108494: Argument Clinic: fix option group for Limited C API (#108574)

Use PyTuple_Size() instead of PyTuple_GET_SIZE().
This commit is contained in:
Victor Stinner 2023-08-29 13:33:28 +02:00 committed by GitHub
parent 0d140b8c5e
commit e675e515ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1664,7 +1664,8 @@ class CLanguage(Language):
def render_option_group_parsing( def render_option_group_parsing(
self, self,
f: Function, f: Function,
template_dict: TemplateDict template_dict: TemplateDict,
limited_capi: bool,
) -> None: ) -> None:
# positional only, grouped, optional arguments! # positional only, grouped, optional arguments!
# can be optional on the left or right. # can be optional on the left or right.
@ -1712,7 +1713,11 @@ class CLanguage(Language):
count_min = sys.maxsize count_min = sys.maxsize
count_max = -1 count_max = -1
add("switch (PyTuple_GET_SIZE(args)) {\n") if limited_capi:
nargs = 'PyTuple_Size(args)'
else:
nargs = 'PyTuple_GET_SIZE(args)'
add(f"switch ({nargs}) {{\n")
for subset in permute_optional_groups(left, required, right): for subset in permute_optional_groups(left, required, right):
count = len(subset) count = len(subset)
count_min = min(count_min, count) count_min = min(count_min, count)
@ -1869,7 +1874,8 @@ class CLanguage(Language):
template_dict['unpack_max'] = str(unpack_max) template_dict['unpack_max'] = str(unpack_max)
if has_option_groups: if has_option_groups:
self.render_option_group_parsing(f, template_dict) self.render_option_group_parsing(f, template_dict,
limited_capi=clinic.limited_capi)
# buffers, not destination # buffers, not destination
for name, destination in clinic.destination_buffers.items(): for name, destination in clinic.destination_buffers.items():