
    Vh&                    f    d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 dgZd Z G d de      Zy	)
    )annotations)ChainMap)missing)AnsibleErrorAnsibleUndefinedVariable)	to_nativeAnsibleJ2Varsc                v    | i S | j                         D ci c]  \  }}|t        ur|dvr|| c}}S c c}}w )N>   contexttemplateenvironment)itemsr   )_lkvs      E/home/dcms/DCMS/lib/python3.12/site-packages/ansible/template/vars.py_process_localsr      sK    	z	AG;; 	
1  s   5c                  4     e Zd ZdZd fd	Z fdZd Z xZS )r	   z^Helper variable storage class that allows for nested variables templating: `foo: "{{ bar }}"`.c                p    || _         t        | 	  t        |      | j                   j                  |       y N)_templarsuper__init__r   available_variables)selftemplarglobalslocals	__class__s       r   r   zAnsibleJ2Vars.__init__   s/    F#MM--	
    c           	        t         |   |      }ddlm} |dk(  rt	        |t
              st	        ||      st        |d      r|S 	 | j                  j                  |      S # t        $ rE}| j                  j                  j                  | d|j                   |t              cY d }~S d }~wt        $ rE}t        |dd       xs t        |      }t!        dt        |       d	t#        |       d
|       d }~ww xY w)Nr   )HostVarsvars
__UNSAFE__z: )hintnameexcmessagez2An unhandled exception occurred while templating 'z'. Error was a z, original message: )r   __getitem__ansible.vars.hostvarsr"   
isinstancedicthasattrr   r   r   r   	undefinedr(   	Exceptiongetattrr   r   type)r   varnamevariabler"   emsgr   s         r   r)   zAnsibleJ2Vars.__getitem__%   s   7&w/2v*Xt"<HV^A_cjks  vB  dCO	==))(33' 		
 ==,,66 zAII;/, 7  
  	!Y-=1CDYxEXDY Z#Awi';C5B 	s+   A" "	C<+:B+%C<+C<7A C77C<c                    || S | j                   d   }| j                   d   }||z  }t        | j                  ||      S )zIf locals are provided, create a copy of self containing those
        locals in addition to what is already in this variable proxy.
        r      )r   )mapsr	   r   )r   r   current_localscurrent_globals
new_localss        r   
add_localszAnsibleJ2Vars.add_locals?   sG     >K1))A, $f,
T]]OJOOr    r   )__name__
__module____qualname____doc__r   r)   r<   __classcell__)r   s   @r   r	   r	      s    h
4Pr    N)
__future__r   collectionsr   jinja2.utilsr   ansible.errorsr   r   +ansible.module_utils.common.text.convertersr   __all__r   r	    r    r   <module>rI      s3    #     A A 
3PH 3Pr    