Skip to content

mypy crashes while trying to process appdirs source file #5121

@pradyunsg

Description

@pradyunsg

Version: 0.600 and current master 0447473
Flags used: --ignore-missing-imports

Minimum Reproduction Case

$ # in a fresh virtualenv
$ pip install appdirs==1.4.3
[...]
$ pip install https://github.com/python/mypy/archive/master.zip
[...]
$ mypy $(python -c "import appdirs; print(appdirs.__file__)") --ignore-missing-imports --show-traceback
/Users/pradyunsg/[snip]/lib/python3.6/site-packages/appdirs.py: error: INTERNAL ERROR -- please report a bug at https://github.com/python/mypy/issues version: 0.610+dev
Traceback (most recent call last):
  File "/Users/pradyunsg/[snip]/bin/mypy", line 11, in <module>
    sys.exit(console_entry())
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/__main__.py", line 7, in console_entry
    main(None)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/main.py", line 91, in main
    res = type_check_only(sources, bin_dir, options, flush_errors, fscache)  # noqa
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/main.py", line 148, in type_check_only
    fscache=fscache)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/build.py", line 185, in build
    flush_errors, fscache)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/build.py", line 285, in _build
    graph = dispatch(sources, manager)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/build.py", line 2398, in dispatch
    process_graph(graph, manager)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/build.py", line 2691, in process_graph
    process_stale_scc(graph, scc, manager)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/build.py", line 2801, in process_stale_scc
    graph[id].semantic_analysis()
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/build.py", line 2009, in semantic_analysis
    self.manager.semantic_analyzer.visit_file(self.tree, self.xpath, self.options, patches)
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", line 99, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/build.py", line 1818, in wrap_context
    yield
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/build.py", line 2009, in semantic_analysis
    self.manager.semantic_analyzer.visit_file(self.tree, self.xpath, self.options, patches)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/semanal.py", line 291, in visit_file
    v.type = self.anal_type(v.type)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/semanal.py", line 1578, in anal_type
    typ = t.accept(a)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/types.py", line 203, in accept
    return visitor.visit_unbound_type(self)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/typeanal.py", line 178, in visit_unbound_type
    typ = self.visit_unbound_type_nonoptional(t)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/typeanal.py", line 186, in visit_unbound_type_nonoptional
    sym = self.lookup(t.name, t, suppress_errors=self.third_pass)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/semanal.py", line 3058, in lookup_qualified
    n = self.lookup(parts[0], ctx, suppress_errors=suppress_errors)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/semanal.py", line 3038, in lookup
    self.name_not_defined(name, ctx)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/semanal.py", line 3246, in name_not_defined
    self.fail(message, ctx)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/semanal.py", line 3281, in fail
    self.errors.report(ctx.get_line(), ctx.get_column(), msg, blocker=blocker)
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/errors.py", line 260, in report
    target=self.current_target())
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/errors.py", line 208, in current_target
    return self.scope.current_target()
  File "/Users/pradyunsg/[snip]/lib/python3.6/site-packages/mypy/scope.py", line 30, in current_target
    assert self.module
AssertionError:
/Users/pradyunsg/[snip]/lib/python3.6/site-packages/appdirs.py: : note: use --pdb to drop into pdb

Context

appdirs is a vendored package in pip, errors from which are ignored using ignore_errors=True in a configuration file. The working idea is to use mypy to annotate pip's own sources while not touching the vendored files.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions