python / mypy

Optional static typing for Python
https://www.mypy-lang.org/
Other
18.44k stars 2.82k forks source link

[bug] internal error if run in subdirectory of project root #6056

Closed dmvianna closed 5 years ago

dmvianna commented 5 years ago

I'm running mypy in the project root of pycategories (master branch) and I get the usual output:

~/sandbox/pycategories $ mypy --ignore-missing-imports ~/sandbox/pycategories/categories/maybe.py 
categories/semigroup.py:7: error: Need type annotation for '__instances'
categories/monoid.py:7: error: Need type annotation for '__instances'
categories/monad.py:7: error: Need type annotation for '__instances'
categories/functor.py:8: error: Need type annotation for '__instances'
categories/applicative.py:7: error: Need type annotation for '__instances'
categories/maybe.py:56: error: Argument 1 to "match" of "Maybe" has incompatible type "Callable[[], Maybe]"; expected "Maybe"
categories/maybe.py:57: error: Incompatible return value type (got "Maybe", expected "bool")
categories/maybe.py:58: error: Argument 1 to "match" of "Maybe" has incompatible type "Callable[[], Maybe]"; expected "Maybe"
categories/maybe.py:59: error: Incompatible return value type (got "Maybe", expected "bool")
categories/maybe.py:61: error: Incompatible return value type (got "Maybe", expected "bool")

However if I move one directory up, I get the internal error:

~/sandbox/pycategories $ cd categories/
~/sandbox/pycategories/categories $ mypy --ignore-missing-imports ~/sandbox/pycategories/categories/maybe.py 
/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/mypy/typeshed/stdlib/3/_importlib_modulespec.pyi: error: INTERNAL ERROR -- please report a bug at https://github.com/python/mypy/issues version: 0.620
/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/mypy/typeshed/stdlib/3/_importlib_modulespec.pyi: : note: please use --show-traceback to print a traceback when reporting a bug

Here's my versions:

~/sandbox/pycategories/categories $ mypy --version
mypy 0.620
~/sandbox/pycategories/categories $ python --version
Python 3.7.0

traceback:

~/sandbox/pycategories/categories $ mypy --ignore-missing-imports ~/sandbox/pycategories/categories/maybe.py --show-traceback
/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/mypy/typeshed/stdlib/3/_importlib_modulespec.pyi: error: INTERNAL ERROR -- please report a bug at https://github.com/python/mypy/issues version: 0.620
Traceback (most recent call last):
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/bin/.mypy-wrapped", line 12, in <module>
    sys.exit(console_entry())
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/__main__.py", line 7, in console_entry
    main(None)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/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 "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/main.py", line 148, in type_check_only
    fscache=fscache)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/build.py", line 177, in build
    flush_errors, fscache)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/build.py", line 350, in _build
    graph = dispatch(sources, manager)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/build.py", line 2560, in dispatch
    process_graph(graph, manager)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/build.py", line 2853, in process_graph
    process_stale_scc(graph, scc, manager)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/build.py", line 2970, in process_stale_scc
    graph[id].semantic_analysis()
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/build.py", line 2131, in semantic_analysis
    self.manager.semantic_analyzer.visit_file(self.tree, self.xpath, self.options, patches)
  File "/nix/store/nallbq9fjhp16mch9gr5v3kdbdav1rcx-python3-3.6.7/lib/python3.6/contextlib.py", line 99, in __exit__
    self.gen.throw(type, value, traceback)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/build.py", line 1940, in wrap_context
    yield
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/build.py", line 2131, in semantic_analysis
    self.manager.semantic_analyzer.visit_file(self.tree, self.xpath, self.options, patches)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/semanal.py", line 287, in visit_file
    v.type = self.anal_type(v.type)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/semanal.py", line 1607, in anal_type
    typ = t.accept(a)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/types.py", line 204, in accept
    return visitor.visit_unbound_type(self)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/typeanal.py", line 179, in visit_unbound_type
    typ = self.visit_unbound_type_nonoptional(t)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/typeanal.py", line 187, in visit_unbound_type_nonoptional
    sym = self.lookup(t.name, t, suppress_errors=self.third_pass)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/semanal.py", line 3095, in lookup_qualified
    self.name_not_defined(name, ctx)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/semanal.py", line 3290, in name_not_defined
    self.fail(message, ctx)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/semanal.py", line 3325, in fail
    self.errors.report(ctx.get_line(), ctx.get_column(), msg, blocker=blocker)
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/errors.py", line 260, in report
    target=self.current_target())
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/errors.py", line 208, in current_target
    return self.scope.current_target()
  File "/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/python3.6/site-packages/mypy/scope.py", line 30, in current_target
    assert self.module
AssertionError: 
/nix/store/njnlagwx40m8f7vim9d4yxvsmdsz01i1-python3.6-mypy-0.620/lib/mypy/typeshed/stdlib/3/_importlib_modulespec.pyi: : note: use --pdb to drop into pdb
gvanrossum commented 5 years ago

What bout version 0.650?

dmvianna commented 5 years ago

I just upgraded and tested. Same thing.

-- Daniel Vianna

On 12 Dec 2018, at 8:47 am, Guido van Rossum notifications@github.com wrote:

What bout version 0.650?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

gvanrossum commented 5 years ago

Oh, I think this is a very long-standing issue. It's been reported before, and I'm sure there's an issue open already. Sadly I don't recall the number.

ilevkivskyi commented 5 years ago

This is a duplicate of https://github.com/python/mypy/issues/5319 which should be fixed. Typically something like this happens when you have a broken install.

dmvianna commented 5 years ago

I tested in in nixos-18.09 installed globally and MacOS homebrew installed via virtualenv. I am skeptical about the broken install explanation.

ethanhs commented 5 years ago

@dmvianna could you tell me where mypy is installed and if there is a typeshed folder in that directory?

Also if you could give the output of running on MacOS with homebrew it would be appreciated.

dmvianna commented 5 years ago

MacOS traceback:

/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/typeshed/stdlib/3/_importlib_modulespec.pyi: : note: please use --show-traceback to print a traceback when reporting a bug
(default) dviannas-iMac:categories dmvianna$ mypy --ignore-missing-imports ~/work/pycategories/categories/maybe.py --show-traceback
/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/typeshed/stdlib/3/_importlib_modulespec.pyi: error: INTERNAL ERROR -- please report a bug at https://github.com/python/mypy/issues version: 0.650
Traceback (most recent call last):
  File "/Users/dmvianna/.venvs/default/bin/mypy", line 11, in <module>
    sys.exit(console_entry())
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/__main__.py", line 7, in console_entry
    main(None)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/main.py", line 92, in main
    res = build.build(sources, options, None, flush_errors, fscache)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/build.py", line 156, in build
    result = _build(sources, options, alt_lib_path, flush_errors, fscache)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/build.py", line 206, in _build
    graph = dispatch(sources, manager)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/build.py", line 2232, in dispatch
    process_graph(graph, manager)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/build.py", line 2532, in process_graph
    process_stale_scc(graph, scc, manager)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/build.py", line 2649, in process_stale_scc
    graph[id].semantic_analysis()
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/build.py", line 1771, in semantic_analysis
    self.manager.semantic_analyzer.visit_file(self.tree, self.xpath, self.options, patches)
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/build.py", line 1580, in wrap_context
    yield
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/build.py", line 1771, in semantic_analysis
    self.manager.semantic_analyzer.visit_file(self.tree, self.xpath, self.options, patches)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/semanal.py", line 308, in visit_file
    v.type = self.anal_type(v.type)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/semanal.py", line 1683, in anal_type
    typ = t.accept(a)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/types.py", line 259, in accept
    return visitor.visit_unbound_type(self)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/typeanal.py", line 183, in visit_unbound_type
    typ = self.visit_unbound_type_nonoptional(t)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/typeanal.py", line 191, in visit_unbound_type_nonoptional
    sym = self.lookup(t.name, t, suppress_errors=self.third_pass)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/semanal.py", line 3381, in lookup_qualified
    self.name_not_defined(name, ctx)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/semanal.py", line 3585, in name_not_defined
    self.fail(message, ctx)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/semanal.py", line 3620, in fail
    self.errors.report(ctx.get_line(), ctx.get_column(), msg, blocker=blocker)
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/errors.py", line 261, in report
    target=self.current_target())
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/errors.py", line 207, in current_target
    return self.scope.current_target()
  File "/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/scope.py", line 31, in current_target
    assert self.module
AssertionError:
/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/typeshed/stdlib/3/_importlib_modulespec.pyi: : note: use --pdb to drop into pdb
dmvianna commented 5 years ago

Yep. There's a typeshed directory. tree output below:

/Users/dmvianna/.venvs/default/lib/python3.7/site-packages/mypy/typeshed
(default) dviannas-iMac:typeshed dmvianna$ tree
.
├── stdlib
│   ├── 2
│   │   ├── BaseHTTPServer.pyi
│   │   ├── ConfigParser.pyi
│   │   ├── Cookie.pyi
│   │   ├── HTMLParser.pyi
│   │   ├── Queue.pyi
│   │   ├── SimpleHTTPServer.pyi
│   │   ├── SocketServer.pyi
│   │   ├── StringIO.pyi
│   │   ├── UserDict.pyi
│   │   ├── UserList.pyi
│   │   ├── UserString.pyi
│   │   ├── __builtin__.pyi
│   │   ├── _ast.pyi
│   │   ├── _collections.pyi
│   │   ├── _functools.pyi
│   │   ├── _hotshot.pyi
│   │   ├── _io.pyi
│   │   ├── _json.pyi
│   │   ├── _md5.pyi
│   │   ├── _sha.pyi
│   │   ├── _sha256.pyi
│   │   ├── _sha512.pyi
│   │   ├── _socket.pyi
│   │   ├── _sre.pyi
│   │   ├── _struct.pyi
│   │   ├── _symtable.pyi
│   │   ├── _threading_local.pyi
│   │   ├── _warnings.pyi
│   │   ├── abc.pyi
│   │   ├── ast.pyi
│   │   ├── atexit.pyi
│   │   ├── builtins.pyi
│   │   ├── cPickle.pyi
│   │   ├── cStringIO.pyi
│   │   ├── collections.pyi
│   │   ├── commands.pyi
│   │   ├── compileall.pyi
│   │   ├── cookielib.pyi
│   │   ├── dircache.pyi
│   │   ├── distutils
│   │   │   ├── __init__.pyi
│   │   │   └── emxccompiler.pyi
│   │   ├── dummy_thread.pyi
│   │   ├── email
│   │   │   ├── MIMEText.pyi
│   │   │   ├── __init__.pyi
│   │   │   ├── _parseaddr.pyi
│   │   │   ├── base64mime.pyi
│   │   │   ├── charset.pyi
│   │   │   ├── encoders.pyi
│   │   │   ├── feedparser.pyi
│   │   │   ├── generator.pyi
│   │   │   ├── header.pyi
│   │   │   ├── iterators.pyi
│   │   │   ├── message.pyi
│   │   │   ├── mime
│   │   │   │   ├── __init__.pyi
│   │   │   │   ├── application.pyi
│   │   │   │   ├── audio.pyi
│   │   │   │   ├── base.pyi
│   │   │   │   ├── image.pyi
│   │   │   │   ├── message.pyi
│   │   │   │   ├── multipart.pyi
│   │   │   │   ├── nonmultipart.pyi
│   │   │   │   └── text.pyi
│   │   │   ├── parser.pyi
│   │   │   ├── quoprimime.pyi
│   │   │   └── utils.pyi
│   │   ├── encodings
│   │   │   ├── __init__.pyi
│   │   │   └── utf_8.pyi
│   │   ├── exceptions.pyi
│   │   ├── fcntl.pyi
│   │   ├── fnmatch.pyi
│   │   ├── functools.pyi
│   │   ├── future_builtins.pyi
│   │   ├── gc.pyi
│   │   ├── getopt.pyi
│   │   ├── getpass.pyi
│   │   ├── gettext.pyi
│   │   ├── glob.pyi
│   │   ├── gzip.pyi
│   │   ├── hashlib.pyi
│   │   ├── heapq.pyi
│   │   ├── htmlentitydefs.pyi
│   │   ├── httplib.pyi
│   │   ├── imp.pyi
│   │   ├── importlib.pyi
│   │   ├── inspect.pyi
│   │   ├── io.pyi
│   │   ├── itertools.pyi
│   │   ├── json.pyi
│   │   ├── macpath.pyi
│   │   ├── markupbase.pyi
│   │   ├── md5.pyi
│   │   ├── mimetools.pyi
│   │   ├── multiprocessing
│   │   │   ├── __init__.pyi
│   │   │   ├── dummy
│   │   │   │   ├── __init__.pyi
│   │   │   │   └── connection.pyi
│   │   │   ├── pool.pyi
│   │   │   ├── process.pyi
│   │   │   └── util.pyi
│   │   ├── mutex.pyi
│   │   ├── ntpath.pyi
│   │   ├── nturl2path.pyi
│   │   ├── os
│   │   │   ├── __init__.pyi
│   │   │   └── path.pyi
│   │   ├── os2emxpath.pyi
│   │   ├── pipes.pyi
│   │   ├── platform.pyi
│   │   ├── popen2.pyi
│   │   ├── posix.pyi
│   │   ├── posixpath.pyi
│   │   ├── pydoc.pyi
│   │   ├── random.pyi
│   │   ├── re.pyi
│   │   ├── repr.pyi
│   │   ├── resource.pyi
│   │   ├── rfc822.pyi
│   │   ├── robotparser.pyi
│   │   ├── runpy.pyi
│   │   ├── sets.pyi
│   │   ├── sha.pyi
│   │   ├── shelve.pyi
│   │   ├── shlex.pyi
│   │   ├── signal.pyi
│   │   ├── smtplib.pyi
│   │   ├── spwd.pyi
│   │   ├── sre_constants.pyi
│   │   ├── sre_parse.pyi
│   │   ├── stat.pyi
│   │   ├── string.pyi
│   │   ├── stringold.pyi
│   │   ├── strop.pyi
│   │   ├── subprocess.pyi
│   │   ├── symbol.pyi
│   │   ├── sys.pyi
│   │   ├── tempfile.pyi
│   │   ├── textwrap.pyi
│   │   ├── thread.pyi
│   │   ├── toaiff.pyi
│   │   ├── tokenize.pyi
│   │   ├── types.pyi
│   │   ├── typing.pyi
│   │   ├── unittest.pyi
│   │   ├── urllib.pyi
│   │   ├── urllib2.pyi
│   │   ├── urlparse.pyi
│   │   ├── user.pyi
│   │   ├── whichdb.pyi
│   │   └── xmlrpclib.pyi
│   ├── 2and3
│   │   ├── __future__.pyi
│   │   ├── _bisect.pyi
│   │   ├── _codecs.pyi
│   │   ├── _csv.pyi
│   │   ├── _heapq.pyi
│   │   ├── _random.pyi
│   │   ├── _weakref.pyi
│   │   ├── _weakrefset.pyi
│   │   ├── argparse.pyi
│   │   ├── array.pyi
│   │   ├── asynchat.pyi
│   │   ├── asyncore.pyi
│   │   ├── base64.pyi
│   │   ├── binascii.pyi
│   │   ├── binhex.pyi
│   │   ├── bisect.pyi
│   │   ├── bz2.pyi
│   │   ├── cProfile.pyi
│   │   ├── calendar.pyi
│   │   ├── cgi.pyi
│   │   ├── chunk.pyi
│   │   ├── cmath.pyi
│   │   ├── cmd.pyi
│   │   ├── code.pyi
│   │   ├── codecs.pyi
│   │   ├── codeop.pyi
│   │   ├── colorsys.pyi
│   │   ├── contextlib.pyi
│   │   ├── copy.pyi
│   │   ├── crypt.pyi
│   │   ├── csv.pyi
│   │   ├── ctypes
│   │   │   ├── __init__.pyi
│   │   │   ├── util.pyi
│   │   │   └── wintypes.pyi
│   │   ├── datetime.pyi
│   │   ├── decimal.pyi
│   │   ├── difflib.pyi
│   │   ├── dis.pyi
│   │   ├── distutils
│   │   │   ├── __init__.pyi
│   │   │   ├── archive_util.pyi
│   │   │   ├── bcppcompiler.pyi
│   │   │   ├── ccompiler.pyi
│   │   │   ├── cmd.pyi
│   │   │   ├── command
│   │   │   │   ├── __init__.pyi
│   │   │   │   ├── bdist.pyi
│   │   │   │   ├── bdist_dumb.pyi
│   │   │   │   ├── bdist_msi.pyi
│   │   │   │   ├── bdist_packager.pyi
│   │   │   │   ├── bdist_rpm.pyi
│   │   │   │   ├── bdist_wininst.pyi
│   │   │   │   ├── build.pyi
│   │   │   │   ├── build_clib.pyi
│   │   │   │   ├── build_ext.pyi
│   │   │   │   ├── build_py.pyi
│   │   │   │   ├── build_scripts.pyi
│   │   │   │   ├── check.pyi
│   │   │   │   ├── clean.pyi
│   │   │   │   ├── config.pyi
│   │   │   │   ├── install.pyi
│   │   │   │   ├── install_data.pyi
│   │   │   │   ├── install_headers.pyi
│   │   │   │   ├── install_lib.pyi
│   │   │   │   ├── install_scripts.pyi
│   │   │   │   ├── register.pyi
│   │   │   │   └── sdist.pyi
│   │   │   ├── core.pyi
│   │   │   ├── cygwinccompiler.pyi
│   │   │   ├── debug.pyi
│   │   │   ├── dep_util.pyi
│   │   │   ├── dir_util.pyi
│   │   │   ├── dist.pyi
│   │   │   ├── errors.pyi
│   │   │   ├── extension.pyi
│   │   │   ├── fancy_getopt.pyi
│   │   │   ├── file_util.pyi
│   │   │   ├── filelist.pyi
│   │   │   ├── log.pyi
│   │   │   ├── msvccompiler.pyi
│   │   │   ├── spawn.pyi
│   │   │   ├── sysconfig.pyi
│   │   │   ├── text_file.pyi
│   │   │   ├── unixccompiler.pyi
│   │   │   ├── util.pyi
│   │   │   └── version.pyi
│   │   ├── doctest.pyi
│   │   ├── errno.pyi
│   │   ├── filecmp.pyi
│   │   ├── fileinput.pyi
│   │   ├── formatter.pyi
│   │   ├── fractions.pyi
│   │   ├── ftplib.pyi
│   │   ├── genericpath.pyi
│   │   ├── grp.pyi
│   │   ├── hmac.pyi
│   │   ├── imaplib.pyi
│   │   ├── imghdr.pyi
│   │   ├── keyword.pyi
│   │   ├── lib2to3
│   │   │   ├── __init__.pyi
│   │   │   ├── pgen2
│   │   │   │   ├── __init__.pyi
│   │   │   │   ├── driver.pyi
│   │   │   │   ├── grammar.pyi
│   │   │   │   ├── literals.pyi
│   │   │   │   ├── parse.pyi
│   │   │   │   ├── pgen.pyi
│   │   │   │   ├── token.pyi
│   │   │   │   └── tokenize.pyi
│   │   │   ├── pygram.pyi
│   │   │   └── pytree.pyi
│   │   ├── linecache.pyi
│   │   ├── locale.pyi
│   │   ├── logging
│   │   │   ├── __init__.pyi
│   │   │   ├── config.pyi
│   │   │   └── handlers.pyi
│   │   ├── marshal.pyi
│   │   ├── math.pyi
│   │   ├── mimetypes.pyi
│   │   ├── mmap.pyi
│   │   ├── netrc.pyi
│   │   ├── nis.pyi
│   │   ├── numbers.pyi
│   │   ├── opcode.pyi
│   │   ├── operator.pyi
│   │   ├── optparse.pyi
│   │   ├── pdb.pyi
│   │   ├── pickle.pyi
│   │   ├── pickletools.pyi
│   │   ├── pkgutil.pyi
│   │   ├── plistlib.pyi
│   │   ├── poplib.pyi
│   │   ├── pprint.pyi
│   │   ├── profile.pyi
│   │   ├── pstats.pyi
│   │   ├── pty.pyi
│   │   ├── pwd.pyi
│   │   ├── py_compile.pyi
│   │   ├── pyclbr.pyi
│   │   ├── pyexpat
│   │   │   ├── __init__.pyi
│   │   │   ├── errors.pyi
│   │   │   └── model.pyi
│   │   ├── quopri.pyi
│   │   ├── readline.pyi
│   │   ├── rlcompleter.pyi
│   │   ├── sched.pyi
│   │   ├── select.pyi
│   │   ├── shutil.pyi
│   │   ├── site.pyi
│   │   ├── smtpd.pyi
│   │   ├── sndhdr.pyi
│   │   ├── socket.pyi
│   │   ├── sqlite3
│   │   │   ├── __init__.pyi
│   │   │   └── dbapi2.pyi
│   │   ├── sre_compile.pyi
│   │   ├── ssl.pyi
│   │   ├── stringprep.pyi
│   │   ├── struct.pyi
│   │   ├── sunau.pyi
│   │   ├── symtable.pyi
│   │   ├── sysconfig.pyi
│   │   ├── syslog.pyi
│   │   ├── tabnanny.pyi
│   │   ├── tarfile.pyi
│   │   ├── telnetlib.pyi
│   │   ├── termios.pyi
│   │   ├── threading.pyi
│   │   ├── time.pyi
│   │   ├── timeit.pyi
│   │   ├── token.pyi
│   │   ├── trace.pyi
│   │   ├── traceback.pyi
│   │   ├── tty.pyi
│   │   ├── unicodedata.pyi
│   │   ├── uu.pyi
│   │   ├── uuid.pyi
│   │   ├── warnings.pyi
│   │   ├── wave.pyi
│   │   ├── weakref.pyi
│   │   ├── webbrowser.pyi
│   │   ├── wsgiref
│   │   │   ├── __init__.pyi
│   │   │   ├── handlers.pyi
│   │   │   ├── headers.pyi
│   │   │   ├── simple_server.pyi
│   │   │   ├── types.pyi
│   │   │   ├── util.pyi
│   │   │   └── validate.pyi
│   │   ├── xdrlib.pyi
│   │   ├── xml
│   │   │   ├── __init__.pyi
│   │   │   ├── etree
│   │   │   │   ├── ElementInclude.pyi
│   │   │   │   ├── ElementPath.pyi
│   │   │   │   ├── ElementTree.pyi
│   │   │   │   ├── __init__.pyi
│   │   │   │   └── cElementTree.pyi
│   │   │   ├── parsers
│   │   │   │   ├── __init__.pyi
│   │   │   │   └── expat
│   │   │   │       ├── __init__.pyi
│   │   │   │       ├── errors.pyi
│   │   │   │       └── model.pyi
│   │   │   └── sax
│   │   │       ├── __init__.pyi
│   │   │       ├── handler.pyi
│   │   │       ├── saxutils.pyi
│   │   │       └── xmlreader.pyi
│   │   ├── zipfile.pyi
│   │   ├── zipimport.pyi
│   │   └── zlib.pyi
│   ├── 3
│   │   ├── _ast.pyi
│   │   ├── _compression.pyi
│   │   ├── _curses.pyi
│   │   ├── _dummy_thread.pyi
│   │   ├── _imp.pyi
│   │   ├── _importlib_modulespec.pyi
│   │   ├── _json.pyi
│   │   ├── _markupbase.pyi
│   │   ├── _operator.pyi
│   │   ├── _posixsubprocess.pyi
│   │   ├── _stat.pyi
│   │   ├── _subprocess.pyi
│   │   ├── _thread.pyi
│   │   ├── _threading_local.pyi
│   │   ├── _tracemalloc.pyi
│   │   ├── _warnings.pyi
│   │   ├── _winapi.pyi
│   │   ├── abc.pyi
│   │   ├── ast.pyi
│   │   ├── asyncio
│   │   │   ├── __init__.pyi
│   │   │   ├── coroutines.pyi
│   │   │   ├── events.pyi
│   │   │   ├── futures.pyi
│   │   │   ├── locks.pyi
│   │   │   ├── protocols.pyi
│   │   │   ├── queues.pyi
│   │   │   ├── runners.pyi
│   │   │   ├── streams.pyi
│   │   │   ├── subprocess.pyi
│   │   │   ├── tasks.pyi
│   │   │   └── transports.pyi
│   │   ├── atexit.pyi
│   │   ├── builtins.pyi
│   │   ├── collections
│   │   │   ├── __init__.pyi
│   │   │   └── abc.pyi
│   │   ├── compileall.pyi
│   │   ├── concurrent
│   │   │   ├── __init__.pyi
│   │   │   └── futures
│   │   │       ├── __init__.pyi
│   │   │       ├── _base.pyi
│   │   │       ├── process.pyi
│   │   │       └── thread.pyi
│   │   ├── configparser.pyi
│   │   ├── curses
│   │   │   ├── __init__.pyi
│   │   │   ├── ascii.pyi
│   │   │   ├── panel.pyi
│   │   │   └── textpad.pyi
│   │   ├── email
│   │   │   ├── __init__.pyi
│   │   │   ├── charset.pyi
│   │   │   ├── contentmanager.pyi
│   │   │   ├── encoders.pyi
│   │   │   ├── errors.pyi
│   │   │   ├── feedparser.pyi
│   │   │   ├── generator.pyi
│   │   │   ├── header.pyi
│   │   │   ├── headerregistry.pyi
│   │   │   ├── iterators.pyi
│   │   │   ├── message.pyi
│   │   │   ├── mime
│   │   │   │   ├── __init__.pyi
│   │   │   │   ├── application.pyi
│   │   │   │   ├── audio.pyi
│   │   │   │   ├── base.pyi
│   │   │   │   ├── image.pyi
│   │   │   │   ├── message.pyi
│   │   │   │   ├── multipart.pyi
│   │   │   │   ├── nonmultipart.pyi
│   │   │   │   └── text.pyi
│   │   │   ├── parser.pyi
│   │   │   ├── policy.pyi
│   │   │   └── utils.pyi
│   │   ├── encodings
│   │   │   ├── __init__.pyi
│   │   │   └── utf_8.pyi
│   │   ├── enum.pyi
│   │   ├── faulthandler.pyi
│   │   ├── fcntl.pyi
│   │   ├── fnmatch.pyi
│   │   ├── functools.pyi
│   │   ├── gc.pyi
│   │   ├── getopt.pyi
│   │   ├── getpass.pyi
│   │   ├── gettext.pyi
│   │   ├── glob.pyi
│   │   ├── gzip.pyi
│   │   ├── hashlib.pyi
│   │   ├── heapq.pyi
│   │   ├── html
│   │   │   ├── __init__.pyi
│   │   │   ├── entities.pyi
│   │   │   └── parser.pyi
│   │   ├── http
│   │   │   ├── __init__.pyi
│   │   │   ├── client.pyi
│   │   │   ├── cookiejar.pyi
│   │   │   ├── cookies.pyi
│   │   │   └── server.pyi
│   │   ├── imp.pyi
│   │   ├── importlib
│   │   │   ├── __init__.pyi
│   │   │   ├── abc.pyi
│   │   │   ├── machinery.pyi
│   │   │   ├── resources.pyi
│   │   │   └── util.pyi
│   │   ├── inspect.pyi
│   │   ├── io.pyi
│   │   ├── ipaddress.pyi
│   │   ├── itertools.pyi
│   │   ├── json
│   │   │   ├── __init__.pyi
│   │   │   ├── decoder.pyi
│   │   │   └── encoder.pyi
│   │   ├── lzma.pyi
│   │   ├── macpath.pyi
│   │   ├── msvcrt.pyi
│   │   ├── multiprocessing
│   │   │   ├── __init__.pyi
│   │   │   ├── connection.pyi
│   │   │   ├── context.pyi
│   │   │   ├── dummy
│   │   │   │   ├── __init__.pyi
│   │   │   │   └── connection.pyi
│   │   │   ├── managers.pyi
│   │   │   ├── pool.pyi
│   │   │   ├── process.pyi
│   │   │   ├── queues.pyi
│   │   │   └── synchronize.pyi
│   │   ├── nntplib.pyi
│   │   ├── ntpath.pyi
│   │   ├── nturl2path.pyi
│   │   ├── os
│   │   │   ├── __init__.pyi
│   │   │   └── path.pyi
│   │   ├── pathlib.pyi
│   │   ├── pipes.pyi
│   │   ├── platform.pyi
│   │   ├── posix.pyi
│   │   ├── posixpath.pyi
│   │   ├── queue.pyi
│   │   ├── random.pyi
│   │   ├── re.pyi
│   │   ├── reprlib.pyi
│   │   ├── resource.pyi
│   │   ├── runpy.pyi
│   │   ├── selectors.pyi
│   │   ├── shelve.pyi
│   │   ├── shlex.pyi
│   │   ├── signal.pyi
│   │   ├── smtplib.pyi
│   │   ├── socketserver.pyi
│   │   ├── spwd.pyi
│   │   ├── sre_constants.pyi
│   │   ├── sre_parse.pyi
│   │   ├── stat.pyi
│   │   ├── statistics.pyi
│   │   ├── string.pyi
│   │   ├── subprocess.pyi
│   │   ├── symbol.pyi
│   │   ├── sys.pyi
│   │   ├── tempfile.pyi
│   │   ├── textwrap.pyi
│   │   ├── tkinter
│   │   │   ├── __init__.pyi
│   │   │   ├── commondialog.pyi
│   │   │   ├── constants.pyi
│   │   │   ├── dialog.pyi
│   │   │   ├── filedialog.pyi
│   │   │   ├── messagebox.pyi
│   │   │   └── ttk.pyi
│   │   ├── tokenize.pyi
│   │   ├── tracemalloc.pyi
│   │   ├── types.pyi
│   │   ├── typing.pyi
│   │   ├── unittest
│   │   │   ├── __init__.pyi
│   │   │   └── mock.pyi
│   │   └── urllib
│   │       ├── __init__.pyi
│   │       ├── error.pyi
│   │       ├── parse.pyi
│   │       ├── request.pyi
│   │       ├── response.pyi
│   │       └── robotparser.pyi
│   ├── 3.5
│   │   └── zipapp.pyi
│   ├── 3.6
│   │   └── secrets.pyi
│   └── 3.7
│       ├── contextvars.pyi
│       └── dataclasses.pyi
├── tests
│   ├── __pycache__
│   │   ├── check_consistent.cpython-37.pyc
│   │   ├── mypy_selftest.cpython-37.pyc
│   │   ├── mypy_test.cpython-37.pyc
│   │   └── pytype_test.cpython-37.pyc
│   ├── check_consistent.py
│   ├── mypy_selftest.py
│   ├── mypy_test.py
│   └── pytype_test.py
└── third_party
    ├── 2
    │   ├── OpenSSL
    │   │   ├── __init__.pyi
    │   │   └── crypto.pyi
    │   ├── concurrent
    │   │   ├── __init__.pyi
    │   │   └── futures
    │   │       ├── __init__.pyi
    │   │       ├── _base.pyi
    │   │       ├── process.pyi
    │   │       └── thread.pyi
    │   ├── cryptography
    │   │   ├── __init__.pyi
    │   │   └── hazmat
    │   │       ├── __init__.pyi
    │   │       └── primitives
    │   │           ├── __init__.pyi
    │   │           ├── asymmetric
    │   │           │   ├── __init__.pyi
    │   │           │   ├── dsa.pyi
    │   │           │   └── rsa.pyi
    │   │           └── serialization.pyi
    │   ├── enum.pyi
    │   ├── fb303
    │   │   ├── FacebookService.pyi
    │   │   └── __init__.pyi
    │   ├── gflags.pyi
    │   ├── kazoo
    │   │   ├── __init__.pyi
    │   │   ├── client.pyi
    │   │   ├── exceptions.pyi
    │   │   └── recipe
    │   │       ├── __init__.pyi
    │   │       └── watchers.pyi
    │   ├── pathlib2.pyi
    │   ├── pycurl.pyi
    │   ├── pymssql.pyi
    │   ├── redis
    │   │   ├── __init__.pyi
    │   │   ├── client.pyi
    │   │   ├── connection.pyi
    │   │   ├── exceptions.pyi
    │   │   └── utils.pyi
    │   ├── routes
    │   │   ├── __init__.pyi
    │   │   ├── mapper.pyi
    │   │   └── util.pyi
    │   ├── scribe
    │   │   ├── __init__.pyi
    │   │   ├── scribe.pyi
    │   │   └── ttypes.pyi
    │   ├── six
    │   │   ├── __init__.pyi
    │   │   └── moves
    │   │       ├── BaseHTTPServer.pyi
    │   │       ├── SimpleHTTPServer.pyi
    │   │       ├── __init__.pyi
    │   │       ├── _dummy_thread.pyi
    │   │       ├── _thread.pyi
    │   │       ├── cPickle.pyi
    │   │       ├── configparser.pyi
    │   │       ├── email_mime_text.pyi
    │   │       ├── html_entities.pyi
    │   │       ├── html_parser.pyi
    │   │       ├── http_client.pyi
    │   │       ├── http_cookiejar.pyi
    │   │       ├── http_cookies.pyi
    │   │       ├── queue.pyi
    │   │       ├── reprlib.pyi
    │   │       ├── socketserver.pyi
    │   │       ├── urllib
    │   │       │   ├── __init__.pyi
    │   │       │   ├── error.pyi
    │   │       │   ├── parse.pyi
    │   │       │   ├── request.pyi
    │   │       │   ├── response.pyi
    │   │       │   └── robotparser.pyi
    │   │       ├── urllib_error.pyi
    │   │       ├── urllib_parse.pyi
    │   │       ├── urllib_request.pyi
    │   │       ├── urllib_response.pyi
    │   │       ├── urllib_robotparser.pyi
    │   │       └── xmlrpc_client.pyi
    │   └── tornado
    │       ├── __init__.pyi
    │       ├── concurrent.pyi
    │       ├── gen.pyi
    │       ├── httpclient.pyi
    │       ├── httpserver.pyi
    │       ├── httputil.pyi
    │       ├── ioloop.pyi
    │       ├── locks.pyi
    │       ├── netutil.pyi
    │       ├── process.pyi
    │       ├── tcpserver.pyi
    │       ├── testing.pyi
    │       ├── util.pyi
    │       └── web.pyi
    ├── 2and3
    │   ├── Crypto
    │   │   ├── Cipher
    │   │   │   ├── AES.pyi
    │   │   │   ├── ARC2.pyi
    │   │   │   ├── ARC4.pyi
    │   │   │   ├── Blowfish.pyi
    │   │   │   ├── CAST.pyi
    │   │   │   ├── DES.pyi
    │   │   │   ├── DES3.pyi
    │   │   │   ├── PKCS1_OAEP.pyi
    │   │   │   ├── PKCS1_v1_5.pyi
    │   │   │   ├── XOR.pyi
    │   │   │   ├── __init__.pyi
    │   │   │   └── blockalgo.pyi
    │   │   ├── Hash
    │   │   │   ├── HMAC.pyi
    │   │   │   ├── MD2.pyi
    │   │   │   ├── MD4.pyi
    │   │   │   ├── MD5.pyi
    │   │   │   ├── RIPEMD.pyi
    │   │   │   ├── SHA.pyi
    │   │   │   ├── SHA224.pyi
    │   │   │   ├── SHA256.pyi
    │   │   │   ├── SHA384.pyi
    │   │   │   ├── SHA512.pyi
    │   │   │   ├── __init__.pyi
    │   │   │   └── hashalgo.pyi
    │   │   ├── Protocol
    │   │   │   ├── AllOrNothing.pyi
    │   │   │   ├── Chaffing.pyi
    │   │   │   ├── KDF.pyi
    │   │   │   └── __init__.pyi
    │   │   ├── PublicKey
    │   │   │   ├── DSA.pyi
    │   │   │   ├── ElGamal.pyi
    │   │   │   ├── RSA.pyi
    │   │   │   ├── __init__.pyi
    │   │   │   └── pubkey.pyi
    │   │   ├── Random
    │   │   │   ├── Fortuna
    │   │   │   │   ├── FortunaAccumulator.pyi
    │   │   │   │   ├── FortunaGenerator.pyi
    │   │   │   │   ├── SHAd256.pyi
    │   │   │   │   └── __init__.pyi
    │   │   │   ├── OSRNG
    │   │   │   │   ├── __init__.pyi
    │   │   │   │   ├── fallback.pyi
    │   │   │   │   ├── posix.pyi
    │   │   │   │   └── rng_base.pyi
    │   │   │   ├── __init__.pyi
    │   │   │   └── random.pyi
    │   │   ├── Signature
    │   │   │   ├── PKCS1_PSS.pyi
    │   │   │   ├── PKCS1_v1_5.pyi
    │   │   │   └── __init__.pyi
    │   │   ├── Util
    │   │   │   ├── Counter.pyi
    │   │   │   ├── RFC1751.pyi
    │   │   │   ├── __init__.pyi
    │   │   │   ├── asn1.pyi
    │   │   │   ├── number.pyi
    │   │   │   ├── randpool.pyi
    │   │   │   └── strxor.pyi
    │   │   ├── __init__.pyi
    │   │   └── pct_warnings.pyi
    │   ├── atomicwrites
    │   │   └── __init__.pyi
    │   ├── attr
    │   │   ├── __init__.pyi
    │   │   ├── converters.pyi
    │   │   ├── exceptions.pyi
    │   │   ├── filters.pyi
    │   │   └── validators.pyi
    │   ├── backports
    │   │   ├── __init__.pyi
    │   │   └── ssl_match_hostname.pyi
    │   ├── backports_abc.pyi
    │   ├── boto
    │   │   ├── __init__.pyi
    │   │   ├── auth.pyi
    │   │   ├── auth_handler.pyi
    │   │   ├── compat.pyi
    │   │   ├── connection.pyi
    │   │   ├── ec2
    │   │   │   └── __init__.pyi
    │   │   ├── elb
    │   │   │   └── __init__.pyi
    │   │   ├── exception.pyi
    │   │   ├── kms
    │   │   │   ├── __init__.pyi
    │   │   │   ├── exceptions.pyi
    │   │   │   └── layer1.pyi
    │   │   ├── plugin.pyi
    │   │   ├── regioninfo.pyi
    │   │   ├── s3
    │   │   │   ├── __init__.pyi
    │   │   │   ├── acl.pyi
    │   │   │   ├── bucket.pyi
    │   │   │   ├── bucketlistresultset.pyi
    │   │   │   ├── bucketlogging.pyi
    │   │   │   ├── connection.pyi
    │   │   │   ├── cors.pyi
    │   │   │   ├── deletemarker.pyi
    │   │   │   ├── key.pyi
    │   │   │   ├── keyfile.pyi
    │   │   │   ├── lifecycle.pyi
    │   │   │   ├── multidelete.pyi
    │   │   │   ├── multipart.pyi
    │   │   │   ├── prefix.pyi
    │   │   │   ├── tagging.pyi
    │   │   │   ├── user.pyi
    │   │   │   └── website.pyi
    │   │   └── utils.pyi
    │   ├── certifi.pyi
    │   ├── characteristic
    │   │   └── __init__.pyi
    │   ├── click
    │   │   ├── __init__.pyi
    │   │   ├── _termui_impl.pyi
    │   │   ├── core.pyi
    │   │   ├── decorators.pyi
    │   │   ├── exceptions.pyi
    │   │   ├── formatting.pyi
    │   │   ├── globals.pyi
    │   │   ├── parser.pyi
    │   │   ├── termui.pyi
    │   │   ├── testing.pyi
    │   │   ├── types.pyi
    │   │   └── utils.pyi
    │   ├── croniter.pyi
    │   ├── dateutil
    │   │   ├── __init__.pyi
    │   │   ├── _common.pyi
    │   │   ├── parser.pyi
    │   │   ├── relativedelta.pyi
    │   │   ├── rrule.pyi
    │   │   └── tz
    │   │       ├── __init__.pyi
    │   │       ├── _common.pyi
    │   │       └── tz.pyi
    │   ├── emoji.pyi
    │   ├── first.pyi
    │   ├── google
    │   │   ├── __init__.pyi
    │   │   └── protobuf
    │   │       ├── __init__.pyi
    │   │       ├── any_pb2.pyi
    │   │       ├── any_test_pb2.pyi
    │   │       ├── api_pb2.pyi
    │   │       ├── compiler
    │   │       │   ├── __init__.pyi
    │   │       │   └── plugin_pb2.pyi
    │   │       ├── descriptor.pyi
    │   │       ├── descriptor_pb2.pyi
    │   │       ├── descriptor_pool.pyi
    │   │       ├── duration_pb2.pyi
    │   │       ├── empty_pb2.pyi
    │   │       ├── field_mask_pb2.pyi
    │   │       ├── internal
    │   │       │   ├── __init__.pyi
    │   │       │   ├── containers.pyi
    │   │       │   ├── decoder.pyi
    │   │       │   ├── encoder.pyi
    │   │       │   ├── enum_type_wrapper.pyi
    │   │       │   ├── message_listener.pyi
    │   │       │   ├── well_known_types.pyi
    │   │       │   └── wire_format.pyi
    │   │       ├── json_format.pyi
    │   │       ├── map_proto2_unittest_pb2.pyi
    │   │       ├── map_unittest_pb2.pyi
    │   │       ├── message.pyi
    │   │       ├── message_factory.pyi
    │   │       ├── reflection.pyi
    │   │       ├── service.pyi
    │   │       ├── source_context_pb2.pyi
    │   │       ├── struct_pb2.pyi
    │   │       ├── symbol_database.pyi
    │   │       ├── test_messages_proto2_pb2.pyi
    │   │       ├── test_messages_proto3_pb2.pyi
    │   │       ├── timestamp_pb2.pyi
    │   │       ├── type_pb2.pyi
    │   │       ├── unittest_arena_pb2.pyi
    │   │       ├── unittest_custom_options_pb2.pyi
    │   │       ├── unittest_import_pb2.pyi
    │   │       ├── unittest_import_public_pb2.pyi
    │   │       ├── unittest_mset_pb2.pyi
    │   │       ├── unittest_mset_wire_format_pb2.pyi
    │   │       ├── unittest_no_arena_import_pb2.pyi
    │   │       ├── unittest_no_arena_pb2.pyi
    │   │       ├── unittest_no_generic_services_pb2.pyi
    │   │       ├── unittest_pb2.pyi
    │   │       ├── unittest_proto3_arena_pb2.pyi
    │   │       ├── util
    │   │       │   ├── __init__.pyi
    │   │       │   └── json_format_proto3_pb2.pyi
    │   │       └── wrappers_pb2.pyi
    │   ├── itsdangerous.pyi
    │   ├── jinja2
    │   │   ├── __init__.pyi
    │   │   ├── _compat.pyi
    │   │   ├── _stringdefs.pyi
    │   │   ├── bccache.pyi
    │   │   ├── compiler.pyi
    │   │   ├── constants.pyi
    │   │   ├── debug.pyi
    │   │   ├── defaults.pyi
    │   │   ├── environment.pyi
    │   │   ├── exceptions.pyi
    │   │   ├── ext.pyi
    │   │   ├── filters.pyi
    │   │   ├── lexer.pyi
    │   │   ├── loaders.pyi
    │   │   ├── meta.pyi
    │   │   ├── nodes.pyi
    │   │   ├── optimizer.pyi
    │   │   ├── parser.pyi
    │   │   ├── runtime.pyi
    │   │   ├── sandbox.pyi
    │   │   ├── tests.pyi
    │   │   ├── utils.pyi
    │   │   └── visitor.pyi
    │   ├── markupsafe
    │   │   ├── __init__.pyi
    │   │   ├── _compat.pyi
    │   │   ├── _constants.pyi
    │   │   ├── _native.pyi
    │   │   └── _speedups.pyi
    │   ├── mock.pyi
    │   ├── mypy_extensions.pyi
    │   ├── pymysql
    │   │   ├── __init__.pyi
    │   │   ├── charset.pyi
    │   │   ├── connections.pyi
    │   │   ├── constants
    │   │   │   ├── CLIENT.pyi
    │   │   │   ├── COMMAND.pyi
    │   │   │   ├── ER.pyi
    │   │   │   ├── FIELD_TYPE.pyi
    │   │   │   ├── FLAG.pyi
    │   │   │   ├── SERVER_STATUS.pyi
    │   │   │   └── __init__.pyi
    │   │   ├── converters.pyi
    │   │   ├── cursors.pyi
    │   │   ├── err.pyi
    │   │   ├── times.pyi
    │   │   └── util.pyi
    │   ├── pynamodb
    │   │   ├── __init__.pyi
    │   │   ├── attributes.pyi
    │   │   ├── connection
    │   │   │   ├── __init__.pyi
    │   │   │   ├── base.pyi
    │   │   │   ├── table.pyi
    │   │   │   └── util.pyi
    │   │   ├── constants.pyi
    │   │   ├── exceptions.pyi
    │   │   ├── indexes.pyi
    │   │   ├── models.pyi
    │   │   ├── settings.pyi
    │   │   ├── throttle.pyi
    │   │   └── types.pyi
    │   ├── pytz
    │   │   └── __init__.pyi
    │   ├── requests
    │   │   ├── __init__.pyi
    │   │   ├── adapters.pyi
    │   │   ├── api.pyi
    │   │   ├── auth.pyi
    │   │   ├── compat.pyi
    │   │   ├── cookies.pyi
    │   │   ├── exceptions.pyi
    │   │   ├── hooks.pyi
    │   │   ├── models.pyi
    │   │   ├── packages
    │   │   │   ├── __init__.pyi
    │   │   │   └── urllib3
    │   │   │       ├── __init__.pyi
    │   │   │       ├── _collections.pyi
    │   │   │       ├── connection.pyi
    │   │   │       ├── connectionpool.pyi
    │   │   │       ├── contrib
    │   │   │       │   └── __init__.pyi
    │   │   │       ├── exceptions.pyi
    │   │   │       ├── fields.pyi
    │   │   │       ├── filepost.pyi
    │   │   │       ├── packages
    │   │   │       │   ├── __init__.pyi
    │   │   │       │   └── ssl_match_hostname
    │   │   │       │       ├── __init__.pyi
    │   │   │       │       └── _implementation.pyi
    │   │   │       ├── poolmanager.pyi
    │   │   │       ├── request.pyi
    │   │   │       ├── response.pyi
    │   │   │       └── util
    │   │   │           ├── __init__.pyi
    │   │   │           ├── connection.pyi
    │   │   │           ├── request.pyi
    │   │   │           ├── response.pyi
    │   │   │           ├── retry.pyi
    │   │   │           ├── ssl_.pyi
    │   │   │           ├── timeout.pyi
    │   │   │           └── url.pyi
    │   │   ├── sessions.pyi
    │   │   ├── status_codes.pyi
    │   │   ├── structures.pyi
    │   │   └── utils.pyi
    │   ├── simplejson
    │   │   ├── __init__.pyi
    │   │   ├── decoder.pyi
    │   │   ├── encoder.pyi
    │   │   └── scanner.pyi
    │   ├── singledispatch.pyi
    │   ├── termcolor.pyi
    │   ├── toml.pyi
    │   ├── typing_extensions.pyi
    │   ├── ujson.pyi
    │   ├── werkzeug
    │   │   ├── __init__.pyi
    │   │   ├── _compat.pyi
    │   │   ├── _internal.pyi
    │   │   ├── _reloader.pyi
    │   │   ├── contrib
    │   │   │   ├── __init__.pyi
    │   │   │   ├── atom.pyi
    │   │   │   ├── cache.pyi
    │   │   │   ├── fixers.pyi
    │   │   │   ├── iterio.pyi
    │   │   │   ├── jsrouting.pyi
    │   │   │   ├── limiter.pyi
    │   │   │   ├── lint.pyi
    │   │   │   ├── profiler.pyi
    │   │   │   ├── securecookie.pyi
    │   │   │   ├── sessions.pyi
    │   │   │   ├── testtools.pyi
    │   │   │   └── wrappers.pyi
    │   │   ├── datastructures.pyi
    │   │   ├── debug
    │   │   │   ├── __init__.pyi
    │   │   │   ├── console.pyi
    │   │   │   ├── repr.pyi
    │   │   │   └── tbtools.pyi
    │   │   ├── exceptions.pyi
    │   │   ├── filesystem.pyi
    │   │   ├── formparser.pyi
    │   │   ├── http.pyi
    │   │   ├── local.pyi
    │   │   ├── posixemulation.pyi
    │   │   ├── routing.pyi
    │   │   ├── script.pyi
    │   │   ├── security.pyi
    │   │   ├── serving.pyi
    │   │   ├── test.pyi
    │   │   ├── testapp.pyi
    │   │   ├── urls.pyi
    │   │   ├── useragents.pyi
    │   │   ├── utils.pyi
    │   │   ├── wrappers.pyi
    │   │   └── wsgi.pyi
    │   └── yaml
    │       ├── __init__.pyi
    │       ├── composer.pyi
    │       ├── constructor.pyi
    │       ├── cyaml.pyi
    │       ├── dumper.pyi
    │       ├── emitter.pyi
    │       ├── error.pyi
    │       ├── events.pyi
    │       ├── loader.pyi
    │       ├── nodes.pyi
    │       ├── parser.pyi
    │       ├── reader.pyi
    │       ├── representer.pyi
    │       ├── resolver.pyi
    │       ├── scanner.pyi
    │       ├── serializer.pyi
    │       └── tokens.pyi
    ├── 3
    │   ├── dataclasses.pyi
    │   ├── docutils
    │   │   ├── __init__.pyi
    │   │   ├── examples.pyi
    │   │   ├── nodes.pyi
    │   │   └── parsers
    │   │       ├── __init__.pyi
    │   │       └── rst
    │   │           ├── __init__.pyi
    │   │           ├── nodes.pyi
    │   │           ├── roles.pyi
    │   │           └── states.pyi
    │   ├── jwt
    │   │   ├── __init__.pyi
    │   │   ├── algorithms.pyi
    │   │   └── contrib
    │   │       ├── __init__.pyi
    │   │       └── algorithms
    │   │           ├── __init__.pyi
    │   │           ├── py_ecdsa.pyi
    │   │           └── pycrypto.pyi
    │   ├── pkg_resources
    │   │   ├── __init__.pyi
    │   │   └── py31compat.pyi
    │   ├── six
    │   │   ├── __init__.pyi
    │   │   └── moves
    │   │       ├── BaseHTTPServer.pyi
    │   │       ├── CGIHTTPServer.pyi
    │   │       ├── SimpleHTTPServer.pyi
    │   │       ├── __init__.pyi
    │   │       ├── _dummy_thread.pyi
    │   │       ├── _thread.pyi
    │   │       ├── builtins.pyi
    │   │       ├── cPickle.pyi
    │   │       ├── configparser.pyi
    │   │       ├── email_mime_base.pyi
    │   │       ├── email_mime_multipart.pyi
    │   │       ├── email_mime_nonmultipart.pyi
    │   │       ├── email_mime_text.pyi
    │   │       ├── html_entities.pyi
    │   │       ├── html_parser.pyi
    │   │       ├── http_client.pyi
    │   │       ├── http_cookiejar.pyi
    │   │       ├── http_cookies.pyi
    │   │       ├── queue.pyi
    │   │       ├── reprlib.pyi
    │   │       ├── socketserver.pyi
    │   │       ├── tkinter.pyi
    │   │       ├── tkinter_commondialog.pyi
    │   │       ├── tkinter_constants.pyi
    │   │       ├── tkinter_dialog.pyi
    │   │       ├── tkinter_filedialog.pyi
    │   │       ├── tkinter_tkfiledialog.pyi
    │   │       ├── tkinter_ttk.pyi
    │   │       ├── urllib
    │   │       │   ├── __init__.pyi
    │   │       │   ├── error.pyi
    │   │       │   ├── parse.pyi
    │   │       │   ├── request.pyi
    │   │       │   ├── response.pyi
    │   │       │   └── robotparser.pyi
    │   │       ├── urllib_error.pyi
    │   │       ├── urllib_parse.pyi
    │   │       ├── urllib_request.pyi
    │   │       ├── urllib_response.pyi
    │   │       └── urllib_robotparser.pyi
    │   └── typed_ast
    │       ├── __init__.pyi
    │       ├── ast27.pyi
    │       ├── ast3.pyi
    │       └── conversions.pyi
    └── 3.5
        └── contextvars.pyi

127 directories, 1003 files
dmvianna commented 5 years ago

Notice that if I cd .. it works again. Definitely not a broken install.

ethanhs commented 5 years ago

Confirmed. Note that we do not recommend running mypy within a package directory (though of course we shouldn't crash). Thank you for reporting this.

dmvianna commented 5 years ago

Thank you for looking into it! I tripped on it using mypy as a linter within a code editor. The editor plugin apparently runs within the package directory. Should I file a bug with them too?

dmvianna commented 5 years ago

I think I narrowed the problem down to the presence of a builtins.py module within that directory. If I rename it to _builtins.py then mypy works as expected. It is a shadowing issue with the standard builtins module.

Up to you to provide an useful error message in this situation. :)

ethanhs commented 5 years ago

I believe this is essentially a duplicate of https://github.com/python/mypy/issues/1876 then.