किसी तकनीकी लेख में डिप्रिकेटेड (deprecated) API अभी भी काम करता है या नहीं, इसकी जांच कैसे करें
जब कोई तकनीकी लेख किसी डिप्रिकेटेड API का संदर्भ देता है, तो प्रोजेक्ट के वर्ज़न्ड डॉक्यूमेंटेशन, रिलीज़ नोट्स और माइग्रेशन निर्देशों के माध्यम से सटीक सिंबल को ट्रैक करें। "डिप्रिकेटेड" का अर्थ है कि मेंटेनर्स ने API को बदलने या भविष्य में हटाने के लिए चिह्नित किया है; इसका स्वतः यह अर्थ नहीं है कि API पहले ही हटाया जा चुका है। उस वर्ज़न की पुष्टि करें जहां चेतावनी दिखाई दी थी, फिर हटाए जाने और दस्तावेजीकृत विकल्प के लिए बाद के रिलीज़ नोट्स की जांच करें। Django का `django.conf.urls.url()` इसका एक स्पष्ट उदाहरण प्रदान करता है: Django 3.1 ने इसे `django.urls.re_path()` के पक्ष में डिप्रिकेट कर दिया, और Django 4.0 ने इसे हटा दिया।
सटीक API और वर्ज़न से शुरुआत करें
लाइब्रेरी, पूरा इम्पोर्ट पाथ या मेथड का नाम, और लेख जिस वर्ज़न को लक्षित करता है उसे रिकॉर्ड करें। केवल एक नाम अस्पष्ट हो सकता है: पैकेज समान नाम वाले API को प्रदर्शित कर सकते हैं, और कोई लेख किसी पुराने वर्ज़न को संदर्भित कर सकता है, भले ही वर्तमान दस्तावेज़ किसी नए वर्ज़न का वर्णन करते हों। वास्तविक सिंबल की पहचान करने के लिए कोड सैंपल के इम्पोर्ट और आस-पास के संदर्भ की जांच करें।
इसके बाद, लेख के बताए गए वर्ज़न के लिए आधिकारिक डॉक्यूमेंटेशन खोजें। "deprecated," "removed," या "backwards incompatible" जैसे स्टेटस लेबल देखें। फिर उस वर्ज़न के डॉक्यूमेंटेशन से तुलना करें जिसे कोई पाठक उपयोग करेगा। एक वर्तमान डॉक्यूमेंटेशन पेज किसी पुराने API को पूरी तरह से छोड़ सकता है, इसलिए वहां इसकी अनुपस्थिति जांच करने का एक संकेत है, न कि यह सबूत कि यह कब या क्यों गायब हो गया।
टाइमलाइन स्थापित करने के लिए रिलीज़ नोट्स का उपयोग करें
रिलीज़ नोट्स किसी बदलाव को एक विशिष्ट रिलीज़ से जोड़ते हैं। [Django 3.1 के रिलीज़ नोट्स](https://docs.djangoproject.com/en/3.1/releases/3.1/) में, मेंटेनर्स `django.conf.urls.url()` को डिप्रिकेटेड के रूप में सूचीबद्ध करते हैं और `django.urls.re_path()` को इसके विकल्प के रूप में पहचानते हैं। [Django 4.0 के रिलीज़ नोट्स](https://docs.djangoproject.com/en/4.0/releases/4.0/) में, वही API अपने डिप्रिकेशन चक्र को पूरा करने के बाद हटाए गए फीचर्स के तहत दिखाई देता है। ये दो प्रविष्टियाँ एक क्रम स्थापित करती हैं: 3.1 में डिप्रिकेट किया गया, 4.0 में हटाया गया।
जब तक प्रोजेक्ट में स्पष्ट उल्लेख न हो, किसी डिप्रिकेशन नोटिस से रिलीज़ की तारीख या हटाने की समयसीमा का अनुमान न लगाएं। प्रोजेक्ट्स में यह भिन्न होता है कि वे डिप्रिकेटेड इंटरफेस को कितने समय तक बनाए रखते हैं, और कुछ लंबे समय तक कम्पैटिबिलिटी बनाए रखते हैं। जब कोई रिलीज़ नोट कहता है कि कोई API हटा दिया गया है, तो सत्यापित करें कि क्या प्रविष्टि पूरे API पर लागू होती है या अपवादों का उल्लेख करती है। उदाहरण के लिए, Django 4.0 कहता है कि ऐतिहासिक माइग्रेशन में समर्थन को छोड़कर `NullBooleanField` को हटा दिया गया था। वह अपवाद पुरानी माइग्रेशन फ़ाइलों के साथ काम करने वाले मेंटेनर्स के लिए मायने रखता है।
कोड बदलने से पहले माइग्रेशन गाइडेंस की जांच करें
एक रिप्लेसमेंट अलग व्यवहार या आवश्यकताओं के बावजूद दिखने में समान हो सकता है। रिलीज़ नोट्स से लिंक किए गए माइग्रेशन पेज का अनुसरण करें, फिर रिप्लेसमेंट के वर्ज़न्ड संदर्भ का निरीक्षण करें। Django की [वर्ज़न अपग्रेड गाइड](https://docs.djangoproject.com/en/4.0/howto/upgrade-version/) अपग्रेड जारी रखने से पहले वर्तमान वर्ज़न पर डिप्रिकेशन चेतावनियों को हल करने की सलाह देती है। वह सलाह एक अस्पष्ट डॉक्यूमेंटेशन जांच को एक व्यावहारिक क्रम में बदल देती है: समर्थित चरणों के भीतर अपग्रेड करें, चेतावनियों को सामने लाएं, प्रोजेक्ट के अपने उपयोगों को ठीक करें, और उसके बाद ही उस वर्ज़न पर जाएं जहां निष्कासन लागू होता है।
Django URL उदाहरण के लिए, `re_path()` दस्तावेजीकृत रिप्लेसमेंट है। लक्षित वर्ज़न के डॉक्यूमेंटेशन के विरुद्ध इम्पोर्ट पाथ और व्यवहार को मान्य करें। ये ऐतिहासिक रिलीज़ इस बदलाव को दर्शाते हैं; यह आज उन्हें इंस्टॉल करने की अनुशंसा नहीं है।
डिप्रिकेटेड, हटाए गए और उपलब्ध में अंतर करें
सटीक स्टेटस भाषा का उपयोग करें:
सिर्फ इसलिए कि कोई उदाहरण एक वातावरण में चलता है, वर्तमान रखरखाव समर्थन का अनुमान न लगाएं। पुष्टि करें कि सटीक लक्षित वर्ज़न इसे उपलब्ध के रूप में दस्तावेजित करता है और बाद के वर्ज़न्स में डिप्रिकेशन नोटिस की जांच करें। किसी पुराने रिलीज़ में उपलब्धता यह स्थापित नहीं करती है कि वह रिलीज़ अभी भी मेंटेन किया जा रहा है।
Python की मानक लाइब्रेरी दर्शाती है कि वर्ज़न संख्याएँ क्यों मायने रखती हैं। [Python 3.9 "What's New" नोट्स](https://docs.python.org/3/whatsnew/3.9.html) बताते हैं कि `collections.Mapping` जैसे एलियास ने Python 3.3 से `DeprecationWarning` उत्सर्जित की थी और Python 3.9 उन बैकवर्ड-कम्पैटिबिलिटी एलियास को प्रदान करने वाला अंतिम वर्ज़न था। वही नोट्स डिप्रिकेशन को उजागर करने के लिए वार्निंग विकल्पों के साथ परीक्षण करने की सलाह देते हैं। एक लेख जो अपने Python वर्ज़न का नाम लिए बिना `collections.Mapping` को केवल "deprecated" लेबल करता है, पाठकों को यह बताने में असमर्थ छोड़ देता है कि उनके पास कोई चेतावनी है या कोई गायब एट्रिब्यूट। दस्तावेजीकृत `collections.abc` स्थान को प्राथमिकता दें, और इसकी स्थिति के लिए लक्षित Python रिलीज़ नोट्स की जांच करें।
ट्रेस को एक संपादकीय निर्णय में बदलें
पूरी श्रृंखला की जांच करने के बाद, लेख के लिए एक कार्रवाई चुनें। यदि उदाहरण बताए गए वातावरण में उपलब्ध के रूप में प्रलेखित है, तो वर्ज़न और स्टेटस को सटीक रूप से लेबल करें। यदि यह डिप्रिकेटेड है लेकिन उपलब्ध है, तो इसे स्पष्ट रूप से बताएं, रिप्लेसमेंट दिखाएं, और समझाएं कि पाठकों को किस वर्ज़न के लिए योजना बनाने की आवश्यकता है। यदि हटा दिया गया है, तो कोड को अपडेट करें और उस पहली रिलीज़ का नाम दें जहां यह अनुपलब्ध है; ऐतिहासिक नोट केवल तभी सुरक्षित रखें जब पाठकों को पुराने प्रोजेक्ट्स को समझने के लिए इसकी आवश्यकता हो।
एक संक्षिप्त साक्ष्य नोट भविष्य की अस्पष्टता को रोकने में मदद करता है: API का सटीक नाम, सबसे प्रारंभिक डिप्रिकेशन रिलीज़, यदि लागू हो तो रिमूवल रिलीज़, रिप्लेसमेंट, और आधिकारिक रिकॉर्ड के URL कैप्चर करें। यदि आधिकारिक स्रोत किसी रिमूवल वर्ज़न या रिप्लेसमेंट की पहचान नहीं करते हैं, तो किसी कॉपी किए गए स्निपेट या असत्यापित लेख से इस अंतर को भरने के बजाय कहें कि स्थिति अनसुलझी है। परिणाम एक वर्ज़न-विशिष्ट सुधार है जिस पर पाठक कार्रवाई कर सकते हैं, न कि यह कालातीत दावा कि कोई API "पुराना" है।
