Skip to content

Internal error when providing a def with type hints in a TypedDict class #11079

Closed
@sami-evangelista

Description

@sami-evangelista

Input file:

from typing import Any, TypedDict
dict_t = TypedDict('dict_t', {
    'i': int,
    's': str,
    'b': bool
}, total=False)
class D(dict_t):
    def __setitem__(self, key: str, val: Any) -> None:
        pass

Internal error:

$ mypy --show-traceback d.py

d.py:8: error: Invalid statement in TypedDict definition; expected "field_name: field_type"
d.py: error: INTERNAL ERROR -- Please try using mypy master on Github:
https://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 0.920+dev.bbea3b56297d3d966b9a98900c218df6616fec85
d.py: : note: use --pdb to drop into pdb
d.py:8: error: Invalid statement in TypedDict definition; expected "field_name: field_type"
Traceback (most recent call last):
  File "/home/user/.local/bin/mypy", line 8, in <module>
    sys.exit(console_entry())
  File "/home/user/.local/lib/python3.9/site-packages/mypy/__main__.py", line 11, in console_entry
    main(None, sys.stdout, sys.stderr)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/main.py", line 87, in main
    res, messages, blockers = run_build(sources, options, fscache, t0, stdout, stderr)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/main.py", line 165, in run_build
    res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/build.py", line 179, in build
    result = _build(
  File "/home/user/.local/lib/python3.9/site-packages/mypy/build.py", line 254, in _build
    graph = dispatch(sources, manager, stdout)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/build.py", line 2707, in dispatch
    process_graph(graph, manager)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/build.py", line 3031, in process_graph
    process_stale_scc(graph, scc, manager)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/build.py", line 3123, in process_stale_scc
    mypy.semanal_main.semantic_analysis_for_scc(graph, scc, manager.errors)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/semanal_main.py", line 84, in semantic_analysis_for_scc
    check_type_arguments(graph, scc, errors)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/semanal_main.py", line 360, in check_type_arguments
    state.tree.accept(analyzer)
  File "/usr/lib64/python3.9/contextlib.py", line 135, in __exit__
    self.gen.throw(type, value, traceback)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/build.py", line 1962, in wrap_context
    yield
  File "/home/user/.local/lib/python3.9/site-packages/mypy/semanal_main.py", line 360, in check_type_arguments
    state.tree.accept(analyzer)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/nodes.py", line 310, in accept
    return visitor.visit_mypy_file(self)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/semanal_typeargs.py", line 39, in visit_mypy_file
    super().visit_mypy_file(o)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/traverser.py", line 37, in visit_mypy_file
    d.accept(self)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/nodes.py", line 959, in accept
    return visitor.visit_class_def(self)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/semanal_typeargs.py", line 49, in visit_class_def
    super().visit_class_def(defn)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/mixedtraverser.py", line 28, in visit_class_def
    super().visit_class_def(o)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/traverser.py", line 73, in visit_class_def
    o.defs.accept(self)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/nodes.py", line 1024, in accept
    return visitor.visit_block(self)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/semanal_typeargs.py", line 53, in visit_block
    super().visit_block(o)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/traverser.py", line 41, in visit_block
    s.accept(self)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/nodes.py", line 696, in accept
    return visitor.visit_func_def(self)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/traverser.py", line 56, in visit_func_def
    self.visit_func(o)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/semanal_typeargs.py", line 45, in visit_func
    super().visit_func(defn)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/mixedtraverser.py", line 23, in visit_func
    self.visit_optional_type(o.type)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/mixedtraverser.py", line 91, in visit_optional_type
    t.accept(self)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/types.py", line 1114, in accept
    return visitor.visit_callable_type(self)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/typetraverser.py", line 52, in visit_callable_type
    t.fallback.accept(self)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/types.py", line 858, in accept
    return visitor.visit_instance(self)
  File "/home/user/.local/lib/python3.9/site-packages/mypy/semanal_typeargs.py", line 69, in visit_instance
    for (i, arg), tvar in zip(enumerate(t.args), info.defn.type_vars):
  File "/home/user/.local/lib/python3.9/site-packages/mypy/nodes.py", line 2656, in __getattribute__
    raise AssertionError(object.__getattribute__(self, 'msg'))
AssertionError: fallback can't be filled out until semanal

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugmypy got something wrong

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions