DuplicateOptionError de ConfigParser con HTTP_PROXY e http_proxy
Entenda por que HTTP_PROXY e http_proxy poden convivir nun contorno Linux e, aínda así, provocar DuplicateOptionError cando se usan como valores predeterminados de ConfigParser.
Nun contorno sensible a maiúsculas e minúsculas, HTTP_PROXY e http_proxy poden ser nomes distintos. ConfigParser adoita converter os nomes de opción a minúsculas, así que pasar ambos aos valores predeterminados pode convertelos nunha única opción duplicada.
Por iso, un erro que mencione <dict> pode orixinarse en ConfigParser(defaults=os.environ) antes de que se intente calquera conexión co proxy.
Se a aplicación necesita deliberadamente nomes de contorno sensibles a maiúsculas neste analizador, fixe a política de normalización antes de cargalos:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Así as dúas grafías permanecen separadas. As buscas e calquera configuración lida despois seguen tamén esa política. Desactivar a interpolación evita ademais que os signos de porcentaxe dos valores de contorno se traten como sintaxe de interpolación.
Se a aplicación require unha configuración insensible a maiúsculas, seleccione explicitamente as entradas de contorno desexadas e resolva as grafías en conflito segundo as regras de proxy dese cliente antes de pasalas ao analizador.
Cambiar strict=False acepta duplicados, pero non define que valor de proxy en conflito debe usar a aplicación. Eliminar unha grafía de contorno accidental pode ser axeitado cando non controla o analizador; primeiro determine que valor necesita o cliente posterior.