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 বদলালে অনুলিপি গ্রহণ করা হয়, কিন্তু অ্যাপ্লিকেশন কোন বিরোধী প্রক্সি মান ব্যবহার করবে তা নির্ধারিত হয় না। পার্সার আপনার নিয়ন্ত্রণে না থাকলে একটি আকস্মিক পরিবেশ বানান সরানো যুক্তিসঙ্গত হতে পারে; আগে নির্ধারণ করুন ডাউনস্ট্রিম ক্লায়েন্টের কোন মান দরকার।