a
    +'^ะ  ใ                   @   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>   ๓    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 u 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   r5   T   s    zMessageElementTextWrapper.flagsc                 C   s   | j jS r   )r   ฺ	set_flagsr   r   r   r   r6   X   s    z#MessageElementTextWrapper.set_flagsN)	r'   r(   r)   ฺ__doc__r0   r4   ฺpropertyr5   r6   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 u rd S t|S d S r   )r   ฺ_wrap_elementr1   r   r   r   r4   d   s    
zMessageTextWrapper.__getitem__c                 O   sB   | j j|i |ค}t|tjr&t|S t|tr:| dกS |S d S r,   )r   ฺgetr
   ฺldbZMessageElementr:   r   r.   )r   ฺargsฺkwargsr3   r   r   r   r;   k   s    

zMessageTextWrapper.getc                 C   s   t || j|< d S r   )r   r   )r   r2   r/   r   r   r   ฺ__setitem__t   s    zMessageTextWrapper.__setitem__c                 C   s   | j |= d S r   )r   )r   r2   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   ฉr:   )r   ฺelr   r   r   r   {   r	   z/MessageTextWrapper.elements.<locals>.<listcomp>)r   ฺelementsr   r   r   r   rC   z   s    zMessageTextWrapper.elementsc                 C   s   dd | j  ก D S )Nc                 S   s   g | ]\}}|t |fqS r   rA   )r   ฺattrrB   r   r   r   r   ~   r	   z,MessageTextWrapper.items.<locals>.<listcomp>)r   ฺitemsr   r   r   r   rE   }   s    zMessageTextWrapper.itemsc                 C   s   | j jS r   )r   ฺkeysr   r   r   r   rF      s    zMessageTextWrapper.keysc                 C   s   | j jS r   )r   ฺremover   r   r   r   rG      s    zMessageTextWrapper.removec                 C   s   | j jS r   )r   ฺaddr   r   r   r   rH      s    zMessageTextWrapper.addc                 C   s   | j jS r   ฉr   ฺdnr   r   r   r   rJ      s    zMessageTextWrapper.dnc                 C   s   || j _d S r   rI   )r   Z	new_valuer   r   r   rJ      s    N)r'   r(   r)   r7   r4   r;   r?   r@   rC   rE   r8   rF   rG   rH   rJ   ฺsetterr   r   r   r   r9   `   s"   	



r9   )r<   r   ฺobjectr   r+   r   r:   r9   r   r   r   r   ฺ<module>   s
   	3