Skip to content

Commit

Permalink
Yaml: read and parse files thread-safe (#2188)
Browse files Browse the repository at this point in the history
  • Loading branch information
m1n0 authored Nov 28, 2024
1 parent d030911 commit 9d4b349
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions soda/core/soda/common/yaml_helper.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
from ruamel.yaml import YAML, StringIO


def create_yaml() -> YAML:
yaml = YAML()
yaml.preserve_quotes = True
yaml.indent(mapping=2, sequence=4, offset=2)
return yaml


# Deprecated. Replace all usages with YamlHelper.to_yaml below
def to_yaml_str(yaml_object) -> str:
return YamlHelper.to_yaml(yaml_object)


class YamlHelper:
__yaml = create_yaml()
@staticmethod
def create_yaml() -> YAML:
yaml = YAML()
yaml.preserve_quotes = True
yaml.indent(mapping=2, sequence=4, offset=2)
return yaml

@classmethod
def to_yaml(cls, yaml_object) -> str:
if yaml_object is None:
return ""
stream = StringIO()
cls.__yaml.dump(yaml_object, stream)
yaml = cls.create_yaml() # Create a new YAML instance for thread safety
yaml.dump(yaml_object, stream)
return stream.getvalue()

@classmethod
def from_yaml(cls, yaml_str) -> object:
return cls.__yaml.load(yaml_str)
yaml = cls.create_yaml() # Create a new YAML instance for thread safety
return yaml.load(yaml_str)

0 comments on commit 9d4b349

Please sign in to comment.