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 تبدیل کرنے سے تکرار قبول ہوتی ہے مگر یہ متعین نہیں ہوتا کہ ایپلیکیشن کون سی متضاد پراکسی قدر استعمال کرے۔ جب پارسر آپ کے کنٹرول میں نہ ہو تو کوئی حادثاتی ماحولیاتی ہجہ ہٹانا مناسب ہو سکتا ہے؛ پہلے طے کریں کہ نیچے والے کلائنٹ کو کون سی قدر درکار ہے۔