# try to access any
__message__: str
- def __getattribute__(self, name: str):
+ def __getattribute__(self, name: str) -> Any:
if name in ('__repr__', '__message__'):
return super().__getattribute__(name)
# raise RuntimeError(repr(name))
self.format_unit = format_unit
- def cleanup(self):
+ def cleanup(self) -> str:
name = self.name
return "".join(["if (", name, ".obj) {\n PyBuffer_Release(&", name, ");\n}\n"])
self,
*,
py_default: str | None = None,
- **kwargs
+ **kwargs: Any
) -> None:
self.py_default = py_default
try:
self,
name: str,
command: str,
- *args
+ *args: str
) -> None:
match command:
case "new":
return self.next(self.state_parameter, line)
- def to_required(self):
+ def to_required(self) -> None:
"""
Transition to the "required" parameter state.
"""
if self.parameter_state is not ParamState.REQUIRED:
self.parameter_state = ParamState.REQUIRED
+ assert self.function is not None
for p in self.function.parameters.values():
p.group = -p.group
# of disallowed ast nodes.
class DetectBadNodes(ast.NodeVisitor):
bad = False
- def bad_node(self, node):
+ def bad_node(self, node: ast.AST) -> None:
self.bad = True
# inline function call
# every line of the docstring must start with at least F spaces,
# where F > P.
# these F spaces will be stripped.
- def state_parameter_docstring(self, line):
+ def state_parameter_docstring(self, line: str | None) -> None:
+ assert line is not None
+
stripped = line.strip()
if stripped.startswith('#'):
return
assert self.indent.depth == 1
return self.next(self.state_function_docstring, line)
- assert self.function.parameters
+ assert self.function and self.function.parameters
last_parameter = next(reversed(list(self.function.parameters.values())))
new_docstring = last_parameter.docstring
last_parameter.docstring = new_docstring
# the final stanza of the DSL is the docstring.
- def state_function_docstring(self, line):
+ def state_function_docstring(self, line: str | None) -> None:
+ assert self.function is not None
+ assert line is not None
+
if self.group:
fail("Function " + self.function.name + " has a ] without a matching [.")