
    5i"                         d Z ddlmZ ddlmZmZ ddlmZ ddgZdZ	dZ
d	Zd
ZdZdZdZdZ G d de      Z G d d      Zy)z$
event-stream library for `awscrt`.
    )IntEnum)AnyUnion)UUID
HeaderTypeHeaderi   i i  i   il         l    c                   R    e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZ	 dZ		 dZ
	 d	Z	 d
Z	 dZ	 d Zy)r   z-Supported types for the value within a Headerr                           	   c                     t        |       S N)str)selfformat_specs     }/home/marpiech/ifpan-abm-pgxpred/analysis/marpiech-gwas-test/venv/lib/python3.12/site-packages/awscrt/eventstream/__init__.py
__format__zHeaderType.__format__D   s    4y    N)__name__
__module____qualname____doc__	BOOL_TRUE
BOOL_FALSEBYTEINT16INT32INT64BYTE_BUFSTRING	TIMESTAMPr   r    r   r   r   r      sl    7I3 J3 D$E%E%E%HF( I/ D+r   c                   &   e Zd ZdZdededefdZedede	dd fd       Z
edededd fd       Zedededd fd	       Zedededd fd
       Zedededd fd       Zededeeef   dd fd       Zedededd fd       Zedededd fd       Zedededd fd       Zed        Zd Zedefd       Zedefd       Zedefd       ZdedefdZde	fdZdefdZ defdZ!defdZ"defdZ#deeef   fdZ$defdZ%defdZ&defdZ'd Z(d  Z)y!)"r   zA header in an event-stream message.

    Each header has a name, value, and type.
    :class:`HeaderType` enumerates the supported value types.

    Create a header with one of the Header.from_X() functions.
    namevalueheader_typec                 .    || _         || _        || _        y r   )_name_value_type)r   r+   r,   r-   s       r   __init__zHeader.__init__R   s    
 
r   returnc                 f    |r | |dt         j                        S  | |dt         j                        S )zWCreate a Header of type :attr:`~HeaderType.BOOL_TRUE` or :attr:`~HeaderType.BOOL_FALSE`TF)r   r    r!   clsr+   r,   s      r   	from_boolzHeader.from_boolX   s1     tT:#7#788tUJ$9$9::r   c                     t        |      }|t        k  s	|t        kD  rt        dj	                  |             | ||t
        j                        S )zcCreate a Header of type :attr:`~HeaderType.BYTE`

        The value must fit in an 8-bit signed intz(Value {} cannot fit in signed 8-bit byte)int	_BYTE_MIN	_BYTE_MAX
ValueErrorformatr   r"   r5   s      r   	from_bytezHeader.from_byte`   sF    
 E
9	 1GNNuUVV4
00r   c                     t        |      }|t        k  s	|t        kD  rt        dj	                  |             | ||t
        j                        S )zeCreate a Header of type :attr:`~HeaderType.INT16`

        The value must fit in an 16-bit signed intz(Value {} cannot fit in signed 16-bit int)r9   
_INT16_MIN
_INT16_MAXr<   r=   r   r#   r5   s      r   
from_int16zHeader.from_int16j   H    
 E
:!3GNNuUVV4
 0 011r   c                     t        |      }|t        k  s	|t        kD  rt        dj	                  |             | ||t
        j                        S )zeCreate a Header of type :attr:`~HeaderType.INT32`

        The value must fit in an 32-bit signed intz(Value {} cannot fit in signed 32-bit int)r9   
_INT32_MIN
_INT32_MAXr<   r=   r   r$   r5   s      r   
from_int32zHeader.from_int32t   rC   r   c                     t        |      }|t        k  s	|t        kD  rt        dj	                  |             | ||t
        j                        S )zeCreate a Header of type :attr:`~HeaderType.INT64`

        The value must fit in an 64-bit signed intz(Value {} cannot fit in signed 64-bit int)r9   
_INT64_MIN
_INT64_MAXr<   r=   r   r%   r5   s      r   
from_int64zHeader.from_int64~   rC   r   c                 2     | ||t         j                        S )zcCreate a Header of type :attr:`~HeaderType.BYTE_BUF`

        The value must be a bytes-like object)r   r&   r5   s      r   from_byte_bufzHeader.from_byte_buf   s    
 4
 3 344r   c                 H    t        |      } | ||t        j                        S )z2Create a Header of type :attr:`~HeaderType.STRING`)r   r   r'   r5   s      r   from_stringzHeader.from_string   s"     E
4
 1 122r   c                     t        |      }|t        k  s	|t        kD  rt        dj	                  |             | ||t
        j                        S )zyCreate a Header of type :attr:`~HeaderType.TIMESTAMP`

        Value must be a posix timestamp (seconds since Unix epoch)z!Value {} exceeds timestamp limits)r9   rI   rJ   r<   r=   r   r(   r5   s      r   from_timestampzHeader.from_timestamp   sH     E
:!3@GGNOO4
 4 455r   c                     t        |t              s#t        dj                  t	        |                   | ||t
        j                        S )zRCreate a Header of type :attr:`~HeaderType.UUID`

        The value must be a UUIDzValue must be UUID, not {})
isinstancer   	TypeErrorr=   typer   r5   s      r   	from_uuidzHeader.from_uuid   s<     %&8??ULMM4
00r   c                 v    |\  }}}t        |      }|t         j                  k(  rt        |      } | |||      S )N)bytes)r   r   )r6   binding_tupler+   r,   r-   s        r   _from_binding_tuplezHeader._from_binding_tuple   s?     $1 e[ -*//)u%E4,,r   c                     | j                   t        j                  k(  r| j                  j                  }n| j                  }| j
                  || j                   fS r   )r1   r   r   r0   rX   r/   )r   r,   s     r   _as_binding_tuplezHeader._as_binding_tuple   s?    ::(KK%%EKKE

E4::..r   c                     | j                   S )zHeader name)r/   r   s    r   r+   zHeader.name        zzr   c                     | j                   S )zHeader type)r1   r^   s    r   rU   zHeader.type   r_   r   c                     | j                   S )zHeader value

        The header's type determines the value's type.
        Use the value_as_X() methods for type-checked queries.)r0   r^   s    r   r,   zHeader.value   s     {{r   c                     | j                   |k7  r%t        dj                  | j                   |            | j                  S )NzHeader type is {}, not {})r1   rT   r=   r0   )r   r-   s     r   	_value_aszHeader._value_as   s5    ::$7>>tzz;WXX{{r   c                     | j                   t        j                  k(  ry| j                   t        j                  k(  ryt	        dj                  | j                   t        j                  t        j                              )z}Return bool value

        Raises an exception if type is not :attr:`~HeaderType.BOOL_TRUE` or :attr:`~HeaderType.BOOL_FALSE`TFzHeader type is {}, not {} or {})r1   r   r    r!   rT   r=   r^   s    r   value_as_boolzHeader.value_as_bool   sb     ::---::...-44

$$%%'( 	(r   c                 @    | j                  t        j                        S )zeReturn value of 8-bit signed int

        Raises an exception if type is not :attr:`~HeaderType.BYTE`)rc   r   r"   r^   s    r   value_as_bytezHeader.value_as_byte        ~~joo..r   c                 @    | j                  t        j                        S )zgReturn value of 16-bit signed int

        Raises an exception if type is not :attr:`~HeaderType.INT16`)rc   r   r#   r^   s    r   value_as_int16zHeader.value_as_int16        ~~j..//r   c                 @    | j                  t        j                        S )zgReturn value of 32-bit signed int

        Raises an exception if type is not :attr:`~HeaderType.INT32`)rc   r   r$   r^   s    r   value_as_int32zHeader.value_as_int32   rk   r   c                 @    | j                  t        j                        S )zgReturn value of 64-bit signed int

        Raises an exception if type is not :attr:`~HeaderType.INT64`)rc   r   r%   r^   s    r   value_as_int64zHeader.value_as_int64   rk   r   c                 @    | j                  t        j                        S )z^Return value of bytes

        Raises an exception if type is not :attr:`~HeaderType.BYTE_BUF`)rc   r   r&   r^   s    r   value_as_byte_bufzHeader.value_as_byte_buf   s     ~~j1122r   c                 @    | j                  t        j                        S )z]Return value of string

        Raises an exception if type is not :attr:`~HeaderType.STRING`)rc   r   r'   r^   s    r   value_as_stringzHeader.value_as_string   s     ~~j//00r   c                 @    | j                  t        j                        S )z~Return value of timestamp (seconds since Unix epoch)

        Raises an exception if type is not :attr:`~HeaderType.TIMESTAMP`)rc   r   r(   r^   s    r   value_as_timestampzHeader.value_as_timestamp  s     ~~j2233r   c                 @    | j                  t        j                        S )zYReturn value of UUID

        Raises an exception if type is not :attr:`~HeaderType.UUID`)rc   r   r   r^   s    r   value_as_uuidzHeader.value_as_uuid
  rh   r   c                     dj                  | j                  t        | j                        | j                  j
                        S )Nz{}: {} <{}>)r=   r/   reprr0   r1   r+   r^   s    r   __str__zHeader.__str__  s3    ##JJJJOO 	r   c                     dj                  | j                  j                  t        | j                        t        | j
                        t        | j                              S )Nz{}({}, {}, {}))r=   	__class__r   ry   r/   r0   r1   r^   s    r   __repr__zHeader.__repr__  sF    &&NN##	 	r   N)*r   r   r   r   r   r   r   r2   classmethodboolr7   r9   r>   rB   rG   rK   r   rX   	bytearrayrM   rO   rQ   r   rV   rZ   r\   propertyr+   rU   r,   rc   re   rg   rj   rm   ro   rq   rs   ru   rw   rz   r}   r)   r   r   r   r   I   s   !S ! !: ! ;S ; ;( ; ; 1S 1 1 1 1 2c 2# 2( 2 2 2c 2# 2( 2 2 2c 2# 2( 2 2 5 5U5)3C-D 5 5 5 3s 33 38 3 3
 6# 6c 6h 6 6 1S 1 1( 1 1 - -/ c   j   s  Z C 
(t (/s /0 00 00 035	)9#: 31 14C 4/t /r   N)r   enumr   typingr   r   uuidr   __all__r:   r;   r@   rA   rE   rF   rI   rJ   r   r   r)   r   r   <module>r      sb      
" 		





- -`R Rr   