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 మార్చడం నకిలీలను అంగీకరిస్తుంది, కానీ అప్లికేషన్ ఏ విరుద్ధ ప్రాక్సీ విలువను ఉపయోగించాలో నిర్ణయించదు. పార్సర్ మీ నియంత్రణలో లేనప్పుడు ప్రమాదవశాత్తు ఏర్పడిన వాతావరణ స్పెల్లింగ్ను తీసివేయడం సముచితం కావచ్చు; మొదట డౌన్స్ట్రీమ్ క్లయింట్కు ఏ విలువ కావాలో నిర్ణయించండి.