Skip to content

Tuple assignment and list * unpacking crashes mypy #3825

Closed
@Sterbic

Description

@Sterbic

Ran mypy over the following code:

a = [1, 2, 3]
first, *other = [*a, None]

Interestingly enough, first, *other = [None, *a] works correctly. Happy to give it a shot at fixing this myself is someone can give me some pointers on where to start.

Exception:

(.venv3) luka-mbp:typeshed luka$ mypy test.py --show-traceback
test.py:2: error: INTERNAL ERROR -- please report a bug at https://github.com/python/mypy/issues version: 0.530-dev-82cb95cb2cf4680bde12a341ce0f4354c79b3dcd
Traceback (most recent call last):
  File "/Users/luka/Desktop/typeshed/.venv3/bin/mypy", line 11, in <module>
    load_entry_point('mypy===0.530-dev-82cb95cb2cf4680bde12a341ce0f4354c79b3dcd', 'console_scripts', 'mypy')()
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/__main__.py", line 7, in console_entry
    main(None)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/main.py", line 50, in main
    res = type_check_only(sources, bin_dir, options)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/main.py", line 97, in type_check_only
    options=options)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/build.py", line 196, in build
    graph = dispatch(sources, manager)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/build.py", line 1801, in dispatch
    process_graph(graph, manager)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/build.py", line 2044, in process_graph
    process_stale_scc(graph, scc, manager)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/build.py", line 2147, in process_stale_scc
    graph[id].type_check_first_pass()
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/build.py", line 1716, in type_check_first_pass
    self.type_checker.check_first_pass()
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/checker.py", line 189, in check_first_pass
    self.accept(d)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/checker.py", line 277, in accept
    stmt.accept(self)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/nodes.py", line 859, in accept
    return visitor.visit_assignment_stmt(self)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/checker.py", line 1236, in visit_assignment_stmt
    self.check_assignment(s.lvalues[-1], s.rvalue, s.type is None, s.new_syntax)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/checker.py", line 1263, in check_assignment
    infer_lvalue_type)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/checker.py", line 1505, in check_assignment_to_multiple_lvalues
    self.check_assignment(lv, rv, infer_lvalue_type)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/checker.py", line 1328, in check_assignment
    rvalue)
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/checker.py", line 1716, in infer_variable_type
    elif not is_valid_inferred_type(init_type):
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/checker.py", line 3146, in is_valid_inferred_type
    if is_same_type(typ, NoneTyp()):
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/sametypes.py", line 28, in is_same_type
    return left.accept(SameTypeVisitor(right))
  File "/Users/luka/Desktop/typeshed/.venv3/lib/python3.6/site-packages/mypy/types.py", line 1033, in accept
    assert isinstance(visitor, SyntheticTypeVisitor)
AssertionError:
test.py:2: note: use --pdb to drop into pdb

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions