গত কয়েক বছর ধরে আমি বেশ কয়েক রূপগুলো লিখেছি autodoc-skip-member
বিভিন্ন সম্পর্কহীন পাইথন প্রকল্পগুলির জন্য callbacks কারণ আমি পদ্ধতি পছন্দ চাচ্ছিল __init__()
, __enter__()
এবং__exit__()
(আমার এপিআই ডকুমেন্টেশন দেখা সব পরে, এই "বিশেষ পদ্ধতি" API- এর অংশ এবং কি ভাল জায়গা বিশেষ পদ্ধতির ডাস্ট্রিংয়ের চেয়ে এগুলি নথিভুক্ত করুন)।
সম্প্রতি আমি সেরা বাস্তবায়ন করেছি এবং এটিকে আমার পাইথন প্রকল্পগুলির একটিতে পরিণত করেছি ( এখানে ডকুমেন্টেশন রয়েছে )। বাস্তবায়নটি মূলত এতে নেমে আসে:
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__
সমস্ত নতুন-স্টাইলের ক্লাসে পাওয়া যায়, এএএফআইকে) যেমন বৈশিষ্ট্যগুলির ডকুমেন্টেশন সক্ষম করে যা আমি গোলমাল বিবেচনা করি এবং মোটেই দরকারী না। কলব্যাক পদ্ধতির বিষয়টি এড়িয়ে চলে (কারণ এটি কেবল ফাংশন / পদ্ধতিতে কাজ করে এবং অন্যান্য বৈশিষ্ট্যগুলি উপেক্ষা করে)।
"both" Both the class’ and the __init__ method’s docstring are concatenated and inserted.
- কমপক্ষে: -> অতএব, এটি__init__(self)
যদি কেবল থাকে তবে ক্লাসের ডক্ট্রিং হওয়া উচিত নয় । আপনি কি কোনও পরীক্ষার কেস সরবরাহ করতে পারেন কারণ যদি এটি হয় তবে এটি বাগের মতো মনে হচ্ছে, তাই না?