Skip to content

AssertionError when analyzing recursive TypedDict #3674

Closed
@ilinum

Description

@ilinum
$ cat n.py 
from mypy_extensions import TypedDict

class MovieBase(TypedDict):
    name: str
    year: int

class Movie(MovieBase):
    director: 'Movie'
$ mypy n.py 
Traceback (most recent call last):
  File "/usr/local/bin/mypy", line 11, in <module>
    load_entry_point('mypy===0.520-dev-6c61c66641d46682e24341e624d4a8fd6ac32e11', 'console_scripts', 'mypy')()
  File "/usr/local/lib/python3.6/site-packages/mypy/__main__.py", line 7, in console_entry
    main(None)
  File "/usr/local/lib/python3.6/site-packages/mypy/main.py", line 50, in main
    res = type_check_only(sources, bin_dir, options)
  File "/usr/local/lib/python3.6/site-packages/mypy/main.py", line 97, in type_check_only
    options=options)
  File "/usr/local/lib/python3.6/site-packages/mypy/build.py", line 196, in build
    graph = dispatch(sources, manager)
  File "/usr/local/lib/python3.6/site-packages/mypy/build.py", line 1769, in dispatch
    process_graph(graph, manager)
  File "/usr/local/lib/python3.6/site-packages/mypy/build.py", line 2012, in process_graph
    process_stale_scc(graph, scc, manager)
  File "/usr/local/lib/python3.6/site-packages/mypy/build.py", line 2113, in process_stale_scc
    graph[id].semantic_analysis_apply_patches()
  File "/usr/local/lib/python3.6/site-packages/mypy/build.py", line 1675, in semantic_analysis_apply_patches
    patch_func()
  File "/usr/local/lib/python3.6/site-packages/mypy/semanal.py", line 2468, in patch
    fallback.args[1] = join.join_type_list(types)
  File "/usr/local/lib/python3.6/site-packages/mypy/join.py", line 392, in join_type_list
    joined = join_types(joined, t)
  File "/usr/local/lib/python3.6/site-packages/mypy/join.py", line 88, in join_types
    return t.accept(TypeJoinVisitor(s))
  File "/usr/local/lib/python3.6/site-packages/mypy/types.py", line 427, in accept
    return visitor.visit_instance(self)
  File "/usr/local/lib/python3.6/site-packages/mypy/join.py", line 141, in visit_instance
    return join_instances(t, self.s)
  File "/usr/local/lib/python3.6/site-packages/mypy/join.py", line 299, in join_instances
    return join_instances_via_supertype(s, t)
  File "/usr/local/lib/python3.6/site-packages/mypy/join.py", line 318, in join_instances_via_supertype
    assert best is not None
AssertionError

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions