
    (i                     B    d dl mZ d dlmZmZ  G d d      Z e       Zy)    )Atomic)DeserializationErrorSerializationErrorc                   L    e Zd ZdZd	dZed
d       Zed        Zd Zd Z	d Z
y)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
    Nc                 j    |xs d| _         |t        d      | _        || _        y || _        || _        y )Nr   inf)
min_lengthfloat
max_lengthallow_empty)selfr
   r   r   s       A/var/www/br/venv/lib/python3.12/site-packages/rlp/sedes/binary.py__init__zBinary.__init__   s9    $/#ElDO ' )DO&    c                      | |||      S )z;Create a sedes for binary data with exactly `length` bytes.)r    )clslengthr   s      r   fixed_lengthzBinary.fixed_length   s     66{;;r   c                 .    t        |t        t        f      S )N)
isinstancebytes	bytearray)r   objs     r   is_valid_typezBinary.is_valid_type!   s    #y122r   c                     t        | j                  |cxk  xr | j                  k  nc | j                  xr |dk(  f      S )Nr   )anyr
   r   r   )r   r   s     r   is_valid_lengthzBinary.is_valid_length%   s;    6<T__<  0Vq[
 	
r   c                     t         j                  |      st        dt        |       d|      | j	                  t        |            st        d|      |S )NzObject is not a serializable ()zObject has invalid length)r   r   r   typer   len)r   r   s     r   	serializezBinary.serialize-   sR    ##C($'Ed3i[PQ%RTWXX##CH-$%@#FF
r   c                     t        |t              s#t        dt        |      j                   d|      | j                  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   serials     r   deserializezBinary.deserialize6   sf    &&)&"4<#8#8"99PQ 
 F,M&$v,7J'KVTTr   )NNF)F)r&   
__module____qualname____doc__r   classmethodr   r   r   r$   r(   r   r   r   r   r   
   sD    ' < < 3 3

Ur   r   N)
rlp.atomicr   rlp.exceptionsr   r   r   binaryr   r   r   <module>r0      s%   6U 6Ur 
r   