
    Vh:                        d dl mZ d dlmc mc mZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ d	 Z G d
 d eee            Z G d de      Z G d de      Z G d de      Zy)    )annotationsN)ABCMetaabstractmethod)with_metaclass)missing_required_lib)get_bin_path)has_respawnedprobe_interpreters_for_modulerespawn_module)get_all_subclassesc                     t        t              D  ci c]1  } | t        t        t        fvs| j
                  j                         | 3 c} S c c} w N)r   PkgMgrCLIMgrLibMgrRespawningLibMgr__name__lower)objs    S/home/dcms/DCMS/lib/python3.12/site-packages/ansible/module_utils/facts/packages.pyget_all_pkg_managersr      s>    1CF1K}#s[acik{Z|O|CLL #%}}}s
   AAc                  B    e Zd Zed        Zed        Zed        Zd Zy)r   c                     y r    )selfhandle_exceptionss     r   is_availablezPkgMgr.is_available   s    
 	    c                     y r   r   )r   s    r   list_installedzPkgMgr.list_installed        	r   c                     y r   r   )r   packages     r   get_package_detailszPkgMgr.get_package_details$   r!   r   c                    i }| j                         D ]b  }| j                  |      }d|vr'| j                  j                  j	                         |d<   |d   }||vr|g||<   O||   j                  |       d |S )Nsourcename)r    r$   	__class__r   r   append)r   installed_packagesr#   package_detailsr'   s        r   get_packageszPkgMgr.get_packages)   s      **, 	AG"66w?O.,0NN,C,C,I,I,K)"6*D--,;+<"4("4(//@	A "!r   N)r   
__module____qualname__r   r   r    r$   r,   r   r   r   r   r      sA         "r   r   c                  *     e Zd ZdZ fdZddZ xZS )r   Nc                8    d | _         t        t        |           y r   )_libsuperr   __init__r   r(   s    r   r3   zLibMgr.__init__=       	fd$&r   c                    d}	 t        | j                        | _        d}|S # t        $ r$ |st	        t        | j                              Y |S w xY wNFT)
__import__LIBr1   ImportError	Exceptionr   r   r   founds      r   r   zLibMgr.is_availableB   s^    	@"488,DIE   	@$ 4TXX >?? %	@s   " )AAT)r   r-   r.   r9   r3   r   __classcell__r(   s   @r   r   r   9       
C'
r   r   c                  *     e Zd Zg ZdgZd fd	Z xZS )r   z/usr/bin/python3c           	     ~   t         t        |          ry| j                  D ]k  }	 t	        |      }t               s-t        | j                  | j                        }|rt        |       |rIt        d| dt        | j                                |st        t        | j                              y# t        $ r Y w xY w)NTzFound executable at z. F)r2   r   r   CLI_BINARIESr   r	   r
   INTERPRETERSr9   r   r;   r   
ValueError)r   r   binarybin_pathinterpreter_pathr(   s        r   r   zRespawningLibMgr.is_availableR   s    !457'' 	iFi'/ %'DTEVEVX\X`X`'a$'&'78 )#&:8*BG[\`\d\dGeFf$ghh!	i$ !0:;;%  s   B00	B<;B<r>   )r   r-   r.   rD   rE   r   r?   r@   s   @r   r   r   M   s    L&'L r   r   c                  *     e Zd ZdZ fdZddZ xZS )r   Nc                8    d | _         t        t        |           y r   )_clir2   r   r3   r4   s    r   r3   zCLIMgr.__init__r   r5   r   c                j    d}	 t        | j                        | _        d}|S # t        $ r |s Y |S w xY wr7   )r   CLIrL   rF   r<   s      r   r   zCLIMgr.is_availablew   sI    	$TXX.DIE   	$ %	s   " 22r>   )r   r-   r.   rN   r3   r   r?   r@   s   @r   r   r   n   rA   r   r   )
__future__r   "ansible.module_utils.compat.typingmodule_utilscompattypingtabcr   r   ansible.module_utils.sixr   ansible.module_utils.basicr   #ansible.module_utils.common.processr   #ansible.module_utils.common.respawnr	   r
   r   "ansible.module_utils.common._utilsr   r   objectr   r   r   r   r   r   r   <module>r\      sd    # . . ' 3 ; < l l A~
 "^GV,  "FV (v BV r   