In een omgeving die hoofdletters en kleine letters onderscheidt, kunnen HTTP_PROXY en http_proxy verschillende namen zijn. ConfigParser zet optienamen normaal gesproken om naar kleine letters, dus als beide in de standaardwaarden terechtkomen, kunnen ze één dubbele optie worden.

Een fout die <dict> noemt, kan daarom afkomstig zijn van ConfigParser(defaults=os.environ) nog voordat er een proxyverbinding wordt geprobeerd.

Als de toepassing in deze parser bewust hoofdlettergevoelige omgevingsnamen nodig heeft, stel dan het normalisatiebeleid in voordat ze worden geladen:

import configparser
import os

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

Zo blijven de twee spellingen gescheiden. Opzoekingen en elke configuratie die daarna wordt gelezen, volgen nu ook dat beleid. Het uitschakelen van interpolatie voorkomt bovendien dat procenttekens in omgevingswaarden als interpolatiesyntaxis worden behandeld.

Als de toepassing configuratie zonder onderscheid tussen hoofd- en kleine letters vereist, kies dan de bedoelde omgevingsinvoer expliciet en los conflicterende spellingen op volgens de proxyregels van die client voordat je ze aan de parser geeft.

Het wijzigen van strict=False accepteert duplicaten, maar bepaalt niet welke conflicterende proxywaarde de toepassing moet gebruiken. Het verwijderen van één toevallige omgevingsspelling kan passend zijn wanneer je de parser niet beheert; bepaal eerst welke waarde de client verderop nodig heeft.

Gerelateerde artikelen