o
    
i
                     @   st   d Z zddlZdZW n ey   dZY nw zddlZdZW n ey)   dZY nw dddZdd Zdd	d
Z	dS )z=
Support for serialization of numpy data types with msgpack.
    NTFc                 C   s   t s|du r| S || S trt| tjr|  } t| tjrF| jjdkr+d}| jj	}nd}| jj
}d||| j| jd r@| jdS |  dS t| tjtjfrXd| jj
| jd	S t| trdd|  d
S |du rj| S || S )z8
    Data encoder for serializing numpy data types.
    NV   V    TC_CONTIGUOUS)   nd   type   kind   shape   dataF)r   r   r
   )   complexr
   )	has_numpyhas_cupy
isinstancecupyndarraygetnpdtypekinddescrstrshapeflagsdatatobytesbool_numbercomplex__repr__)objchainr   r    r!   P/home/ubuntu/.local/lib/python3.10/site-packages/srsly/msgpack/_msgpack_numpy.pyencode_numpy   s.   

r#   c                 C   s   t | tr	|  S t| S N)r   bytesdecoder   )xr!   r!   r"   tostr:   s   
r(   c                 C   s   z`d| v rH| d du r5d| v r| d dkrdd | d D }n| d }t j| d t |d	| d
 W S | d }t j| d t |d	d W S d| v rUtt| d W S |du r\| W S || W S  tyu   |du ro|  Y S ||  Y S w )z5
    Decoder for deserializing numpy data types.
    r   Tr   r   c                 S   s   g | ]}t d d |D qS )c                 s   s(    | ]}t |tu rt|n|V  qd S r$   )typer%   r(   ).0tr!   r!   r"   	<genexpr>N   s   & z*decode_numpy.<locals>.<listcomp>.<genexpr>)tuple)r*   dr!   r!   r"   
<listcomp>M   s    z decode_numpy.<locals>.<listcomp>r   r
   )r   r	   r   r   N)r   
frombufferr   reshaper   r(   KeyError)r   r    r   r!   r!   r"   decode_numpyA   s&   r3   r$   )
__doc__numpyr   r   ImportErrorr   r   r#   r(   r3   r!   r!   r!   r"   <module>   s    
 