
    Vh                    x    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
mZ ddgZ G d de      Z G d	 de      Zy
)    )annotations)Mapping)cached_property)	constants)TemplarAnsibleUndefinedHostVarsHostVarsVarsc                  j    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zy)r	   zO A special view of vars_cache that adds values from the inventory when needed. c                <    || _         || _        || _        | |_        y N)
_inventory_loader_variable_manager	_hostvars)self	inventoryvariable_managerloaders       E/home/dcms/DCMS/lib/python3.12/site-packages/ansible/vars/hostvars.py__init__zHostVars.__init__"   s!    #!1%)"    c                     || _         | |_        y r   )r   r   )r   r   s     r   set_variable_managerzHostVars.set_variable_manager(   s    !1%)"r   c                    || _         y r   )r   )r   r   s     r   set_inventoryzHostVars.set_inventory,   s	    #r   c                8    | j                   j                  |      S r   )r   get_hostr   	host_names     r   
_find_hostzHostVars._find_host/   s    ''	22r   c                    | j                  |      }|t        d|z        S | j                  j                  |d      S )z
        Similar to __getitem__, however the returned data is not run through
        the templating engine to expand variables in the hostvars.
        zhostvars['%s'])nameF)hostinclude_hostvars)r!   r   r   get_vars)r   r    r$   s      r   raw_getzHostVars.raw_get3   sD    
 y)<#)9I)EFF%%..D5.QQr   c                    | j                   j                  |       | j                  j                  | j                  | j                  _        | j                  j                  | | j                  _        y y r   )__dict__updater   r   r   r   states     r   __setstate__zHostVars.__setstate__>   s_    U# !!))1-1\\D""*!!++3/3D"", 4r   c                v    | j                  |      }t        |t              r|S t        || j                        S )N)r   )r'   
isinstancer   r
   r   )r   r    datas      r   __getitem__zHostVars.__getitem__K   s1    ||I&d,-KD66r   c                >    | j                   j                  |||       y r   )r   set_host_variable)r   r$   varnamevalues       r   r3   zHostVars.set_host_variableQ   s    00wFr   c                <    | j                   j                  ||       y r   )r   set_nonpersistent_factsr   r$   factss      r   r7   z HostVars.set_nonpersistent_factsT   s    66tUCr   c                <    | j                   j                  ||       y r   )r   set_host_factsr8   s      r   r;   zHostVars.set_host_factsW   s    --dE:r   c                (    | j                  |      d uS r   )r!   r   s     r   __contains__zHostVars.__contains__Z   s    y)55r   c              #     K   | j                   j                  r/| j                   j                  d| j                   j                  iz  ni E d {    y 7 w)N	localhost)r   r?   hostsr   s    r   __iter__zHostVars.__iter__^   s>     W[WfWfWpWp4??((K9R9R+SSvxxxs   AAAAc                z    t        | j                  j                        | j                  j                  rdz   S dz   S )N   r   )lenr   r@   r?   rA   s    r   __len__zHostVars.__len__b   s1    4??(()$//2K2KQSSQRSSr   c                z    i }| j                   j                  D ]  }| j                  |      ||<    t        |      S r   )r   r@   getrepr)r   outr$   s      r   __repr__zHostVars.__repr__f   s;    OO)) 	'DCI	'Cyr   c                    | S r    )r   memos     r   __deepcopy__zHostVars.__deepcopy__l   s	     r   N)__name__
__module____qualname____doc__r   r   r   r!   r'   r-   r1   r3   r7   r;   r=   rB   rF   rK   rO   rM   r   r   r	   r	      sU    Y**$3	R47GD;6yTr   c                  F    e Zd Zd Zed        Zd Zd Zd Zd Z	d Z
d Zy	)
r
   c                     || _         || _        y r   )_varsr   )r   	variablesr   s      r   r   zHostVarsVars.__init__u   s    
r   c                D    t        | j                  | j                        S )N)rW   r   )r   rV   r   rA   s    r   _templarzHostVarsVars._templary   s     DLLAAr   c                t    | j                   j                  | j                  |   dt        j                        S NF)fail_on_undefinedstatic_vars)rY   templaterV   CINTERNAL_STATIC_VARSr   vars     r   r1   zHostVarsVars.__getitem__   s-    }}%%djjo\]\r\r%ssr   c                    || j                   v S r   )rV   ra   s     r   r=   zHostVarsVars.__contains__   s    tzz!"r   c              #  T   K   | j                   j                         E d {    y 7 wr   )rV   keysrA   s    r   rB   zHostVarsVars.__iter__   s     ::??$$$s   (&(c                H    t        | j                  j                               S r   )rE   rV   re   rA   s    r   rF   zHostVarsVars.__len__   s    4::??$%%r   c                    t        | j                  j                  | j                  dt        j
                              S r[   )rI   rY   r^   rV   r_   r`   rA   s    r   rK   zHostVarsVars.__repr__   s.    DMM**4::\]\r\r*sttr   c                ^    | j                   j                         }|j                  dd       |S )z] override serialization here to avoid
            pickle issues with templar and Jinja nativerY   N)r)   copypopr+   s     r   __getstate__zHostVarsVars.__getstate__   s)     ""$		*d#r   N)rP   rQ   rR   r   r   rY   r1   r=   rB   rF   rK   rk   rM   r   r   r
   r
   s   s=     B B
t#%&ur   N)
__future__r   collections.abcr   	functoolsr   ansibler   r_   ansible.templater   r   __all__r	   r
   rM   r   r   <module>rr      s=   $ # # % " 6 ~
&Qw Qh 7  r   