gpt4 book ai didi

python - pyannotate apply 说 "No files need to be modified."即使函数没有注释

转载 作者:行者123 更新时间:2023-12-05 06:02:04 38 4
gpt4 key购买 nike

我一直在使用pytest https://github.com/kensho-technologies/pytest-annotate并一直遵循以下流程:

pip install pytest-annotate

# Generate annotations by running your pytest tests as usual:
pytest --annotate-output=./annotations.json

# Apply those annotations using pyannotate:
pyannotate --type-info ./annotations.json .

但是当我运行最后一步时我可以看到

(base) C:\planner\planner-backend\service\planner>pyannotate -w --type-info ./annotations.json .
No files need to be modified.

pytest 收集步骤显然有效,并创建了一个 annotations.json。看起来像:

[
{
"path": "app/analyses.py",
"line": 148,
"func_name": "create",
"type_comments": [
"() -> Tuple[database.analysis.Analysis, int]",
"() -> pyannotate_runtime.collect_types.NoReturnType"
],
"samples": 6
},
{
"path": "app/analyses.py",
"line": 171,
"func_name": "update",
"type_comments": [
"(int, int, str) -> Tuple[database.analysis.Analysis, int]"
],
"samples": 1
},

还有 8000 行

当查看当前目录时,数据库和应用程序都是目录。所以在/database/analysis.py 里面有类 Analysis

我在 Docker 内部开发并使用 pipenv,但我尝试在 docker 内部和外部以及 pipenv shell 内部和外部调用,但没有任何帮助。

您对下一步尝试有什么建议吗?

最佳答案

我知道您收到此错误的 2 个可能原因。

可能的问题

  1. 没有类型提示的函数实际上并没有被测试调用。 (pyannotatemonkeytype 只为执行的代码生成 type-hints,而不是为所有代码生成。)
  2. 您没有使用以下命令将 type-hints 应用于 Python 文件:pyannotate --type-in​​fo ./annotations.json .(请注意,我不确定关于这一点,它很可能是正确的。

请注意,出现此错误可能还有其他原因。

解决方案

如果是 1:编写一个测试来调用不存在类型的函数并运行:

python -m pytest

后跟案例2中的命令。

情况2:我还不知道如何将类型提示应用于根目录,还不知道如何将 type-hints 应用于 src/中的所有 .py 文件tests/ 文件夹,一个可以运行:

for f in $(find src/ -name '*.py'); do pyannotate -w --python-version 3 --type-info type_info.json $f; done
for f in $(find tests/ -name '*.py'); do pyannotate -w --python-version 3 --type-info type_info.json $f; done

type-hints 应用于子目录 src/test/ 中的所有 .py 文件.

更详细的说明可以在this answer中找到,我希望这对某人有帮助。

关于python - pyannotate apply 说 "No files need to be modified."即使函数没有注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67035617/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com