
    Vh                        d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ d
Zd ZddZddZy)    )annotationsN)	YAMLError)AnsibleParserError)YAML_SYNTAX_ERROR)	to_native)AnsibleLoader)AnsibleBaseYAMLObject)AnsibleJSONDecoder)	from_yamlc                   d}t        |d      rBt               }||j                  j                  dz   |j                  j                  dz   f|_        t        t        t        |dd            z  }dt        |       d|}t        ||||      )	z
    Optionally constructs an object (AnsibleBaseYAMLObject) to encapsulate the
    file name/position where a YAML exception occurred, and raises an AnsibleParserError
    to display the syntax exception information.
    Nproblem_mark   problem z]We were unable to read either as JSON nor YAML, these are the errors we got from each:
JSON: z

)objshow_contentorig_exc)
hasattrr	   r   linecolumnansible_posr   r   getattrr   )json_excyaml_exc	file_namer   err_objn_yaml_syntax_error	n_err_msgs          J/home/dcms/DCMS/lib/python3.12/site-packages/ansible/parsing/utils/yaml.py_handle_errorr       s     Gx(')((*?*?*D*Dq*H(J_J_JfJfijJjk+i)UX8Y.ZZ$-h$79LNI YG,Ya
bb    c                    t        | ||      }	 |j                         	 |j                          S # t        $ r Y S w xY w# 	 |j                          w # t        $ r Y w w xY wxY w)zD Implements yaml.safe_load(), except using our custom loader class. )r   get_single_datadisposeAttributeError)streamr   vault_secretsloaders       r   
_safe_loadr)   ,   se     69m<F%%'	NN 			NN 		s9   ? 0	<<A!AA!	AA!AA!c                2   d}	 t        j                  |       t        j                  | t               }|S # t        $ rW}|rt        t        |      |      	 t        | ||      }n$# t        $ r}t        ||||       Y d}~nd}~ww xY wY d}~|S d}~ww xY w)zl
    Creates a python datastructure from the given data, which can be either
    a JSON or YAML string.
    N)cls)r   )r   r'   )
r
   set_secretsjsonloads	Exceptionr   r   r)   r   r    )datar   r   r'   	json_onlynew_datar   r   s           r   r   r   9   s    
 HG&&}5 ::d(:; O  	G$Yx%88LL	G!$)=YH 	G(HiFF	G O	Gs>   06 	BBA'&B'	B0B>BBBB)NN)z<string>TNF)
__future__r   r-   yamlr   ansible.errorsr   ansible.errors.yaml_stringsr   +ansible.module_utils.common.text.convertersr   ansible.parsing.yaml.loaderr   ansible.parsing.yaml.objectsr	   ansible.parsing.ajsonr
   __all__r    r)   r    r!   r   <module>r=      s9    #   - 9 A 5 > 4 c*
r!   