o
    ¢ØÆhý  ã                   @   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                   @   sL   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 )ÚBinaryag  
    A sedes object for binary data of certain length.

    :param min_length: the minimal length in bytes or `None` for no lower limit
    :param max_length: the maximal length in bytes or `None` for no upper limit
    :param allow_empty: if true, empty strings are considered valid even if
                        a minimum length is required otherwise
    NFc                 C   s.   |pd| _ |d u rtdƒ| _n|| _|| _d S )Nr   Úinf)Ú
min_lengthÚfloatÚ
max_lengthÚallow_empty)Úselfr   r	   r
   © r   ú]/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/rlp/sedes/binary.pyÚ__init__   s
   

zBinary.__init__c                 C   s   | |||d�S )z;Create a sedes for binary data with exactly `length` bytes.)r
   r   )ÚclsÚlengthr
   r   r   r   Úfixed_length   s   zBinary.fixed_lengthc                 C   s   t |ttfƒS )N)Ú
isinstanceÚbytesÚ	bytearray)r   Úobjr   r   r   Úis_valid_type!   s   zBinary.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Binary.is_valid_lengthc                 C   s<   t  |¡stdt|ƒ› d�|ƒ‚|  t|ƒ¡std|ƒ‚|S )NzObject is not a serializable (ú)zObject has invalid length)r   r   r   Útyper   Úlen)r   r   r   r   r   Ú	serialize-   s
   

zBinary.serializec                 C   sH   t |tƒstdt|ƒj› d�|ƒ‚|  t|ƒ¡r|S tt|ƒ› d�|ƒ‚)NzObjects of type z cannot be deserializedz has invalid length)r   r   r   r   Ú__name__r   r   )r   Úserialr   r   r   Údeserialize6   s   
þzBinary.deserialize)NNF)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   Úbinaryr   r   r   r   Ú<module>   s    
9