Skip to content

Commit

Permalink
gh-104050: Partially annotate Argument Clinic CLanguage class (#106437)
Browse files Browse the repository at this point in the history
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
  • Loading branch information
erlend-aasland and AlexWaygood committed Jul 4, 2023
1 parent 2fb9480 commit 7bb9fa5
Showing 1 changed file with 19 additions and 6 deletions.
25 changes: 19 additions & 6 deletions Tools/clinic/clinic.py
Original file line number Diff line number Diff line change
Expand Up @@ -752,10 +752,14 @@ def __init__(self, filename):
self.cpp = cpp.Monitor(filename)
self.cpp.fail = fail

def parse_line(self, line):
def parse_line(self, line: str) -> None:
self.cpp.writeline(line)

def render(self, clinic, signatures):
def render(
self,
clinic: Clinic | None,
signatures: Iterable[Function]
) -> str:
function = None
for o in signatures:
if isinstance(o, Function):
Expand All @@ -764,7 +768,10 @@ def render(self, clinic, signatures):
function = o
return self.render_function(clinic, function)

def docstring_for_c_string(self, f):
def docstring_for_c_string(
self,
f: Function
) -> str:
if re.search(r'[^\x00-\x7F]', f.docstring):
warn("Non-ascii character appear in docstring.")

Expand Down Expand Up @@ -1345,7 +1352,7 @@ def parser_body(prototype, *fields, declarations=''):
return d2

@staticmethod
def group_to_variable_name(group):
def group_to_variable_name(group: int) -> str:
adjective = "left_" if group < 0 else "right_"
return "group_" + adjective + str(abs(group))

Expand Down Expand Up @@ -1441,8 +1448,12 @@ def render_option_group_parsing(self, f, template_dict):
add("}")
template_dict['option_group_parsing'] = format_escape(output())

def render_function(self, clinic, f):
if not f:
def render_function(
self,
clinic: Clinic | None,
f: Function | None
) -> str:
if f is None or clinic is None:
return ""

add, output = text_accumulator()
Expand Down Expand Up @@ -1504,10 +1515,12 @@ def render_function(self, clinic, f):

template_dict = {}

assert isinstance(f.full_name, str)
full_name = f.full_name
template_dict['full_name'] = full_name

if new_or_init:
assert isinstance(f.cls, Class)
name = f.cls.name
else:
name = f.name
Expand Down

0 comments on commit 7bb9fa5

Please sign in to comment.