DuplicateOptionError de ConfigParser amb HTTP_PROXY i http_proxy
Enteneu per què HTTP_PROXY i http_proxy poden conviure en un entorn Linux i, tot i així, provoquen DuplicateOptionError quan s'usen com a valors per defecte de ConfigParser.
En un entorn sensible a majúscules i minúscules, HTTP_PROXY i http_proxy poden ser noms diferents. ConfigParser normalment converteix els noms d'opció a minúscules, així que passar-los tots dos als valors per defecte pot convertir-los en una sola opció duplicada.
Per tant, un error que esmenti <dict> pot provenir de ConfigParser(defaults=os.environ) abans que es faci cap intent de connexió amb el proxy.
Si l'aplicació necessita deliberadament noms d'entorn sensibles a majúscules en aquest analitzador, definiu la política de normalització abans de carregar-los:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Així les dues grafies es mantenen separades. Les cerques i qualsevol configuració llegida després també segueixen aquesta política. Desactivar la interpolació també evita que els signes de percentatge dels valors d'entorn es tractin com a sintaxi d'interpolació.
Si l'aplicació requereix una configuració insensible a majúscules, trieu explícitament les entrades d'entorn volgudes i resoleu les grafies en conflicte segons les regles de proxy d'aquell client abans de passar-les a l'analitzador.
Canviar strict=False accepta duplicats, però no defineix quin valor de proxy en conflicte ha d'usar l'aplicació. Eliminar una grafia d'entorn accidental pot ser adequat quan no controleu l'analitzador; primer determineu quin valor necessita el client posterior.