In un ambiente sensibile alle maiuscole, HTTP_PROXY e http_proxy possono essere nomi distinti. ConfigParser converte normalmente i nomi delle opzioni in minuscolo, quindi passarli entrambi nei valori predefiniti può ridurli a una sola opzione duplicata.

Un errore che nomina <dict> può quindi provenire da ConfigParser(defaults=os.environ) prima ancora che venga tentata qualsiasi connessione al proxy.

Se l'applicazione ha deliberatamente bisogno di nomi d'ambiente sensibili alle maiuscole in questo parser, impostare la politica di normalizzazione prima di caricarli:

import configparser
import os

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

Così le due grafie restano separate. Le ricerche e qualsiasi configurazione letta in seguito seguono ora anch'esse quella politica. Disattivare l'interpolazione impedisce inoltre che i segni di percentuale nei valori d'ambiente vengano trattati come sintassi di interpolazione.

Se l'applicazione richiede una configurazione insensibile alle maiuscole, selezionare esplicitamente gli input d'ambiente desiderati e risolvere le grafie in conflitto secondo le regole proxy di quel client prima di passarli al parser.

Modificare strict=False accetta i duplicati ma non stabilisce quale valore proxy in conflitto l'applicazione debba usare. Rimuovere una grafia d'ambiente accidentale può essere appropriato quando non si controlla il parser; individuare prima quale valore serve al client a valle.

Articoli correlati