
    n%@eU                         d Z ddlmZ ddlZddlZddlmZmZm	Z	 ddl
mZ ddlmZ ddlmZmZmZ d	 Zd
 Z G d de          Z	 ddlmZ n# e$ r 	 ddlZn# e$ r dZY nw xY wY nw xY wd ZddZeZeZd ZeZ ee          5  ddlZ ej        d           ej         Zej!        Z e	ej         d          Zej!        Zddd           n# 1 swxY w Y    ee          5  ddl"m Z ddl"m!Z ddd           n# 1 swxY w Y   d Z d Z!dS )z Store arrays

We put arrays on disk as raw bytes, extending along the first dimension.
Alongside each array x we ensure the value x.dtype which stores the string
description of the array's dtype.
    )suppressN)valmapidentitypartial   )	Interface)File)frame
framesplitsuffixc                 4    | j                                         S )z Serialize dtype to bytes

    >>> serialize_dtype(np.dtype('i4'))
    b'<i4'
    >>> serialize_dtype(np.dtype('M8[us]'))
    b'<M8[us]'
    )strencode)dts    +lib/python3.11/site-packages/partd/numpy.pyserialize_dtyper      s     6==??    c                     |                      d          r!t          j        t          |                     S t          j        |           S )z Parse text as numpy dtype

    >>> parse_dtype(b'i4')
    dtype('int32')

    >>> parse_dtype(b"[('a', 'i4')]")
    dtype([('a', '<i4')])
       [)
startswithnpdtypeeval)ss    r   parse_dtyper      s<     	||D xQ   x{{r   c                   \    e Zd ZddZd Zd Zd Zd Zd Zd Z	d	 Z
ed
             Zd ZdS )NumpyNc                     |rt          |t                    rt          |          }|| _        t	          j        |            d S N)
isinstancer   r	   partdr   __init__)selfr!   s     r   r"   zNumpy.__init__,   sD     	 
5#.. 	 KKE
4     r   c                     d| j         iS )Nr!   )r!   r#   s    r   __getstate__zNumpy.__getstate__2   s    $$r   c                     |                                 D ]@\  }}| j                            t          |d          t	          |j                             A | j        j        t          t          |          fi | d S )N.dtype)	itemsr!   isetr   r   r   appendr   	serialize)r#   datakwargskvs        r   r+   zNumpy.append5   sy    JJLL 	K 	KDAqJOOF1h//1I1IJJJJ
&D11<<V<<<<<r   c                      | j         j        |fi |}| j                             d |D             d          }t          t          |          }t	          t          t
          ||                    S )Nc                 .    g | ]}t          |d           S r(   r   .0keys     r   
<listcomp>zNumpy._get.<locals>.<listcomp><   s"    !H!H!HC&h"7"7!H!H!Hr   F)lock)r!   _getmapr   listdeserialize)r#   keysr.   bytesdtypess        r   r:   z
Numpy._get:   st    
////!H!H4!H!H!H&+ ! - -[&))CUF33444r   c                 D    d |D             } | j         j        |fi | d S )Nc                 .    g | ]}t          |d           S r3   r4   r5   s     r   r8   z Numpy.delete.<locals>.<listcomp>B   s"    7773X&&777r   )r!   delete)r#   r>   r.   keys2s       r   rC   zNumpy.deleteA   s8    77$777
%**6*****r   c                 8    | j                             ||          S r   )r!   _iset)r#   r7   values      r   rF   zNumpy._isetE   s    zU+++r   c                 4    | j                                         S r   )r!   dropr%   s    r   rI   z
Numpy.dropH   s    z   r   c                 8    | j                                          d S r   )r!   __del__r%   s    r   rK   zNumpy.__del__K   s    
r   c                     | j         j        S r   )r!   r9   r%   s    r   r9   z
Numpy.lockN   s    zr   c                 T    |                                    | j        j        | g|R   d S r   )rI   r!   __exit__)r#   argss     r   rN   zNumpy.__exit__R   s2    		
D(4((((((r   r   )__name__
__module____qualname__r"   r&   r+   r:   rC   rF   rI   rK   propertyr9   rN    r   r   r   r   +   s        ! ! ! !% % %= = =
5 5 5+ + +, , ,! ! !     X) ) ) ) )r   r   )msgpackFc                    | j         dk    r|                                                                 }t          t                    5  t          t          j        |d                    cd d d            S # 1 swxY w Y   t          t          j	        |t          j
                            S |                                 S )NOT)use_bin_type)protocol)r   flattentolistr   	Exceptionr
   rU   packbpickledumpsHIGHEST_PROTOCOLtobytes)xls     r   r,   r,   _   s    w#~~IIKK  i   	> 	>qt<<<==	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>V\!f.EFFFGGGyy{{s   #A66A:=A:c                    |dk    r	 t           j        dk    rddinddifdt          |           D             }n)# t          $ r d t          |           D             }Y nw xY wt	          j        t          t          t          |                    d	          }d
}|D ]+}||||t          |          z   <   |t          |          z  },|S t	          j	        | |          }|r|
                                }|S )NrW   )r         rawFencodingzutf-8c                 4    g | ]}t          j        |fi S rT   )rU   unpackb)r6   funpack_kwargss     r   r8   zdeserialize.<locals>.<listcomp>q   s;     2 2 2 oa99=99 2 2 2r   c                 6    g | ]}t          j        |          S rT   )r^   loads)r6   rk   s     r   r8   zdeserialize.<locals>.<listcomp>t   s     AAA!fl1ooAAAr   )r   r   )rU   versionr   r\   r   emptysumr;   len
frombuffercopy)r?   r   rt   blocksresultiblockrl   s          @r   r=   r=   i   s:   ||		B)++!&!+W 52 2 2 2)%002 2 2FF 	B 	B 	BAAz%/@/@AAAFFF	B #c#v..//s;;; 	 	E',F1QU^#$UOAAue,, 	#[[]]Fs   4> #A$#A$c                     | S r   rT   )r?   itemsizes     r   <lambda>r{      s     r   )typesize)compress)
decompressc                 V    |dk    rt          |           S t          | |j                  S NrW   )compress_textcompress_bytesrz   r?   r   s     r   r}   r}      s+    ||U###eU^444r   c                 J    |dk    rt          |           S t          |           S r   )decompress_textdecompress_bytesr   s     r   r~   r~      s'    ||u%%%&&&r   )F)#__doc__
contextlibr   r^   numpyr   toolzr   r   r   corer   filer	   utilsr
   r   r   r   r   r   pandasrU   ImportErrorr,   r=   r   r   r   r   bloscset_nthreadsr}   r~   snappyrT   r   r   <module>r      s                + + + + + + + + + +             , , , , , , , , , ,    )) )) )) )) ))I )) )) ))V           4 .. Xk ' 'LLLEq^N'GENQ777M&O' ' ' ' ' ' ' ' ' ' ' ' ' ' ' Xk 5 50000004444445 5 5 5 5 5 5 5 5 5 5 5 5 5 5
5 5 5' ' ' ' 'sZ   A A(AA(A"A(!A""A('A(<CCC$C==DD