इंडेंटेशन पायथन सिंटैक्स की एक महत्वपूर्ण विशेषता है। फ़ंक्शन, क्लास या लूप में कोड ब्लॉकों के लिए उसमें मौजूद कथनों के लिए समान इंडेंट स्तर का पालन करना आवश्यक है। पायथन के मानक लाइब्रेरी में tabnanny मॉड्यूल इस शर्त के किसी भी उल्लंघन का पता लगाने में सक्षम है।
यह मॉड्यूल मुख्य रूप से कमांड लाइन मोड में -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 - यह फ्लैग इंगित करता है कि केवल उन फ़ाइलों के नाम प्रिंट करना है जिनमें व्हाइटस्पेस संबंधी समस्याएं हैं। यदि स्क्रिप्ट के रूप में कॉल किया जाता है तो -q विकल्प द्वारा इसे true पर सेट किया जाता है।
process_tokens() -
यह फ़ंक्शन tokenize मॉड्यूल द्वारा उत्पन्न टोकन को संसाधित करने के लिए check() द्वारा उपयोग किया जाता है। यदि अस्पष्ट इंडेंट का पता चलता है तो यह फ़ंक्शन NannyNag अपवाद उठाता है। इसे check() में कैप्चर और हैंडल किया जाता है।