PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/yamldumper.py |
""" salt.utils.yamldumper ~~~~~~~~~~~~~~~~~~~~~ """ # pylint: disable=W0232 # class has no __init__ method import collections import yaml # pylint: disable=blacklisted-import import salt.utils.context from salt.utils.odict import OrderedDict try: from yaml import CDumper as Dumper from yaml import CSafeDumper as SafeDumper except ImportError: from yaml import Dumper, SafeDumper __all__ = [ "OrderedDumper", "SafeOrderedDumper", "IndentedSafeOrderedDumper", "get_dumper", "dump", "safe_dump", ] class IndentMixin(Dumper): """ Mixin that improves YAML dumped list readability by indenting them by two spaces, instead of being flush with the key they are under. """ def increase_indent(self, flow=False, indentless=False): return super().increase_indent(flow, False) class OrderedDumper(Dumper): """ A YAML dumper that represents python OrderedDict as simple YAML map. """ class SafeOrderedDumper(SafeDumper): """ A YAML safe dumper that represents python OrderedDict as simple YAML map. """ class IndentedSafeOrderedDumper(IndentMixin, SafeOrderedDumper): """ A YAML safe dumper that represents python OrderedDict as simple YAML map, and also indents lists by two spaces. """ def represent_ordereddict(dumper, data): return dumper.represent_dict(list(data.items())) def represent_undefined(dumper, data): return dumper.represent_scalar("tag:yaml.org,2002:null", "NULL") OrderedDumper.add_representer(OrderedDict, represent_ordereddict) SafeOrderedDumper.add_representer(OrderedDict, represent_ordereddict) SafeOrderedDumper.add_representer(None, represent_undefined) OrderedDumper.add_representer( collections.defaultdict, yaml.representer.SafeRepresenter.represent_dict ) SafeOrderedDumper.add_representer( collections.defaultdict, yaml.representer.SafeRepresenter.represent_dict ) OrderedDumper.add_representer( salt.utils.context.NamespacedDictWrapper, yaml.representer.SafeRepresenter.represent_dict, ) SafeOrderedDumper.add_representer( salt.utils.context.NamespacedDictWrapper, yaml.representer.SafeRepresenter.represent_dict, ) OrderedDumper.add_representer( "tag:yaml.org,2002:timestamp", OrderedDumper.represent_scalar ) SafeOrderedDumper.add_representer( "tag:yaml.org,2002:timestamp", SafeOrderedDumper.represent_scalar ) def get_dumper(dumper_name): return { "OrderedDumper": OrderedDumper, "SafeOrderedDumper": SafeOrderedDumper, "IndentedSafeOrderedDumper": IndentedSafeOrderedDumper, }.get(dumper_name) def dump(data, stream=None, **kwargs): """ .. versionadded:: 2018.3.0 Helper that wraps yaml.dump and ensures that we encode unicode strings unless explicitly told not to. """ if "allow_unicode" not in kwargs: kwargs["allow_unicode"] = True kwargs.setdefault("default_flow_style", None) return yaml.dump(data, stream, **kwargs) def safe_dump(data, stream=None, **kwargs): """ Use a custom dumper to ensure that defaultdict and OrderedDict are represented properly. Ensure that unicode strings are encoded unless explicitly told not to. """ if "allow_unicode" not in kwargs: kwargs["allow_unicode"] = True kwargs.setdefault("default_flow_style", None) return yaml.dump(data, stream, Dumper=SafeOrderedDumper, **kwargs)