DuplicateOptionError ConfigParser dengan HTTP_PROXY dan http_proxy
Pahami mengapa HTTP_PROXY dan http_proxy dapat hidup berdampingan di lingkungan Linux, tetapi tetap memicu DuplicateOptionError saat dipakai sebagai nilai default ConfigParser.
Di lingkungan yang membedakan huruf besar dan kecil, HTTP_PROXY dan http_proxy dapat menjadi dua nama yang berbeda. ConfigParser biasanya mengubah nama opsi menjadi huruf kecil, sehingga memasukkan keduanya ke nilai default dapat menyatukannya menjadi satu opsi duplikat.
Karena itu, galat yang menyebut <dict> dapat berasal dari ConfigParser(defaults=os.environ) bahkan sebelum ada upaya koneksi proxy.
Jika aplikasi memang membutuhkan nama lingkungan peka huruf besar-kecil di parser ini, tetapkan kebijakan normalisasi sebelum memuatnya:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Dengan begitu kedua ejaan tetap terpisah. Pencarian dan konfigurasi apa pun yang dibaca setelahnya kini juga mengikuti kebijakan itu. Menonaktifkan interpolasi juga mencegah tanda persen dalam nilai lingkungan diperlakukan sebagai sintaks interpolasi.
Jika aplikasi memerlukan konfigurasi yang tidak peka huruf besar-kecil, pilih input lingkungan yang dimaksud secara eksplisit dan selesaikan ejaan yang bertentangan menurut aturan proxy klien tersebut sebelum meneruskannya ke parser.
Mengubah strict=False menerima duplikat tetapi tidak menentukan nilai proxy mana yang bertentangan harus dipakai aplikasi. Menghapus satu ejaan lingkungan yang tidak disengaja bisa tepat bila Anda tidak mengendalikan parser; tentukan dahulu nilai mana yang dibutuhkan klien hilir.