
    Vh"                        d dl m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mZ d dlmZ d d	lmZ d d
lmZ  e       ZdddZd ZddZd ZddZddZddZddZddZy)    )annotationsN)context)	constants)list_collections)AnsibleError)	to_nativeto_bytes)loader)Display)_get_collection_path)async_wrapper)base)modulecachec                l   | }d|vr|}n>| dk(  r|j                  d      rd}dj                  |j                  | d      dd        }|g}|r>|j                  |j                  t        j
                  j                        |dz  d         |j                  t        |             dj                  |      S )N.ansible.legacyzansible.builtin.ansible.builtin   )	
startswithjoinsplitextendospathsepappendr   )
collectionnamer   depthresolved_collectionresource_name	composites          D/home/dcms/DCMS/lib/python3.12/site-packages/ansible/plugins/list.pyget_composite_namer&      s    $
$))doo>P.Q"3/B.C1,E!Fqr!JK %%IBGGKK0=>Y}-.88I    c                   i }|D ]B  }t         j                  dj                  |||              t        |      }t        j
                  j                  |      j                  d      rdt        j
                  j                  |      rt        j
                  j                  |      rU| j                         }t	        j                  |      D ]*  }|j                  d      rt         j                  dj                  |             t        j
                  j                  |      \  }	}
t        |	      }t        j
                  j                  ||      }t        j
                  j                  |      r}|t        j                   v r>t        j
                  j                  t        j
                  j                  |d            s|j#                  t%        | t        |      g||dz                #t'        |t        j(                  v t        |
      t        j*                  v |
dv |t,        j/                  |d      v t        j
                  j1                  |      g      r| d	v r[	 t3        ||| |      }|D ]E  }t9        ||j:                  t        j
                  j=                  t        |            |      }|||<   G t9        ||t        j
                  j=                  t        |            |      }|||<   - t         j                  dj                  |             t         j                  dj                  |             E |S # t4        $ r/}t         j7                  d
|dt        |             Y d }~d }~ww xY w)Nz&Searching '{0}'s '{1}' for {2} plugins)   .s   __zFound possible plugin: '{0}'s   __init__.pyr   )r!   )s   .ymls   .yamls   .json )testfilterzSkipping file z: z6Skip listing plugins in '{0}' as it is not a directoryz2Skip listing plugins in '{0}' as it does not exist)displaydebugformatr	   r   r   basenamer   existsisdirlowerlistdirsplitextr   r   CSYNTHETIC_COLLECTIONSupdate_list_plugins_from_pathsanyIGNORE_FILESREJECT_EXTSIGNOREgetislink_list_j2_plugins_from_fileKeyErrorwarningr&   ansible_namedirname)ptypedirsr   r!   pluginsr   b_pathbkeyplugin_fileb_pluginb_extplugin	full_pathfile_pluginseplugin_names                   r%   r9   r9   -   s    G 9]>EEjRVX]^_$77F#..}=77>>&!ww}}V${{}#%::f#5 *=K"--m< MM"@"G"G"TU&(gg&6&6{&COHe&x0F "V[ AIww}}Y/%)@)@@#%77>>"'',,y.2Y#Z (  '?	R[H\G]_iqvyzqz'{| &!.. 8 )% 0AMM A %)F F &&**T2*> > "y 9   % $66)/I*V_afhn/o
 +7 A.@VM`M`bdbibibqbqr{  }F  sG  cH  JO  /P7@ 4A +=ZQSQXQXQ`Q`ajktauQvx}*~K3<GK0U*=X V]]^bcdMMNUUVZ[\s9]v N $, ) ')U^_`Ua0b c ()s   &M	N$N  Nc                j    t        t        dj                  |            }|j                  | ||      }|S )N
{0}_loader)getattrr
   r/   get_contained_plugins)r   plugin_pathrE   rQ   ploaderrO   s         r%   r@   r@   p   s3    fl11%89G00[+VLr'   c                   i }	 t        t        dj                  |             }|j                         D ],  }|dk(  r5|j                         D cg c]  }|j                  s|j                   }}n|dk(  rw|j                         D cg c]  }|j                  r|j                   }}t        j                  j                  dd       rz|j                  t        j                  d          nWt        t        j                  j                  | |             }t!        t"        j                  j%                  ||   d|            g}|j'                  t)        | ||             / | dv r!|j                         D ]  }	||	   d f||	<    |S t+        |j                               D ]"  }	d }
	 |j                  |	d	      }
||	   |
f||	<   $ |S # t        $ r t	        dj                  |             w xY wc c}w c c}w # t,        $ r=}t.        j1                  d
j                  |	| ||	   t!        |                   Y d }~d }~ww xY w)NrS   z8Cannot list plugins, incorrect plugin type supplied: {0}r   r   module_paths   plugins)r   T)
class_onlyz8The '{0}' {1} plugin could not be loaded from '{2}': {3})rT   r
   r/   AttributeErrorr   keys_get_paths_with_contextinternalr   r   CLIARGSr>   r   r	   r6   COLLECTION_PTYPE_COMPATr   r   r   r8   r9   list	Exceptionr-   vvv)rE   collectionssearch_pathsrG   rW   r   drF   b_ptyperM   pobjrP   s               r%   list_collection_pluginsri   w   sA    Ge&,"5"5e"<=
 "&&( J
**$+$C$C$ETqAFFTDT++$+$C$C$EXqQZZAFFXDX""=$7GOOM:; q88<<UEJKGbggll;z+BJPWXYZD 	/tZHI)J. lln 	6F&v5GFO	6 N 7<<>* 	6FDM{{6d{;
  'v5GFO	6 NY  eU\\]bcdde U Y6  MV]]^dfkmtu{m|  H  IJ  K  L  M  MMs;   G G/ G/G4G4'G9$G,9	H?3H::H?c           
        t        |t              r|g}i }i }|'d|d<   d|d<   |j                  t        |d             n/|D ]*  }|dk(  rd||<   d|d<   	 t	        t        |            ||<   , |r|j                  t        | |             |S # t        $ r+}t        dj                  |t        |            |      d }~ww xY w)Nr'   r   r   T)re   dedupez'Cannot use supplied collection {0}: {1})orig_exc)
isinstancestrr8   r   r	   r   
ValueErrorr   r/   r   ri   )rE   rd   re   rG   plugin_collectionsr   rP   s          r%   list_pluginsrq      s    +s#"m G03,-/2+,!!"2UY"Z[% 		J--14":.8;"#455=>RS]>^5_&z2		 .u6HIJN " &'P'W'WXbdmnodp'q|}~~s   B	C&B>>Cc                T    t        | |      D cg c]  }|j                   c}S c c}w N)rq   rC   )rE   r   rM   s      r%   list_plugin_namesrt      s#    .:5*.MNFFNNNs   %c                l    t        | |      }|j                         D cg c]
  }||   d    c}S c c}w )Nr   rq   r\   rE   r   rG   ks       r%   list_plugin_filesry      0    5*-G#*<<>2aGAJqM222   1c                l    t        | |      }|j                         D cg c]
  }||   d    c}S c c}w )Nr   rv   rw   s       r%   list_plugin_classesr}      rz   r{   )r   rs   )NN)
__future__r   r   ansibler   r   r6   ansible.collections.listr   ansible.errorsr   +ansible.module_utils.common.text.convertersr   r	   ansible.pluginsr
   ansible.utils.displayr   2ansible.utils.collection_loader._collection_finderr   r-   r=   r&   r9   r@   ri   rq   rt   ry   r}   r*   r'   r%   <module>r      si    # 
  " 5 ' K " ) S
)
 "
"@F3l>O3
3r'   