o nnh @sddlmZddlZddlmZddlmZddlmZddl m Z ddl m Z ddl mZdd lmZd Zd d Zdd dZdddZdS)) annotationsN) YAMLError)AnsibleParserError)YAML_SYNTAX_ERROR) to_native) AnsibleLoader)AnsibleBaseYAMLObject)AnsibleJSONDecoder) from_yamlcCsdd}t|drt}||jjd|jjdf|_ttt|dd}dt||f}t ||||d)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_markproblemzcWe were unable to read either as JSON nor YAML, these are the errors we got from each: JSON: %s %s)obj show_contentorig_exc) hasattrrr linecolumn ansible_posrrgetattrr)json_excyaml_exc file_namererr_objn_yaml_syntax_error n_err_msgrE/usr/local/lib/python3.10/dist-packages/ansible/parsing/utils/yaml.py _handle_errors  rcCsVt|||}z|Wz|WStyYSwz|Wwty*Yww)zD Implements yaml.safe_load(), except using our custom loader class. )rget_single_datadisposeAttributeError)streamr vault_secretsloaderrrr _safe_load,s     r&TFc Csd}zt|tj|td}W|StyX}z;|r#tt||dz t|||d}WntyE}z t ||||WYd}~n d}~wwWYd}~|SWYd}~|Sd}~ww)zl Creates a python datastructure from the given data, which can be either a JSON or YAML string. N)cls)r)rr$) r set_secretsjsonloads Exceptionrrr&rr)datarrr$ json_onlynew_datarrrrrr 9s(    r )NN)r'TNF) __future__rr*yamlransible.errorsransible.errors.yaml_stringsr+ansible.module_utils.common.text.convertersransible.parsing.yaml.loaderransible.parsing.yaml.objectsransible.parsing.ajsonr __all__rr&r rrrrs