केस-संवेदनशील वातावरणात 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 बदलल्यास डुप्लिकेट स्वीकारले जातात, पण अनुप्रयोगाने कोणते विरोधाभासी प्रॉक्सी मूल्य वापरावे हे ठरत नाही. पार्सर तुमच्या नियंत्रणात नसल्यास एक अपघाती वातावरण शब्दलेखन काढून टाकणे योग्य ठरू शकते; आधी ठरवा की खालच्या क्लायंटला कोणते मूल्य हवे आहे.

संबंधित लेख