Vous pouvez utiliser NumpyDocString depuis numpydoc
pour analyser des docstrings dans une structure compatible Python.
Voici un exemple de la façon de l'utiliser:
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"])
Cependant, cela ne fonctionnera pas avec l'exemple que vous avez donné (ni beaucoup de code que je veux exécuter sur) pour des raisons que je ne comprends pas. Au lieu de cela, vous devez utiliser la classe spécifique FunctionDoc
ou ClassDoc
, en fonction de votre cas d'utilisation.
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"])
j'ai pensé tout cela par regardant this test in their source code, pour ainsi dire le moins, ce n'est pas vraiment un documenté, mais nous espérons que cela est suffisant pour que vous puissiez commencer.
Je sais que vous pouvez utiliser 'inspect' pour obtenir des informations mais il n'analyse pas la docstring, seulement les annotations et les valeurs par défaut, ainsi la signature' def foobar (a = 5: "Fait quelque chose de cool", b = DEFAULT : "Wow"): "serait vraiment facile à" inspecter ". –
Oui, ce serait bien d'utiliser 'inspect' mais les docstrings que je voudrais analyser n'ont pas été écrits par moi, et malheureusement, n'utilisent pas d'annotations. Merci quand même! – trianta2
J'ai cherché quelque chose comme ceci, et quelque chose qui pourrait également analyser docstring numpy. Il semble que tu devrais écrire le tien. Même si je suis 100% positif que quelque chose comme ça existe déjà depuis que Pycharm le fait d'une manière ou d'une autre. – tal