gh-104050: Add more type annotations to Argument Clinic (#104628)

Annotate the following:

- methods of class Class
- methods of class Module
- methods of class PythonParser
- function compute_checksum()
- function parse_file()
- global variable unsupported_special_methods
This commit is contained in:
Erlend E. Aasland 2023-05-19 00:57:26 +02:00 committed by GitHub
parent 86ee49f469
commit 94c8edabd3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2229,7 +2229,12 @@ impl_definition block
return module, cls return module, cls
def parse_file(filename, *, verify=True, output=None): def parse_file(
filename: str,
*,
verify: bool = True,
output: str | None = None
) -> None:
if not output: if not output:
output = filename output = filename
@ -2261,7 +2266,10 @@ def parse_file(filename, *, verify=True, output=None):
write_file(fn, data) write_file(fn, data)
def compute_checksum(input, length=None): def compute_checksum(
input: str | None,
length: int | None = None
) -> str:
input = input or '' input = input or ''
s = hashlib.sha1(input.encode('utf-8')).hexdigest() s = hashlib.sha1(input.encode('utf-8')).hexdigest()
if length: if length:
@ -2272,30 +2280,46 @@ def compute_checksum(input, length=None):
class PythonParser: class PythonParser:
def __init__(self, clinic): def __init__(self, clinic: Clinic) -> None:
pass pass
def parse(self, block): def parse(self, block: Block) -> None:
s = io.StringIO() s = io.StringIO()
with OverrideStdioWith(s): with OverrideStdioWith(s):
exec(block.input) exec(block.input)
block.output = s.getvalue() block.output = s.getvalue()
ModuleDict = dict[str, "Module"]
class Module: class Module:
def __init__(self, name, module=None): def __init__(
self,
name: str,
module = None
) -> None:
self.name = name self.name = name
self.module = self.parent = module self.module = self.parent = module
self.modules = collections.OrderedDict() self.modules: ModuleDict = collections.OrderedDict()
self.classes = collections.OrderedDict() self.classes: ClassDict = collections.OrderedDict()
self.functions = [] self.functions: list[Function] = []
def __repr__(self): def __repr__(self) -> str:
return "<clinic.Module " + repr(self.name) + " at " + str(id(self)) + ">" return "<clinic.Module " + repr(self.name) + " at " + str(id(self)) + ">"
ClassDict = dict[str, "Class"]
class Class: class Class:
def __init__(self, name, module=None, cls=None, typedef=None, type_object=None): def __init__(
self,
name: str,
module: Module | None = None,
cls = None,
typedef: str | None = None,
type_object: str | None = None
) -> None:
self.name = name self.name = name
self.module = module self.module = module
self.cls = cls self.cls = cls
@ -2303,13 +2327,14 @@ class Class:
self.type_object = type_object self.type_object = type_object
self.parent = cls or module self.parent = cls or module
self.classes = collections.OrderedDict() self.classes: ClassDict = collections.OrderedDict()
self.functions = [] self.functions: list[Function] = []
def __repr__(self): def __repr__(self) -> str:
return "<clinic.Class " + repr(self.name) + " at " + str(id(self)) + ">" return "<clinic.Class " + repr(self.name) + " at " + str(id(self)) + ">"
unsupported_special_methods = set("""
unsupported_special_methods: set[str] = set("""
__abs__ __abs__
__add__ __add__