Объединение якоря и псевдонима в одну строку в триггерах parserError: 'Ожидается <конец блока>, но найдено' <alias>' - PullRequest
1 голос
/ 12 июня 2019

Я пытаюсь объединить якоря и псевдонимы, чтобы повторно использовать значения в нескольких контейнерах под разными именами.

Я попробовал следующий код:

FWL_GV_NANSEN: &fwl_gv_nansen
  dtype: float
  value: 2715.0

FWL_GV_E3_2: &fwl_gv_e32 *fwl_gv_nansen

цель состоит в том, чтобы просто иметь другую переменную FWL_GV_E3_2, содержащую ту же информацию, что и FWL_GV_NANSEN, к которой я мог бы обратиться позже.

Точно так же, как определение в Python (или другом):

a = 5.0
b = a
c = b

Но это вызывает следующее сообщение об ошибке:

yaml.parser.ParserError: при разборе сопоставления блоков в "fwl_2.yml", строка 7, столбец 3 ожидается <конец блока>, но найден '<псевдоним>'

Нет ли способа присвоить содержимое псевдонимов переменной, используемой для определения нового якоря (распространения начальных значений через разные переменные?

PS: возможно, YAML - не лучший язык для этого, поскольку, например, было бы тривиально использовать переменные python, но я должен использовать YAML

1 Ответ

0 голосов
/ 12 июня 2019

Свойства узла YAML (т. Е. Теги и якоря) могут появляться только на «реальных» узлах: коллекциях (блок или поток) или скалярах.

Из правил производства видно, что c-ns-properties может использоваться только там, но в разделе для псевдонимов также явно указывает :

Обратите внимание, что узел псевдонима не должен указывать какие-либо свойства [...]


Что возможно возможно, если ваш синтаксический анализатор YAML предоставляет вам доступ к исходным якорям / псевдонимам или некоторому отображению привязки к узлу / объекту (например, мой пакет ruamel.yaml для Python при использовании для round -tripping), использовать тег с скаляром:

FWL_GV_NANSEN: &fwl_gv_nansen
  dtype: float
  value: 2715.0

FWL_GV_E3_2: &fwl_gv_e32 !ref fwl_gv_nansen

с конструктором !ref объекта, разрешающего скаляр fwl_gv_nansen, с некоторым приложением специфическим кодом. Обычно события привязки и псевдонима разрешаются загрузчиком композитора с шага до компоновки (и если это так, информация больше не доступна).

...