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

模块作者:Pauli Virtanen

在 1.2 版本中添加。

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

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

配置

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

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

如果未添加链接,则该函数应返回 None

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

  • py: module (模块名称), fullname (对象名称)

  • c: names (对象的名称列表)

  • cpp: names (对象的名称列表)

  • javascript: object (对象名称), 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 版本中添加。