Skip to content

Crash when typechecking transformers 4.10.0 #11045

Closed
@davidhewitt

Description

@davidhewitt

Crash Report

I am typechecking a codebase which imports transformers 4.10.0 and hitting a mypy internal error. Also reported in the transformers repo as huggingface/transformers#13390

Traceback

This traceback is generated using the current mypy master (pip install git+https://github.com/python/mypy).

src/transformers/trainer.py:1435: 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.5e73cd7b0dc9b871716acf0086b2ca0376fcff39
Traceback (most recent call last):
  File "/home/david/dev/transformers/.env/bin/mypy", line 8, in <module>
    sys.exit(console_entry())
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/__main__.py", line 11, in console_entry
    main(None, sys.stdout, sys.stderr)
  File "/home/david/dev/transformers/.env/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/david/dev/transformers/.env/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/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/build.py", line 179, in build
    result = _build(
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/build.py", line 254, in _build
    graph = dispatch(sources, manager, stdout)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/build.py", line 2707, in dispatch
    process_graph(graph, manager)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/build.py", line 3031, in process_graph
    process_stale_scc(graph, scc, manager)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/build.py", line 3138, in process_stale_scc
    if not graph[id].type_check_second_pass():
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/build.py", line 2192, in type_check_second_pass
    return self.type_checker().check_second_pass()
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 354, in check_second_pass
    self.check_partial(node)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 366, in check_partial
    self.accept(node)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 411, in accept
    stmt.accept(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/nodes.py", line 696, in accept
    return visitor.visit_func_def(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 743, in visit_func_def
    self._visit_func_def(defn)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 747, in _visit_func_def
    self.check_func_item(defn, name=defn.name)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 809, in check_func_item
    self.check_func_def(defn, typ, name)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 992, in check_func_def
    self.accept(item.body)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 411, in accept
    stmt.accept(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/nodes.py", line 1024, in accept
    return visitor.visit_block(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 2005, in visit_block
    self.accept(s)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 411, in accept
    stmt.accept(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/nodes.py", line 1216, in accept
    return visitor.visit_if_stmt(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 3350, in visit_if_stmt
    self.accept(b)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 411, in accept
    stmt.accept(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/nodes.py", line 1024, in accept
    return visitor.visit_block(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 2005, in visit_block
    self.accept(s)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 411, in accept
    stmt.accept(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/nodes.py", line 1083, in accept
    return visitor.visit_assignment_stmt(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 2047, in visit_assignment_stmt
    self.check_assignment(s.lvalues[-1], s.rvalue, s.type is None, s.new_syntax)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 2226, in check_assignment
    self.check_indexed_assignment(index_lvalue, rvalue, lvalue)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checker.py", line 3208, in check_indexed_assignment
    self.expr_checker.check_method_call(
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkexpr.py", line 2457, in check_method_call
    return self.check_call(method_type, args, arg_kinds,
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkexpr.py", line 933, in check_call
    return self.check_callable_call(callee, args, arg_kinds, context, arg_names,
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkexpr.py", line 1024, in check_callable_call
    arg_types = self.infer_arg_types_in_context(
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkexpr.py", line 1123, in infer_arg_types_in_context
    res[ai] = self.accept(args[ai], callee.arg_types[i])
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkexpr.py", line 3912, in accept
    typ = node.accept(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/nodes.py", line 1600, in accept
    return visitor.visit_call_expr(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkexpr.py", line 277, in visit_call_expr
    return self.visit_call_expr_inner(e, allow_none_return=allow_none_return)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkexpr.py", line 326, in visit_call_expr_inner
    callee_type = get_proper_type(self.accept(e.callee, type_context, always_allow_any=True))
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkexpr.py", line 3912, in accept
    typ = node.accept(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/nodes.py", line 1520, in accept
    return visitor.visit_member_expr(self)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkexpr.py", line 2047, in visit_member_expr
    result = self.analyze_ordinary_member_access(e, is_lvalue)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkexpr.py", line 2065, in analyze_ordinary_member_access
    member_type = analyze_member_access(
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkmember.py", line 126, in analyze_member_access
    result = _analyze_member_access(name, typ, mx, override_info)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkmember.py", line 143, in _analyze_member_access
    return analyze_instance_member_access(name, typ, mx, override_info)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/checkmember.py", line 219, in analyze_instance_member_access
    typ = map_instance_to_supertype(typ, method.info)
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/maptype.py", line 20, in map_instance_to_supertype
    if not superclass.type_vars:
  File "/home/david/dev/transformers/.env/lib/python3.9/site-packages/mypy/nodes.py", line 2656, in __getattribute__
    raise AssertionError(object.__getattribute__(self, 'msg'))
AssertionError: FuncBase for non-methods lack info

To Reproduce

I can reproduce this locally in the following way:

  1. Clone the transformers repo, checkout the v4.10.0 tag
  2. Create a blank virtualenv and install mypy 0.910 (or mypy master)
  3. Add the following mypy.ini file:
    [mypy]
    check_untyped_defs=True
    
  4. Run mypy src/transformers/trainer.py

I'm afraid I tried to reduce to a minimal repro with no success.

Your Environment

  • Mypy version used: 0.910 and master
  • Mypy command-line flags: None other than --show-traceback
  • Mypy configuration options from mypy.ini (and other config files): See repo above (just check_untyped_defs=True)
  • Python version used: tested on 3.8.11 and 3.9.5
  • Operating system and version: Ubuntu, tested on 20.04 and 21.04

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions