
    =OOf0                         d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZmZ dd	lmZmZmZmZmZmZ  G d
 de      Z G d de      Z G d de      Zy)
    )linesep   )
MODIFY_ADDMODIFY_REPLACEMODIFY_DELETESEQUENCE_TYPES)LDAPCursorError)to_stdout_encoding   )STATUS_PENDING_CHANGESSTATUS_VIRTUALSTATUS_READY_FOR_DELETIONSTATUS_READY_FOR_MOVINGSTATUS_READY_FOR_RENAMING)loglog_enabledERRORBASICPROTOCOLEXTENDEDc                   V    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zed        Zy)	Attributea  Attribute/values object, it includes the search result (after post_query transformation) of each attribute in an entry

    Attribute object is read only

    - values: contain the processed attribute values
    - raw_values': contain the unprocessed attribute values


    c                 t   |j                   | _         || _        g | _        g | _        d | _        || _        || _        |j                  rP|j                  j                  D cg c]0  }| j                   j                         |j                         k7  s/|2 c}nd }|rt        |      | _        y d | _        y c c}w N)key
definitionvalues
raw_valuesresponseentrycursoroid_infonamelowersetother_names)selfattr_defr!   r"   r$   r'   s         Y/var/www/premiumrankchecker/venv/lib/python3.12/site-packages/ldap3/abstract/attribute.py__init__zAttribute.__init__/   s    <<"
gogxgx(9(9(>(>c$((..BRVZV`V`VbBbtc  C/:3{+ ds    0B5B5c                    t        | j                        dk(  r3t        | j                        dz   t        | j                  d         z   }|S t        | j                        dkD  rzt        | j                        dz   t        | j                  d         z   }dt        | j                        dz   z  }| j                  dd  D ]  }|t        |z   t        |      z   z  } |S t        | j                        dz   t        d      z   }|S )Nr   : r       z
<no value>)lenr   r   r   r   r(   rfillervalues       r*   __repr__zAttribute.__repr__:   s    t{{q "488,t36HUV6XXA  !"488,t36HUV6XXACMA-.FQR BWv%(:5(AAAB
  #488,t36H6VVA    c                     t        | j                        dk(  rt        | j                  d         S t        | j                        S )Nr   r   )r0   r   r   r(   s    r*   __str__zAttribute.__str__G   s5    t{{q %dkk!n55%dkk22r6   c                 ,    t        | j                        S r   r0   r   r8   s    r*   __len__zAttribute.__len__M   s    4;;r6   c                 6    | j                   j                         S r   )r   __iter__r8   s    r*   r>   zAttribute.__iter__P   s    {{##%%r6   c                      | j                   |   S r   )r   )r(   items     r*   __getitem__zAttribute.__getitem__S   s    {{4  r6   c                 :    t        | j                        }d |d<   |S )Nr"   )dict__dict__)r(   cpys     r*   __getstate__zAttribute.__getstate__V   s    4==!H
r6   c                 D    	 | j                   |k(  ryy # t        $ r Y yw xY w)NTF)r4   	Exceptionr(   others     r*   __eq__zAttribute.__eq__[   s-    	zzU" # 		s    	c                     | |k(   S r    rI   s     r*   __ne__zAttribute.__ne__b   s    5=  r6   c                     | j                   syt        | j                         dk(  r| j                   d   S | j                   S )zQ
        :return: The single value or a list of values of the attribute.
        Nr   r   )r   r0   r8   s    r*   r4   zAttribute.valuee   s5    
 {{!$T[[!1Q!6t{{1~GDKKGr6   N)__name__
__module____qualname____doc__r+   r5   r9   r<   r>   rA   rF   rK   rN   propertyr4   rM   r6   r*   r   r   $   sK    	E3 &!
! H Hr6   r   c                       e Zd ZdZd Zy)OperationalAttributea1  Operational attribute/values object. Include the search result of an
    operational attribute in an entry

    OperationalAttribute object is read only

    - values: contains the processed attribute values
    - raw_values: contains the unprocessed attribute values

    It may not have an AttrDef

    c                    t        | j                        dk(  r3t        | j                        dz   t        | j                  d         z   }|S t        | j                        dkD  rt        | j                        dz   t        | j                  d         z   }dt        | j                        dz   z  }t	        | j                  dd        D ]  }|t
        |z   t        |      z   z  } |S d}|S )Nr   z [OPERATIONAL]: r   r.   r/    )r0   r   r   r   sortedr   r1   s       r*   r5   zOperationalAttribute.__repr__}   s    t{{q "488,/AADVW[WbWbcdWeDffA  !"488,/AADVW[WbWbcdWeDffACMA-.FAB0 BWv%(:5(AAAB
  Ar6   N)rP   rQ   rR   rS   r5   rM   r6   r*   rV   rV   p   s    
r6   rV   c                   d    e Zd Zd Zd Zd ZddZd Zd Zd Z	d Z
d	 Zed
        Zed        Zy)WritableAttributec                    dt        | j                        dz   z  }t        | j                        dk(  r2t        | j                        dz   t        | j                  d         z   }nt        | j                        dkD  r^t        | j                        dz   t        | j                  d         z   }| j                  dd  D ]  }|t        |z   t        |      z   z  } n!t        | j                        t        d      z   }| j
                  j                  | j                  j                  v rF|t        |z   dz   t        | j                  j                  | j
                  j                           z   z  }|S )Nr.   r/   r   r-   r   z: <Virtual>z	CHANGES: )
r0   r   r   r   r   r   r$   r!   _changesstr)r(   r3   r2   r4   s       r*   r5   zWritableAttribute.__repr__   s1   DHH)*t{{q "488,t36HUV6XXA!"488,t36HUV6XXAQR BWv%(:5(AAAB #488,/A-/PPA??4::#6#666!K/#djj6I6I$//J^J^6_2```Ar6   c                 0    | j                  |       t        S r   )addEllipsisrI   s     r*   __iadd__zWritableAttribute.__iadd__   s    r6   c                 0    | j                  |       t        S r   )deletera   rI   s     r*   __isub__zWritableAttribute.__isub__   s    Er6   c                    | j                   r-| j                   j                  r| j                   j                  }n| j                  }|| j                  j                  vs|rg | j                  j                  |<   | j                  j                  |   j                  |       t        t              r1t        t        d|| j                  | j                  j                         | j                  j                  j                  t               y )Nz5updated changes <%r> for <%s> attribute in <%s> entry)r   r$   r   r!   r]   appendr   r   r   entry_dn_state
set_statusr   )r(   changes
remove_oldr   s       r*   _update_changesz!WritableAttribute._update_changes   s    ??t33//&&C((Cdjj)))Z')DJJ$

C ''0x QSZ\`\d\dfjfpfpfyfyz

$$%;<r6   c                    t        t              r1t        t        d|| j                  | j                  j
                         | j                  j                  j                  t        k(  r.d}t        t              rt        t        d||        t        |      | j                  j                  t        t        t        fv rE| j                  j                  dz   }t        t              rt        t        d||        t        |      |.d}t        t              rt        t        d||        t        |      |d| j                  j!                  |      }|du r?d|d| j                  d	}t        t              rt        t        d||        t        |      |d
ur|}| j#                  t$        t'        |t(              r|f       y |gf       y )Nz)adding %r to <%s> attribute in <%s> entryz0cannot perform a modify operation in a new entry%s for <%s>z - cannot add attributeszvalue to add cannot be NoneFvalue '' non valid for attribute ''T)r   r   r   r   r!   rh   ri   _initial_statusr   r   r
   entry_statusr   r   r   r   validaterm   r   
isinstancer	   r(   r   error_message	validateds       r*   r`   zWritableAttribute.add   sp   x EvtxxY]YcYcYlYlm::,,>NM5!E=->!-00::""'@BY[t&uu JJ336PPM5!E=->!-00>9M5!E=->!-00008IE!QWY]YaYa bu%}mTB%m44$&"jJv~4V&ef]c\defr6   c                    t        t              r1t        t        d|| j                  | j                  j
                         | j                  j                  t        t        t        fv rE| j                  j                  dz   }t        t              rt        t        d||        t        |      |.d}t        t              rt        t        d||        t        |      | j                  j                  |      }|du r?d|d| j                  d}t        t              rt        t        d||        t        |      |d	ur|}| j                  t        t!        |t"              r|n|gfd	
       y )Nz*setting %r to <%s> attribute in <%s> entryz - cannot set attributesro   znew value cannot be NoneFrp   rq   rr   T)rl   )r   r   r   r   r!   rh   rt   r   r   r   r   r
   r   ru   rm   r   rv   r	   rw   s       r*   r&   zWritableAttribute.set   s/   x FPTPXPXZ^ZdZdZmZmn::""'@BY[t&uu JJ336PPM5!E=->!-00>6M5!E=->!-00OO,,V4	MSUYU]U]^M5!E=->!-00d"Fn
6>8Zfag`hivz{r6   c                    t        t              r1t        t        d|| j                  | j                  j
                         | j                  j                  j                  t        k(  r.d}t        t              rt        t        d||        t        |      | j                  j                  t        t        t        fv rE| j                  j                  dz   }t        t              rt        t        d||        t        |      |.d}t        t              rt        t        d||        t        |      t        |t               s|g}|D ]^  }|| j"                  vsd|ddj%                  | j"                        d	}t        t              rt        t        d||        t        |       | j'                  t(        |f       y )
Nz-deleting %r from <%s> attribute in <%s> entryz/cannot delete an attribute value in a new entryro   z - cannot delete attributeszvalue to delete cannot be Nonerp   z' not present in 'z, rr   )r   r   r   r   r!   rh   ri   rs   r   r   r
   rt   r   r   r   rv   r	   r   joinrm   r   )r(   r   rx   single_values       r*   rd   zWritableAttribute.delete   si   x I6SWS[S[]a]g]g]p]pq::,,>MM5!E=->!-00::""'@BY[t&uu JJ336SSM5!E=->!-00><M5!E=->!-00&.1XF" 	5L4;;.HTVZV_V_`d`k`kVl mu%}mTB%m44	5 	mV45r6   c                 4   t        t              r0t        t        d| j                  | j                  j
                         | j                  j                  j                  t        k(  r.d}t        t              rt        t        d||        t        |      | j                  j                  t        t        t        fv rE| j                  j                  dz   }t        t              rt        t        d||        t        |      | j                  t         g fd       y )Nz%removing <%s> attribute in <%s> entryz)cannot remove an attribute in a new entryro   z - cannot remove attributesT)r   r   r   r   r!   rh   ri   rs   r   r   r
   rt   r   r   r   rm   r   )r(   rx   s     r*   removezWritableAttribute.remove  s    x A488TZZM`M`a::,,>GM5!E=->!-00::""'@BY[t&uu JJ336SSM5!E=->!-00nb148r6   c                 x   t        t              r0t        t        d| j                  | j                  j
                         | j                  j                  | j                  = | j                  j                  sD| j                  j                  j                  | j                  j                  j                         y y )Nz'discarding <%s> attribute in <%s> entry)
r   r   r   r   r!   rh   r]   ri   rj   rs   r8   s    r*   discardzWritableAttribute.discard  sw    x CTXXtzzObObcJJ)zz""JJ(():):)J)JK #r6   c                 4    t        | j                        rdS dS )NFTr;   r8   s    r*   virtualzWritableAttribute.virtual  s    DKK(u2d2r6   c                     | j                   | j                  j                  v r#| j                  j                  | j                      S y r   )r   r!   r]   r8   s    r*   rk   zWritableAttribute.changes  s4    88tzz***::&&txx00r6   N)F)rP   rQ   rR   r5   rb   re   rm   r`   r&   rd   r   r   rT   r   rk   rM   r6   r*   r[   r[      sZ    =g<|06:9L 3 3  r6   r[   N)rS   osr   rX   r   r   r   r	   core.exceptionsr
   
utils.reprr   r   r   r   r   r   	utils.logr   r   r   r   r   r   objectr   rV   r[   rM   r6   r*   <module>r      sX   2  H H - + D  D J JIH IHX9 6W	 Wr6   