Mypy 会忽略包的类型,尽管有 `py.typed`

Sim*_*ini 8 python types python-3.x mypy python-poetry

我正在使用 维护两个存储库poetry,我们称它们repo_main为 和repo_dependency。它们都使用python 3.8并具有mypy( v0.942) 类型提示,并且顾名思义,repo_main依赖于repo_dependency。现在,当我mypy在 上运行时repo_main,类型提示repo_dependency实际上被忽略并被有效地视为Anys。然后我尝试将py.typed文件添加到每个子包中,repo_dependency但没有结果,类型仍然被忽略。的结构repo_dependency看起来有点像这样:

repo_dependency/
  - repo_dependency/
    - package1/
      - __init__.py
      - py.typed
      - stuff.py
    - package2/
      - __init__.py
      - py.typed
      - stuff.py
    - __init__.py
    - py.typed
  - other_non_distributed_things/
Run Code Online (Sandbox Code Playgroud)

知道我可能做错了什么吗?

Cri*_*ngo 1

对我来说,文档中根本不清楚这一点。添加py.typed文件不会让 mypy 查看包源以获取类型信息。Mypy 只会在存根文件中查找此类信息(对于外部包)。此外,将.pyi存根文件放在包源旁边不会说服 mypy 查看这些存根文件。

\n

因此,需要添加文件存根文件py.typed.pyi

\n

对我来说,这似乎非常多余,这就是为什么它\xe2\x80\x99 如此不直观,以至于我们需要两者。

\n