HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/__pycache__/yamlloader.cpython-310.pyc
o

�N�g�@srdZddlZddlmZddlmZmZddlZe	edej
�Zgd�ZGdd�de�Z
e
fd	d
�Ze
fdd�ZdS)
z
Custom YAML loading in Salt
�N)�ConstructorError)�MappingNode�SequenceNodeZCSafeLoader)�SaltYamlSafeLoader�load�	safe_loadcsZeZdZdZef�fdd�	Zdd�Zdd�Zdd	d
�Z�fdd�Z	d
d�Z
dd�Z�ZS)rz�
    Create a custom YAML loader that uses the custom constructor. This allows
    for the YAML loading defaults to be manipulated based on needs within salt
    to make things like sls file more intuitive.
    csxt��|�|tur|�dt|�j�|�dt|�j�|�dt|�j�|�dt|�j�|�dt|�j�||_	dS)Nztag:yaml.org,2002:mapztag:yaml.org,2002:omap�tag:yaml.org,2002:strz tag:yaml.org,2002:python/unicodeztag:yaml.org,2002:timestamp)
�super�__init__�dictZadd_constructor�type�construct_yaml_map�construct_yaml_str�construct_unicode�construct_scalar�	dictclass)�self�streamr��	__class__��I/opt/saltstack/salt/lib/python3.10/site-packages/salt/utils/yamlloader.pyr
s
�
�
zSaltYamlSafeLoader.__init__ccs(�|��}|V|�|�}|�|�dS�N)r�construct_mapping�update)r�node�data�valuerrrr
)s
�
z%SaltYamlSafeLoader.construct_yaml_mapcCs|jSr�r�rrrrrr/sz$SaltYamlSafeLoader.construct_unicodeFc		Cs�t|t�stddd|j��|j��|�|�d}|��}|jD]B\}}|j||d�}zt	|�Wnt
yDt||jd|j��|j��w|j||d�}||vr]t||jd|�d�|j��|||<q|S)z,
        Build the mapping for YAML
        Nz#expected a mapping node, but found �while constructing a mapping)�deepzfound unacceptable key zfound conflicting ID '�')�
isinstancerr�id�
start_mark�flatten_mappingrrZconstruct_object�hash�	TypeError)	rrr!�context�mapping�key_node�
value_node�keyrrrrr2s@

�

��
�
z$SaltYamlSafeLoader.construct_mappingcsX|jdkr&|jdkrn|j�d�r&|j�d�s&|j�d�|_|jdkr&d|_t��|�S)zb
        Verify integers and pass them in correctly is they are declared
        as octal
        ztag:yaml.org,2002:int�0)Z0b�0x�)�tagr�
startswith�lstripr	rrrrrrXs


z#SaltYamlSafeLoader.construct_scalarcCs|�|�}tjj�|�Sr)r�salt�utilsZstringutilsZ
to_unicode)rrrrrrrhs
z%SaltYamlSafeLoader.construct_yaml_strc
sNg}d}|t|j�kr�|j|\}}|jdkrr|j|=t|t�r,|�|�|�|j�nWt|t�reg}|jD]}t|t�sJtd|j	d�
|j�|j	��|�|�|�|j�q6|�
�|D]}|�|�q\ntd|j	d�
|j�|j	��|jdkrd|_|d7}n|d7}|t|j�ks|r�d	d
�|jD���fdd
�|D�}	|	|j|_dSdS)Nrztag:yaml.org,2002:merger z,expected a mapping for merging, but found {}z@expected a mapping or list of mappings for merging, but found {}ztag:yaml.org,2002:valuer�cSsg|]\}}|j�qSrr)�.0Z	name_noder,rrr�
<listcomp>�sz6SaltYamlSafeLoader.flatten_mapping.<locals>.<listcomp>csg|]}|dj�vr|�qS)rr)r7�x�Zexisting_nodesrrr8�s)�lenrr1r#rr&�extendrrr%�formatr$�append�reverse)
rr�merge�indexr+r,ZsubmergeZsubnoderZmergeable_itemsrr:rr&lsX





��
��

�&�z"SaltYamlSafeLoader.flatten_mapping)F)
�__name__�
__module__�__qualname__�__doc__rr
r
rrrrr&�
__classcell__rrrrrs
&rcC�tj||d�S)N��Loader��yamlr�rrIrrrr�srcCrG)ze
    .. versionadded:: 2018.3.0

    Helper function which automagically uses our custom loader.
    rHrJrLrrrr�sr)rErKZyaml.constructorrZ
yaml.nodesrrZsalt.utils.stringutilsr4�getattrZ
SafeLoaderZ
BaseLoader�__all__rrrrrrr�<module>s