小编Saf*_*aff的帖子

重写Sphinx autodoc"Alias of"用于导入私有类?

我有一个Python包,我试图用sphinx-autodoc记录.我的python包有一个__init__.py文件,它从子模块中导出一个类,使其可以在包级别访问.

from a.b.c.d import _Foo as Foo

__all__ = ["Foo"]
Run Code Online (Sandbox Code Playgroud)

如果我这样做,我的(html)文档如下:

abc包

子模块

abcd模块

[在abcd模块中剪切不相关公共类的文档]

模块内容

c模块.

abc Foo

_Foo的别名

_Foo因为它是abcd子模块中的私有类,所以(正确地)没有文档,因此不是非常有用.

我可以在my中添加以下内容,以conf.py确保记录模块中的私有类定义.

def skip(app, what, name, obj, skip, options):
    if name == "_Foo":
        return False
    return skip
Run Code Online (Sandbox Code Playgroud)

其他替代方案,但不是我尝试过的好东西:

  1. 重命名a.b.c.d._Fooa.b.c.d.Foo(然后更新导入到from a.b.c.d import Foo) - 但后来我将类记录两次,一次在abcd模块标题下,再一次在Module内容标题下.
  2. 重命名a.b.c.d.Fooa.b.c.d.MyFoo,然后导入(from a.b.c.d import MyFoo as Foo)导致MyFoo被记录,并且Foo被列为一个别名MyFoo. …

python python-sphinx autodoc

10
推荐指数
1
解决办法
577
查看次数

定位 Cookiecutter 扩展

我正在创建我的第一个cookiecutter。总的来说,这进展顺利,但我现在想添加我自己的 jinja2 过滤器。

根据本期的评论,我创建了一个新的 Jinja2 扩展,很像这里的扩展。此扩展的完整代码在这里:

https://github.com/seclinch/sigchiproceedings-cookiecutter/commit/5a314fa7207fa8ab7b4024564cec8bb1e1629cad#diff-f4acf470acf9ef37395ef389c12f8613

但是,以下简单示例演示了相同的错误:

# -*- coding: utf-8 -*-
from jinja2.ext import Extension


def slug(value):
    return value


class PaperTitleExtension(Extension):
    def __init__(self, environment):
        super(PaperTitleExtension, self).__init__(environment)
        environment.filters['slug'] = slug
Run Code Online (Sandbox Code Playgroud)

我已将此代码放入一个新jinja2_extensions目录并添加了一个简单__init__.py的如下:

# -*- coding: utf-8 -*-
from paper_title import PaperTitleExtension

__all__ = ['PaperTitleExtension']
Run Code Online (Sandbox Code Playgroud)

基于这篇文档,我还在“cookiecutter.json”文件中添加了以下内容:

"_extensions": ["jinja2_extensions.PaperTitleExtension"]
Run Code Online (Sandbox Code Playgroud)

但是,运行它会产生以下错误:

$ cookiecutter sigchiproceedings-cookiecutter
Unable to load extension: No module named 'jinja2_extensions'
Run Code Online (Sandbox Code Playgroud)

我猜我在这里遗漏了一些步骤,有人可以帮忙吗?

python jinja2 cookiecutter

5
推荐指数
1
解决办法
483
查看次数

标签 统计

python ×2

autodoc ×1

cookiecutter ×1

jinja2 ×1

python-sphinx ×1