การเยื้อง (Indentation) เป็นคุณสมบัติสำคัญของไวยากรณ์ Python บล็อกโค้ดในฟังก์ชัน คลาส หรือลูป ต้องปฏิบัติตามระดับการเยื้องเดียวกันสำหรับคำสั่งภายใน โมดูล tabnanny ในไลบรารีมาตรฐานของ Python สามารถตรวจจับการละเมิดข้อกำหนดนี้ได้
โมดูลนี้มีจุดประสงค์หลักเพื่อใช้ในโหมดบรรทัดคำสั่งด้วยสวิตช์ -m อย่างไรก็ตาม ก็สามารถนำเข้าในเซสชันอินเตอร์พรีเตอร์ได้เช่นกัน
การใช้งานบรรทัดคำสั่ง
python -m tabnanny -q example.py
สำหรับเอาต์พุตแบบละเอียด ใช้สวิตช์ -v
python -m tabnanny -v example.py
ฟังก์ชันต่อไปนี้ถูกกำหนดในโมดูล tabnanny สำหรับตรวจสอบการเยื้องทางโปรแกรม:
check()
ฟังก์ชันนี้ตรวจสอบบรรทัดที่เยื้องคลุมกำหนดในไฟล์ที่กำหนด สามารถส่งไดเรกทอรีเป็นพารามิเตอร์ได้ ไฟล์ทั้งหมดในนั้นจะถูกตรวจสอบแบบเรียกซ้ำ
ตัวอย่าง
import tabnanny
tabnanny.check('example.py')
tabnanny.verbose - แฟล็กนี้ระบุว่าจะพิมพ์ข้อความแบบละเอียดหรือไม่ เพิ่มขึ้นโดยตัวเลือก -v หากเรียกเป็นสคริปต์
tabnanny.filename_only - แฟล็กนี้ระบุว่าจะพิมพ์เฉพาะชื่อไฟล์ที่มีปัญหาเกี่ยวกับ whitespace หรือไม่ ตั้งค่าเป็น true โดยตัวเลือก -q หากเรียกเป็นสคริปต์
process_tokens()
ฟังก์ชันนี้ถูกใช้โดย check() เพื่อประมวลผลโทเค็นที่สร้างโดยโมดูล tokenize ฟังก์ชันนี้ยกเว้น NannyNag exception หากตรวจพบการเยื้องคลุมกำหนด ถูกจับและจัดการใน check()