В среде, различающей регистр, HTTP_PROXY и http_proxy могут быть разными именами. ConfigParser обычно приводит имена параметров к нижнему регистру, поэтому передача обоих в значения по умолчанию может свести их в один дублирующийся параметр.

Поэтому ошибка с именем <dict> может возникать из ConfigParser(defaults=os.environ) ещё до попытки любого подключения через прокси.

Если приложению намеренно нужны регистрозависимые имена среды в этом парсере, задайте политику нормализации до их загрузки:

import configparser
import os

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

Так оба написания остаются раздельными. Поиск и любая конфигурация, прочитанная позже, теперь тоже следуют этой политике. Отключение интерполяции также не позволяет трактовать знаки процента в значениях среды как синтаксис интерполяции.

Если приложению нужна конфигурация без учёта регистра, явно выберите нужные переменные среды и разрешите конфликтующие написания по правилам прокси этого клиента, прежде чем передавать их парсеру.

Изменение strict=False допускает дубликаты, но не определяет, какое из конфликтующих значений прокси должно использовать приложение. Удаление одной случайной переменной среды может быть уместным, если вы не контролируете парсер; сначала выясните, какое значение нужно клиенту ниже по цепочке.

Похожие статьи