Saya menggunakan sphinx dan plugin autodoc untuk menghasilkan dokumentasi API untuk modul Python saya. Meskipun saya dapat melihat cara mendokumentasikan parameter tertentu dengan baik, saya tidak dapat menemukan contoh cara mendokumentasikan **kwargs
parameter.
Adakah yang punya contoh bagus tentang cara yang jelas untuk mendokumentasikannya?
Jawaban:
Saya pikir
subprocess
dokumen -module adalah contoh yang bagus. Berikan daftar lengkap semua parameter untuk kelas atas / induk . Kemudian lihat saja daftar itu untuk semua kemunculan lainnya**kwargs
.sumber
subprocess.call(*popenargs, **kwargs)
. Itu didokumentasikan sebagai disubprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
mana segala sesuatu setelah*
adalah kunci yang dikenali di**kwargs
(Atau setidaknya yang sering digunakan)subprocess.Popen
dan saya tidak yakin itu adalah contoh yang sangat bagus lagi.Setelah menemukan pertanyaan ini, saya memutuskan yang berikut, yang merupakan Sphinx yang valid dan berfungsi dengan cukup baik:
The
r"""..."""
diperlukan untuk membuat ini "mentah" docstring dan dengan demikian menjaga\*
utuh (untuk Sphinx untuk mengambil sebagai literal sebuah*
dan bukan awal dari "penekanan").Pemformatan yang dipilih (daftar berpoin dengan jenis tanda kurung dan deskripsi yang dipisahkan m-dash) cukup untuk mencocokkan pemformatan otomatis yang disediakan oleh Sphinx.
Setelah Anda melakukan upaya untuk membuat bagian "Argumen Kata Kunci" terlihat seperti bagian "Parameter" default, sepertinya akan lebih mudah untuk menggulirkan bagian parameter Anda sendiri dari awal (sesuai dengan beberapa jawaban lainnya) , tetapi sebagai bukti konsep, ini adalah salah satu cara untuk mendapatkan tampilan tambahan yang bagus
**kwargs
jika Anda sudah menggunakan Sphinx.sumber
Docstring Google Style diurai oleh Sphinx
Penafian: tidak diuji.
Dari potongan contoh dokumen sphinx ini ,
*args
dan**kwargs
dibiarkan tidak diperluas :Saya akan menyarankan solusi berikut untuk kekompakan:
Perhatikan bagaimana,
Optional
tidak diperlukan untuk**key
argumen.Jika tidak , Anda dapat mencoba mencantumkan * args secara eksplisit di bawah
Other Parameters
dan di**kwargs
bawahKeyword Args
(lihat bagian yang diurai ):sumber
Ada contoh doctstring untuk Sphinx dalam dokumentasinya. Secara khusus mereka menunjukkan yang berikut:
Meskipun Anda bertanya tentang sphinxsecara eksplisit, saya juga akan menunjuk ke Panduan Gaya Google Python . Contoh docstring mereka tampaknya menyiratkan bahwa mereka tidak menyebut kwarg secara khusus. (variabel_lain = Tidak ada)
ABB memiliki pertanyaan tentang jawaban yang diterima dari referensi dokumentasi manajemen subproses. Jika Anda mengimpor modul, Anda dapat dengan cepat melihat modul docstrings melalui inspect.getsource.
Contoh dari interpreter python menggunakan rekomendasi Silent Ghost:
Tentu saja Anda juga dapat melihat dokumentasi modul melalui fungsi bantuan. Misalnya bantuan (subproses)
Saya pribadi bukan penggemar subproses docstring untuk kwargs sebagai contoh, tetapi seperti contoh Google itu tidak mencantumkan kwargs secara terpisah seperti yang ditunjukkan dalam contoh dokumentasi Sphinx.
Saya menyertakan jawaban ini untuk pertanyaan ABB karena perlu dicatat bahwa Anda dapat meninjau sumber atau dokumentasi modul apa pun dengan cara ini untuk mendapatkan wawasan dan inspirasi untuk mengomentari kode Anda.
sumber
other_silly_variable
bukanlah argumen kwargs, tetapi argumen yang sepenuhnya normal.Jika ada orang lain yang mencari sintaks yang valid .. Berikut adalah contoh docstring. Beginilah cara saya melakukannya, saya harap ini berguna bagi Anda, tetapi saya tidak dapat mengklaim bahwa ini sesuai dengan apa pun secara khusus.
sumber
Ini tergantung pada gaya dokumentasi yang Anda gunakan, tetapi jika Anda menggunakan gaya numpydoc , disarankan untuk
**kwargs
menggunakan dokumenOther Parameters
.Misalnya, mengikuti contoh quornian:
Perhatikan terutama bahwa disarankan untuk memberikan default kwargs, karena ini tidak jelas dari tanda tangan fungsi.
sumber
Jika Anda mencari cara melakukan ini dengan gaya numpydoc , Anda cukup menyebutkannya
**kwargs
di bagian Parameter tanpa menentukan jenisnya - seperti yang ditunjukkan dalam contoh numpydoc dari napolean ekstensi sphinx dan panduan docstring dari pandas dokumentasi sprint 2018.Berikut ini adalah contoh yang saya temukan dari LSST panduan pengembang yang sangat baik menjelaskan apa yang seharusnya menjadi deskripsi dari
**kwargs
parameter:Atau, berdasarkan saran @Jonas Adler, saya merasa lebih baik untuk meletakkan
**kwargs
dan deskripsinya diOther Parameters
bagian - bahkan contoh dari panduan dokumentasi matplotlib ini menyarankan hal yang sama.sumber