Skip to content

Commit c362678

Browse files
authored
gh-104050: Argument clinic: improve typing around parse_arg() methods (#107288)
1 parent d96ca41 commit c362678

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

Tools/clinic/clinic.py

+24-24
Original file line numberDiff line numberDiff line change
@@ -3046,7 +3046,7 @@ def pre_render(self) -> None:
30463046
"""
30473047
pass
30483048

3049-
def parse_arg(self, argname: str, displayname: str):
3049+
def parse_arg(self, argname: str, displayname: str) -> str | None:
30503050
if self.format_unit == 'O&':
30513051
return """
30523052
if (!{converter}({argname}, &{paramname})) {{{{
@@ -3149,7 +3149,7 @@ def converter_init(self, *, accept: TypeSet = {object}) -> None:
31493149
self.default = bool(self.default)
31503150
self.c_default = str(int(self.default))
31513151

3152-
def parse_arg(self, argname: str, displayname: str) -> str:
3152+
def parse_arg(self, argname: str, displayname: str) -> str | None:
31533153
if self.format_unit == 'i':
31543154
return """
31553155
{paramname} = _PyLong_AsInt({argname});
@@ -3200,7 +3200,7 @@ def converter_init(self) -> None:
32003200
if self.c_default == '"\'"':
32013201
self.c_default = r"'\''"
32023202

3203-
def parse_arg(self, argname: str, displayname: str) -> str:
3203+
def parse_arg(self, argname: str, displayname: str) -> str | None:
32043204
if self.format_unit == 'c':
32053205
return """
32063206
if (PyBytes_Check({argname}) && PyBytes_GET_SIZE({argname}) == 1) {{{{
@@ -3229,7 +3229,7 @@ def converter_init(self, *, bitwise: bool = False) -> None:
32293229
if bitwise:
32303230
self.format_unit = 'B'
32313231

3232-
def parse_arg(self, argname: str, displayname: str) -> str:
3232+
def parse_arg(self, argname: str, displayname: str) -> str | None:
32333233
if self.format_unit == 'b':
32343234
return """
32353235
{{{{
@@ -3274,7 +3274,7 @@ class short_converter(CConverter):
32743274
format_unit = 'h'
32753275
c_ignored_default = "0"
32763276

3277-
def parse_arg(self, argname: str, displayname: str) -> str:
3277+
def parse_arg(self, argname: str, displayname: str) -> str | None:
32783278
if self.format_unit == 'h':
32793279
return """
32803280
{{{{
@@ -3310,7 +3310,7 @@ def converter_init(self, *, bitwise: bool = False) -> None:
33103310
else:
33113311
self.converter = '_PyLong_UnsignedShort_Converter'
33123312

3313-
def parse_arg(self, argname: str, displayname: str) -> str:
3313+
def parse_arg(self, argname: str, displayname: str) -> str | None:
33143314
if self.format_unit == 'H':
33153315
return """
33163316
{paramname} = (unsigned short)PyLong_AsUnsignedLongMask({argname});
@@ -3337,7 +3337,7 @@ def converter_init(
33373337
if type is not None:
33383338
self.type = type
33393339

3340-
def parse_arg(self, argname: str, displayname: str) -> str:
3340+
def parse_arg(self, argname: str, displayname: str) -> str | None:
33413341
if self.format_unit == 'i':
33423342
return """
33433343
{paramname} = _PyLong_AsInt({argname});
@@ -3371,7 +3371,7 @@ def converter_init(self, *, bitwise: bool = False) -> None:
33713371
else:
33723372
self.converter = '_PyLong_UnsignedInt_Converter'
33733373

3374-
def parse_arg(self, argname: str, displayname: str) -> str:
3374+
def parse_arg(self, argname: str, displayname: str) -> str | None:
33753375
if self.format_unit == 'I':
33763376
return """
33773377
{paramname} = (unsigned int)PyLong_AsUnsignedLongMask({argname});
@@ -3387,7 +3387,7 @@ class long_converter(CConverter):
33873387
format_unit = 'l'
33883388
c_ignored_default = "0"
33893389

3390-
def parse_arg(self, argname: str, displayname: str) -> str:
3390+
def parse_arg(self, argname: str, displayname: str) -> str | None:
33913391
if self.format_unit == 'l':
33923392
return """
33933393
{paramname} = PyLong_AsLong({argname});
@@ -3408,7 +3408,7 @@ def converter_init(self, *, bitwise: bool = False) -> None:
34083408
else:
34093409
self.converter = '_PyLong_UnsignedLong_Converter'
34103410

3411-
def parse_arg(self, argname: str, displayname: str) -> str:
3411+
def parse_arg(self, argname: str, displayname: str) -> str | None:
34123412
if self.format_unit == 'k':
34133413
return """
34143414
if (!PyLong_Check({argname})) {{{{
@@ -3426,7 +3426,7 @@ class long_long_converter(CConverter):
34263426
format_unit = 'L'
34273427
c_ignored_default = "0"
34283428

3429-
def parse_arg(self, argname: str, displayname: str) -> str:
3429+
def parse_arg(self, argname: str, displayname: str) -> str | None:
34303430
if self.format_unit == 'L':
34313431
return """
34323432
{paramname} = PyLong_AsLongLong({argname});
@@ -3447,7 +3447,7 @@ def converter_init(self, *, bitwise: bool = False) -> None:
34473447
else:
34483448
self.converter = '_PyLong_UnsignedLongLong_Converter'
34493449

3450-
def parse_arg(self, argname: str, displayname: str) -> str:
3450+
def parse_arg(self, argname: str, displayname: str) -> str | None:
34513451
if self.format_unit == 'K':
34523452
return """
34533453
if (!PyLong_Check({argname})) {{{{
@@ -3472,7 +3472,7 @@ def converter_init(self, *, accept: TypeSet = {int}) -> None:
34723472
else:
34733473
fail("Py_ssize_t_converter: illegal 'accept' argument " + repr(accept))
34743474

3475-
def parse_arg(self, argname: str, displayname: str) -> str:
3475+
def parse_arg(self, argname: str, displayname: str) -> str | None:
34763476
if self.format_unit == 'n':
34773477
return """
34783478
{{{{
@@ -3507,7 +3507,7 @@ class size_t_converter(CConverter):
35073507
converter = '_PyLong_Size_t_Converter'
35083508
c_ignored_default = "0"
35093509

3510-
def parse_arg(self, argname: str, displayname: str) -> str:
3510+
def parse_arg(self, argname: str, displayname: str) -> str | None:
35113511
if self.format_unit == 'n':
35123512
return """
35133513
{paramname} = PyNumber_AsSsize_t({argname}, PyExc_OverflowError);
@@ -3522,7 +3522,7 @@ class fildes_converter(CConverter):
35223522
type = 'int'
35233523
converter = '_PyLong_FileDescriptor_Converter'
35243524

3525-
def _parse_arg(self, argname: str, displayname: str) -> str:
3525+
def _parse_arg(self, argname: str, displayname: str) -> str | None:
35263526
return """
35273527
{paramname} = PyObject_AsFileDescriptor({argname});
35283528
if ({paramname} == -1) {{{{
@@ -3537,7 +3537,7 @@ class float_converter(CConverter):
35373537
format_unit = 'f'
35383538
c_ignored_default = "0.0"
35393539

3540-
def parse_arg(self, argname: str, displayname: str) -> str:
3540+
def parse_arg(self, argname: str, displayname: str) -> str | None:
35413541
if self.format_unit == 'f':
35423542
return """
35433543
if (PyFloat_CheckExact({argname})) {{{{
@@ -3559,7 +3559,7 @@ class double_converter(CConverter):
35593559
format_unit = 'd'
35603560
c_ignored_default = "0.0"
35613561

3562-
def parse_arg(self, argname: str, displayname: str) -> str:
3562+
def parse_arg(self, argname: str, displayname: str) -> str | None:
35633563
if self.format_unit == 'd':
35643564
return """
35653565
if (PyFloat_CheckExact({argname})) {{{{
@@ -3582,7 +3582,7 @@ class Py_complex_converter(CConverter):
35823582
format_unit = 'D'
35833583
c_ignored_default = "{0.0, 0.0}"
35843584

3585-
def parse_arg(self, argname: str, displayname: str) -> str:
3585+
def parse_arg(self, argname: str, displayname: str) -> str | None:
35863586
if self.format_unit == 'D':
35873587
return """
35883588
{paramname} = PyComplex_AsCComplex({argname});
@@ -3671,7 +3671,7 @@ def post_parsing(self) -> str:
36713671
else:
36723672
return ""
36733673

3674-
def parse_arg(self, argname: str, displayname: str) -> str:
3674+
def parse_arg(self, argname: str, displayname: str) -> str | None:
36753675
if self.format_unit == 's':
36763676
return """
36773677
if (!PyUnicode_Check({argname})) {{{{
@@ -3773,7 +3773,7 @@ class PyBytesObject_converter(CConverter):
37733773
format_unit = 'S'
37743774
# accept = {bytes}
37753775

3776-
def parse_arg(self, argname: str, displayname: str) -> str:
3776+
def parse_arg(self, argname: str, displayname: str) -> str | None:
37773777
if self.format_unit == 'S':
37783778
return """
37793779
if (!PyBytes_Check({argname})) {{{{
@@ -3790,7 +3790,7 @@ class PyByteArrayObject_converter(CConverter):
37903790
format_unit = 'Y'
37913791
# accept = {bytearray}
37923792

3793-
def parse_arg(self, argname: str, displayname: str) -> str:
3793+
def parse_arg(self, argname: str, displayname: str) -> str | None:
37943794
if self.format_unit == 'Y':
37953795
return """
37963796
if (!PyByteArray_Check({argname})) {{{{
@@ -3807,7 +3807,7 @@ class unicode_converter(CConverter):
38073807
default_type = (str, Null, NoneType)
38083808
format_unit = 'U'
38093809

3810-
def parse_arg(self, argname: str, displayname: str) -> str:
3810+
def parse_arg(self, argname: str, displayname: str) -> str | None:
38113811
if self.format_unit == 'U':
38123812
return """
38133813
if (!PyUnicode_Check({argname})) {{{{
@@ -3855,7 +3855,7 @@ def cleanup(self) -> str:
38553855
PyMem_Free((void *){name});
38563856
""".format(name=self.name)
38573857

3858-
def parse_arg(self, argname: str, argnum: str) -> str:
3858+
def parse_arg(self, argname: str, argnum: str) -> str | None:
38593859
if not self.length:
38603860
if self.accept == {str}:
38613861
return """
@@ -3918,7 +3918,7 @@ def cleanup(self) -> str:
39183918
name = self.name
39193919
return "".join(["if (", name, ".obj) {\n PyBuffer_Release(&", name, ");\n}\n"])
39203920

3921-
def parse_arg(self, argname: str, displayname: str) -> str:
3921+
def parse_arg(self, argname: str, displayname: str) -> str | None:
39223922
if self.format_unit == 'y*':
39233923
return """
39243924
if (PyObject_GetBuffer({argname}, &{paramname}, PyBUF_SIMPLE) != 0) {{{{

0 commit comments

Comments
 (0)