我刚刚将项目更新到 Python 3.7,当我在项目上运行 mypy 时,我看到此错误:error: "Type[datetime]" has no attribute "fromisoformat"
datetime 在 Python 3.7 中确实有这个函数fromisoformat,但在以前的 Python 版本中没有。为什么 mypy 报告此错误,如何让它正确分析 Python 3.7?
到目前为止我尝试过的事情:
3.6)pip install --upgrade --force-reinstall mypy重现:
创建一个python 3.6项目
在项目 venv 中安装 mypy 0.761(最新)
mypy .使用 mypy ( )扫描项目
将项目更新为python 3.7
添加一个包含以下代码的文件:
from datetime import datetime
datetime.fromisoformat('2011-11-04 00:05:23.283')
Run Code Online (Sandbox Code Playgroud)再次扫描项目 ( mypy .) [更新:这实际上工作得很好。它重新运行我的预提交挂钩,而没有在新的 Python 版本 venv 上重新安装预提交,从而导致了问题。]
我想向其输入(也是函数)具有特定关键字参数的高阶函数添加类型提示。
我的代码看起来与此类似:
def foo(a: int, b: int) -> int:
...
def bar(c: Callable[[int, int], int]) -> int:
return c(a=1, b=2) # getting a mypy error: Unexpected keyword argument "a"
Run Code Online (Sandbox Code Playgroud)
在示例中,我希望能够c从 的函数作用域进行调用bar,并且我希望能够假设它具有关键字参数a和b。
我可以理解为什么 mypy 会在这里抱怨,因为具有不同签名的其他函数可以作为参数传入b,然后c(a=1, b=2)将不再起作用。但似乎应该有一种方法可以在类型提示中添加关键字参数名称,以明确保证函数接受带有名称和 的c参数。ab