From 2a5905c33d27a20b82e91dd932162be5477d4988 Mon Sep 17 00:00:00 2001 From: Alexander van der Grinten Date: Mon, 4 Nov 2024 18:06:34 +0100 Subject: [PATCH] util: Use libyaml if possible --- y4/__main__.py | 9 ++++++++- y4/util.py | 10 +++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/y4/__main__.py b/y4/__main__.py index b4126d2..f7e3453 100644 --- a/y4/__main__.py +++ b/y4/__main__.py @@ -55,7 +55,14 @@ def main(): ctx.bind(tag, binding) else: out = ctx.evaluate(root) - sys.stdout.write(yaml.dump(out, sort_keys=False, explicit_start=True)) + sys.stdout.write( + yaml.dump( + out, + sort_keys=False, + explicit_start=True, + Dumper=util.YamlDumper, + ) + ) if __name__ == "__main__": diff --git a/y4/util.py b/y4/util.py index c7004ad..af09f89 100644 --- a/y4/util.py +++ b/y4/util.py @@ -4,7 +4,15 @@ YAML_MAP_TAG = "tag:yaml.org,2002:map" YAML_STR_TAG = "tag:yaml.org,2002:str" -YamlLoader = yaml.SafeLoader +try: + YamlLoader = yaml.CSafeLoader +except AttributeError: + YamlLoader = yaml.SafeLoader + +try: + YamlDumper = yaml.CSafeDumper +except AttributeError: + YamlDumper = yaml.SafeDumper class InternalNode(yaml.Node):