YAMLファイルのバージョンが取得つかの間の値であり、ロード後にリセットしてください。それは、最新のドキュメントのバージョンを何らかの形で利用可能にするという私の計画でしたが、ストリーム内に複数のドキュメントがある場合、これはもっと考えが必要です。
単一のドキュメントストリームでは、以下を実行してディレクティブからバージョンを取得できます。これはすべて新しいAPIで行われます。属性を付けるために何YAML()
インスタンスが存在しないので、あなたが同じことが可能、より多くの困難な例で使用している古いAPIで:
import sys
from ruamel.yaml import YAML
from ruamel.yaml.parser import Parser
yaml_str = """\
%YAML 1.1
---
is_string: 'on'
is_boolean: on
"""
class MyParser(Parser):
def dispose(self):
self.loader.last_yaml_version = self.yaml_version
Parser.dispose(self)
yaml = YAML()
yaml.Parser = MyParser
data = yaml.load(yaml_str)
yaml2 = YAML()
yaml2.version = yaml.last_yaml_version
yaml2.dump(data, sys.stdout)
与える:
%YAML 1.1
---
is_string: 'on'
is_boolean: true
ことに注意してください%YAML 1.1
ディレクティブに遭遇したときに、 "バージョン管理されていない"読み取りがyaml
インスタンスを完全にリセットしないので、出力用にクリーンな新しいオブジェクトを作成する必要があります。
is_boolean
に関連付けられた値をon
としてダンプすることもできますが、それはストリーム内のすべてのブール値に影響します。