【问题标题】:How to document options in an INI file with Sphinx如何使用 Sphinx 在 INI 文件中记录选项
【发布时间】:2023-03-06 20:21:01
【问题描述】:

我想在我的 Sphinx 文档中记录一个 INI 文件。我应该使用什么标记?

每当我在网上搜索时,我都会得到 Sphinx 配置文件的描述——conf.py。

standard domain 有一些记录命令行程序的工具,可以使用describe (object) 角色,但正如文档所述“该指令生成的格式与域提供的特定格式相同,但不创建索引条目或交叉引用目标”。

我需要更具体的内容来描述部分和选项并能够引用它们。

所以有一个 INI 文件:

[ui]
username = Mike
e-mail = mike@domain.com

我希望能够使用这样的东西:

.. ini:section:: ui

    This section contains setting for use interface 

.. ini:option:: username

    User name
    ...

有没有比编写我自己的扩展更好的方法?

【问题讨论】:

  • 问题中有重复的文字。它看起来像第二次出现“所以有一个 INI 文件:”并且可以删除它之后的文本。
  • @mzjn 很好,删除了欺骗部分。
  • 礼貌建议:将 INI 文件转换为 config.py 文件是否值得(时间/精力/等)?这样,您可以以与项目其余部分相同的方式记录您的配置文件。 (这是我们经常使用的一种方法,它提供了一种将项目文档直接超链接到相关配置条目的方法。)
  • @S3DEV 但是用 Sphinx 记录东西并不一定意味着它们是用 Python 实现的。

标签: python python-sphinx ini


【解决方案1】:

在研究了 Sphinx 和扩展的源代码后,这是我想出的最小解决方案。将 sn-p 放入您的 conf.py:

from sphinx.application import Sphinx
from sphinx.util.docfields import Field


def setup(app: Sphinx):
    app.add_object_type(
        'confval',
        'confval',
        objname='configuration value',
        indextemplate='pair: %s; configuration value',
        doc_field_types=[
            Field('type', label='Type', has_arg=False, names=('type',)),
            Field('default', label='Default', has_arg=False, names=('default',)),
        ]
    )

这会添加一对指令 .. confval:: 和一个角色 :confval:,它们模仿 .. option::/:option:.. envvar::/:envvar: 对。

示例

Configuration
-------------

For more verbose output, increase the :confval:`verbose` parameter.
To show the traceback, set :confval:`show_traceback = True <show_traceback>`.

.. confval:: verbose

   :type: integer
   :default: 0

   More verbose output.

.. confval:: show_traceback

   :type: boolean
   :default: ``False``

   Show traceback on errors.


.. confval:: output

   :type: string
   :default: ``-``

   Target path to write the output.

呈现为

允许在整个文档中使用漂亮的交叉引用。

【讨论】:

  • 未解决的问题:我不知道如何从 std 域引用 python 类型(例如,我设置了 :type: bool 并且 Sphinx 呈现了指向 docs.python.org/3/library/functions.html#bool 的链接等)。还缺少像部分支持这样的东西,现在将通过 Sphinx 部分标题来模仿它们。
  • 我认为如果您使用 intersphinx 和 right mapping 并以编程方式替换 proper role,标准库类型应该会自动解析。 Sphinx-napoleon 对其类型提示字段透明地执行此操作。我不知道它如何解析记录的包的类型,或者它是如何查找它们的。但我想它们被 intersphinx 放入相同的交叉引用类型查找索引中。
猜你喜欢
  • 2022-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 2015-02-04
  • 2019-09-09
  • 2015-08-17
相关资源
最近更新 更多