在 sphinx-apidoc 生成的文件中包含 __main__.py

2023-12-06

我无法在生成 RST 文件时正确添加 __main__.py 文件及其功能sphinx-apidoc。其他文件和类均正确生成。

仅当我运行 sphinx-apidoc 时我才工作-P包含私有模块的参数。但我不想添加其他模块的私有方法,我只需要 __main__.py 中的这些方法。

__main__.py 看起来像这样:

def main():
    """
    main() description here
    """
    f1()
    f2()

if __name__ == '__main__':
    main()

我想拥有main(), f1() and f2()包含在 sphinx-apidoc 生成的 RST 文件中。

有一个类似的问题使用 sphinx 记录 python 脚本条目 (__name__ == '__main__')但它没有回答我的问题。


我认为这是一个未记录的功能,或者它也可能是错误sphinx-apidocv.3.2.1。如果我们看一下的文档-P option,它写道:

-P, --private
    Include “_private” modules.

注意这没有提到:private-members:来自 autodoc 标志选项.

两个不同的问题被混为一谈,“私有模块”和“模块内的私有对象”。影响的选项.rst根据官方文档,每个文件的生成应该不同。

sphinx-apidoc将生成.rst基于 2 个主要模板的文件,module.rst_t and package.rst_t。 (使用带有 venv 的 SphinxWindows这些可以在下面找到/venv/Lib/site-packages/sphinx/templates/apidoc).

默认行为(由模板实现)是生成 1.rst每个包的文件,并在该文件中放置 1.. automodule::每个模块的指令。什么是-P选项(据说)是添加一个指令.. automodule:: your-package.__private-module__ to the .rst每个私有模块的文件。

另一种方法是使用-e选项与sphinx-apidoc在这种情况下,一个单独的.rst为每个模块和包生成文件。所以使用sphinx-apidoc -e -P会造成额外的.rst为私有模块生成的文件。

但我不想添加其他模块的私有方法

私有类/方法/变量(模块内的对象)受到 autodoc 的影响':private-members:' option.

sphinx-apidoc设置生成的默认自动文档选项.. automodule::指令定义为SPHINX_APIDOC_OPTIONS环境变量(即:members:, :undoc-members: and show-inheritance)。这些选项不能作为命令行参数传递,您必须在运行之前设置环境变量sphinx-apidoc更改默认值。 (sphinx-apidoc不把它们从conf.py,与 autodoc 不同。)

查看源代码apidoc.py

# automodule options
if 'SPHINX_APIDOC_OPTIONS' in os.environ:
    OPTIONS = os.environ['SPHINX_APIDOC_OPTIONS'].split(',')
else:
    OPTIONS = [
        'members',
        'undoc-members',
        # 'inherited-members', # disabled because there's a bug in sphinx
        'show-inheritance',
    ]

Because :private-members:是默认的自动文档选项,应使用设置SPHINX_APIDOC_OPTIONS(如文档所述和源代码所示)。如果您包括-P选项,其唯一(记录的)效果应该是添加.. automodule::私有模块的指令,发生的情况是它还设置了 autodoc 选项:private-members:每个指令。

下面的树:

your_package
 ├  one_module.py
 ├  __init__.py
 └  __main__.py

With sphinx-apidoc -P将生成:

your_package.__main__ module
----------------------------

.. automodule:: your_package.__main__  <<-- -P option is documented as having this effect.
   :members:
   :undoc-members:
   :show-inheritance:
   :private-members:    <<-- -P option is not documented to have this effect.

那么如何实现问题中所述的目标呢?

如果你使用-e选项与sphinx-apidoc生成一个.rst每个模块的文件,您可以使用[EXCLUDE_PATTERN …]从签名。通过跑步sphinx-apidoc两次,一次为__main__.py模块(连同-P选项),并对其余模块进行第二次。

如果你不想要个人.rst文件为您的模块,而不是正常的 1.rst每个包的文件,每个模块包含一个指令。那么就不可能实现这一目标(不诉诸大量的黑客攻击)。您最好的选择就是简单地复制粘贴 1.. automodule::指令每__main__.py进入.rst文件生成后。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 sphinx-apidoc 生成的文件中包含 __main__.py 的相关文章

随机推荐

  • 让 PowerShell 等待 Excel 完成刷新数据透视表

    所以我开发了一个Powershell脚本来刷新大约40个大的excel文件并保存它们 在这个脚本中我运行一个excel宏来传递excel ODBC 连接参数 然后在刷新完成后从excel文件中删除它们 我唯一的问题是 对于这 40 个文件中
  • qmake 和多个 MSVS 版本

    From Visual Studio 2008 Command Prompt我运行这个命令来生成 vcproj file gt qmake spec win32 msvc2008 并收到警告消息 WARNING Generator MSVC
  • LINQ连接多表

    我有4张桌子 table1 id1 fk tbl2 this is the foreign key to the id in table2 table2 id2 fk tbl3 this is the foreign key to the
  • 如何让gganimate中的点出现而不是过渡

    我正在使用 gganimate 假设我有这个 MWE library ggplot2 library gganimate ggplot airquality aes Day Temp geom point color red size 1
  • 有没有办法以编程方式检测用户何时在浏览器中按下 F5 按钮?

    我有一个缓存 每当用户在浏览器中发出 F5 请求时 我都希望该缓存失效 我正在运行 JSF 2 0 应用程序 有没有办法做到这一点 Use the FacesContext getCurrentInstance isPostBack 检查页
  • 解析 YAML 文件

    这是我第一次使用 YAML 文件 所以我首先想到的是找到任何可以帮助我解析文件的库 我找到了两个库 YamlBean 和 SnakeYAML 我不确定我要使用哪一个 这是我尝试解析的文件的示例 users user1 groups Prem
  • AppEngine Memcache 过期策略

    我期待以下 AppEngine 代码 MemcacheService memcache MemcacheServiceFactory getMemcacheService memcache put Foo Bar Expiration on
  • PHP中删除一行记录

    我试图删除数据库中的一条记录 所以基本上我创建了一个包含我所有记录的表 现在我需要做的是 当我单击 删除 链接时 它将删除记录选定的行 它看起来是这样的 所以基本上我这里有 3 页 1 页面 php2 添加 php3 删除 php 这是我的
  • Waitpid 相当于超时吗?

    想象一下我有一个启动多个子进程的进程 父母需要知道孩子何时退出 我可以用waitpid 但是如果 当父级需要退出时 我无法告诉被阻塞的线程waitpid优雅地退出并加入它 让事情自行清理固然很好 但这可能没什么大不了的 我可以用waitpi
  • Visual Studio Code 无法从 Powershell 打开

    我正在尝试使用 Powershell 打开 Visual Studio Codecode在文件夹内时执行命令 当我尝试这样做时 我总是收到此错误 块引用代码 术语 代码 不被识别为 cmdlet 函数 脚本文件或可操作程序的名称 检查名称的
  • ASP.net MVC - 模型绑定排除类字段?

    在最近的一个项目中 我遇到了意想不到的障碍 具有简单公共字段 注意不是属性 的类似乎不想与 ASP net MVC 3 0 模型绑定器 这是设计使然吗 除了将字段更改为属性之外 这里还有其他选项吗 update 使用简单字段 而不是属性 的
  • JavaScript - SetInterval 无法正常工作

    我得到了这段脚本 在本地运行 但似乎 setInterval 不起作用 发送表单功能不起作用 任何帮助将不胜感激 Thanks 你需要打电话setInterval 函数中不带括号 如下所示 setI
  • 如何禁用音频播放器 HTML5 中的特定控件

    我只想显示音频控件 但禁止用户拖动按钮 因为我不希望用户跳过歌曲 如何使这项工作有效 你不能 您要么显示浏览器的内置控件 要么不显示 所以你应该隐藏它们并制作你自己的 如果你不想要搜索功能 这应该很容易 或者看看像 jPlayer http
  • 如何检查来自 json 的值是否为 null?

    我想检查 json 的结果是否为空 我使用了这段代码 NSString likesCount if facebook valueForKey likes NSNull null return else return facebook val
  • 为什么我的网站不显示我的网站图标?

    我有一个刚刚上传到互联网的网站 当我在 Ubuntu 上使用 Firefox 3 0 1 浏览该网站时 我看不到图标 WinXP 上的 Firefox 3 0 1 确实会显示它 WhyUbuntu下不显示favicon吗 它是根目录中的 f
  • iOS 13:使用新的 NEHotspotConfiguration.init(ssidPrefix: String) 似乎不起作用

    我目前正在运行 Xcode 11 0 和 iOS 13 1 测试版 我正在尝试 iOS 13 中新添加的功能 能够连接到仅已知前缀的 Wifi 热点 苹果文档 这非常适合无头配件的 Wifi 设置 因为您无需要求用户切换到操作系统设置即可连
  • Pandas:通过时间间隔的另一个数据帧过滤数据帧

    如果我有一个数据框 df data 例如 ID Time X Y Z H 05 2020 06 26 14 13 16 0 055 0 047 0 039 0 062 05 2020 06 26 14 13 21 0 063 0 063 0
  • Pivot_Longer 创建多个组合列

    我在其他地方看到了对我的问题的一些可能的讨论 但它要么没有解决 要么我无法完全理解答案是否适用 所以我正在创建一个新问题 以下问题特别涉及这个主题 但尚未解决 使用pivot longer将宽列收集成多个长列 获取以下示例数据 正如您所看到
  • 在 Drupal 中,如何更改传递给 Pathauto 的值?

    我已将 Pathauto 配置为根据节点标题为特定内容类型生成别名 问题是我想在 Pathauto 使用它生成别名之前对此标题进行一些小的更改 第一条评论在这个帖子建议使用 hook token values 但我无法真正理解如何使用它 即
  • 在 sphinx-apidoc 生成的文件中包含 __main__.py

    我无法在生成 RST 文件时正确添加 main py 文件及其功能sphinx apidoc 其他文件和类均正确生成 仅当我运行 sphinx apidoc 时我才工作 P包含私有模块的参数 但我不想添加其他模块的私有方法 我只需要 mai