Используя PyYAML 3.11 с Python 2.7.6, давайте создадим дамп простого словаря, который имеет только один строковый ключ (длиной 122 символа), сопоставленный со значением '1':
>>> print yaml.dump({'12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012': 1})
{'12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012': 1}
Это работает так, как и ожидалось - простой, понятный человеку YAML. Но теперь давайте увеличим длину этого строкового ключа до 123 символов. Теперь PyYAML создает менее удобочитаемый сложный ключ, начинающийся с «?», И перенаправляет значение «1» на новую строку:
>>> print yaml.dump({'123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123': 1})
{? '123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123'
: 1}
Почему PyYAML это делает? Есть ли способ отключить поведение? Это приводит к нежелательному отсутствию визуальной согласованности в моем выгруженном коде YAML, в зависимости от длины строкового ключа.