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/output/
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
Choose File :

Url:
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/output/dson.py

"""
Display return data in DSON format
==================================

This outputter is intended for demonstration purposes. Information on the DSON
spec can be found `here`__.

.. __: http://vpzomtrrfrt.github.io/DSON/

This outputter requires `Dogeon`__ (installable via pip)

.. __: https://github.com/soasme/dogeon
"""

import logging

try:
    import dson
except ImportError:
    dson = None


log = logging.getLogger(__name__)


def __virtual__():
    if dson is None:
        return (False, "The dogeon Python package is not installed")
    return True


def output(data, **kwargs):  # pylint: disable=unused-argument
    """
    Print the output data in JSON
    """
    try:
        dump_opts = {"indent": 4, "default": repr}

        if "output_indent" in __opts__:

            indent = __opts__.get("output_indent")
            sort_keys = False

            if indent == "pretty":
                indent = 4
                sort_keys = True

            elif isinstance(indent, int):
                if indent < 0:
                    indent = None

            dump_opts["indent"] = indent
            dump_opts["sort_keys"] = sort_keys

        return dson.dumps(data, **dump_opts)

    except UnicodeDecodeError as exc:
        log.error("Unable to serialize output to dson")
        return dson.dumps(
            {"error": "Unable to serialize output to DSON", "message": str(exc)}
        )

    except TypeError:
        log.debug("An error occurred while outputting DSON", exc_info=True)
    # Return valid JSON for unserializable objects
    return dson.dumps({})