- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Sphinx 的自动摘要自动为我的模块的每个成员生成单独的 rst 文件。文档按预期创建,除了生成的第一个文件缺少除 __init__
之外的所有 dunder 方法。
在我的 conf.py
中,我有以下几行:
extensions = [
'sphinx.ext.autodoc',
'sphinx.ext.autosummary',
]
autosummary_generate = True
autosummary_imported_members = True
考虑下面的虚拟类,它包含 dunder 和常规公共(public)方法:
class MyClassA:
def __init__(self):
r'__init__ docstring'
pass
def __call__(self):
r'__call__ docstring'
pass
def __len__(self):
r'__len__ docstring'
pass
def public_method_1(self):
r'public_method_1 docstring'
pass
def public_method_2(self):
r'public_method_2 docstring'
pass
在我的第一个主文件中,我按如下方式设置了自动摘要:
.. autosummary::
:toctree: my_module_members
my_module.MyClassA
my_module.MyClassB
正如预期的那样,自动摘要创建了一个名为 /my_module_members
的子目录,其中包含模块的每个成员的第一个文件。但只有 __init__
列在这些自动生成的第一个文件的方法部分。例如:
my_module.MyClassA
==================
.. currentmodule:: my_module
.. autoclass:: MyClassA
.. rubric:: Methods
.. autosummary::
~MyClassA.__init__
~MyClassA.public_method_1
~MyClassA.public_method_2
因此,在生成的html文档中,方法表中只列出了这三个方法,__call__
和__len__
是没有的:
所以我的问题是以这种方式使用自动摘要时如何包含所有特殊方法?
最佳答案
问题出在自动摘要用于类的默认模板上。这是relevant page在文档中,但直接查看默认模板更有帮助:
# In the sphinx v3.0.4 source code:
# sphinx/ext/autosummary/templates/autosummary/class.rst
{{ fullname | escape | underline}}
.. currentmodule:: {{ module }}
.. autoclass:: {{ objname }}
{% block methods %}
.. automethod:: __init__
{% if methods %}
.. rubric:: Methods
.. autosummary::
{% for item in methods %}
~{{ name }}.{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block attributes %}
{% if attributes %}
.. rubric:: Attributes
.. autosummary::
{% for item in attributes %}
~{{ name }}.{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
您可以看到此模板如何对应于为您的项目生成的 stub 文件(尽管我不确定为什么您的文件缺少 .. automethod::__init__
行;也许我们有不同版本的狮身人面像)。重要的部分是 {% for item in methods %}
循环。上面链接的文档简要提到 methods
只包括“公共(public)”方法,这意味着不以下划线开头的方法。 __init__()
也被认为是公开的,根据 sphinx/ext/autosummary/generate.py
的第 242 行,尽管这似乎没有在任何地方记录。希望这能解释您所看到的行为。
考虑到这一点,我可以想到三种方法将所有特殊方法包含在文档中:
提供一个使用成员
而不是方法
的自定义模板。这应该记录所有内容,但会消除方法、属性、继承成员、内部类等之间的区别。
这没有记录,我也没有尝试过,看起来您可以将 methods
替换为 all_methods
以包含所有方法自动摘要(再次参见第 242 行)。不过,公共(public)方法和私有(private)方法之间没有任何区别。
尝试使用 autoclasstoc .全面披露:这是我编写的一个包,用于更好地总结 sphinx 文档中的类方法。它比 autosummary 更可配置,并且默认包含每个方法。它还折叠了继承的方法,这对于大类来说非常好,尽管这可能与您相关,也可能不相关。
This page描述了如何将 autoclasstoc 与自动摘要结合使用,但其要点是您需要一个看起来像这样的自定义模板:
{{ fullname | escape | underline}}
.. currentmodule:: {{ module }}
.. autoclass:: {{ objname }}
:members:
:special-members:
.. autoclasstoc::
关于python - 自动摘要生成的文档缺少除 `__init__` 之外的所有 dunder 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62142793/
我最近发布了一个 problem我正在进行身份验证,但没有收到任何回复,所以我想到了另一种方式来提问而不是多余的。 我在应用程序中看到的内容 documentation是传递访问 token 以进行身
我有一个具有许多不同值的因素。如果执行 summary(factor)输出是不同值及其频率的列表。像这样: A B C D 3 3 1 5 我想制作频率值的直方图,即 X 轴包含发生的不同频率,Y 轴
我有 2 个表,其中包含一组数据,如下所示,我想获得 RESULT 中的结果,该结果将在字段 balance 中进行计算: 我被困在余额字段中,如何让余额运行? tblIn in_date |
我有一个大量重载的方法 MethodA,它由我的 MethodB 文档中的摘要标记引用: /// A link to void MethodB { ... } 注释不应仅依赖于 MethodA 的特
当我将新的 details 标签与 summary 结合使用时,我想禁用生成的输入。我以为 可以解决这个问题,但遗憾的是它不起作用。 如何禁用细节元素? 最佳答案 一个非常简单的方法是只使用 CSS
如何在 Visual Studio 中生成此类摘要? /// /// Returns a number /// /// /// 最佳答案 在你的方法、属性等之前输入///,VS会自动生成注释
关于简单的看似无辜的函数的简单问题:summary。 直到我看到min和max的结果超出了我的数据范围,我才意识到summary有一个指定输出结果精度的参数。我的问题是如何以一种干净、普遍的方式来解决
我有一个数据框 a,其中包含 4 个标识列:A、B、C、D。使用 ddply() 创建的第二个数据框 b 包含每组 的不同 D 的所有值的摘要>A、B、C。第三个数据框 c 包含 b 的子集,其中包含
这个问题在这里已经有了答案: jsdoc: multiline description @property (4 个回答) 4年前关闭。 我正在为我的 javascript 项目使用 Visual S
我有一个向量的 R 摘要: summary(vector) Min. 1st Qu. Median Mean 3rd Qu. Max. 1.000 1.000 2.000 6
我想创建一个新的计算列(另一列文本的摘要)。为了让您重现,我创建了一个 df 作为可重现的示例: df head(df,3) name 1 ZKBOZVFKNJBRSDW
假设我有一棵对象树,其中每个对象都有一个字符串表示。我想在整棵树上创建一个 SHA1 摘要。 最简单的方法是递归遍历树的每个节点。对于每个节点,我将连接(作为简单字符串)所有子节点的 SHA1 摘要,
因此,我试图围绕 MVVM 进行思考,但我发现我的问题多于答案。当涉及到下一步时,这些教程对我来说还远远不够...... 基本上我想要一个项目列表,然后是一种获取每个项目详细信息的方法。 下面是我在网
我希望将 princomp PCA(必须是 princomp)的摘要作为数据框,以便我可以使用 kable 格式化表格以生成报告。 这是我尝试使用的代码,从中应该清楚我想要做什么; kable( as
我们的一页很重。为了减少我们的观察者数量并加速 Angular 摘要周期,我们大量使用了 On-Time-Binding 语法 :: .我们也在使用angular-bind-notifier以避免对我
我正在与我受雇的公司合作,试图为我们的内部库创建更好的文档。我们希望最终检查每个类并更新我们的命名方案(过去有很多草率的代码)。我想要的是能够打印出 javadoc 的摘要。它需要排除页面底部的完整解
我正在尝试创建一个分组摘要,报告每个组中的记录数,然后还显示一系列变量的均值。 我只能弄清楚如何将其作为两个单独的摘要进行处理,然后再将它们合并在一起。这工作正常,但我想知道是否有更优雅的方法来做到这
我正在尝试从 this file 中获取带有百分比的交叉表使用 Hmisc .但为什么是summary()从变量 OCCUPATION 中删除类别(“OTHERS”)? library(Hmisc)
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
如标题所示,我想为 PreferenceAcitvity 创建自定义标题栏。我需要在标题下方添加摘要。目前它只会显示一个标题,但我需要一个副标题,就像任何 Preference 都可以有一个摘要。 我
我是一名优秀的程序员,十分优秀!