มา Document สำหรับ Class Module ใน Python เพื่อใช้งานในทีมกัน ด้วย pdoc

หลายท่าน น่าจะเคยเจอปัญหา ในการต้องมาอธิบายให้เพื่อนร่วมทีมฟัง ถึงวิธีใช้งาน บาง Function หรือ Class Module ที่เราหรือเพื่อนร่วมทีมเขียน Code ไว้ แม้บางครั้งเราจะเขียน String Doc (__doc__ หรือ docstring) ใน Python ไว้แล้วก็ตาม ดังภาพตัวอย่างด้านบน

ก็มักจะเจอปัญหา เพื่อนร่วมทีมยังหาวิธีใช้งานยาก หรือไม่รู้ว่ามี Function หรือ Class นั้นๆอยู่ หรือเจอปัญหา เมื่อมีเพื่อร่วมทีม เข้ามาใหม่ ก็ต้องมานั่งอธิบาย วิธีใช้งานกันเป็นวันๆ หรือ 2-3 วันเลยทีเดี่ยว ซึ่งเอาจริงๆแล้ว สิ่งที่เราอธิบายไปนั้น แน่นอนว่า เพื่อนร่วมทีมเรา มักจะจำกันไม่ค่อยได้

จะดีกว่าไหม ถ้าเรามี HTML Document แบบนี้

https://back-dev-docs.web.app/

เอาละมาเริ่มกันแบบจริงจังชักที สมุดว่าเรามี โครงสร้าง โปรเจ็คประมาณนี้

.
└── project/
├── docs/
│ ├── …
│ ├── index.html
│ └── …
├── shared_library_python/
│ └── python/
│ ├── …
│ ├── Connection.py
│ ├── CRUDModel.py
│ ├── EnvModel.py
│ └── …
└── document.py

และมีเขียน String Doc (__doc__ หรือ docstring) ใน Python ไว้แล้ว ดังภาพ

เราจะสามารถใช้ Code ต่อไปนี้ในการสร้าง HTML Document ได้ทันที

pip install pdoc
#!/usr/bin/env python

import glob
import json
import os
from datetime import datetime

vvvvv = datetime.now().strftime('%Y-%m-%d')
"""
Generate the code documentation, using pydoc.
"""

docs_folder = f"docs_{vvvvv}"
ignored_files = ["MongoDBEngine.py"]
module_list = []
for dirname in ['shared_library_python/python/']:
    flist = glob.glob(f'{dirname}/*.py')
    for fname in flist:
        if '__init__' not in fname and fname not in ignored_files and "EX_" not in fname:
            module_list.append(fname)
            bname = os.path.splitext(os.path.basename(fname))[0].lower()


    os.system(f'python3.8 -m pdoc -d google -o {docs_folder} -e module={json.dumps(module_list)}')

ตัวอย่าง การเขียน String Doc (__doc__ หรือ docstring) ใน Python

ลองสร้างไฟล์ demo.py และใส่ Code ด้านล่างลงไป จากนั้น เรียกใช้คำสั่งต่อไปนี้ดูครับ

pdoc demo.py

ไฟล์ demo.py

"""
A small `pdoc` example.
"""

class Dog:
    """🐕"""
    name: str
    """The name of our dog."""
    friends: list["Dog"]
    """The friends of our dog."""

    def __init__(self, name: str):
        """Make a Dog without any friends (yet)."""
        self.name = name
        self.friends = []

    def bark(self, loud: bool = True):
        """*woof*"""

ดูการใช้งานเพิ่มเติมได้ที่เว็บไชต์

https://pdoc.dev/

Read more

iOS 27: เตรียมพบกับ 3 เครื่องมือ AI แต่งภาพสุดล้ำในแอป Photos ทั้ง Extend, Enhance และ Reframe

iOS 27: เตรียมพบกับ 3 เครื่องมือ AI แต่งภาพสุดล้ำในแอป Photos ทั้ง Extend, Enhance และ Reframe

เตรียมพบกับยุคใหม่แห่งการแต่งภาพบน iPhone ด้วย iOS 27! Apple จ่อเพิ่ม AI Tools ใหม่ในแอป Photos ทั้ง Extend, Enhance, Reframe ให้คุณสร้างสรรค์ภาพสวยง่ายดาย

By ทีมงาน devdog
ฉลอง 20 ปี Google Translate เปิดตัวฟีเจอร์ AI ฝึกออกเสียงเรียลไทม์ตามคำเรียกร้อง!

ฉลอง 20 ปี Google Translate เปิดตัวฟีเจอร์ AI ฝึกออกเสียงเรียลไทม์ตามคำเรียกร้อง!

Google Translate ฉลอง 20 ปี! เปิดตัวฟีเจอร์ AI ช่วยฝึกออกเสียงแบบเรียลไทม์ ตอบโจทย์คนอยากเก่งภาษา พร้อมวิเคราะห์และให้คำแนะนำทันที

By ทีมงาน devdog
PPV คืออะไร? เจาะลึกปรากฏการณ์ Pay-Per-View กับอีเวนต์สุดพิเศษแห่งยุค

PPV คืออะไร? เจาะลึกปรากฏการณ์ Pay-Per-View กับอีเวนต์สุดพิเศษแห่งยุค

ทำความเข้าใจ Pay-Per-View (PPV) กับเทรนด์การรับชมอีเวนต์สุดพิเศษ ทั้งศึก ONE Championship, คอนเสิร์ต Project Sekai และความบันเทิงหลากหลายผ่าน ABEMA PPV.

By ทีมงาน devdog