HEX
Server: Apache
System: Linux server.enlacediseno.com 4.18.0-553.62.1.el8_10.x86_64 #1 SMP Wed Jul 16 04:08:25 EDT 2025 x86_64
User: maor (1069)
PHP: 7.3.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/renderers/json5.py
"""
JSON5 Renderer for Salt

.. versionadded:: 2016.3.0

JSON5 is an unofficial extension to JSON. See http://json5.org/ for more
information.

This renderer requires the `json5 python bindings`__, installable via pip.

.. __: https://pypi.python.org/pypi/json5
"""

import logging

try:
    import json5 as json

    HAS_JSON5 = True
except ImportError:
    HAS_JSON5 = False


log = logging.getLogger(__name__)

# Define the module's virtual name
__virtualname__ = "json5"


def __virtual__():
    if not HAS_JSON5:
        return (False, "json5 module not installed")
    return __virtualname__


def render(json_data, saltenv="base", sls="", **kws):
    """
    Accepts JSON as a string or as a file object and runs it through the JSON
    parser.

    :rtype: A Python data structure
    """
    if not isinstance(json_data, str):
        json_data = json_data.read()

    if json_data.startswith("#!"):
        json_data = json_data[(json_data.find("\n") + 1) :]
    if not json_data.strip():
        return {}
    return json.loads(json_data)