DuplicateOptionError i ConfigParser med HTTP_PROXY og http_proxy
Forstå kvifor HTTP_PROXY og http_proxy kan finnast samtidig i eit Linux-miljø, men likevel utløyse DuplicateOptionError når dei vert brukte som ConfigParser-standardverdiar.
I eit miljø som skil mellom store og små bokstavar, kan HTTP_PROXY og http_proxy vere ulike namn. ConfigParser gjer vanlegvis valnamn om til små bokstavar, så om begge vert sende inn i standardverdiane, kan dei bli eitt duplisert val.
Ein feil som nemner <dict>, kan difor kome frå ConfigParser(defaults=os.environ) før det i det heile vert forsøkt ei proxyforbinding.
Viss programmet med vilje treng miljønamn som skil mellom store og små bokstavar i denne parsaren, set normaliseringspolicyen før dei vert lasta inn:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Då held dei to skrivemåtane seg åtskilde. Oppslag og kvar konfigurasjon som vert lesen seinare, følgjer no òg denne policyen. Å slå av interpolering hindrar òg at prosentteikn i miljøverdiar vert handsama som interpoleringssyntaks.
Viss programmet krev konfigurasjon utan skilnad mellom store og små bokstavar, vel dei tiltenkte miljøinndataa eksplisitt og løys motstridande skrivemåtar etter proxyreglane til den klienten før dei vert sende til parsaren.
Endring av strict=False godtek duplikat, men fastset ikkje kva motstridande proxyverdi programmet skal bruke. Det kan vere høveleg å fjerne éin utilsikta miljøskrivemåte når du ikkje kontrollerer parsaren; finn først ut kva verdi klienten lenger nede treng.