पिछले वर्षों में मैंने autodoc-skip-member
विभिन्न असंबंधित पाइथन परियोजनाओं के लिए कॉलबैक के कई प्रकार लिखे हैं क्योंकि मैं जैसी विधियाँ चाहता था __init__()
, __enter__()
और __exit__()
अपने एपीआई प्रलेखन में दिखाने के लिए (आखिरकार, ये "विशेष विधियाँ" एपीआई का हिस्सा हैं और इससे बेहतर स्थान और क्या है? विशेष विधि के डॉकस्ट्रिंग के अंदर की तुलना में उन्हें दस्तावेज करें)।
हाल ही में मैंने सबसे अच्छा कार्यान्वयन लिया और इसे मेरी पायथन परियोजनाओं में से एक का हिस्सा बनाया ( यहाँ प्रलेखन )। कार्यान्वयन मूल रूप से इसके लिए आता है:
import types
def setup(app):
"""Enable Sphinx customizations."""
enable_special_methods(app)
def enable_special_methods(app):
"""
Enable documenting "special methods" using the autodoc_ extension.
:param app: The Sphinx application object.
This function connects the :func:`special_methods_callback()` function to
``autodoc-skip-member`` events.
.. _autodoc: http://www.sphinx-doc.org/en/stable/ext/autodoc.html
"""
app.connect('autodoc-skip-member', special_methods_callback)
def special_methods_callback(app, what, name, obj, skip, options):
"""
Enable documenting "special methods" using the autodoc_ extension.
Refer to :func:`enable_special_methods()` to enable the use of this
function (you probably don't want to call
:func:`special_methods_callback()` directly).
This function implements a callback for ``autodoc-skip-member`` events to
include documented "special methods" (method names with two leading and two
trailing underscores) in your documentation. The result is similar to the
use of the ``special-members`` flag with one big difference: Special
methods are included but other types of members are ignored. This means
that attributes like ``__weakref__`` will always be ignored (this was my
main annoyance with the ``special-members`` flag).
The parameters expected by this function are those defined for Sphinx event
callback functions (i.e. I'm not going to document them here :-).
"""
if getattr(obj, '__doc__', None) and isinstance(obj, (types.FunctionType, types.MethodType)):
return False
else:
return skip
हाँ, तर्क की तुलना में अधिक प्रलेखन है :-)। विकल्प autodoc-skip-member
के उपयोग पर इस तरह कॉलबैक को परिभाषित करने का लाभ special-members
(मेरे लिए) यह है कि special-members
विकल्प उन संपत्तियों के प्रलेखन को भी सक्षम बनाता है जैसे __weakref__
(सभी नई शैली की कक्षाओं, AFAIK पर उपलब्ध) जिसे मैं शोर मानता हूं और बिल्कुल भी उपयोगी नहीं है। कॉलबैक दृष्टिकोण इससे बचा जाता है (क्योंकि यह केवल कार्यों / विधियों पर काम करता है और अन्य विशेषताओं की उपेक्षा करता है)।
"both" Both the class’ and the __init__ method’s docstring are concatenated and inserted.
-> इसलिए, यह न केवल होना चाहिए__init__(self)
, बल्कि वर्ग डॉकस्ट्रिंग भी यदि आपके पास है। क्या आप एक परीक्षण मामला प्रदान कर सकते हैं क्योंकि यदि ऐसा है, तो यह बग जैसा लगता है, है ना?