
    Vh                    h   d dl mZ d dlmZmZ d dlmZ d dlmZ	 d dl
mZmZ d dlmZmZmZmZ d dlmZ d dlmZ d d	lmZ  e       Z G d
 de      Zej5                  dej6                         ej5                  dej6                         ej5                  dej8                         ej5                  dej8                         ej5                  dej:                         ej5                  dej<                         ej5                  dej>                         ej5                  dej>                         y)    )annotations)SafeConstructorConstructorError)MappingNode)	constants)to_bytes	to_native)AnsibleMappingAnsibleSequenceAnsibleUnicodeAnsibleVaultEncryptedUnicode)VaultLib)Display)wrap_varc                  L     e Zd Zd	 fd	Zd Zd
dZd Zd Zd Zd Z	d Z
 xZS )AnsibleConstructorc                    || _         t        t        |           i | _        |xs g | _        t        | j
                        | j                  d<   y )N)secretsdefault)_ansible_file_namesuperr   __init___vaultsvault_secretsr   )self	file_namer   	__class__s      P/home/dcms/DCMS/lib/python3.12/site-packages/ansible/parsing/yaml/constructor.pyr   zAnsibleConstructor.__init__"   sF    "+ $02*0b"*43E3E"FY    c              #     K   t               }| | j                  |      }|j                  |       | j                  |      |_        y wN)r
   construct_mappingupdate_node_position_infoansible_pos)r   nodedatavalues       r   construct_yaml_mapz%AnsibleConstructor.construct_yaml_map)   sB     
&&t,E33D9s   AA
c                   t        |t              s%t        d d d|j                  z  |j                        | j                  |       t               }| j                  |      |_        |j                  D ]  \  }}| j                  ||      }	 t        |       ||v r dj                  |g|j                   }t        j                  dk(  rt         j#                  |       nKt        j                  dk(  r#t        d d t%        |      |j                  d       t         j'                  |       | j                  ||      }	|	||<    |S # t        $ r*}t        d|j                  d|z  |j                        d }~ww xY w)	Nz%expected a mapping node, but found %s)deepzwhile constructing a mappingzfound 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.warnerrorcontextcontext_markproblemproblem_marknote)
isinstancer   r   id
start_markflatten_mappingr
   r$   r%   r(   construct_objecthash	TypeErrorformatCDUPLICATE_YAML_DICT_KEYdisplaywarningr	   debug)
r   r&   r+   mappingkey_node
value_nodekeyexcmsgr(   s
             r   r"   z$AnsibleConstructor.construct_mapping0   s    $,"4#JTWW#T#'??4 4 	T" " #66t<$(JJ 	! Hj''t'<CaS	
 g~A ::@&\GNGZGZ\,,6OOC(..'9*4d3<S>8<046 6 MM#&))*4)@E GCL/	!2 +  a&'Et'Ds'JHL_L_a aas   E			E<%E77E<c                j    | j                  |      }t        |      }| j                  |      |_        |S r!   )construct_scalarr   r$   r%   )r   r&   r(   rets       r   construct_yaml_strz%AnsibleConstructor.construct_yaml_strY   s5     %%d+U#2248
r   c                    | j                  |      }t        |      }| j                  d   }|j                  t	        d d d|j
                  d       t        |      }||_        | j                  |      |_	        |S )Nr   z+found !vault but no vault password providedr.   )
rH   r   r   r   r   r6   r   vaultr$   r%   )r   r&   r(   b_ciphertext_datarL   rI   s         r   !construct_vault_encrypted_unicodez4AnsibleConstructor.construct_vault_encrypted_unicodec   s    %%d+$UO Y'== "4d+X04(,. . ++<=	2248
r   c              #     K   t               }| |j                  | j                  |             | j                  |      |_        y wr!   )r   extendconstruct_sequencer$   r%   )r   r&   r'   s      r   construct_yaml_seqz%AnsibleConstructor.construct_yaml_seqs   s=      
D++D1233D9s   AAc                    	 t        |dd      }|t        | d|z        } ||      }t        |      S # t        $ r | j                  }Y *w xY w)Nr5   objectzconstruct_%s)getattrAttributeErrorr8   r   )r   r&   constructorr(   s       r   construct_yaml_unsafez(AnsibleConstructor.construct_yaml_unsafey   s^    	0!$h7K&%dN[,HI D!  	0//K	0s   3 A
Ac                    |j                   j                  dz   }|j                   j                  dz   }| j                  xs |j                   j                  }|||fS )N   )r6   columnliner   name)r   r&   r[   r\   
datasources        r   r$   z&AnsibleConstructor._node_position_info   sU     ''!+##a' ,,D0D0D
D&))r   )NN)F)__name__
__module____qualname__r   r)   r"   rJ   rN   rR   rX   r$   __classcell__)r   s   @r   r   r   !   s-    G:'R :
*r   r   ztag:yaml.org,2002:mapztag:yaml.org,2002:python/dictztag:yaml.org,2002:strz tag:yaml.org,2002:python/unicodeztag:yaml.org,2002:seqz!unsafez!vaultz!vault-encryptedN) 
__future__r   yaml.constructorr   r   
yaml.nodesr   ansibler   r<   +ansible.module_utils.common.text.convertersr   r	   ansible.parsing.yaml.objectsr
   r   r   r   ansible.parsing.vaultr   ansible.utils.displayr   ansible.utils.unsafe_proxyr   r>   r   add_constructorr)   rJ   rR   rX   rN    r   r   <module>rn      s  $ # > " " K v v * ) /
)p* p*f  " "))+  " "$))+  " "))+  " "'))+  " "))+  " ",,.  " "88:  " "88:r   