
    ?De                        d Z ddlmZmZmZ ddlZddlZ	 ddlZddlZ e	ej
                            dd                    aej
                            d          Zeej        Zn! eed          Z ej        ej                   dZddlZej        ek    sJ  ede d	ej         d
                      ddlT  ej        ej                  Zi Z ee                                          D ]\  ZZe                    d          reee<     G d d          Z	 ddlZej         Z!n# e$ r eZ!Y nw xY w G d d          Z" e"d          Z#ddl$m%Z%mZm&Z&m'Z'm(Z(m)Z) ddl*m+Z+m,Z, ddl-m.Z.m/Z/m0Z0m1Z1 [0[1e2Z3dS )zC
ldap - base module

See https://www.python-ldap.org/ for details.
    )__version__
__author____license__NTPYTHON_LDAP_TRACE_LEVELPYTHON_LDAP_TRACE_FILEazldap z and _ldap z version mismatch!)*OPT_c                   $    e Zd ZdZd Zd Zd ZdS )	DummyLockz<Define dummy class with methods compatible to threading.Lockc                     d S N selfs    /./ldap/__init__.py__init__zDummyLock.__init__0       D    c                     d S r   r   r   s    r   acquirezDummyLock.acquire2   r   r   c                     d S r   r   r   s    r   releasezDummyLock.release4   r   r   N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   .   sG        DD	 	 		 	 		 	 	 	 	r   r   c                   *    e Zd ZdZdZddZd Zd ZdS )	LDAPLockz
  Mainly a wrapper class to log all locking events.
  Note that this cumbersome approach with _lock attribute was taken
  since threading.Lock is not suitable for sub-classing.
     N c                 @    || _          |pt                      | _        dS )zx
    lock_class
        Class compatible to threading.Lock
    desc
        Description shown in debug log messages
    N)_descLDAPLockBaseClass_lock)r   
lock_classdescs      r   r   zLDAPLock.__init__H   s$     DJ1*1 144DJJJr   c                     	 t           | j        k    rKt                              d                    | j        j        t          |           | j                             | j	        
                                S )NTz***{}.acquire() {} {}
)_trace_level_min_trace_level_trace_filewriteformat	__class__r   reprr#   r%   r   r   s    r   r   zLDAPLock.acquireR   d    k	t,	,	,3::4>;RSWX\S]S]^b^hiijjj:r   c                     	 t           | j        k    rKt                              d                    | j        j        t          |           | j                             | j	        
                                S )NTz***{}.release() {} {}
)r)   r*   r+   r,   r-   r.   r   r/   r#   r%   r   r   s    r   r   zLDAPLock.releaseY   r0   r   )Nr!   )r   r   r   r   r*   r   r   r   r   r   r   r   r   @   sX         
 5 5 5 5              r   r   zModule wide)r'   )
initialize
get_option
set_option
escape_str	strf_secs	strp_secs)NO_UNIQUE_ENTRYLDAPBytesWarning)
explode_dnexplode_rdnstr2dndn2str)4r   ldap.pkginfor   r   r   ossysatexit	tracebackintenvirongetr)   r+   stderropenregisterclose_trace_stack_limit_ldapImportErrorr3   OPT_API_INFOLIBLDAP_API_INFOOPT_NAMES_DICTvarsitemskv
startswithr   	threadingLockr$   r   _ldap_module_lockldap.functionsr2   r4   r5   r6   r7   ldap.ldapobjectr8   r9   ldap.dnr:   r;   r<   r=   OPT_ERROR_STRINGOPT_DIAGNOSTIC_MESSAGEr   r   r   <module>r]      s    > = = = = = = = = = 				 



---RZ^^$=qAABB,
788+*KK${C((KFOK%&&& +%%%{X;XX53DXXXYY &%%    #5#E$677 4;;  CAa\\& N1	 	 	 	 	 	 	 	%  n                       D H-000  Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z = = = = = = = = 8 8 8 8 8 8 8 8 8 8 8 8


 *   s   D) )D32D3