微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python Sphinx 在类中导入方法组织

如何解决Python Sphinx 在类中导入方法组织

我有一个从子模块导入许多方法的类。目前,Sphinx 设置为“按源”组织,因此它们至少按导入子模块的顺序进行排序。

不过,我想要的是它们来自的文件标题的某种标题或可搜索文本。

当前目录结构:

my_project
├── setup.py
└── my_package
    ├── __init__.py # Classes for subpackage_1 and subpackage_2 and imports occur here
    ├── subpackage_1
    │   ├── __init__.py
    │   ├── _submodule_a.py
    │   └── _submodule_b.py
    └── subpackage_2
        ├── __init__.py
        ├── _submodule_c.py
        └── _submodule_d.py

Sphinx 模块第一个文件

Module contents
---------------

.. automodule:: my_package
   :members:
   :undoc-members:
   :show-inheritance:
   :member-order: bysource

在 my_package init.py 中定义了父类,其中所有子模块/方法都被导入到它们相关的类中。

class MyClass_1():
    ...
    from .subpackage_1._submodule_a import method_a
    from .subpackage_1._submodule_b import method_b,method_c

class MyClass_2():
    ...
    from .subpackage_2._submodule_c import method_d,method_e
    from .subpackage_2._submodule_d import method_f

生成的 Sphinx 方法文档中,我看到了每个类下的方法,但希望能够看到方法源自哪个子模块文件。不必是一个小节,只需包含标题/注释等就可以了,而不必求助于手动列出 Sphinx 文件中的所有模块/方法

实际包中有数百个函数,因此有助于用户在查看文档时能够快速辨别方法来自哪个子模块文件

当前的狮身人面像输出 所需的狮身人面像输出
Class MyClass_1... Class MyClass_1...
submodule_a
* method_a * method_a
submodule_b
* method_b * method_b
* method_c * method_c
Class MyClass_2... Class MyClass_2...
submodule_c
* method_d * method_d
* method_d * method_e
submodule_d
* method_f * method_f

我看到更糟糕的情况,将子模块文件名放在文件中每个方法的文档字符串中,但如果有人以更自动化的方式解决这个问题,我会很高兴

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。