safe_load
ограничивает загрузчик загрузкой только известных ему типов. Это связано с тем, что загрузка произвольных типов может привести к выполнению произвольного кода, что представляет собой угрозу безопасности.
Чтобы правильно загрузить файл, у вас есть следующие параметры:
- Использовать
load
вместо safe_load
и импортируйте библиотеку, содержащую materialx.emoji.twemoji
(я не уверен, где это определено, я не нашел однозначного ответа в Интернете) - Вместо загрузки файла YAML в собственные типы загрузите его в граф узлов, используя
yaml.compose
. Это вернет узел root документа YAML. Это не поместит узлы непосредственно в dict
s, list
s et c. - Зарегистрируйте собственный конструктор:
def my_constructor(loader, node):
# since the content of the node is empty, you should return a value that
# can be used to identify the node, e.g.
return "materialx.emoji.twemoji"
yaml.add_constructor('tag:yaml.org,2002:python/name:materialx.emoji.twemoji',
my_constructor, yaml.SafeLoader)
Какой подход лучше зависит от того, что вы хотите делать с данными.