在Zope 2中使用Sphinx的autodoc(docstring问题)

时间:2013-09-19 17:17:21

标签: python documentation python-sphinx zope docstring

我想使用Sphinx来记录我的Zope 2产品,并且还可以使用autodoc功能,它可以从模块中的文档字符串中提取信息。现在在Zope中,不幸的是,docstrings用于指定一个可通过http请求访问的方法。所以不应该通过http访问的所有方法都没有文档字符串。

有没有办法以Sphinx识别而不是Zope识别的方式编写文档字符串?

或者:有没有办法改变Zope文档字符串行为?

1 个答案:

答案 0 :(得分:2)

我可以看到3种方法,但没有(无:-)正是你想要的,除了依靠重型机械。

  1. _开头的方法未发布,因此您可以这样做:

    class MyClass:
    
      def _method(self):
        "I have a docstring, but I won't be published"
        return 'done'
    
  2. 您可以将角色设置为ACCESS_PRIVATE

    from AccessControl.SecurityInfo import ACCESS_PRIVATE
    
    class MyClass:
    
        myMethod__roles__ = ACCESS_PRIVATE
        def myMethod(self):
        "I look like I'm published, but I'm not"
            return 'done'
    

    在我看来,最接近你想要达到的目的,但要注意行为与缺少文档字符串不同:如果在没有docstring的情况下调用该方法,则结果是NotFound异常,在ACCESS_PRIVATE案例中,结果是未经授权的例外。

  3. 您可以通过实现自己的IBrowserPublisher来替换遍历方法(我认为)。 DefaultPublishTraverse中的默认实施是ZPublisher/BaseRequest.py。然后你必须通过复制和调整它来制作自己的,以便它使用另一个标志而不是docstring进行发布。