U
    I_ะ  ใ                   @   sJ   d dl Z dd ZG dd deZG dd deZejZG dd	 d	eZdS )
้    Nc                 C   s4   t | tr| S t | tr"|  dกS dd | D S d S )N๚utf-8c                 S   s   g | ]}t |qS ฉ )ฺ_recursive_encode)ฺ.0ฺor   r   ๚+/usr/lib/python3/dist-packages/_ldb_text.pyฺ
<listcomp>   s     z%_recursive_encode.<locals>.<listcomp>)ฺ
isinstanceฺbytesฺstrฺencode)ฺobjr   r   r   r   	   s
    


r   c                   @   sX   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd ZdS )ฺ	_WrapBasec                 C   s   |   | ก}||_|S ฉN)ฺ__new__ฺ_wrapped)ฺclsฺwrappedฺselfr   r   r   ฺ_wrap   s    
z_WrapBase._wrapc                 C   s
   t | jS r   )ฺlenr   ฉr   r   r   r   ฺ__len__   s    z_WrapBase.__len__c                 C   s$   t |dr| j|jkS | j|kS d S ฉNr   ฉฺhasattrr   ฉr   ฺotherr   r   r   ฺ__eq__   s    
z_WrapBase.__eq__c                 C   s$   t |dr| j|jkS | j|kS d S r   r   r   r   r   r   ฺ__ne__#   s    
z_WrapBase.__ne__c                 C   s$   t |dr| j|jk S | j|k S d S r   r   r   r   r   r   ฺ__lt__)   s    
z_WrapBase.__lt__c                 C   s$   t |dr| j|jkS | j|kS d S r   r   r   r   r   r   ฺ__le__/   s    
z_WrapBase.__le__c                 C   s$   t |dr| j|jkS | j|kS d S r   r   r   r   r   r   ฺ__gt__5   s    
z_WrapBase.__gt__c                 C   s$   t |dr| j|jkS | j|kS d S r   r   r   r   r   r   ฺ__ge__;   s    
z_WrapBase.__ge__c                 C   s   dt | j S )Nz%s.text)ฺreprr   r   r   r   r   ฺ__repr__A   s    z_WrapBase.__repr__N)ฺ__name__ฺ
__module__ฺ__qualname__ฺclassmethodr   r   r   r   r    r!   r"   r#   r%   r   r   r   r   r      s   
r   c                   @   s8   e Zd ZdZdd Zdd Zedd Zedd	 Zd
S )ฺMessageElementTextWrapperz(Text interface for a LDB message elementc                 c   s   | j D ]}| dกV  qd S ฉNr   ฉr   ฺdecode)r   ฺitemr   r   r   ฺ__iter__I   s    
z"MessageElementTextWrapper.__iter__c                 C   s$   | j | }|d krd S | dกS d S r+   r,   ฉr   ฺkeyฺresultr   r   r   ฺ__getitem__M   s    
z%MessageElementTextWrapper.__getitem__c                 C   s   | j jS r   )r   ฺflagsr   r   r   r   r4   T   s    zMessageElementTextWrapper.flagsc                 C   s   | j jS r   )r   ฺ	set_flagsr   r   r   r   r5   X   s    z#MessageElementTextWrapper.set_flagsN)	r&   r'   r(   ฺ__doc__r/   r3   ฺpropertyr4   r5   r   r   r   r   r*   E   s   
r*   c                   @   s~   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	e
dd Ze
dd Ze
dd Ze
dd Zejdd ZdS )ฺMessageTextWrapperz Text interface for a LDB messagec                 C   s"   | j | }|d krd S t|S d S r   )r   ฺ_wrap_elementr0   r   r   r   r3   d   s    
zMessageTextWrapper.__getitem__c                 O   s>   | j j||}t|tjr"t|S t|tr6| dกS |S d S r+   )r   ฺgetr	   ฺldbZMessageElementr9   r
   r-   )r   ฺargsฺkwargsr2   r   r   r   r:   k   s    

zMessageTextWrapper.getc                 C   s   t || j|< d S r   )r   r   )r   r1   r.   r   r   r   ฺ__setitem__t   s    zMessageTextWrapper.__setitem__c                 C   s   | j |= d S r   )r   )r   r1   r   r   r   ฺ__delitem__w   s    zMessageTextWrapper.__delitem__c                 C   s   dd | j  ก D S )Nc                 S   s   g | ]}t |qS r   ฉr9   )r   ฺelr   r   r   r   {   s     z/MessageTextWrapper.elements.<locals>.<listcomp>)r   ฺelementsr   r   r   r   rB   z   s    zMessageTextWrapper.elementsc                 C   s   dd | j  ก D S )Nc                 S   s   g | ]\}}|t |fqS r   r@   )r   ฺattrrA   r   r   r   r   ~   s     z,MessageTextWrapper.items.<locals>.<listcomp>)r   ฺitemsr   r   r   r   rD   }   s    zMessageTextWrapper.itemsc                 C   s   | j jS r   )r   ฺkeysr   r   r   r   rE      s    zMessageTextWrapper.keysc                 C   s   | j jS r   )r   ฺremover   r   r   r   rF      s    zMessageTextWrapper.removec                 C   s   | j jS r   )r   ฺaddr   r   r   r   rG      s    zMessageTextWrapper.addc                 C   s   | j jS r   ฉr   ฺdnr   r   r   r   rI      s    zMessageTextWrapper.dnc                 C   s   || j _d S r   rH   )r   Z	new_valuer   r   r   rI      s    N)r&   r'   r(   r6   r3   r:   r>   r?   rB   rD   r7   rE   rF   rG   rI   ฺsetterr   r   r   r   r8   `   s"   	



r8   )r;   r   ฺobjectr   r*   r   r9   r8   r   r   r   r   ฺ<module>   s
   	3