Skip to content

Run mypy on cases_generator #104504

Description

@sobolevn

Feature or enhancement

After #104421 is merged, we now have the precedent and the needed infrastructure to run mypy on things that support type annotations in Tools/

Pitch

Maybe we should run it on Tools/cases_generator? It has all annotations in place, it needs very little work. Right now mypy finds only 24 errors.

Full list:

» mypy .
parser.py:22: error: Returnvalueexpected [return-value]
return^~~~~~parser.py:142: error: Missingreturnstatement [return]
defdefinition(self) ->InstDef|Super|Macro|Family|None:
^parser.py:168: error: Modulehasnoattribute"OVERRIDE" [attr-defined]
override=bool(self.expect(lx.OVERRIDE))
^~~~~~~~~~~parser.py:169: error: Modulehasnoattribute"REGISTER" [attr-defined]
register=bool(self.expect(lx.REGISTER))
^~~~~~~~~~~parser.py:177: error: Argument3to"InstHeader"hasincompatibletype"str";
expected"Literal['inst', 'op', 'legacy']" [arg-type]
... returnInstHeader(override, register, kind, name, inp, outp...
^~~~parser.py:200: error: Incompatiblereturnvaluetype (got"List[Union[StackEffect, CacheEffect, Node]]", expected"Optional[List[Union[StackEffect, CacheEffect]]]") [return-value]
return [inp] +rest^~~~~~~~~~~~parser.py:202: error: Listitem0hasincompatibletype"Node"; expected"Union[StackEffect, CacheEffect]" [list-item]
return [inp]
^~~parser.py:228: error: Missingreturnstatement [return]
defcache_effect(self) ->CacheEffect|None:
^parser.py:241: error: Missingreturnstatement [return]
defstack_effect(self) ->StackEffect|None:
^parser.py:249: error: Modulehasnoattribute"IF" [attr-defined]
ifself.expect(lx.IF):
^~~~~parser.py:284: error: Missingreturnstatement [return]
defsuper_def(self) ->Super|None:
^parser.py:295: error: Missingreturnstatement [return]
defops(self) ->list[OpName] |None:
^parser.py:304: error: Missingreturnstatement [return]
defop(self) ->OpName|None:
^parser.py:309: error: Missingreturnstatement [return]
defmacro_def(self) ->Macro|None:
^parser.py:320: error: Missingreturnstatement [return]
defuops(self) ->list[UOp] |None:
^parser.py:328: error: Incompatiblereturnvalue type (got"List[Node]", expected"Optional[List[Union[OpName, CacheEffect]]]") [return-value]
returnuops^~~~parser.py:331: error: Missingreturnstatement [return]
defuop(self) ->UOp|None:
^parser.py:384: error: Missingreturnstatement [return]
defblock(self) ->Block|None:
^generate_cases.py:395: error: Item"None"of"Optional[Context]"hasnoattribute"owner" [union-attr]
filename=context.owner.filename^~~~~~~~~~~~~generate_cases.py:598: error: Incompatibletypesinassignment (expressionhas type
"Optional[Node]", variablehas type "Union[InstDef, Super, Macro, Family, None]") [assignment]
whilething:=psr.definition():
^~~~~~~~~~~~~~~~generate_cases.py:664: error: Item"None"of"Optional[Family]"hasnoattribute"name" [union-attr]
f"Instruction {member}isamemberofmultiplef...
^generate_cases.py:675: error: Item"None"of"Optional[Family]"hasnoattribute"name" [union-attr]
f"Component {part.instr.name} of macro {...
^test_generator.py:46: error: Missing positional argument "metadata_filename" in call
to "Analyzer" [call-arg]
a = generate_cases.Analyzer(temp_input.name, temp_output.name)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
test_generator.py:46: error: Argument 1 to "Analyzer" has incompatible type "str";
expected "List[str]" [arg-type]
a = generate_cases.Analyzer(temp_input.name, temp_output.name)
^~~~~~~~~~~~~~~
Found 24 errors in 3 files (checked 5 source files)

If @gvanrossum finds it useful, I can surely work on this.
CC @AlexWaygood

Linked PRs

Metadata

Metadata

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions