[Python-checkins] gh-104050: Argument clinic: improve typing around `parse_arg()` methods (#107288)

AlexWaygood webhook-mailer at python.org
Wed Jul 26 06:51:28 EDT 2023


https://github.com/python/cpython/commit/c362678dd289c45ff36ea9c61246a406990befd2
commit: c362678dd289c45ff36ea9c61246a406990befd2
branch: main
author: Alex Waygood <Alex.Waygood at Gmail.com>
committer: AlexWaygood <Alex.Waygood at Gmail.com>
date: 2023年07月26日T11:51:24+01:00
summary:
gh-104050: Argument clinic: improve typing around `parse_arg()` methods (#107288)
files:
M Tools/clinic/clinic.py
diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py
index d9e893f1f1d35..54fd1ae522c0f 100755
--- a/Tools/clinic/clinic.py
+++ b/Tools/clinic/clinic.py
@@ -3046,7 +3046,7 @@ def pre_render(self) -> None:
 """
 pass
 
- def parse_arg(self, argname: str, displayname: str):
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'O&':
 return """
 if (!{converter}({argname}, &{paramname})) {{{{
@@ -3149,7 +3149,7 @@ def converter_init(self, *, accept: TypeSet = {object}) -> None:
 self.default = bool(self.default)
 self.c_default = str(int(self.default))
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'i':
 return """
 {paramname} = _PyLong_AsInt({argname});
@@ -3200,7 +3200,7 @@ def converter_init(self) -> None:
 if self.c_default == '"\'"':
 self.c_default = r"'\''"
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'c':
 return """
 if (PyBytes_Check({argname}) && PyBytes_GET_SIZE({argname}) == 1) {{{{
@@ -3229,7 +3229,7 @@ def converter_init(self, *, bitwise: bool = False) -> None:
 if bitwise:
 self.format_unit = 'B'
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'b':
 return """
 {{{{
@@ -3274,7 +3274,7 @@ class short_converter(CConverter):
 format_unit = 'h'
 c_ignored_default = "0"
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'h':
 return """
 {{{{
@@ -3310,7 +3310,7 @@ def converter_init(self, *, bitwise: bool = False) -> None:
 else:
 self.converter = '_PyLong_UnsignedShort_Converter'
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'H':
 return """
 {paramname} = (unsigned short)PyLong_AsUnsignedLongMask({argname});
@@ -3337,7 +3337,7 @@ def converter_init(
 if type is not None:
 self.type = type
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'i':
 return """
 {paramname} = _PyLong_AsInt({argname});
@@ -3371,7 +3371,7 @@ def converter_init(self, *, bitwise: bool = False) -> None:
 else:
 self.converter = '_PyLong_UnsignedInt_Converter'
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'I':
 return """
 {paramname} = (unsigned int)PyLong_AsUnsignedLongMask({argname});
@@ -3387,7 +3387,7 @@ class long_converter(CConverter):
 format_unit = 'l'
 c_ignored_default = "0"
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'l':
 return """
 {paramname} = PyLong_AsLong({argname});
@@ -3408,7 +3408,7 @@ def converter_init(self, *, bitwise: bool = False) -> None:
 else:
 self.converter = '_PyLong_UnsignedLong_Converter'
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'k':
 return """
 if (!PyLong_Check({argname})) {{{{
@@ -3426,7 +3426,7 @@ class long_long_converter(CConverter):
 format_unit = 'L'
 c_ignored_default = "0"
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'L':
 return """
 {paramname} = PyLong_AsLongLong({argname});
@@ -3447,7 +3447,7 @@ def converter_init(self, *, bitwise: bool = False) -> None:
 else:
 self.converter = '_PyLong_UnsignedLongLong_Converter'
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'K':
 return """
 if (!PyLong_Check({argname})) {{{{
@@ -3472,7 +3472,7 @@ def converter_init(self, *, accept: TypeSet = {int}) -> None:
 else:
 fail("Py_ssize_t_converter: illegal 'accept' argument " + repr(accept))
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'n':
 return """
 {{{{
@@ -3507,7 +3507,7 @@ class size_t_converter(CConverter):
 converter = '_PyLong_Size_t_Converter'
 c_ignored_default = "0"
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'n':
 return """
 {paramname} = PyNumber_AsSsize_t({argname}, PyExc_OverflowError);
@@ -3522,7 +3522,7 @@ class fildes_converter(CConverter):
 type = 'int'
 converter = '_PyLong_FileDescriptor_Converter'
 
- def _parse_arg(self, argname: str, displayname: str) -> str:
+ def _parse_arg(self, argname: str, displayname: str) -> str | None:
 return """
 {paramname} = PyObject_AsFileDescriptor({argname});
 if ({paramname} == -1) {{{{
@@ -3537,7 +3537,7 @@ class float_converter(CConverter):
 format_unit = 'f'
 c_ignored_default = "0.0"
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'f':
 return """
 if (PyFloat_CheckExact({argname})) {{{{
@@ -3559,7 +3559,7 @@ class double_converter(CConverter):
 format_unit = 'd'
 c_ignored_default = "0.0"
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'd':
 return """
 if (PyFloat_CheckExact({argname})) {{{{
@@ -3582,7 +3582,7 @@ class Py_complex_converter(CConverter):
 format_unit = 'D'
 c_ignored_default = "{0.0, 0.0}"
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'D':
 return """
 {paramname} = PyComplex_AsCComplex({argname});
@@ -3671,7 +3671,7 @@ def post_parsing(self) -> str:
 else:
 return ""
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 's':
 return """
 if (!PyUnicode_Check({argname})) {{{{
@@ -3773,7 +3773,7 @@ class PyBytesObject_converter(CConverter):
 format_unit = 'S'
 # accept = {bytes}
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'S':
 return """
 if (!PyBytes_Check({argname})) {{{{
@@ -3790,7 +3790,7 @@ class PyByteArrayObject_converter(CConverter):
 format_unit = 'Y'
 # accept = {bytearray}
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'Y':
 return """
 if (!PyByteArray_Check({argname})) {{{{
@@ -3807,7 +3807,7 @@ class unicode_converter(CConverter):
 default_type = (str, Null, NoneType)
 format_unit = 'U'
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'U':
 return """
 if (!PyUnicode_Check({argname})) {{{{
@@ -3855,7 +3855,7 @@ def cleanup(self) -> str:
 PyMem_Free((void *){name});
 """.format(name=self.name)
 
- def parse_arg(self, argname: str, argnum: str) -> str:
+ def parse_arg(self, argname: str, argnum: str) -> str | None:
 if not self.length:
 if self.accept == {str}:
 return """
@@ -3918,7 +3918,7 @@ def cleanup(self) -> str:
 name = self.name
 return "".join(["if (", name, ".obj) {\n PyBuffer_Release(&", name, ");\n}\n"])
 
- def parse_arg(self, argname: str, displayname: str) -> str:
+ def parse_arg(self, argname: str, displayname: str) -> str | None:
 if self.format_unit == 'y*':
 return """
 if (PyObject_GetBuffer({argname}, &{paramname}, PyBUF_SIMPLE) != 0) {{{{


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /