HTTP_PROXY और http_proxy के साथ ConfigParser DuplicateOptionError
समझें कि Linux वातावरण में HTTP_PROXY और http_proxy साथ क्यों रह सकते हैं, फिर भी ConfigParser डिफ़ॉल्ट के रूप में उपयोग करने पर DuplicateOptionError क्यों आता है।
केस-संवेदनशील वातावरण में HTTP_PROXY और http_proxy अलग-अलग नाम हो सकते हैं। ConfigParser सामान्यतः विकल्पों के नाम छोटे अक्षरों में बदल देता है, इसलिए दोनों को डिफ़ॉल्ट में देने से वे एक ही डुप्लिकेट विकल्प बन सकते हैं।
इसलिए <dict> का नाम लेने वाली त्रुटि ConfigParser(defaults=os.environ) से आ सकती है, किसी भी प्रॉक्सी कनेक्शन के प्रयास से पहले।
यदि ऐप्लिकेशन को इस पार्सर में जानबूझकर केस-संवेदनशील वातावरण नाम चाहिए, तो उन्हें लोड करने से पहले सामान्यीकरण नीति तय करें:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})इससे दोनों वर्तनी अलग रहती हैं। लुकअप और बाद में पढ़ा गया कोई भी कॉन्फ़िगरेशन अब उसी केस-संवेदनशील नीति का पालन करता है। इंटरपोलेशन बंद करने से वातावरण मानों में प्रतिशत चिह्नों को इंटरपोलेशन सिंटैक्स मानने से भी रोकता है।
यदि ऐप्लिकेशन को केस-असंवेदनशील कॉन्फ़िगरेशन चाहिए, तो इच्छित वातावरण इनपुट स्पष्ट रूप से चुनें और पार्सर को देने से पहले उस क्लाइंट के प्रॉक्सी नियमों के अनुसार परस्पर विरोधी वर्तनियाँ सुलझाएँ।
strict=False बदलने से डुप्लिकेट स्वीकार होते हैं, लेकिन यह तय नहीं होता कि ऐप्लिकेशन कौन-सा परस्पर विरोधी प्रॉक्सी मान उपयोग करे। जब पार्सर आपके नियंत्रण में न हो तो एक आकस्मिक वातावरण वर्तनी हटाना उपयुक्त हो सकता है; पहले तय करें कि डाउनस्ट्रीम क्लाइंट को कौन-सा मान चाहिए।