o
    ¢ØÆhD	  ã                   @   s4   d dl mZ d dlmZmZ G dd„ dƒZeƒ ZdS )é    )ÚAtomic)ÚDeserializationErrorÚSerializationErrorc                   @   sN   e Zd ZdZ	ddd„Zeddd„ƒZed	d
„ ƒZdd„ Zdd„ Z	dd„ Z
dS )ÚTextaµ  
    A sedes object for encoded text data of certain length.

    :param min_length: the minimal length in encoded characters or `None` for no lower
                       limit
    :param max_length: the maximal length in encoded characters or `None` for no upper
                       limit
    :param allow_empty: if true, empty strings are considered valid even if
                        a minimum length is required otherwise
    NFÚutf8c                 C   s4   |pd| _ |d u rtdƒ| _n|| _|| _|| _d S )Nr   Úinf)Ú
min_lengthÚfloatÚ
max_lengthÚallow_emptyÚencoding)Úselfr   r
   r   r   © r   ú[/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/rlp/sedes/text.pyÚ__init__   s   

zText.__init__c                 C   s   | |||d�S )zFCreate a sedes for text data with exactly `length` encoded characters.)r   r   )ÚclsÚlengthr   r   r   r   Úfixed_length!   s   zText.fixed_lengthc                 C   s
   t |tƒS )N)Ú
isinstanceÚstr)r   Úobjr   r   r   Úis_valid_type&   s   
zText.is_valid_typec                 C   s.   t | j|  ko| jkn  | jo|dkfƒS )Nr   )Úanyr   r
   r   )r   r   r   r   r   Úis_valid_length*   s
   þÿzText.is_valid_lengthc                 C   sD   |   |¡stdt|ƒ› d�|ƒ‚|  t|ƒ¡std|ƒ‚| | j¡S )NzObject is not a serializable (ú)zObject has invalid length)r   r   Útyper   ÚlenÚencoder   )r   r   r   r   r   Ú	serialize2   s
   

zText.serializec              
   C   s€   t |tƒstdt|ƒj› d�|ƒ‚z| | j¡}W n ty, } ztt|ƒ|ƒ‚d }~ww |  	t
|ƒ¡r6|S tt|ƒ› d�|ƒ‚)NzObjects of type z cannot be deserializedz has invalid length)r   r   r   r   Ú__name__Údecoder   ÚUnicodeDecodeErrorr   r   r   )r   ÚserialÚ
text_valueÚerrr   r   r   Údeserialize;   s   
þ€ÿzText.deserialize)NNFr   )F)r   Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr   r   r   r   r%   r   r   r   r   r   
   s    
ÿ
	r   N)Ú
rlp.atomicr   Úrlp.exceptionsr   r   r   Útextr   r   r   r   Ú<module>   s    
C