অক্সিজেন [বন্ধ] ব্যবহার করে কীভাবে পাইথন কোড নথিভুক্ত করবেন


94

আমি সি বা পিএইচপি কোডের ডকুমেন্টেশন তৈরি করতে ডক্সিজেন পছন্দ করি। আমার একটি আসন্ন পাইথন প্রকল্প রয়েছে এবং আমি মনে করি আমার মনে আছে যে পাইথনের কোনও /* .. */মন্তব্য নেই, এবং এর নিজস্ব স্ব-ডকুমেন্টেশন সুবিধা রয়েছে যা ডকুমেন্ট করার অজগর উপায় বলে মনে হয়।

যেহেতু আমি ডক্সিজেনের সাথে পরিচিত, আমি কীভাবে এটি আমার পাইথন ডকুমেন্টেশন তৈরি করতে ব্যবহার করতে পারি? বিশেষত এমন কিছু আছে যা সম্পর্কে আমার সচেতন হওয়া দরকার?

উত্তর:


62

এটি ডক্সিজেন ওয়েবসাইটে নথিভুক্ত করা হয়েছে, তবে সংক্ষেপে এখানে:

আপনি আপনার পাইথন কোডটি নথিভুক্ত করতে ডক্সিজেন ব্যবহার করতে পারেন। আপনি পাইথন ডকুমেন্টেশন স্ট্রিং সিনট্যাক্স ব্যবহার করতে পারেন:

"""@package docstring
Documentation for this module.

More details.
"""

def func():
    """Documentation for a function.

    More details.
    """
    pass

কোন ক্ষেত্রে মন্তব্যগুলি ডোজিজেনের মাধ্যমে আহরণ করা হবে, তবে আপনি বিশেষ ডক্সিজেনের কোনও আদেশ ব্যবহার করতে সক্ষম হবেন না ।

অথবা আপনি (ডোজিনের অধীনে সি-স্টাইলের ভাষাগুলির মতো) #সদস্যের আগে প্রথম লাইনে মন্তব্য মার্কারটিকে দ্বিগুণ করতে পারেন :

## @package pyexample
#  Documentation for this module.
#
#  More details.

## Documentation for a function.
#
#  More details.
def func():
    pass

সেক্ষেত্রে আপনি বিশেষ ডক্সিজেন কমান্ড ব্যবহার করতে পারেন। কোন বিশেষ পাইথন আউটপুট মোড, কিন্তু আপনি দৃশ্যত সেটিং দ্বারা ফলাফল উন্নত করতে পারেন OPTMIZE_OUTPUT_JAVAথেকে YES

সত্য, আমি পার্থক্যটি সম্পর্কে একটু আশ্চর্য হয়েছি - মনে হচ্ছে একবার ডোজিজেন ## ব্লক বা "" ব্লকগুলিতে মন্তব্যগুলি সনাক্ত করতে পারলে বেশিরভাগ কাজ শেষ হয়ে যায় এবং আপনি বিশেষ কমান্ড ব্যবহার করতে সক্ষম হবেন উভয় ক্ষেত্রেই সম্ভবত তারা প্রত্যাশা করে যে "" "আরও বেশি পাইথোনিক ডকুমেন্টেশন অনুশীলনগুলি মেনে চলার জন্য লোকেরা ব্যবহার করবে এবং এটি বিশেষ ডক্সিজেন আদেশের সাথে হস্তক্ষেপ করবে?


57
পাইথনে ডকুমেন্টেশন হিসাবে মন্তব্যগুলি খারাপ। মন্তব্যগুলি মডিউল রক্ষণাবেক্ষণকারী (কেন এবং কিভাবে প্রয়োগ করা হয়) এর জন্য। সমস্ত ডকুমেন্টেশন ডকাস্ট্রিংগুলিতে হওয়া উচিত (কীভাবে ব্যবহার করবেন)।
jfs

4
পাইথন মন্তব্যগুলিতে টানবে এবং এগুলিকে ডকাস্ট্রিং হিসাবে ব্যবহার করবে, সুতরাং দুটি ফর্ম্যাট উভয়ই পাইডোক দিয়ে কাজ করে।
ডোকাটি

10
ডক্সপাইতে একবার দেখুন যা সাধারণ ডকাস্ট্রিংয়ের অভ্যন্তরে বিশেষ কমান্ড ব্যবহার করা সম্ভব করে ।
মাউরো

84

দ্য Doxypy ইনপুট ফিল্টারকে আপনি প্রায় কাছাকাছি সব Doxygen এর বিন্যাস ট্যাগের একটি প্রমিত পাইথন docstring বিন্যাসে ব্যবহারের অনুমতি দেয়। আমি এটি একটি বড় মিশ্র সি ++ এবং পাইথন গেম অ্যাপ্লিকেশন কাঠামোর নথি হিসাবে ব্যবহার করি এবং এটি ভালভাবে কাজ করছে।


4
দুঃখের বিষয় যে এই উত্তরটি, প্রশ্নের সঠিক উত্তর
হওয়াতেও

9
আপনি ডক্সিপাইটিও পরীক্ষা করে দেখতে চাইতে পারেন কারণ এটি পাইথোনিক ডকস্ট্রিংকে এমন কিছুতে রূপান্তরিত করবে যা ডক্সিজেন ব্যবহার করতে পারে।
Feneric

8
ডক্সিপি মারা গেছে এবং চলে গেছে বলে মনে হচ্ছে ..
naught101

24

শেষ পর্যন্ত, আপনার কাছে কেবল দুটি বিকল্প রয়েছে:

আপনি ডক্সিজেন ব্যবহার করে আপনার সামগ্রী তৈরি করেন, বা আপনি স্পিঙ্কস * ব্যবহার করে আপনার সামগ্রী তৈরি করেন।

  1. ডক্সিজেন : বেশিরভাগ পাইথন প্রকল্পগুলির জন্য এটি পছন্দের সরঞ্জাম নয়। তবে আপনাকে যদি সি বা সি ++ তে লিখিত অন্যান্য সম্পর্কিত প্রকল্পগুলির সাথে ডিল করতে হয় তবে তা বোধগম্য হতে পারে। এর জন্য আপনি ডক্সিপিপি ব্যবহার করে ডক্সিজেন এবং পাইথনের মধ্যে সংহতকরণ উন্নত করতে পারেন ।

  2. স্ফিংক্স : পাইথন প্রকল্পটি নথির জন্য ডিফাক্টো সরঞ্জাম। আপনার কাছে এখানে তিনটি বিকল্প রয়েছে: ম্যানুয়াল, আধা-স্বয়ংক্রিয় (স্টাব জেনারেশন) এবং সম্পূর্ণ স্বয়ংক্রিয়ভাবে (ডক্সিজেনের মতো)।

    1. ম্যানুয়াল এপিআই ডকুমেন্টেশনের জন্য আপনার কাছে স্পিনক্স অটোডোক রয়েছে । এম্বেড থাকা এপিআই উত্পাদিত উপাদানগুলির সাথে একটি ব্যবহারকারীর গাইড লিখতে এটি দুর্দান্ত।
    2. আধা-স্বয়ংক্রিয়র জন্য আপনার কাছে স্পিঙ্কস অটোসোমারি রয়েছে । আপনি স্ফিংস-অটোজেন কল করতে আপনার বিল্ড সিস্টেম সেটআপ করতে পারেন বা এর সাথে আপনার স্পিংক্স সেটআপ করতে পারেনautosummary_generate কনফিগারেশনের মাধ্যমে । আপনাকে অটোসমারিগুলির সাথে একটি পৃষ্ঠা সেটআপ করতে হবে এবং তারপরে ম্যানুয়ালি পৃষ্ঠাগুলি সম্পাদনা করতে হবে। আপনার কাছে বিকল্প রয়েছে, তবে এই পদ্ধতির সাথে আমার অভিজ্ঞতাটি হ'ল এর জন্য অনেক বেশি কনফিগারেশন প্রয়োজন, এবং নতুন টেম্পলেট তৈরি করার পরেও আমি পাবলিক এপিআই হিসাবে প্রকাশিত হয়েছিল এবং কী কী ঠিক তা নির্ধারণ করার জন্য বাগ এবং অসম্ভবতা খুঁজে পেয়েছি। আমার মতে এই সরঞ্জামটি স্টাব জেনারেশনের পক্ষে ভাল, যার জন্য ম্যানুয়াল সম্পাদনা প্রয়োজন হবে, এবং এর চেয়ে বেশি কিছুই নয়। ম্যানুয়ালটিতে শেষ করতে শর্টকাটের মতো।
    3. সম্পূর্ণরূপে স্বয়ংক্রিয়. এটি বহুবার সমালোচিত হয়েছে এবং দীর্ঘকাল ধরে আমাদের কাছে অটোএপিআই না আসা পর্যন্ত স্পিঙ্কসের সাথে একীভূত একটি ভাল সম্পূর্ণ স্বয়ংক্রিয় পাইথন এপিআই জেনারেটর ছিল না , যা ব্লকের একটি নতুন বাচ্চা। পাইথনের স্বয়ংক্রিয় API প্রজন্মের জন্য এটি এখন পর্যন্ত সেরা (দ্রষ্টব্য: নির্লজ্জ স্ব-প্রচার)।

নোট করার জন্য অন্যান্য বিকল্প রয়েছে:

  • শ্বাস প্রশ্বাস : এটি একটি খুব ভাল ধারণা হিসাবে শুরু হয়েছিল এবং আপনি ডক্সিজেন ব্যবহার করে এমন অন্যান্য ভাষায় কয়েকটি সম্পর্কিত প্রকল্পের সাথে কাজ করার সময় তা বোধগম্য হয়। ধারণাটি হ'ল ডোজিজেন এক্সএমএল আউটপুট ব্যবহার করা এবং আপনার এপিআই তৈরির জন্য স্পিনক্সে এটি খাওয়ানো। সুতরাং, আপনি ডোজিনের সমস্ত সদ্ব্যবহার রাখতে এবং স্পিঙ্কে ডকুমেন্টেশন সিস্টেমকে একীভূত করতে পারেন। তাত্ত্বিকভাবে দুর্দান্ত। এখন, অনুশীলনে, আমি শেষবারের মতো প্রকল্পটি পরীক্ষা করেছিলাম উত্পাদনের জন্য প্রস্তুত ছিল না।
  • পাইডোকটর *: খুব নির্দিষ্ট। নিজস্ব আউটপুট উত্পন্ন করে। এটি স্পিনক্সের সাথে কিছু বেসিক সংহতকরণ এবং কিছু দুর্দান্ত বৈশিষ্ট্য রয়েছে।

অটোপি ব্যবহার করার আদেশ কী। অটোপি মডিউলগুলি অন্তর্ভুক্ত করার জন্য আমি কনফিডে পরিবর্তন করেছি। বর্তমানে, আমি "স্পিংস-এপিডোক-এপিডোকস - সম্পূর্ণ" চালাচ্ছি।
সন্দীপ

আপনার অতিরিক্ত কমান্ডের দরকার নেই। স্ফিংস-বিল্ডটি ব্যবহার করে কেবল আপনার স্পিংক্স ডকুমেন্টেশন তৈরি করুন। আমি এটি টক্সের সাথে এটির মতো সংহত করেছি: github.com/HPENetering/cookiecutter_python/blob/module/…
হাভোক

@ হ্যাভোক আমি যখন মডিউলটির সমস্ত উপাদানগুলিকে ভেরিয়েবল এক্সপ্লিটের মধ্যে রাখতে হয় তখন অটোপআই কীভাবে "সম্পূর্ণ স্বয়ংক্রিয়" হয় তা আমি দেখতে পাই না __all__
বুটজ

20

স্পিনিক্স মূলত উত্স কোড থেকে স্বতঃ লিখিত দস্তাবেজগুলি বিন্যাস করার জন্য একটি সরঞ্জাম, যেমনটি আমি বুঝতে পারি।

পাইথন ডকস্ট্রিংস থেকে এপিআই ডক্স তৈরির জন্য, শীর্ষস্থানীয় সরঞ্জামগুলি হ'ল পিডোক এবং পাইডোকটর । এখানে জন্য pydoctor এর উত্পন্ন এপিআই ডক্স এর পাক এবং বাজার

অবশ্যই, আপনি স্টাফের উপর কাজ করার সময় যদি ডাস্টাস্ট্রিংগুলি কেবল একবার দেখতে চান তবে " পাইডোক " কমান্ড লাইন সরঞ্জাম এবং help()ইন্টারেক্টিভ ইন্টারপ্রেটারে উপলব্ধ ফাংশন রয়েছে।


4
এটি সত্য, স্পিনিক্স সোর্স কোড থেকে স্বতন্ত্রভাবে লিখিত ডকগুলি একটি বেস হিসাবে ব্যবহার করে তবে অটোডোক এক্সটেনশন ব্যবহার করে সহজেই পাইথন মডিউলগুলি থেকে ডকাস্ট্রিং অন্তর্ভুক্ত করা যায়। এর গতিশীল প্রকৃতির কারণে আমি পাইথন মডিউলগুলির জন্য হাতে লিখিত ডকুমেন্টেশনগুলি উত্পন্ন এপিআই ডক্সের চেয়ে বেশি দরকারী।
পিটার হফম্যান

4
আপনি যখন কোনও হার্ড-ডকুমেন্টেড প্রকল্পের ক্লাসগুলির মধ্যে কাঠামো এবং সম্পর্ককে আঁকড়ে ধরার চেষ্টা করছেন তখন "হাতে লিখিত" দস্তাবেজগুলি উপলভ্য হয় না।
21

13

অন্য একটি খুব ভাল ডকুমেন্টেশন সরঞ্জাম হ'ল স্পিংক্স । এটি আসন্ন অজগর ২.6 নথির জন্য ব্যবহৃত হবে এবং এটি জাঙ্গো এবং অন্যান্য অজগর প্রকল্প দ্বারা ব্যবহৃত হবে by

স্ফিংক্স ওয়েবসাইট থেকে:

  • আউটপুট ফর্ম্যাটগুলি : মুদ্রণযোগ্য পিডিএফ সংস্করণগুলির জন্য এইচটিএমএল (উইন্ডোজ এইচটিএমএল সহায়তা সহ) এবং লটেক্স
  • বিস্তৃত ক্রস-রেফারেন্স : ফাংশন, শ্রেণি, শব্দকোষের শর্তাদি এবং অনুরূপ তথ্যের টুকরো জন্য শব্দার্থক মার্কআপ এবং স্বয়ংক্রিয় লিঙ্কগুলি
  • শ্রেণিবদ্ধ কাঠামো : ভাইবোন, বাবা-মা এবং বাচ্চাদের সাথে স্বয়ংক্রিয় লিঙ্ক সহ একটি নথি গাছের সহজ সংজ্ঞা
  • স্বয়ংক্রিয় সূচকগুলি : সাধারণ সূচক পাশাপাশি মডিউল সূচক
  • কোড হ্যান্ডলিং : পিগমেন্ট হাইলাইটার ব্যবহার করে স্বয়ংক্রিয় হাইলাইট করা
  • এক্সটেনশানস : কোড স্নিপেটের স্বয়ংক্রিয় পরীক্ষা করা, পাইথন মডিউলগুলি থেকে ডকাস্ট্রিংয়ের অন্তর্ভুক্তি এবং আরও অনেক কিছু

11
চেষ্টা করেছেন। যদিও স্ফিংকস নিজেই একটি খুব আকর্ষণীয় সরঞ্জাম, এটি ডক্সিজেন থেকে আসার আমি প্রত্যাশা করি নি। সত্যিকারের ভাল শেষ গ্রাহক ডকের জন্য আরও একটি সরঞ্জাম, এসডাব্লু ডিজাইনারের পক্ষে ডোজিজেন অনেক ভাল যাঁরা কেবলমাত্র একটি দুর্দান্ত মুদ্রণযোগ্য ফর্ম্যাটে একটি API ওভারভিউ দেখতে চান।
জেন

4
@ জেন আমি রাজি না একটি অক্সিজেন প্রেমিকা হিসাবে আমি পুরোপুরি স্বয়ংক্রিয় এপিআই রেফারেন্স গাইড জেনারেশনটি খুব বেশি মিস করেছি। অন্য কিছু বিকল্প এখন উপলব্ধ হিসাবে আমার উত্তর পরীক্ষা করুন।
হাভোক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.