স্পিংস সংস্করণ 3.1 (জুন 2020) থেকে, sphinx.ext.autosummary
(শেষ পর্যন্ত) পুনরাবৃত্তি হয়েছে।
সুতরাং আর কোনও স্বয়ংক্রিয় প্যাকেজ সনাক্তকরণের জন্য স্পিঙ্ক অটোএপিআই বা স্পিঙ্কস অটপ্যাকেজস্মুলির মতো তৃতীয় পক্ষের লাইব্রেরিগুলিতে হার্ড কোড মডিউল নামগুলির দরকার নেই বা তৃতীয় পক্ষের লাইব্রেরিগুলির উপর নির্ভর করার প্রয়োজন নেই ।
দস্তাবেজ করার জন্য পাইথন ৩.7 প্যাকেজটির উদাহরণ ( গিথুবের কোড দেখুন এবং রিডডকসগুলিতে ফলাফল দেখুন ):
mytoolbox
|-- mypackage
| |-- __init__.py
| |-- foo.py
| |-- mysubpackage
| |-- __init__.py
| |-- bar.py
|-- doc
| |-- source
| |--index.rst
| |--conf.py
| |-- _templates
| |-- custom-module-template.rst
| |-- custom-class-template.rst
conf.py
:
import os
import sys
sys.path.insert(0, os.path.abspath('../..')) # Source code dir relative to this file
extensions = [
'sphinx.ext.autodoc', # Core library for html generation from docstrings
'sphinx.ext.autosummary', # Create neat summary tables
]
autosummary_generate = True # Turn on sphinx.ext.autosummary
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
index.rst
(নতুন :recursive:
বিকল্প নোট করুন ):
Welcome to My Toolbox
=====================
Some words.
.. autosummary::
:toctree: _autosummary
:template: custom-module-template.rst
:recursive:
mypackage
এটি প্যাকেজের প্রতিটি মডিউল স্বয়ংক্রিয়ভাবে সংক্ষিপ্ত করতে যথেষ্ট, যদিও গভীরভাবে বাসাযুক্ত। প্রতিটি মডিউলের জন্য, এটি সেই মডিউলটিতে প্রতিটি বৈশিষ্ট্য, ফাংশন, শ্রেণি এবং ব্যতিক্রম সংক্ষিপ্তসার করে।
অদ্ভুতভাবে, যদিও, ডিফল্ট sphinx.ext.autosummary
টেম্পলেটগুলি প্রতিটি অ্যাট্রিবিউট, ফাংশন, শ্রেণি এবং ব্যতিক্রমগুলির জন্য পৃথক ডকুমেন্টেশন পৃষ্ঠাগুলি তৈরি করে না এবং সংক্ষিপ্ত টেবিলগুলি থেকে তাদের সাথে লিঙ্ক করে। এটি করার জন্য টেমপ্লেটগুলি প্রসারিত করা সম্ভব, নীচে দেখানো হয়েছে, তবে কেন আমি এটি ডিফল্ট আচরণ নয় তা বুঝতে পারি না - অবশ্যই এটি বেশিরভাগ মানুষই চান ..? আমি এটি একটি বৈশিষ্ট্য অনুরোধ হিসাবে উত্থাপিত করেছি ।
আমাকে স্থানীয়ভাবে ডিফল্ট টেম্পলেটগুলি অনুলিপি করতে হয়েছিল, এবং তারপরে সেগুলিতে যুক্ত করতে হবে:
- অনুলিপি
site-packages/sphinx/ext/autosummary/templates/autosummary/module.rst
করুনmytoolbox/doc/source/_templates/custom-module-template.rst
- অনুলিপি
site-packages/sphinx/ext/autosummary/templates/autosummary/class.rst
করুনmytoolbox/doc/source/_templates/custom-class-template.rst
বিকল্পটি ব্যবহার করে হুকটি উপরের দিকে custom-module-template.rst
রয়েছে । (ডিফল্ট সাইট-প্যাকেজ টেম্পলেট ব্যবহার করে কী হয় তা দেখতে সেই লাইনটি মুছুন))index.rst
:template:
custom-module-template.rst
(ডানদিকে উল্লিখিত অতিরিক্ত লাইন):
{{ fullname | escape | underline}}
.. automodule:: {{ fullname }}
{% block attributes %}
{% if attributes %}
.. rubric:: Module Attributes
.. autosummary::
:toctree: <-- add this line
{% for item in attributes %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block functions %}
{% if functions %}
.. rubric:: {{ _('Functions') }}
.. autosummary::
:toctree: <-- add this line
{% for item in functions %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block classes %}
{% if classes %}
.. rubric:: {{ _('Classes') }}
.. autosummary::
:toctree: <-- add this line
:template: custom-class-template.rst <-- add this line
{% for item in classes %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block exceptions %}
{% if exceptions %}
.. rubric:: {{ _('Exceptions') }}
.. autosummary::
:toctree: <-- add this line
{% for item in exceptions %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block modules %}
{% if modules %}
.. rubric:: Modules
.. autosummary::
:toctree:
:template: custom-module-template.rst <-- add this line
:recursive:
{% for item in modules %}
{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
custom-class-template.rst
(ডানদিকে উল্লিখিত অতিরিক্ত লাইন):
{{ fullname | escape | underline}}
.. currentmodule:: {{ module }}
.. autoclass:: {{ objname }}
:members: <-- add at least this line
:show-inheritance: <-- plus I want to show inheritance...
:inherited-members: <-- ...and inherited members too
{% block methods %}
.. automethod:: __init__
{% if methods %}
.. rubric:: {{ _('Methods') }}
.. autosummary::
{% for item in methods %}
~{{ name }}.{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
{% block attributes %}
{% if attributes %}
.. rubric:: {{ _('Attributes') }}
.. autosummary::
{% for item in attributes %}
~{{ name }}.{{ item }}
{%- endfor %}
{% endif %}
{% endblock %}
ls
কোনও ফাইলের রুট করা এবং এটি সম্পাদনা করা কতটা কঠিন হতে পারে ?