mypy errors
Being a type focused tool, we should probably be using types correctly, and checking them in CI.
```
py2many/exceptions.py:8: error: Too many arguments for "__init__" of "object"
py2many/ast_helpers.py:4: error: Module 'ast' has no attribute 'unparse'; maybe "parse"?
py2many/ast_helpers.py:6: error: Skipping analyzing 'astor': found module but no type hints or library stubs
py2many/ast_helpers.py:6: note: See https://mypy.readthedocs.io/en/latest/running_mypy.html#missing-imports
pygo/plugins.py:12: error: Cannot find implementation or library stub for module named 'argparse_dataclass'
pygo/plugins.py:93: error: "GoTranspilerPlugins" has no attribute "_usings"
pygo/plugins.py:111: error: "GoTranspilerPlugins" has no attribute "_usings"
pygo/plugins.py:118: error: "GoTranspilerPlugins" has no attribute "_usings"
pygo/plugins.py:123: error: "GoTranspilerPlugins" has no attribute "_usings"
pygo/plugins.py:127: error: "GoTranspilerPlugins" has no attribute "_usings"
pygo/plugins.py:137: error: Need type annotation for 'SMALL_USINGS_MAP' (hint: "SMALL_USINGS_MAP: Dict[<type>, <type>] = ...")
pygo/plugins.py:149: error: Need type annotation for 'MODULE_DISPATCH_TABLE' (hint: "MODULE_DISPATCH_TABLE: Dict[<type>, <type>] = ...")
pydart/plugins.py:12: error: Cannot find implementation or library stub for module named 'argparse_dataclass'
pydart/plugins.py:98: error: Incompatible types in assignment (expression has type "str", variable has type "int")
pydart/plugins.py:101: error: Incompatible types in assignment (expression has type "str", variable has type "int")
pydart/plugins.py:103: error: Incompatible types in assignment (expression has type "str", variable has type "int")
pydart/plugins.py:117: error: "DartTranspilerPlugins" has no attribute "_usings"
pydart/plugins.py:124: error: "DartTranspilerPlugins" has no attribute "_usings"
pydart/plugins.py:129: error: "DartTranspilerPlugins" has no attribute "_usings"
pydart/plugins.py:142: error: Need type annotation for 'SMALL_USINGS_MAP' (hint: "SMALL_USINGS_MAP: Dict[<type>, <type>] = ...")
pydart/plugins.py:152: error: Need type annotation for 'MODULE_DISPATCH_TABLE' (hint: "MODULE_DISPATCH_TABLE: Dict[<type>, <type>] = ...")
pyjl/plugins.py:12: error: Cannot find implementation or library stub for module named 'argparse_dataclass'
pyjl/plugins.py:111: error: "JuiliaTranspilerPlugins" has no attribute "_usings"
pyjl/plugins.py:113: error: "JuiliaTranspilerPlugins" has no attribute "_typename_from_annotation"
pyjl/plugins.py:160: error: Need type annotation for 'MODULE_DISPATCH_TABLE' (hint: "MODULE_DISPATCH_TABLE: Dict[<type>, <type>] = ...")
py2many/toposort_modules.py:3: error: Skipping analyzing 'toposort': found module but no type hints or library stubs
py2many/scope.py:18: error: Need type annotation for 'scopes' (hint: "scopes: List[<type>] = ...")
py2many/declaration_extractor.py:57: error: "expr" has no attribute "id"
py2many/declaration_extractor.py:59: error: "ClassDef" has no attribute "is_dataclass"
py2many/declaration_extractor.py:61: error: "ClassDef" has no attribute "dataclass_fields"
py2many/declaration_extractor.py:66: error: "ClassDef" has no attribute "dataclass_fields"
py2many/declaration_extractor.py:70: error: "ClassDef" has no attribute "is_dataclass"
pynim/plugins.py:11: error: Cannot find implementation or library stub for module named 'argparse_dataclass'
pynim/plugins.py:56: error: Incompatible types in assignment (expression has type "str", variable has type "List[str]")
pynim/plugins.py:67: error: Need type annotation for 'SMALL_USINGS_MAP' (hint: "SMALL_USINGS_MAP: Dict[<type>, <type>] = ...")
pynim/plugins.py:75: error: Need type annotation for 'MODULE_DISPATCH_TABLE' (hint: "MODULE_DISPATCH_TABLE: Dict[<type>, <type>] = ...")
pynim/plugins.py:79: error: Need type annotation for 'CLASS_DISPATCH_TABLE' (hint: "CLASS_DISPATCH_TABLE: Dict[<type>, <type>] = ...")
pynim/plugins.py:81: error: Need type annotation for 'ATTR_DISPATCH_TABLE' (hint: "ATTR_DISPATCH_TABLE: Dict[<type>, <type>] = ...")
pykt/plugins.py:13: error: Cannot find implementation or library stub for module named 'argparse_dataclass'
pykt/plugins.py:119: error: "KotlinTranspilerPlugins" has no attribute "_usings"
pykt/plugins.py:120: error: "KotlinTranspilerPlugins" has no attribute "_typename_from_annotation"
pykt/plugins.py:128: error: "KotlinTranspilerPlugins" has no attribute "_usings"
pykt/plugins.py:142: error: Need type annotation for 'SMALL_USINGS_MAP' (hint: "SMALL_USINGS_MAP: Dict[<type>, <type>] = ...")
pykt/plugins.py:153: error: Need type annotation for 'MODULE_DISPATCH_TABLE' (hint: "MODULE_DISPATCH_TABLE: Dict[<type>, <type>] = ...")
pyrs/plugins.py:15: error: Cannot find implementation or library stub for module named 'argparse_dataclass'
pyrs/plugins.py:131: error: "RustTranspilerPlugins" has no attribute "_allows"
pyrs/plugins.py:135: error: "RustTranspilerPlugins" has no attribute "_usings"
pyrs/plugins.py:137: error: "RustTranspilerPlugins" has no attribute "_typename_from_annotation"
pycpp/plugins.py:14: error: Cannot find implementation or library stub for module named 'argparse_dataclass'
pycpp/plugins.py:69: error: "CppTranspilerPlugins" has no attribute "_no_prologue"
pycpp/plugins.py:71: error: "CppTranspilerPlugins" has no attribute "_headers"
pycpp/plugins.py:76: error: "CppTranspilerPlugins" has no attribute "_usings"
pycpp/plugins.py:79: error: "CppTranspilerPlugins" has no attribute "visit"
pycpp/plugins.py:83: error: "CppTranspilerPlugins" has no attribute "visit"
pycpp/plugins.py:93: error: "CppTranspilerPlugins" has no attribute "_typename_from_annotation"
pycpp/plugins.py:96: error: "CppTranspilerPlugins" has no attribute "_typename_from_annotation"
pycpp/plugins.py:98: error: "CppTranspilerPlugins" has no attribute "_usings"
pycpp/plugins.py:102: error: "CppTranspilerPlugins" has no attribute "_default_type"
pycpp/plugins.py:108: error: "CppTranspilerPlugins" has no attribute "_usings"
py2many/clike.py:168: error: Incompatible types in assignment (expression has type "slice", variable has type "expr")
py2many/clike.py:219: error: "Subscript" has no attribute "container_type"
py2many/clike.py:237: error: "Subscript" has no attribute "generic_container_type"
py2many/clike.py:248: error: "Subscript" has no attribute "container_type"
py2many/clike.py:249: error: "Subscript" has no attribute "container_type"
py2many/clike.py:263: error: "Subscript" has no attribute "generic_container_type"
py2many/clike.py:264: error: Incompatible return value type (got "Union[List[Any], str, None]", expected "Optional[str]")
py2many/clike.py:408: error: Incompatible return value type (got "Tuple[List[_T], List[_T]]", expected "Tuple[List[str], List[str]]")
py2many/clike.py:569: error: Incompatible return value type (got "Tuple[str, ...]", expected "Tuple[str, str]")
py2many/external_transpilers.py:8: error: Cannot find implementation or library stub for module named 'py2rb'
py2many/external_transpilers.py:9: error: Cannot find implementation or library stub for module named 'voc.transpiler'
py2many/external_transpilers.py:10: error: Cannot find implementation or library stub for module named 'transpyle'
py2many/external_transpilers.py:11: error: Cannot find implementation or library stub for module named 'sherlock.codelib.generator'
py2many/external_transpilers.py:142: error: Cannot find implementation or library stub for module named 'PySchemeTranspiler.converter'
pyjl/transpiler.py:433: error: Incompatible types in assignment (expression has type "str", variable has type "List[str]")
py2many/inference.py:178: error: "stmt" has no attribute "value"
py2many/inference.py:257: error: "expr" has no attribute "annotation"
py2many/inference.py:262: error: "expr" has no attribute "annotation"
py2many/inference.py:263: error: "expr" has no attribute "annotation"
py2many/inference.py:270: error: "expr" has no attribute "annotation"
py2many/inference.py:294: error: "expr" has no attribute "annotation"
pydart/transpiler.py:398: error: Incompatible types in assignment (expression has type "str", variable has type "List[str]")
py2many/rewriters.py:283: error: "stmt" has no attribute "value"
py2many/rewriters.py:303: error: "stmt" has no attribute "test"
py2many/rewriters.py:441: error: Argument 1 of "visit_While" is incompatible with supertype "NodeVisitor"; supertype defines the argument type as "While"
py2many/rewriters.py:441: note: This violates the Liskov substitution principle
py2many/rewriters.py:441: note: See https://mypy.readthedocs.io/en/stable/common_issues.html#incompatible-overrides
pycpp/transpiler.py:144: error: Signature of "headers" incompatible with supertype "CLikeTranspiler"
pycpp/transpiler.py:488: error: Unpacking a string is disallowed
pycpp/transpiler.py:489: error: Cannot determine type of 'cpp_module_name'
pygo/transpiler.py:262: error: "ClassDef" has no attribute "declarations"
pynim/transpiler.py:178: error: "ClassDef" has no attribute "declaration"
pynim/transpiler.py:378: error: Incompatible types in assignment (expression has type "str", variable has type "List[str]")
pyrs/transpiler.py:102: error: Need type annotation for '_allows' (hint: "_allows: Set[<type>] = ...")
pyrs/transpiler.py:167: error: Signature of "extension_module" incompatible with supertype "CLikeTranspiler"
pyrs/transpiler.py:343: error: Incompatible return value type (got "Tuple[str, ...]", expected "Tuple[str, str]")
pyrs/transpiler.py:352: error: "ClassDef" has no attribute "declarations"
pyrs/transpiler.py:649: error: Incompatible types in assignment (expression has type "str", variable has type "List[str]")
py2many/cli.py:65: error: Module has no attribute "__file__"
py2many/cli.py:69: error: "CLikeTranspiler" has no attribute "NAME"
py2many/cli.py:84: error: Incompatible types in assignment (expression has type "List[NodeTransformer]", variable has type "List[NodeVisitor]")
py2many/cli.py:84: note: "List" is invariant -- see http://mypy.readthedocs.io/en/latest/common_issues.html#variance
py2many/cli.py:84: note: Consider using "Sequence" instead, which is covariant
py2many/cli.py:84: error: Unsupported operand types for + ("List[NodeTransformer]" and "List[NodeVisitor]")
py2many/cli.py:85: error: Incompatible types in assignment (expression has type "List[NodeTransformer]", variable has type "List[NodeVisitor]")
py2many/cli.py:85: note: "List" is invariant -- see http://mypy.readthedocs.io/en/latest/common_issues.html#variance
py2many/cli.py:85: note: Consider using "Sequence" instead, which is covariant
py2many/cli.py:85: error: Unsupported operand types for + ("List[NodeTransformer]" and "List[NodeVisitor]")
py2many/cli.py:192: error: Incompatible types in assignment (expression has type "IO[Any]", variable has type "TextIO")
```

Also note that MonkeyType now supports Python 3.8+.  It would be nice to be using that in CI, running the test suite under MonkeyType so that it can infer extra typings.