mypy icon indicating copy to clipboard operation
mypy copied to clipboard

INTERNAL ERROR from types.py: assert isinstance(visitor, SyntheticTypeVisitor)

Open aljazerzen opened this issue 9 months ago • 0 comments

Crash Report

INTERNAL ERROR

Traceback

/home/aljaz/EdgeDB/edgedb/edb/schema/inheriting.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: 1.11.0+dev.ba6febc903776491ea445cef2ef5375b95e178cd
Traceback (most recent call last):
  File "/home/aljaz/Projects/mypy/venv/bin/mypy", line 8, in <module>
    sys.exit(console_entry())
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/__main__.py", line 15, in console_entry
    main()
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/main.py", line 100, in main
    res, messages, blockers = run_build(sources, options, fscache, t0, stdout, stderr)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/main.py", line 182, in run_build
    res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/build.py", line 192, in build
    result = _build(
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/build.py", line 266, in _build
    graph = dispatch(sources, manager, stdout)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/build.py", line 2946, in dispatch
    process_graph(graph, manager)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/build.py", line 3344, in process_graph
    process_stale_scc(graph, scc, manager)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/build.py", line 3439, in process_stale_scc
    mypy.semanal_main.semantic_analysis_for_scc(graph, scc, manager.errors)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/semanal_main.py", line 101, in semantic_analysis_for_scc
    check_type_arguments(graph, scc, errors)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/semanal_main.py", line 386, in check_type_arguments
    with state.wrap_context():
  File "/nix/store/x7whwwf0xp5b74ljp6xszgbw0vra4d87-python3-3.12.1/lib/python3.12/contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/build.py", line 2065, in wrap_context
    yield
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/semanal_main.py", line 388, in check_type_arguments
    state.tree.accept(analyzer)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/nodes.py", line 369, in accept
    return visitor.visit_mypy_file(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/semanal_typeargs.py", line 66, in visit_mypy_file
    super().visit_mypy_file(o)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/traverser.py", line 115, in visit_mypy_file
    d.accept(self)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/nodes.py", line 1142, in accept
    return visitor.visit_class_def(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/semanal_typeargs.py", line 76, in visit_class_def
    super().visit_class_def(defn)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/mixedtraverser.py", line 43, in visit_class_def
    super().visit_class_def(o)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/traverser.py", line 151, in visit_class_def
    o.defs.accept(self)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/nodes.py", line 1223, in accept
    return visitor.visit_block(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/semanal_typeargs.py", line 80, in visit_block
    super().visit_block(o)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/traverser.py", line 119, in visit_block
    s.accept(self)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/nodes.py", line 1310, in accept
    return visitor.visit_assignment_stmt(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/mixedtraverser.py", line 81, in visit_assignment_stmt
    super().visit_assignment_stmt(o)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/traverser.py", line 165, in visit_assignment_stmt
    o.rvalue.accept(self)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/nodes.py", line 2127, in accept
    return visitor.visit_cast_expr(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/mixedtraverser.py", line 97, in visit_cast_expr
    o.type.accept(self)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/types.py", line 1410, in accept
    return visitor.visit_instance(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/semanal_typeargs.py", line 117, in visit_instance
    super().visit_instance(t)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/typetraverser.py", line 81, in visit_instance
    self.traverse_types(t.args)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/typetraverser.py", line 149, in traverse_types
    typ.accept(self)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/types.py", line 2382, in accept
    return visitor.visit_tuple_type(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/semanal_typeargs.py", line 102, in visit_tuple_type
    super().visit_tuple_type(t)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/typetraverser.py", line 96, in visit_tuple_type
    self.traverse_types(t.items)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/typetraverser.py", line 149, in traverse_types
    typ.accept(self)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/types.py", line 1410, in accept
    return visitor.visit_instance(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/semanal_typeargs.py", line 117, in visit_instance
    super().visit_instance(t)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/typetraverser.py", line 81, in visit_instance
    self.traverse_types(t.args)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/typetraverser.py", line 149, in traverse_types
    typ.accept(self)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/types.py", line 1410, in accept
    return visitor.visit_instance(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/semanal_typeargs.py", line 123, in visit_instance
    self.validate_args(info.name, t.args, info.defn.type_vars, t)
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/semanal_typeargs.py", line 184, in validate_args
    if not object_upper_bound and not is_subtype(arg, upper_bound):
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/subtypes.py", line 179, in is_subtype
    return _is_subtype(left, right, subtype_context, proper_subtype=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/subtypes.py", line 352, in _is_subtype
    return left.accept(SubtypeVisitor(orig_right, subtype_context, proper_subtype))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/types.py", line 647, in accept
    return visitor.visit_type_var(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/subtypes.py", line 638, in visit_type_var
    return self._is_subtype(left.upper_bound, self.right)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/subtypes.py", line 411, in _is_subtype
    return is_subtype(left, right, subtype_context=self.subtype_context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/subtypes.py", line 179, in is_subtype
    return _is_subtype(left, right, subtype_context, proper_subtype=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/subtypes.py", line 352, in _is_subtype
    return left.accept(SubtypeVisitor(orig_right, subtype_context, proper_subtype))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/aljaz/Projects/mypy/venv/lib/python3.12/site-packages/mypy/types.py", line 3036, in accept
    assert isinstance(visitor, SyntheticTypeVisitor)
AssertionError:
/home/aljaz/EdgeDB/edgedb/edb/schema/inheriting.py: : note: use --pdb to drop into pdb

To Reproduce

I don't know exactly what caused this problem, because I'm generating a lot of Python code that contains mixins that are used by non-generated code.

It can be reproduced by running mypy edb from this commit: https://github.com/edgedb/edgedb/commit/a1ca831bb18e828ac36dee72b884934c60e610f6

If you don't find something obvious from the stack trace, I can spend some time minimizing the problem.

Your Environment

  • Mypy version used: 1.10 (compiled) or 1.11 (not compiled)
  • Mypy command-line flags: mypy edb
  • Mypy configuration options from mypy.ini (and other config files): we do have pyproject.toml config, but the bug happens even if I don't use that config.
  • Python version used: 3.12
  • Operating system and version: Linux NixOS 23.11 (Tapir)

aljazerzen avatar Apr 30 '24 10:04 aljazerzen