没有项目描述

sphinx-autodoc-future-annotations的Python项目详细描述


此扩展允许您使用Python 3类型注释来记录模块和类属性,以及 函数参数和返回类型。 扩展还支持由于类型注释而需要的循环导入。 扩展只适用于Python 3.7及更高版本,需要使用from __future__ import annotations

示例(a_module.py):

from__future__importannotationsimporttypingastift.TYPE_CHECKING:importanother_modulemodule_attribute:t.Optional[another_module.SomeClass]=None'''An attribute of the module.'''classAClass:'''A class.'''instance_attribute:int'''An instance attribute.'''class_attribute:float=3.0'''A class attribute.'''def__init__(self,arg:t.Union[int,str]):passdefmethod(self)->int:'''A method.'''pass

示例(another_module.py):

from__future__importannotationsimporttypingiftyping.TYPE_CHECKING:importa_moduledeffunction(arg:a_module.AClass):'''A function.'''passclassSomeClass:pass

安装和设置

首先,使用pip下载并安装扩展:

$ pip install sphinx_autodoc_future_annotations

然后,将扩展名添加到您的conf.py

extensions=['sphinx.ext.autodoc','sphinx_autodoc_future_annotations',]

工作原理

以下方式支持由于类型注释而需要的循环导入。 首先,在导入模块时,钩子被猴子修补到sphinx.ext.autodoc中以执行操作。 这个钩子首先正常地导入模块。 然后它解析模块的代码,并找到任何顶层的if-语句,这些语句的条件是 TYPE_CHECKING来自typing模块。 此类if-语句中的所有语句都在te模块的上下文中执行。 这使附加导入可用于typing.get_type_hints

扩展监听autodoc-process-signatureautodoc-process-docstring 斯芬克斯事件在前者中,它从函数签名中剥离注释。在后者中, 它将适当的:type argname::rtype:指令注入docstring。

当{ T{13} $和^ {tT14} $指令时,仅当且仅当未找到现有匹配指令时才添加。 如果找不到匹配的指令,则添加空的:param argname:指令。 这样就可以记录参数的类型,而不必在使用时添加琐碎的文档。

此扩展当前没有任何配置选项。

有些代码改编自sphinx-autodoc-typehints

与sphinx.ext.napoleon兼容

要将sphinx.ext.napoleon与sphinx_autodoc_future_注释一起使用,请确保加载 sphinx.ext.napoleon首先,sphinx_autodoc_future_注释之前

extensions=['sphinx.ext.autodoc','sphinx.ext.napoleon','sphinx_autodoc_future_annotations',]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Play Framework 2.1中的简单搜索?   java:Springbeans的真正工作原理   java不能从字符串中提取数字   不同管道中的java共享ExecutionHandler   在Java中,如何为扩展comparator的类实现多个comparator方法?   通用混沌Java   java问题:从自定义类获取要添加到驱动程序类的形状   java如何利用HikariCP和Hibernate?   eclipse如何执行Java应用程序?   用户界面Java Swing:如何将JLabel的文本绑定到JTable选定行中的列?   java替换JPanel元素而不添加到面板的末尾?   java Sets根据action命令在按钮组中选择了特定的jradiobutton   在java中如何将从控制台添加的字符串中的元素添加到列表中   处理未在浏览器上运行的Java签名小程序   java如何在我的安卓应用程序中单击任意按钮时禁用音频音调?   编码如何在Java中将十六进制转换为utf8编码的字符串   java JSF Spring安全集成问题   java如何更正Oracle for Windows中的字符?   java Spark结构化流媒体:当前批次落后   java Hibernate根据最匹配的条件排序结果