
    Vh	                         d dl mZmZmZ eZd dlZd dlmZ d dl	m
Z
 d dlmZ  e       Z G d de      Zed        Zd	 Zdd
ZddZd Zy)    )absolute_importdivisionprint_functionN)contextmanager)	to_native)missing_required_libc                   T    e Zd Zg dZd
dZd Zd Zed        Zed        Z	d Z
d	 Zy)_Dependency)pendingfailuresuccessNc                 f    || _         || _        || _        || _        d| _        d | _        d | _        y )Nr   )namereasonurlmsgstatetraceexc)selfr   r   r   r   s        o/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/module_utils/deps.py__init__z_Dependency.__init__   s3    	

    c                     d| _         y )N   r   r   s    r   succeedz_Dependency.succeed"   s	    
r   c                 .    d| _         || _        || _        y N   )r   r   r   )r   r   r   s      r   failz_Dependency.fail%   s    

r   c                     | j                   rt        | j                         S t        | j                  | j                  | j
                        S )N)r   r   )r   r   r   r   r   r   r   s    r   messagez_Dependency.message*   s3    88TXX&&'		$++488TTr   c                      | j                   dk(  S r    r   r   s    r   failedz_Dependency.failed1   s    zzQr   c                 l    | j                   r(|j                  | j                  | j                         y y )N)r   	exception)r&   	fail_jsonr$   r   )r   modules     r   validatez_Dependency.validate5   s)    ;;D r   c                 h    dj                  | j                  | j                  | j                           S )Nz<dependency: {0} [{1}]>)formatr   _statesr   r   s    r   __str__z_Dependency.__str__9   s&    (//		4<<

;STTr   )NNN)__name__
__module____qualname__r.   r   r   r"   propertyr$   r&   r+   r/    r   r   r
   r
      sL    /G
 U U  EUr   r
   c              /      K   t        | g|i |}	 | |j                          |t        | <   y # t        $ r.}|j                  |t	        j
                                Y d }~<d }~ww xY w# |t        | <   w xY wwN)r
   r   	Exceptionr"   	traceback
format_exc_deps)r   argskwargsdepes        r   declarer?   =   so     
d
,T
,V
,C	 	d  ,I((*++,
 ds;   A91 A+ 
A9	A($A#A+ #A((A+ +A66A9c                    t        t              }| rs| j                  d      r.| dd  j                  d      }|D ]  }|j	                  |        |S | j                  d      }g }|D ]  }t        |    |j                  |        |S )N-r!   :)sortedr:   
startswithsplitremoveappend)spec	dep_names
spec_splitds       r   _select_namesrL   J   s    uI??3ab,J $  #$  CJI $a  #$ r   c                 T    t        |      D ]  }t        |   j                  |         y r6   )rL   r:   r+   )r*   rH   r=   s      r   r+   r+   \   s(    T" $c
F#$r   c                 8    t        d t        |       D              S )Nc              3   B   K   | ]  }t         |   j                    y wr6   )r:   r&   ).0rK   s     r   	<genexpr>zfailed.<locals>.<genexpr>b   s     <1uQx<s   )anyrL   )rH   s    r   r&   r&   a   s    <d(;<<<r   c                  ,    t         j                          y r6   )r:   clearr4   r   r   rT   rT   e   s    	KKMr   r6   )
__future__r   r   r   type__metaclass__r8   
contextlibr   +ansible.module_utils.common.text.convertersr   ansible.module_utils.basicr   dictr:   objectr
   r?   rL   r+   r&   rT   r4   r   r   <module>r]      sa    A @  % A ; 	%U& %UP 	 	$$
=r   