Skip to content

Crash on namedtuples with attribute named count #3759

@benkuhn

Description

@benkuhn

Repro (mypy 0.520):

from typing import NamedTuple

class Crash(NamedTuple):
    count: int

No crash if you rename the attribute, or stop subclassing NamedTuple.

Output:

test.py:4: error: INTERNAL ERROR -- please report a bug at https://github.com/python/mypy/issues version: 0.520
Traceback (most recent call last):
  File "<...>/venv/bin/mypy", line 11, in <module>
    sys.exit(console_entry())
  File "<...>/venv/lib/python3.6/site-packages/mypy/__main__.py", line 7, in console_entry
    main(None)
  File "<...>/venv/lib/python3.6/site-packages/mypy/main.py", line 50, in main
    res = type_check_only(sources, bin_dir, options)
  File "<...>/venv/lib/python3.6/site-packages/mypy/main.py", line 97, in type_check_only
    options=options)
  File "<...>/venv/lib/python3.6/site-packages/mypy/build.py", line 196, in build
    graph = dispatch(sources, manager)
  File "<...>/venv/lib/python3.6/site-packages/mypy/build.py", line 1769, in dispatch
    process_graph(graph, manager)
  File "<...>/venv/lib/python3.6/site-packages/mypy/build.py", line 2012, in process_graph
    process_stale_scc(graph, scc, manager)
  File "<...>/venv/lib/python3.6/site-packages/mypy/build.py", line 2115, in process_stale_scc
    graph[id].type_check_first_pass()
  File "<...>/venv/lib/python3.6/site-packages/mypy/build.py", line 1684, in type_check_first_pass
    self.type_checker.check_first_pass()
  File "<...>/venv/lib/python3.6/site-packages/mypy/checker.py", line 185, in check_first_pass
    self.accept(d)
  File "<...>/venv/lib/python3.6/site-packages/mypy/checker.py", line 273, in accept
    stmt.accept(self)
  File "<...>/venv/lib/python3.6/site-packages/mypy/nodes.py", line 754, in accept
    return visitor.visit_class_def(self)
  File "<...>/venv/lib/python3.6/site-packages/mypy/checker.py", line 1109, in visit_class_def
    self.accept(defn.defs)
  File "<...>/venv/lib/python3.6/site-packages/mypy/checker.py", line 273, in accept
    stmt.accept(self)
  File "<...>/venv/lib/python3.6/site-packages/mypy/nodes.py", line 815, in accept
    return visitor.visit_block(self)
  File "<...>/venv/lib/python3.6/site-packages/mypy/checker.py", line 1202, in visit_block
    self.accept(s)
  File "<...>/venv/lib/python3.6/site-packages/mypy/checker.py", line 273, in accept
    stmt.accept(self)
  File "<...>/venv/lib/python3.6/site-packages/mypy/nodes.py", line 859, in accept
    return visitor.visit_assignment_stmt(self)
  File "<...>/venv/lib/python3.6/site-packages/mypy/checker.py", line 1209, in visit_assignment_stmt
    self.check_assignment(s.lvalues[-1], s.rvalue, s.type is None, s.new_syntax)
  File "<...>/venv/lib/python3.6/site-packages/mypy/checker.py", line 1241, in check_assignment
    if self.check_compatibility_all_supers(lvalue, lvalue_type, rvalue):
  File "<...>/venv/lib/python3.6/site-packages/mypy/checker.py", line 1331, in check_compatibility_all_supers
    base_type, base_node = self.lvalue_type_from_base(lvalue_node, base)
  File "<...>/venv/lib/python3.6/site-packages/mypy/checker.py", line 1418, in lvalue_type_from_base
    itype = map_instance_to_supertype(instance, base)
  File "<...>/venv/lib/python3.6/site-packages/mypy/maptype.py", line 15, in map_instance_to_supertype
    if instance.type == superclass:
AttributeError: 'TupleType' object has no attribute 'type'

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions