
    Vh                        d dl mZ d dlmZ d dlZd dlZ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  e       Zej&                  rd	d
lmZ i Zi Zi Zd Z G d de      Z G d de      Zy)    )annotations)ABCN)	constants)AnsibleError)	to_native)string_types)Display   )PluginPathContextc                    t        | t              r | j                         j                  dd      S | j                  j
                  j                         j                  dd      S Nmodule )
isinstancer   lowerreplace	__class____name__)objs    H/home/dcms/DCMS/lib/python3.12/site-packages/ansible/plugins/__init__.pyget_plugin_classr   ,   sK    #|$yy{""8R00}}%%++-55hCC    c                      e Zd ZU ded<   dZded<   dZded<   d	 Zed
        Zd Z	ddZ
ddZddZd ZddZd Zed        Zed        Zd Zy)AnsiblePluginstr
_load_nameFboolallow_extrasNz
str | None_extras_prefixc                     i | _         d | _        y N)_options_defsselfs    r   __init__zAnsiblePlugin.__init__<   s    
r   c                x    | j                   s#| j                  j                  d      d   | _         | j                   S )N.)r   r   splitr$   s    r   extras_prefixzAnsiblePlugin.extras_prefix@   s3    """&//"7"7"<R"@D"""r   c                4   t               }|D ]]  }d|vr|j                  d|        n1|j                  d      r |j                  |j                  d             |j                  |       _ t	        |j                  t        | j                                    S )Nr(   zansible.builtin.zansible.legacy.)setadd
startswithremoveprefixr   intersectionansible_aliases)r%   possible_namespossible_fqcnsnames       r   matches_namezAnsiblePlugin.matches_nameF   s    " 	%D$""%5dV#<=!23""4#4#45F#GHt$	% N//D4H4H0IJKKr   c                    	 t         j                  j                  || j                  | j                  |      \  }}||fS # t
        $ r}t        t        |            d }~ww xY w)N)plugin_typeplugin_name	variables)Cconfigget_config_value_and_originr8   r   r   KeyErrorr   )r%   optionhostvarsoption_valueorigines         r   get_option_and_originz#AnsiblePlugin.get_option_and_originP   su    	)#$88#G#G\`\l\lz~  {J  {J  V^#G  $_ L& V##  	)9Q<((	)s   :A   	A"	AA"c                    || j                   vr(| j                  ||      \  }}| j                  ||       | j                   j                  |      S N)r@   )r"   rD   
set_optionget)r%   r?   r@   rA   dummys        r   
get_optionzAnsiblePlugin.get_optionW   sK    &"&"<"<Vh"<"WL%OOFL1}}  ((r   c                t    i }| j                   j                         D ]  }| j                  ||      ||<    |S rF   )option_definitionskeysrJ   )r%   r@   optionsr?   s       r   get_optionszAnsiblePlugin.get_options^   sB    --224 	IF"oofxoHGFO	Ir   c                    t         j                  j                  || j                  | j                  ||i      | j
                  |<   t        j                  t               y )N)r8   r9   direct)r;   r<   get_config_valuer8   r   r"   handle_config_noisedisplay)r%   r?   values      r   rG   zAnsiblePlugin.set_optiond   sY     ! 9 9&dN^N^lpl{l{  FL  NS  ET 9  !Uf	g&r   c                    t         j                  j                  | j                  | j                  |||      | _        | j                  r|rd|v r|d   | j
                  d<   t        j                  t               y)a*  
        Sets the _options attribute with the configuration/keyword information for this plugin

        :arg task_keys: Dict with playbook keywords that affect this option
        :arg var_options: Dict with either 'connection variables'
        :arg direct: Dict with 'direct assignment'
        )rM   r:   rQ   _extrasN)	r;   r<   get_plugin_optionsr8   r   r"   r   rS   rT   )r%   	task_keysvar_optionsrQ   s       r   set_optionszAnsiblePlugin.set_optionsh   sn     33D4D4Ddoo\eq|  FL3  M k1I'29'=DMM)$	g&r   c                V    | j                   s| j                          || j                   v S r!   )r"   r[   )r%   r?   s     r   
has_optionzAnsiblePlugin.has_optiony   s$    }}&&r   c                j    | j                   j                  j                         j                  dd      S r   r   r   r   r   r$   s    r   r8   zAnsiblePlugin.plugin_type~   s(    ~~&&,,.66xDDr   c                    | j                   :t        j                  j                  | j                  | j
                        | _         | j                   S )N)r8   r5   )r#   r;   r<   get_configuration_definitionsr8   r   r$   s    r   rL   z AnsiblePlugin.option_definitions   s>    ::??DL\L\cgcrcr?sDJzzr   c                     y r!    r$   s    r   _check_requiredzAnsiblePlugin._check_required   s    r   r!   )NNN)r   
__module____qualname____annotations__r   r   r&   propertyr+   r6   rD   rJ   rO   rG   r[   r]   r8   rL   rd   rc   r   r   r   r   3   s     O L$!%NJ% # #
L$)''"'
 E E  
r   r   c                  \     e Zd Z fdZed        Zd ZexZxZxZ	xZ
xZZed        Z xZS )AnsibleJinja2Pluginc                8    t         t        |           || _        y r!   )superrj   r&   	_function)r%   functionr   s     r   r&   zAnsibleJinja2Plugin.__init__   s    !413!r   c                j    | j                   j                  j                         j                  dd      S )Nansiblejinja2r   r_   r$   s    r   r8   zAnsibleJinja2Plugin.plugin_type   s(    ~~&&,,.66KKr   c                    t               r!   )NotImplementedError)r%   argskwargss      r   _no_optionszAnsibleJinja2Plugin._no_options   s    !##r   c                    | j                   S r!   )rm   r$   s    r   j2_functionzAnsibleJinja2Plugin.j2_function   s    ~~r   )r   re   rf   r&   rh   r8   ru   r]   rJ   rO   rL   rG   r[   rw   __classcell__)r   s   @r   rj   rj      sX    "
 L L$ ]hgJggkg,>gk r   rj   )
__future__r   abcr   typestypingtansibler   r;   ansible.errorsr   +ansible.module_utils.common.text.convertersr   ansible.module_utils.sixr   ansible.utils.displayr	   rT   TYPE_CHECKINGloaderr   MODULE_CACHE
PATH_CACHEPLUGIN_PATH_CACHEr   r   rj   rc   r   r   <module>r      sf   ( #    " ' A 1 )
)??) 
 DWC Wt- r   