sphinx.ext.linkcode – 添加外部链接到源代码

模块作者:Pauli Virtanen

版本 1.2 中新增。

此扩展程序会查看您的对象描述(.. class::.. function:: 等)并添加指向托管在网络上某处的代码的外部链接。其意图类似于 sphinx.ext.viewcode 扩展,但假设源代码可以在互联网上找到。

在您的配置中,您需要指定一个 linkcode_resolve 函数,该函数根据对象返回一个 URL。

配置

linkcode_resolve
类型:
Callable[[str, dict[str, str]], str | None] | None
默认:

这是一个函数 linkcode_resolve(domain, info),它应该返回与给定域中给定信息的对象对应的源代码 URL。

如果没有要添加的链接,函数应返回 None

参数 domain 指定对象所属的语言域。info 是一个字典,保证包含以下键(取决于域)

  • pymodule(模块名称)、fullname(对象名称)

  • cnames(对象的名称列表)

  • cppnames(对象的名称列表)

  • javascriptobject(对象名称)、fullname(项名称)

示例

def linkcode_resolve(domain, info):
    if domain != 'py':
        return None
    if not info['module']:
        return None
    filename = info['module'].replace('.', '/')
    return "https://somesite/sourcerepo/%s.py" % filename

第三方域

对其他域的支持可以通过使用 add_linkcode_domain() 的扩展来添加。例如,一个提供 php 域的 Sphinx 扩展可以使用以下代码来支持 linkcode

from sphinx.ext.linkcode import add_linkcode_domain

def setup(app):
    add_linkcode_domain('php', ['namespace', 'class', 'fullname'])
sphinx.ext.linkcode.add_linkcode_domain(domain: str, keys: list[str], override: bool = False) None[source]

注册一个用于域的新键列表。

8.2 版本新增。