跳转到主要内容

API文档生成器。

项目描述

https://img.shields.io/pypi/pyversions/pydoctor.svg https://github.com/twisted/pydoctor/actions/workflows/unit.yaml/badge.svg https://codecov.io/gh/twisted/pydoctor/branch/master/graph/badge.svg https://img.shields.io/badge/-documentation-blue

这是 pydoctor,一个通过静态分析工作的API文档生成器。

它主要编写用来替换Twisted项目的epydoc,因为epydoc在处理zope.interface时存在困难。如果你在迁移到Python 3后寻找epydoc的替代品,pydoctor可能也是你项目的正确工具。

pydoctor在解决导入和计算继承层次结构方面投入了大量的努力,并且由于它旨在记录Twisted,因此了解zope.interface的声明API,并能显示哪些类实现了哪些接口,反之亦然。

简单用法

您可以使用以下方式在您的项目上运行pydoctor

$ pydoctor --make-html --html-output=docs/api src/mylib

更多信息,请访问Read The Docs

标记

pydoctor目前支持以下标记语言在docstrings中

epytext(默认)

epydoc的标记语言。简单且紧凑。

restructuredtext

Sphinx使用的标记语言。比epytext更具表现力,但也稍微复杂和冗长。

google

按照Google Python风格指南指定的格式编写的docstrings。(与reStructuredText标记兼容)

numpy

按照Numpy Docstring标准编写的docstrings。(与reStructuredText标记兼容)

plaintext

无标记的文本。

您可以使用--docformat选项或__docformat__模块变量来选择不同的格式。

有什么新功能?

pydoctor 24.3.3

  • 修复发布流程。

pydoctor 24.3.0

这是支持Python 3.7的最后一个主要版本。

  • 放弃对Python 3.6的支持。

  • 添加对Python 3.12的支持。

  • 从Python 3.9开始,Astor不再是必需的。

  • ExtRegistrar.register_post_processor()现在支持一个整型的priority参数。在后期处理过程中,最高优先级的可调用对象将首先被调用。

  • 修复了太嘈杂的--verbose模式(抑制一些模糊的注释警告)。

  • 修复了restructuredtext合并字段中的类型处理。

  • 添加了--cls-member-order--mod-member-order选项来自定义类成员和模块/包成员的展示顺序,支持的值是“alphabetical”或“source”。默认行为是按字母顺序对所有成员进行排序。

  • 确保来自ast分析的行号优先于ivar字段的行号。

  • 确保所有由docutils生成的CSS类都有rst-前缀,基础主题已经相应更新。

  • 修复了与docutils 0.21.x的兼容性问题

  • 将注释转换为Python 3.10风格:typing.Union[x, y] -> x | ytyping.Optional[x] -> x | Nonetyping.List[x] -> list[x]

  • 在着色下标时,不要输出无用的括号。

pydoctor 23.9.1

  • 修复了找不到链接警告的行号回归问题。

pydoctor 23.9.0

这是支持Python 3.6的最后一个主要版本。

  • 当关键字用“keyword”字段具体说明,且没有为“**kwargs”条目提供具体说明时,不要显示“**kwargs”。

  • 修复注释解析边缘情况:尽可能在模块作用域内解析名称,当不可能时,使用理论运行时作用域。使用选项-v可以报告名称不明确(根据作用域上下文可以解析为不同的名称)的警告。

  • 确保在存在同名多个声明时,尊重显式注释。

  • 在将属性标记为常量之前进行更严格的验证。
    • 实例变量永远不会被标记为常量。

    • 具有多个定义的变量不会被标记为常量。

    • 在任何类型的控制流块下的变量声明不会被标记为常量。

  • 当pydoctor无法理解潜在常量属性时,不要触发警告(pydoctor不是静态检查器)。

  • 修复字符串形式中类型别名的展示。

  • 改进AST着色器,在不必要时减少括号输出。

  • 修复字典解包的着色。

  • 改进类层次结构,以便尽可能地将顶层名称与intersphinx链接。

  • 当从类页面点击“查看层次结构”链接时,添加突出显示。

  • 识别变长泛型类型变量(PEP 646)。

  • 修复对cython3生成模块的访问支持。

  • 在子类中标记实例变量为这样。

pydoctor 23.4.1

  • urllib3版本锁定,以保持与cachecontrol和python3.6的兼容性。

pydoctor 23.4.0

  • 添加对Python 3.11的支持。

  • 添加对@overload装饰器的支持。

  • 在函数签名中显示类型注释。

  • 如果函数的任何参数都没有文档,则不要渲染参数表。

  • 调整主题,以便更简洁地渲染注释。

  • 修复类型推断中的罕见崩溃。无效的Python代码(如列表的集合)在评估中会引发未捕获的TypeError。

  • 当源路径位于基本目录之外时提供支持(--project-base-dir)。由于pydoctor支持为多个包生成文档,因此无法确定所有源都位于单个URL之下。现在允许添加任意路径到系统中,但只有模块路径相对于基本目录的路径中的对象可以生成源控制链接。

  • 缓存docutils>=0.19的默认docutils设置以改进性能。

  • 通过在查询术语中自动附加通配符来改进搜索栏的用户体验,当没有术语已经包含通配符时。

  • 在类页面中链接已识别的构造函数。

  • 无效的epytext文档字符串将像无效的restructuredtext文档字符串一样被渲染为纯文本(终于)。

pydoctor 22.9.1

  • pydoctor --help再次工作。

pydoctor 22.9.0

  • 为异常添加一个特殊类型(之前,它们被当作任何其他类处理)。

  • ZopeInterface功能现在再次渲染。在pydoctor 22.7.0中引入了回归。

  • 现在将Python语法错误记录为违规。

  • 修复了解析元素(例如 docstrings 和 ASTs)渲染中的罕见崩溃。这是因为在 Twisted 的 XMLString 中目前不支持 XHTML 实体,如非断行空格。

  • 显示类型别名和类型变量的值。

  • 现在 --prepend-package 的工作方式与文档描述一致。在 pydoctor 22.7.0 中引入了一个回归,它没有在“假”包下嵌套新包。

  • self 参数现在仅在目标为方法时才被删除。在先前的版本中,它总是在任何上下文中被删除。

  • cls 参数现在仅在目标为类方法时才被删除。在先前的版本中,它总是在任何上下文中被删除。

  • 在属性和函数旁边添加锚点,以简化分享这些 API 文档链接的过程。

  • 修复了 google-style docstrings 返回语句中的错误,当没有显式描述时,返回类型会被视为描述。

  • 对未知配置选项触发警告。

  • 修复了搜索栏中的轻微用户体验问题。

  • 修复了 Docutils 0.19 前端的弃用问题。

pydoctor 22.7.0

  • 增加了对类层次结构中泛型的支持。

  • 修复了 Class 方法解析顺序中存在的长期错误。

  • 提高了 pydoctor 的可扩展性(有关扩展的更多信息请参阅 更多信息

  • 修复了 reStructuredText xref 警告中的行号问题。

  • 增加了对 twisted.python.deprecated 的支持(这最初是 Twisted 定制的一部分)。

  • 增加了对从通配符导入中重新导出的名称的支持。

pydoctor 22.5.1

  • docutils>=0.17 现在是最低支持版本。这是为了解决处理类型字段时发生的 AttributeError 崩溃。

pydoctor 22.5.0

  • 添加了 Read The Docs 主题,可以通过选项 --theme=readthedocs 启用。

  • 添加了侧边栏。使用选项 --sidebar-expand-depth--sidebar-toc-depth 进行配置。使用 --no-sidebar 禁用。

  • 突出显示活动函数或属性。

  • 现在将包和模块一起列出。

  • 现在从 docutils 节点生成 docstring 摘要。

    • 修复了摘要中的 reStructuredText 参考错误。

    • 当第一段很长时,仍然显示摘要而不是“无摘要”。

  • 模块索引现在为具有 50 个以上子模块且没有子子模块的模块使用更紧凑的表示。

  • 修复了托管在 Bitbucket 或 SourceForge 上的代码的源链接。

  • 添加了 --html-viewsource-template 选项,以便在链接到源代码页面和行时允许自定义 URL 方案。

pydoctor 22.4.0

  • 添加了 --privacy 选项,以在默认规则不适合用例时设置特定对象的隐私。

  • 选项 --docformat=plaintext 覆盖了模块变量 __docformat__ 的任何分配,以便专注于潜在的 Python 代码解析错误。

  • 切换到 configargparse 来处理参数和配置文件解析(有关更多信息请参阅 更多信息)。

  • 通过缓存 docstring 摘要来提高了性能。

pydoctor 22.3.0

  • 添加了基于 lunr.js 的客户端搜索系统。

  • 修复了 docstring 摘要中的断链。

  • 为 xref 链接器添加了缓存,减少了重复警告的数量。

  • 修复了重命名对象时崩溃的问题。

pydoctor 22.2.2

  • 修复了解决在 __all__ 变量中重新导出的名称的问题。

pydoctor 22.2.1

  • 修复了处理重命名模块时 pydoctor 崩溃的问题。

pydoctor 22.2.0

  • 改进了名称解析算法,使其在超类中检查继承的属性。

  • 当存在名称冲突时,C模块优于普通模块。

  • 当存在名称冲突时,包优于模块。

  • 修复了模块以随机顺序处理的错误,导致几个难以重现的错误。

  • Intersphinx链接现在有专门的标记。在默认主题中,这允许外部Intersphinx链接为蓝色,而内部链接为红色。

  • 在摘要和参数表中实现了更智能的换行。

  • 现在排除所有在if __name__ == '__main__'内的代码从文档中。

  • 修复了像当前模块命名的变量未进行文档化的错误。

  • 模块索引现在只显示模块名称而不是它们的完整名称。你可以悬停在模块链接上以查看完整名称。

  • 如果只有一个根模块,现在index.html将文档该模块(以前它只链接模块页面)。

  • 修复了来自C扩展的函数的反射。

  • 修复了颜色化器可能使Twisted的flatten函数因代理Unicode字符串而崩溃的问题。

pydoctor 21.12.1

  • pydoctor.epydoc中包含模块sre_parse36.py,以避免额外的PyPi依赖项。

pydoctor 21.12.0

  • 添加了对reStructuredText指令.. deprecated::.. versionchanged::.. versionadded::的支持。

  • 为常量值、装饰器和参数默认值添加语法高亮。

  • 在常量、装饰器和参数默认值的值中嵌入文档链接。

  • 提供选项--pyval-repr-maxlines--pyval-repr-linelen以控制常量值表示的大小。

  • 提供选项--process-types以在文档字符串字段中自动链接类型(更多信息请参见此处)。

  • 将Napoleon Sphinx扩展分叉以提供google风格和numpy风格文档字符串解析。

  • 引入了字段warnsyieldsyieldtype

  • 遵循Google风格指南,现在在参数表中用星号渲染*args**kwargs

  • 将所有大写的变量名或使用Final注解的变量标记为常量。

pydoctor 21.9.2

  • 修复了解析reStructuredText合并字段时引发的AttributeError,这是由于docutils 0.18中的更改导致的。

  • 修复了DeprecationWarning,使用importlib_resources模块的新API。

pydoctor 21.9.1

  • 修复了弃用警告,并正式支持Python 3.10。

  • 修复了文字样式(使用之前的样式)。

pydoctor 21.9.0

  • 添加了对多个主题的支持,可以使用--theme选项选择。

  • 使用__docformat__变量选择模块的不同文档字符串格式。

  • 现在可以使用--template-dir选项自定义HTML模板。

  • 将字段布局更改为显示参数类型直接在其名称之后。同样适用于变量。

pydoctor 21.2.2

  • 修复了锚点的位置,以便在模块或类的成员上跟随链接时,其文档将滚动到页面顶部的可见位置。

pydoctor 21.2.1

  • 修复了导航栏中项目名称和URL的显示,以确保在所有生成的HTML页面上都能按预期工作。

pydoctor 21.2.0

  • 移除了--html-write-function-pages选项。作为替代方案,你可以使用生成的Intersphinx清单(objects.inv)进行深层链接你的文档。

  • 修复了生成的Intersphinx清单中的项目版本。这以前被硬编码为2.0(我们误将其视为格式版本),现在默认无版本,可以通过新的--project-version选项指定版本。

  • 修复了多个Python命名解析的bug,例如可能导致“由谁实现”链接缺失的问题。

  • 修复了当类文档字符串字段(如cvarivar)覆盖继承的属性文档字符串时被忽略的bug。

  • 包含一个或多个点(如@abc.abstractproperty)的属性装饰器现在被自定义属性支持所识别。

  • attrs支持进行了改进

    • 属性现在被标记为实例变量。

    • 类型注释现在优先于从attr.ib推断的类型。

    • attr.ib定义中支持位置参数。但是,请使用关键字参数,以提高清晰度并确保与未来attrs版本的兼容性。

  • __all__模块变量的处理进行了改进

    • 将空序列赋值解释为导出无内容,而不是被忽略。

    • 当分配的值无效或pydoctor无法理解它时,错误报告得到了改进。

  • 添加了except字段作为raises的同义词,以与epydoc兼容,并修复了reStructuredText中:Exceptions:合并字段的处理。

  • 异常类型和外部基类将被链接到它们的类文档。

  • def func():class Class:行的格式与代码块保持一致。

  • “显示/隐藏私有API”按钮的更改

    • 按钮被移动到导航栏的右侧,以避免在窄显示中与内容重叠。

    • 显示/隐藏状态现在与地址栏中的查询参数同步。这样,如果您将页面添加到书签或将链接发送给其他人,显示/隐藏状态将被保留。

    • 现在,对私有API项目的深层链接将自动启用“显示私有API”模式。

  • build_apidocs Sphinx扩展的改进

    • 现在API文档在Sphinx文档之前构建,这样其余的文档就可以通过Intersphinx链接到它。

    • 新增配置变量pydoctor_url_path,将自动更新intersphinx_mapping变量,以便使用最新的API清单。

    • 扩展可以配置为为多个包构建API文档。

  • pydoctor.__version__现在是一个普通的str对象,而不是一个incremental.Version对象。

pydoctor 20.12.1

  • 拒绝位于项目基本目录之外的源目录(如果指定),而不是崩溃。

  • 修复了包含符号链接的源目录似乎位于项目基本目录之外的问题,这会导致崩溃。

  • 在包页面上恢复源链接。

pydoctor 20.12.0

  • 需要Python 3.6或更高版本。

  • 现在有一个用户手册,可以用Sphinx构建或在线在Read the Docs上阅读。这是一个正在进行的工作,在线版本将在发布之间更新。

  • 添加了对Python语言特性的支持

    • 当文档字符串没有记录类型时,使用函数参数和返回值的类型注解。

    • 使用@property或任何以“property”结尾的装饰器装饰的函数现在格式化得类似于变量。

    • 协程函数(async def)包括在输出中。

    • 关键字只和位置只参数包括在输出中。

  • 输出改进

    • 注释中的类型名称将超链接到对应的文档。

    • 对生成文档的风格进行了修改,使其更易于阅读和导航。

    • 默认情况下,私有API现在在模块索引、类层次结构和名称索引页面上被隐藏。

    • pydoctor的版本包含在页脚的“生成于”行中。

  • 现在所有HTML输出目录的父目录都由pydoctor创建;之前它只会创建最深层的目录。

  • 已弃用--add-package--add-module选项;请将源路径作为位置参数传递。

  • 新增了-W/--warnings-as-errors选项,在文档错误发生时使构建失败。

  • 链接到标准库文档现在更准确,但需要使用Intersphinx库存(--intersphinx=https://docs.pythonlang.cn/3/objects.inv)。

  • 默认启用了Intersphinx库存的缓存。

  • 添加了一个Sphinx扩展,用于在项目的Sphinx文档中嵌入pydoctor的输出。

  • 为处理reStructuredText所需的依赖项添加了额外的命名rstpip install -U pydoctor[rst])。

  • 改进了错误报告。

    • 错误消息中包含更准确的位置信息(文件 + 行号)。

    • 在记录参数时添加了对常见错误的警告。

    • 当找不到链接目标时,错误消息更清晰。

  • 提高了可靠性。

    • 修复了分析from package import *时的崩溃。

    • 修复了当docstring错误的行号未知时的崩溃。

    • 增加了单元测试覆盖率,更多的系统测试,开始为代码添加类型注解。

    • 单元测试也在Windows上运行。

pydoctor 20.7.2

  • 修复了在Python 3下reStructuredText中的外部链接处理。

  • 修复了在Python 3下reStructuredText中错误报告。

  • 恢复了Python代码块的语法高亮显示。

pydoctor 20.7.1

  • 修复了标准库中内建类型交叉引用链接。

  • 修复并改进了打印未知字段的错误消息。

pydoctor 20.7.0

  • 支持Python 3。

  • 在Python 3上运行时支持属性上的类型注解。

  • 在Python 3.8+上运行时支持属性上的类型注释。

  • 函数定义上的类型注解尚不支持。

  • 现在输出中包括未记录的属性。

  • 属性doc字符串:模块、类或实例变量可以通过跟随docstring来记录。

  • 改进了错误报告:报告了更多的错误,错误消息包括文件名和行号。

  • 已放弃对隐式相对导入的支持。

  • 使用from的显式相对导入不再引起警告。

  • 已放弃对epytext中的索引项的支持(X{})。这从未得到任何有意义的支持,但现在该标记已消失。

这是最后一个支持Python 2.7和3.5的主要版本。

项目详细信息


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分发

pydoctor-24.3.3.tar.gz (936.5 kB 查看哈希值)

上传时间:

构建分发

pydoctor-24.3.3-py3-none-any.whl (1.6 MB 查看哈希值)

上传时间: Python 3

支持