DuplicateOptionError do ConfigParser com HTTP_PROXY e http_proxy
Entenda por que HTTP_PROXY e http_proxy podem coexistir num ambiente Linux e, ainda assim, gerar DuplicateOptionError quando usados como padrões do ConfigParser.
Num ambiente que diferencia maiúsculas de minúsculas, HTTP_PROXY e http_proxy podem ser nomes distintos. O ConfigParser normalmente converte os nomes das opções para minúsculas, portanto passar ambos para os padrões pode transformá-los numa única opção duplicada.
Um erro que mencione <dict> pode, então, ter origem em ConfigParser(defaults=os.environ) antes de qualquer tentativa de conexão com o proxy.
Se a aplicação precisa deliberadamente de nomes de ambiente sensíveis a maiúsculas neste analisador, defina a política de normalização antes de carregá-los:
import configparser
import os
settings = configparser.ConfigParser(interpolation=None)
settings.optionxform = str
settings.read_dict({'DEFAULT': dict(os.environ)})Assim as duas grafias permanecem separadas. As consultas e qualquer configuração lida depois passam também a seguir essa política. Desativar a interpolação também impede que sinais de percentagem nos valores de ambiente sejam tratados como sintaxe de interpolação.
Se a aplicação exige uma configuração insensível a maiúsculas, selecione explicitamente as entradas de ambiente pretendidas e resolva as grafias em conflito segundo as regras de proxy desse cliente antes de as entregar ao analisador.
Alterar strict=False aceita duplicados, mas não define qual valor de proxy em conflito a aplicação deve usar. Remover uma grafia de ambiente acidental pode ser adequado quando não controla o analisador; primeiro determine qual valor o cliente a jusante precisa.