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
預設值:
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[原始碼]

註冊要用於網域的新金鑰列表。

在版本 8.2 中新增。