我的代码(本演示减少到几行)如下所示:
AgentAssignment = List[int]
def assignment2str(assignment: AgentAssignment):
pass
生成的 html 文档有
List[int]
作为类型提示。这似乎是一个已解决的问题 (#6518),但我在 2022 年使用 Sphinx 版本 5.1.1(和 Python 3.8.2)时仍然遇到这个问题。我错过了什么?
因此,需要在文件的开头添加(是的,在所有其他导入之前):
from __future__ import annotations
然后在conf.py中:
autodoc_type_aliases = {'AgentAssignment': 'AgentAssignment'}
这本身份转换字典对我来说没有任何意义,但它确实起到了作用......
我不确定 Sphinx 是否支持此功能,但您需要使用 Python 3.10 中引入的显式 PEP 613 TypeAlias 。因为否则类型解析器无法区分普通变量赋值和类型别名。这是一个通用的 Python 解决方案,用于解决超出 Sphinx 范围的类型别名问题。
AgentAssignment: TypeAlias = List[int]
诗。我对 Sphinx 也有同样的问题
我也遇到了这个问题,并且非常困惑为什么这里接受的答案stackoverflow.com/a/73273330/1822018,其中提到将类型别名添加到 autodoc_type_aliases 字典中,如此处文档中所述https://www. sphinx-doc.org/en/master/usage/extensions/autodoc.html#confval-autodoc_type_aliases 不适合我。我解决了我的问题,我将其发布在这里是为了其他人的利益。
就我而言,我还安装了 Python 包
sphinx-autodoc-typehints
,它扩展/劫持/覆盖某些 Sphinx 功能,特别是它似乎取代了给定 PR 中 autodoc_type_aliases 字典的功能。对于任何尝试调试此问题的人,我建议从 Sphinx conf.py 文件的扩展列表中删除“sphinx_autodoc_typehints”。