如何解析numpydoc文档字符串和访问组件?

tri*_*ta2 6 python parsing docstring python-sphinx

我想解析一个numpydoc docstring并以编程方式访问每个组件.

例如:

def foobar(a, b):
   '''Something something

   Parameters
   ----------
   a : int, default: 5
        Does something cool
   b : str
        Wow
'''
Run Code Online (Sandbox Code Playgroud)

我想做的是:

parsed = magic_parser(foobar)
parsed.text  # Something something
parsed.a.text  # Does something cool
parsed.a.type  # int
parsed.a.default  # 5
Run Code Online (Sandbox Code Playgroud)

我一直在寻找像numpydoc拿破仑这样的东西但我没有找到任何好的线索如何在我自己的程序中使用它们.我很感激任何帮助.

Sea*_*123 8

您可以使用NumpyDocString numpydoc将docstrings解析为Python友好的结构.

这是如何使用它的示例:

from numpydoc.docscrape import NumpyDocString


class Photo():
    """
    Array with associated photographic information.


    Parameters
    ----------
    x : type
        Description of parameter `x`.
    y
        Description of parameter `y` (with type not specified)

    Attributes
    ----------
    exposure : float
        Exposure in seconds.

    Methods
    -------
    colorspace(c='rgb')
        Represent the photo in the given colorspace.
    gamma(n=1.0)
        Change the photo's gamma exposure.

    """

    def __init__(x, y):
        print("Snap!")

doc = NumpyDocString(Photo.__doc__)
print(doc["Summary"])
print(doc["Parameters"])
print(doc["Attributes"])
print(doc["Methods"])
Run Code Online (Sandbox Code Playgroud)

但是,由于我不理解的原因,这不适用于您给出的示例(我也没有很多代码要运行它).相反,您需要使用特定FunctionDocClassDoc类,具体取决于您的用例.

from numpydoc.docscrape import FunctionDoc

def foobar(a, b):
   '''Something something

   Parameters
   ----------
   a : int, default: 5
        Does something cool
   b : str
        Wow
'''

doc = FunctionDoc(foobar)
print(doc["Parameters"])
Run Code Online (Sandbox Code Playgroud)

通过在源代码中查看此测试,我想到了这一切.所以,这并没有真正记录,但希望你已经足够开始了.