diff options
author | Erlend E. Aasland <erlend@python.org> | 2023-07-17 00:04:10 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-17 00:04:10 (GMT) |
commit | 383dcbebcda576e3a3fd18c9246364f67bb65df5 (patch) | |
tree | 632e522d9989d6fee4fab223522df6bacc7fbc74 | |
parent | c41320701b28904064c89a0a29775efed6b6d053 (diff) | |
download | cpython-383dcbebcda576e3a3fd18c9246364f67bb65df5.zip cpython-383dcbebcda576e3a3fd18c9246364f67bb65df5.tar.gz cpython-383dcbebcda576e3a3fd18c9246364f67bb65df5.tar.bz2 |
gh-104050: Argument Clinic: Annotate Clinic.parse() (#106760)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
-rwxr-xr-x | Tools/clinic/clinic.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/Tools/clinic/clinic.py b/Tools/clinic/clinic.py index 861a650..9b7069e 100755 --- a/Tools/clinic/clinic.py +++ b/Tools/clinic/clinic.py @@ -42,6 +42,7 @@ from typing import ( Literal, NamedTuple, NoReturn, + Protocol, TypeGuard, overload, ) @@ -2055,7 +2056,12 @@ def write_file(filename: str, new_contents: str) -> None: ClassDict = dict[str, "Class"] DestinationDict = dict[str, Destination] ModuleDict = dict[str, "Module"] -ParserDict = dict[str, "DSLParser"] + + +class Parser(Protocol): + def __init__(self, clinic: Clinic) -> None: ... + def parse(self, block: Block) -> None: ... + clinic = None class Clinic: @@ -2113,7 +2119,7 @@ impl_definition block ) -> None: # maps strings to Parser objects. # (instantiated from the "parsers" global.) - self.parsers: ParserDict = {} + self.parsers: dict[str, Parser] = {} self.language: CLanguage = language if printer: fail("Custom printers are broken right now") @@ -2205,7 +2211,7 @@ impl_definition block d = self.get_destination(name) return d.buffers[item] - def parse(self, input): + def parse(self, input: str) -> str: printer = self.printer self.block_parser = BlockParser(input, self.language, verify=self.verify) for block in self.block_parser: @@ -5521,7 +5527,10 @@ class DSLParser: # "clinic", handles the Clinic DSL # "python", handles running Python code # -parsers = {'clinic' : DSLParser, 'python': PythonParser} +parsers: dict[str, Callable[[Clinic], Parser]] = { + 'clinic': DSLParser, + 'python': PythonParser, +} clinic = None |