a )gQ@sddlmZmZmZeZddlmZmZddl m Z ddl m Z ddlmZmZddlmZmZmZmZddlmZddlmZdd lmZeZGd d d eZed ejed ejedej edej edej!edej"edej#edej#dS))absolute_importdivisionprint_function)SafeConstructorConstructorError) MappingNode) constants)to_bytes to_native)AnsibleMappingAnsibleSequenceAnsibleUnicodeAnsibleVaultEncryptedUnicode)VaultLib)Display)wrap_varcsXeZdZdfdd ZddZdddZd d Zd d Zd dZddZ ddZ Z S)AnsibleConstructorNcs:||_tt|i|_|p g|_t|jd|jd<dS)N)secretsdefault)_ansible_file_namesuperr__init___vaults vault_secretsr)self file_namer __class__D/usr/lib/python3.9/site-packages/ansible/parsing/yaml/constructor.pyr$s  zAnsibleConstructor.__init__ccs0t}|V||}|||||_dSN)r construct_mappingupdate_node_position_info ansible_pos)rnodedatavaluerrrconstruct_yaml_map+s   z%AnsibleConstructor.construct_yaml_mapFc Cst|ts tddd|j|j||t}|||_|j D]\}}|j ||d}z t |Wn:t y}z"td|jd||jWYd}~n d}~00||vrdj |g|jR}tjdkrt|n.tjdkrtddt||jddn t||j ||d} | ||<qB|S) Nz%expected a mapping node, but found %s)deepzwhile constructing a mappingzfound unacceptable key (%s)z}While constructing a mapping from {1}, line {2}, column {3}, found a duplicate dict key ({0}). Using last defined value only.warnerrorcontextZ context_markZproblemZ problem_markZnote) isinstancerrid start_markZflatten_mappingr r#r$r'construct_objecthash TypeErrorformatCZDUPLICATE_YAML_DICT_KEYdisplayZwarningr debug) rr%r)mappingZkey_nodeZ value_nodekeyexcmsgr'rrrr!2sD           z$AnsibleConstructor.construct_mappingcCs"||}t|}|||_|Sr )construct_scalarr r#r$)rr%r'retrrrconstruct_yaml_str[s  z%AnsibleConstructor.construct_yaml_strcCsX||}t|}|jd}|jdur:tddd|jddt|}||_|||_ |S)Nrz+found !vault but no vault password providedr,) r<r rrrr0rvaultr#r$)rr%r'Zb_ciphertext_datar?r=rrr!construct_vault_encrypted_unicodees    z4AnsibleConstructor.construct_vault_encrypted_unicodeccs,t}|V||||||_dSr )r extendZconstruct_sequencer#r$)rr%r&rrrconstruct_yaml_sequsz%AnsibleConstructor.construct_yaml_seqcCsPz&t|dd}|dur$t|d|}Wnty>|j}Yn0||}t|S)Nr/objectz construct_%s)getattrAttributeErrorr1r)rr% constructorr'rrrconstruct_yaml_unsafe{s   z(AnsibleConstructor.construct_yaml_unsafecCs0|jjd}|jjd}|jp$|jj}|||fS)N)r0columnlinername)rr%rIrJZ datasourcerrrr#s  z&AnsibleConstructor._node_position_info)NN)F) __name__ __module__ __qualname__rr(r!r>r@rBrGr# __classcell__rrrrr#s )  rztag:yaml.org,2002:mapztag:yaml.org,2002:python/dictztag:yaml.org,2002:strz tag:yaml.org,2002:python/unicodeztag:yaml.org,2002:seqz!unsafez!vaultz!vault-encryptedN)$Z __future__rrrtypeZ __metaclass__Zyaml.constructorrrZ yaml.nodesrZansiblerr5Zansible.module_utils._textr r Zansible.parsing.yaml.objectsr r r rZansible.parsing.vaultrZansible.utils.displayrZansible.utils.unsafe_proxyrr6rZadd_constructorr(r>rBrGr@rrrrsP     s