Знакомая поломка: конфиг сложили в словарь, сделали
copy.copy, поправили вложенный список в клоне и увидели правку в оригинале. Новый контейнер получает те же ссылки на вложенные объекты.copy.deepcopy идёт по графу рекурсивно и ведёт словарь memo: каждый скопированный объект запоминается по id. Циклическая ссылка поэтому не уводит копирование в бесконечность, а два поля, смотревшие на один список, в копии тоже смотрят на один. Плата — обход всего графа: объект, который держит открытый сокет или пул соединений, deepcopy либо уронит, либо утащит за собой пол-приложения.Поведение настраивается методами
__copy__ и __deepcopy__: класс сам решает, что воспроизвести заново, а что отдать по ссылке.Разбор поверхностной и глубокой копии — в статье на dev.to.
#python
