Общая идея заключается в том, что ваш код импортирует PyYAML, используя:
import yaml
и после этого вы вызываете фрагмент , который изменяет загрузчик по умолчанию .Поскольку загрузчик по умолчанию, который использует PyYAML, изменился с момента закрытия этой проблемы, лучше указать, например, SafeLoader
явно:
yaml.add_multi_constructor('', generic_constructor, Loader=SafeLoader)
, а затем использовать data = yaml.safe_load(open_file_or_string)
для загрузки данных.
Вероятно, проще использовать ruamel.yaml (заявление об отказе: я являюсь автором этого пакета), который по умолчанию может обрабатывать специальные теги (включая теги AWS), хотя вы должны указать устаревшую версию YAML 1.1 на десять лет (это то, что ожидает AWS, и единственное, что поддерживает PyYAML).
from ruamel.yaml import YAML
yaml = YAML()
yaml.version = (1, 1)
data = yaml.load(x)
, где x
может быть экземпляром pathlib.Path()
, открытым файлом или строкой.