ruamel.yaml.cmd rt如果包含长字符串或散列,则会破坏列表



我刚刚注意到命令行工具,调用如下:"ruamel.yaml.cmd rt—保存$yaml_FILE";,将破坏包含长字符串或散列的列表:

包含哈希的示例列表:

来源:

telegraf::inputs:
cpu:
- percpu: true
totalcpu: true
report_active: true

输出:

telegraf::inputs:
cpu:
- percpu: true
totalcpu: true
report_active: true

包含长字符串的示例列表:

来源:

rsyslog::config::snippets:
00_forward:
ensure: 'present'
lines:
- 'if $syslogfacility != 1 then {'
- 'action(Name="collector-syslog" Type="omfwd" Target="%{hiera("rsyslog_server")}" Port="514" Action.ResumeInterval="5" Protocol="tcp")'
- '}'

输出:

rsyslog::config::snippets:
00_forward:
ensure: present
lines:
- if $syslogfacility != 1 then {
- action(Name="collector-syslog" Type="omfwd" Target="%{hiera("rsyslog_server")}"
Port="514" Action.ResumeInterval="5" Protocol="tcp")
- '}'

我已经为此创建了一个错误报告,但它被删除了,并有一条评论指向https://yaml.readthedocs.io/en/latest/example.html?highlight=indent#output-作为字符串的转储。

但我不确定这段代码应该如何帮助我使用命令行工具。

还是该工具已被弃用,而我不得不推出自己的?

由于输入不一致,自动检测缩进似乎不正确(映射缩进2个位置,序列缩进4个位置,块序列指示符的偏移量为2(。与PyPI一样,ruamel.yaml.cmd不支持序列和映射的不同缩进级别(ruamel.yaml在编写时没有,现在支持(。

除此之外,对于旧版本(2020-12-01之前(,您不能在ruamel.yaml.cmd中设置输出的线宽,并且这些版本使用默认的80个字符进行换行。

我建议您升级到0.5.6并使用命令行选项:

yaml rt  --indent 2 --width 1024 --save <yourfile>

ruamel.yaml.cmd的适当存储库为https://sourceforge.net/p/ruamel-yaml-cmd/code/ci/default/tree/。只能从Python程序中使用的ruamel.yaml的错误报告应包括再现错误的程序的最小源代码,如果不提供,问题将在其创建问题页面上删除

相关内容

最新更新