V prostredí, ktoré rozlišuje veľkosť písmen, môžu byť HTTP_PROXY a http_proxy odlišné názvy. ConfigParser zvyčajne prevádza názvy volieb na malé písmená, takže ich spoločné zadanie do predvolených hodnôt z nich môže urobiť jednu duplicitnú voľbu.

Chyba spomínajúca <dict> teda môže vzniknúť z ConfigParser(defaults=os.environ) ešte predtým, než sa aplikácia pokúsi o akékoľvek pripojenie cez proxy.

Ak aplikácia v tomto parseri zámerne potrebuje názvy prostredia citlivé na veľkosť písmen, nastavte zásadu normalizácie ešte pred ich načítaním:

import configparser
import os

settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})

Tým zostanú oba prepisy oddelené. Vyhľadávania aj akákoľvek neskôr načítaná konfigurácia teraz tiež dodržiavajú túto zásadu. Vypnutie interpolácie tiež zabráni tomu, aby sa znaky percent v hodnotách prostredia považovali za syntax interpolácie.

Ak aplikácia vyžaduje konfiguráciu nerozlišujúcu veľkosť písmen, vyberte zamýšľané vstupy prostredia výslovne a rozporuplné prepisy vyriešte podľa pravidiel proxy daného klienta, než ich odovzdáte parseru.

Zmena strict=False duplikáty prijíma, ale neurčuje, ktorú z rozporuplných hodnôt proxy má aplikácia použiť. Odstránenie jedného náhodného prepisu môže byť vhodné, keď parser neovládate; najprv zistite, ktorú hodnotu potrebuje klientska časť.

Súvisiace články