o
    "ѹg                  
   @   s  d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlmZ ddlZddlmZ zddlZW n eyS   dZY nw ddlZddlmZmZmZmZ ddlmZmZ ddlmZmZmZ ddl m!Z!m"Z" dd	l#m$Z$ dd
l%m&Z& ddl%m'Z' ddl%m(Z( ddl%m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/ g Z0dZ1e02e1 e3Z4e02e4 e5dZ6e02e6 e7dZ8e02e8 e9dZ:e02e: e;dZ<e02e< e=dZ>e02e> dZ?e02e? g Z@e02e@ i ZAe02eA eBZCe02eC dd ZDG dd dZEG dd deFZGe02eD e02eE e02eG eE ZHe02eH eG ZIe02eI edddgede0dd ZJdd ZKedddeL gd d! ZMeedg d"d#d$ ZNed%d& ZOed'd( ZPed)d* ZQed+d, ZRed-d. ZSeed/g d0d1d2 ZTeeedd3d4gd5d6 ZUed7d8 ZVdd9d:ZWed;d< ZXed=d> ZYed?d@ ZZedAdBdCgdDdE Z[edFdGdHdI\dJfdKdL\dJfgdMdN Z]edOdPdQgdRdS Z^eedg dTedUe+dVdW Z_dXdY Z`dZd[ Zaed\d]eafd^e`fgd_d` Zbedag dbdcdd Zcededf Zdedgdh Zeedidj Zfedkdl Zgedmdn Zhedodpdqdr\eiddsds jdt gdudvgdwedxg dydzd{ Zked|ddd}d~di gdd Zledg ddd Zmedddi gdd ZnedurG dd dejoZpdd ZqG dd dZredd Zsdd Ztedd Zuedd Zvedd Zwedd Zxdd Zyedddi gdd Zzdd Z{G dd de-Z|G dd de-Z}dd Z~edd Zedd ZejgZejejkre2ej eededd ZdS )z@Test the numpy pickler as a replacement of the standard pickler.    N)closing)Path)np
with_numpywith_lz4without_lz4)with_memory_profilermemory_used)parametrizeraiseswarns)numpy_pickleregister_compressor)data)_IO_BUFFER_SIZE)_detect_compressor)#_is_numpy_array_byte_order_mismatch)_ensure_native_byte_order)_COMPRESSORS_LZ4_PREFIXCompressorWrapperLZ4_NOT_INSTALLED_ERRORBinaryZlibFile    c                 c   s    | V  d S Nr   )xr   r   a/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/site-packages/joblib/test/test_numpy_pickle.py	_functionK   s   
r   c                   @      e Zd Zdd ZdS )_classc                 C      d S r   r   selfr   r   r   _methodP      z_class._methodN__name__
__module____qualname__r$   r   r   r   r   r    O       r    c                   @   r   )	_newclassc                 C   r!   r   r   r"   r   r   r   r$   U   r%   z_newclass._methodNr&   r   r   r   r   r+   T   r*   r+   compressmemberc                 C   sH   |  dj}tj|||d t|}|t|kr ||ks"J d S d S )Ntest.pklr,   )joinstrpathr   dumploadcopydeepcopy)tmpdirr,   r-   filenameZ_memberr   r   r   test_standard_typese   s   
r8   c                   C   s<   t t tdt  W d    d S 1 sw   Y  d S )Nfoo)r   
ValueErrorr   r2   dictr   r   r   r   test_value_errorr   s   
"r<   wrong_compress
   c                 C   sP   d | }tt}tjdd| d W d    n1 sw   Y  || d S )Nz%Non valid compress level given: "{0}"dummyr9   r/   )formatr   r:   r   r2   match)r=   Zexception_msgexcinfor   r   r   test_compress_level_errorx   s   
rD   )FTr      zlibc                 C   s  |  dj}tjd}|d}t|f|jf||f|||gfD ]E\}}tj	|||d}t
|dks5J |d |ks=J tj|d sGJ t|}|D ]
}	t|	tjsXJ qNtjt|t| q!tj|d ddtjd	}tj	|||d}t
|dksJ t|}t|tjurt|d
rt|t|sJ tj|| t }tj	|||d}t
|dksJ t|}
t|
t|sJ tj|
j|j tj|
j|j tj|
j|j d S )Nr.   r   r?      r/   r   mmapw+   )modeshapedtypeZ__array_prepare__)r0   r1   r   randomRandomStaterandom_sample	enumerateTr   r2   lenospathexistsr3   
isinstancendarraytestingassert_array_equalarraymemmapfloat64typehasattrComplexTestObjectarray_float	array_int	array_obj)r6   r,   r7   rndaindexobj	filenamesZobj_item
obj_loadedr   r   r   test_numpy_persistence   s:   
(


rl   c                 C   sL   t jtd t jd}| dj}tj||dd t|}t j	
|| d S )Nd   rN   r.   Tr/   )r   onesr   uint8r0   r1   r   r2   r3   rZ   r[   )r6   	big_arrayr7   Zarr_reloadedr   r   r   2test_numpy_persistence_bufferred_array_compression   s
   
rr   c                 C   s  t jd}|d}| dj}t|| tj|dd}t	|t j
s&J | dj}t }t|| tj|dd}t	|t|sEJ t	|jt j
sNJ |jjjrUJ t	|jt j
s^J |jjjreJ t	|jt j
rnJ t j|j|j t j|j|j t j|j|j tj|dd}|jjjsJ d|jdd< |jjjsJ d|jdd< tj|dd}t j|j|j t j|j|j tj|d	d |jjjsJ |jjdksJ |jjjsJ |jjdksJ d S )
Nr   r?   z	test1.pklr	mmap_modez	test2.pklr+g      $@rJ   )r   rO   rP   rQ   r0   r1   r   r2   r3   rX   r]   ra   r_   rb   flagsZ	writeablerc   rd   rZ   r[   rL   )r6   re   rf   r7   brh   rk   obj_reloadedr   r   r   test_memmap_persistence   sT   





rz   c                 C   s~   t jd}|d}t jddgtd}||f}| dj}t	|| tj
|dd\}}t|t js5J t|t jr=J d S )	Nr   r?   r   rx   rn   r.   rs   rt   )r   rO   rP   rQ   r\   objectr0   r1   r   r2   r3   rX   r]   )r6   re   rf   rx   	constructr7   Za_cloneZb_cloner   r   r   $test_memmap_persistence_mixed_dtypes   s   
r}   c                 C   s`   t jd}|d}t j|d}| dj}t	|| tj
|dd}t|t jjs.J d S )Nr   r?   g      ?r.   rs   rt   )r   rO   rP   rQ   maZmasked_greaterr0   r1   r   r2   r3   rX   Zmasked_array)r6   re   rf   r7   rx   r   r   r   test_masked_array_persistence  s   
r   c                 C   s   t jd}|d}| dj}tj||dd tt	}tj
|dd W d    n1 s/w   Y  dd	d
 |D }dd
 |D }t|dksOJ |t|d d| dks]J d S )Nr   r?   r.   r   r/   rv   rt   
c                 S   s   g | ]}t |qS r   )str.0wr   r   r   
<listcomp>  s    z3test_compress_mmap_mode_warning.<locals>.<listcomp>c                 S   s   g | ]}|j qS r   )messager   r   r   r   r     s    z6mmap_mode "r+" is not compatible with compressed file z. "r+" flag will be ignored.)r   rO   rP   rQ   r0   r1   r   r2   r   UserWarningr3   rT   r   )r6   re   rf   Zthis_filenamewarninfoZ	debug_msgr   r   r   test_compress_mmap_mode_warning  s    



r   
cache_size)Nr   r?   c                 C   s   |  dj}tjd}|d}td tjdd}t	j
|||d W d    n1 s/w   Y  |d ur:dnd}t||ksDJ |D ]}|jtksOJ t|jd	|ks[J qFd S )
Nr.   r   rG   alwaysTrecord)r   r   zzPlease do not set 'cache_size' in joblib.dump, this parameter has no effect and will be removed. You used 'cache_size={0}')r0   r1   r   rO   rP   rQ   warningssimplefiltercatch_warningsr   r2   rT   categoryDeprecationWarningr   r   rA   )r6   r   r7   re   rf   r   expected_nb_warningsr   r   r   r   test_cache_size_warning%  s    


r   TFc                 C   s   |  dj}td}tjdtd tjd}||fD ]7}|jd }|ttj	dd }t
tj|||d}td	 }	||	ks@J t
tj|}d
t }
|||
 k sRJ qd S )Nr.   r?   r?   rm   g    .ArM   rN   r     r/   g0@    )r0   r1   r   ro   intrp   nbytesr   rO   randintr	   r   r2   r   r3   )r6   r,   r7   Zsmall_arrayrq   rh   sizeZobj_filenameZmem_usedZwrite_buf_sizeZread_buf_sizer   r   r   test_memory_usage:  s   

r   c              
   C   s  t jdt ddt jdt ddt jdt ddt jdt ddt jdddd	d
gddt jdt jd dg}| dj}tj	||dd}t
|dksRJ t|}t||D ]$\}}t|t jrzt|}|j|jksrJ t j|| q\||ksJ q\d S )N   <i8rn   >i8<f8>f8r   abcrH   rf   rx   O      C'est l'été !ztemp.pkl.gzr/   )r   arangerN   r\   rp   tobytesr0   r1   r   r2   rT   r3   ziprX   rY   r   rZ   assert_equal)r6   expected_listfnameZdumped_filenamesresult_listresultexpectedr   r   r   $test_compressed_pickle_dump_and_loadU  s&   
r   c              
   C   s  t d| }t|d}ddd}|dd}||d}||kr/ztjdd}td	 tjd
ddd t	j
| |d}	W d   n1 sIw   Y  tj| }
d|
v s\d|
v r^dnd}t d|
rl|durldnd}|| }t||kszJ dd |D }dd |D }|D ]}t|jd| ksJ q|D ]}t | }t d| dt|jsJ qt|	|D ]$\}}t|tjrt|}|j|jksJ tj|| q||ksJ qW dS  ty. } zC|dkrt|tsJ d}|t|v sJ n| drtj d rt|tsJ t!t|v sJ n W Y d}~dS W Y d}~dS d}~ww z	t	
|  t"d ty[ } zd|}|t|j v sPJ W Y d}~dS d}~ww )zHelper function to test joblib pickle content.

    Note: currently only pickles containing an iterable are supported
    by this function.
    z.+py(\d)(\d).+r   rH   rE   )rH   rE   rK   Tr   r   ignoreZnumpyz"The compiler package is deprecated)moduler   rt   Nz_0.9z_0.8.4r   z_0.1.+.pkl$c                 S      g | ]
}t |jtr|qS r   )
issubclassr   r   r   r   r   r   r         z!_check_pickle.<locals>.<listcomp>c                 S   r   r   )r   r   r   r   r   r   r   r     r   zkThe file '{0}' has been generated with a joblib version less than 0.10. Please regenerate this pickle file.zmemmapped.+z.+segmentation faultzPYou may be trying to read with python 3 a joblib pickle generated with python 2..lz4z>Numpy pickle loading should have raised a ValueError exceptionz unsupported pickle protocol: {0})#rerB   r   groupgetr   r   r   filterwarningsr   r3   rU   rV   basenamesearchrT   r   r   rA   escaper   rX   r   rY   r   rN   rZ   r   	Exceptionr:   endswithr   argsr   AssertionError)r7   r   ru   Zversion_matchZpy_version_used_for_writingZ%py_version_to_default_pickle_protocolZpickle_reading_protocolZpickle_writing_protocolr   r   filename_baseZ expected_nb_deprecation_warningsZexpected_nb_user_warningsr   Zdeprecation_warningsZuser_warningsr   Zescaped_filenamer   r   excr   er   r   r   _check_picklem  s   








"r   c               	      s   t jdt ddt jdt ddt jdddddgd	dt jd
t jd t jg dt dddg} tj	tj
tjd td urJ d7   fddtD }|D ]}t||  qYd S )Nr   r   rn   r   r   r   rH   r   r   r   r   r   rH   r   ).pkl.gzz.gzip.bz2lz4).xz.lzmac                    s0   g | ] t  fd dD rtj qS )c                 3   s    | ]}  |V  qd S r   )r   )r   extfnr   r   	<genexpr>  s    zGtest_joblib_pickle_across_python_versions.<locals>.<listcomp>.<genexpr>)anyrU   rV   r0   )r   Zpickle_extensionstest_data_dirr   r   r     s    z=test_joblib_pickle_across_python_versions.<locals>.<listcomp>)r   r   rN   r\   rp   r   matrixrU   rV   dirnameabspathr   __file__lzmalistdirr   r   Zpickle_filenamesr   r   r   r   )test_joblib_pickle_across_python_versions  s"   r   c               	      s   t jdt ddt jdt ddt jdddddgd	dt jd
t jd t jg dt dddg} tj	tj
tj  fddt D }|D ]	}t|| dd qNd S )Nr   r   rn   r   r   r   rH   r   r   r   r   r   c                    s$   g | ]}| d rtj |qS )r   )r   rU   rV   r0   )r   r   r   r   r   r     s
    
zGtest_joblib_pickle_across_python_versions_with_mmap.<locals>.<listcomp>rs   rt   )r   r   rN   r\   rp   r   r   rU   rV   r   r   r   r   r   r   r   r   r   r   3test_joblib_pickle_across_python_versions_with_mmap  s   

r   c                  C   sX  t jddgddgdt jdt ddt jdt ddg} | D ]4}tjd	kr.t|r-J nt|s4J t|}|jjrL|jj	 D ]}|d
 jdk qB|jjdksTJ q t jddgddgdt jdt ddt jdt ddg}|D ]4}tjdkrt|rJ nt|sJ t|}|jjr|jj	 D ]}|d
 jdk q|jjdksJ qud S )N)r   g       @)rE   g      @) r   )r   r   rn   rE   r   r   bigr   =)r   r   )r   r   r   r   little)
r   r\   r   rN   sys	byteorderr   r   fieldsvalues)Z	be_arraysr\   Z	convertedfZ	le_arraysr   r   r   .test_numpy_array_byte_order_mismatch_detection  sB   



r   compress_tuple)rF   rE   gziprE   c                 C   s`   |  dj}tjd||d t|d}t||d ksJ W d    d S 1 s)w   Y  d S )Nr.   r@   r/   rbr   r0   r1   r   r2   openr   )r6   r   r7   r   r   r   r   test_compress_tuple_argument  s   "r   zcompress_tuple,message))rF   rE   extraz9Compress argument tuple should contain exactly 2 elements)wrongrE   z(Non valid compression method given: "{}"r   )rF   r   z$Non valid compress level given: "{}"c                 C   sR   |  dj}tt}tjd||d W d    n1 sw   Y  || d S )Nr.   r@   r/   )r0   r1   r   r:   r   r2   rB   )r6   r   r   r7   rC   r   r   r   &test_compress_tuple_argument_exception*  s
   
r   compress_stringrF   r   c                 C   s\   |  dj}tjd||d t|d}t||ksJ W d    d S 1 s'w   Y  d S )Nr.   r@   r/   r   r   )r6   r   r7   r   r   r   r   test_compress_string_argument9  s   "r   )r   rE      cmethodc           	   	   C   s  |  dj}tjdddtddddg d	i d
df}|dv r(td u r(td n|dkr6tj	d
 r6td |d | }|D ]K}t
j||||fd t|d}t||ksXJ W d    n1 sbw   Y  t
|}t|t|suJ t|tjrtj|| q>||ksJ q>d S )Nr.   )rm   rm   Zf8r   r?   r   rx   )rf   rH   r   r   g      ?r   xzzlzma is support not availabler   zlz4 is not installed..r/   r   )r0   r1   r   ro   ranger   pytestskipr   r   r   r2   r   r   r3   rX   r_   rY   rZ   r[   )	r6   r,   r   r7   ZobjectsZdump_filenamerh   r   ry   r   r   r   test_joblib_compression_formatsD  s*   

r   c                 C   sr   t t| d}| }W d   n1 sw   Y  t|d}|| W d   dS 1 s2w   Y  dS )zDecompress a gzip file.r   Nwb)r   r   GzipFilereadr   writeZsource_filenameZtarget_filenamefobufr   r   r   _gzip_file_decompressd  s   
"r  c                 C   sr   t | d}t| }W d   n1 sw   Y  t |d}|| W d   dS 1 s2w   Y  dS )zDecompress a zlib file.r   Nr   )r   rF   
decompressr   r  r  r   r   r   _zlib_file_decompressm  s   "r  zextension,decompress.zr   c                 C   sH   d}|  dj}|| }t|| ||| t|}||ks"J d S )Nza string to persistr.   )r0   r1   r   r2   r3   )r6   	extensionr  rh   Zfilename_rawZfilename_compressedry   r   r   r   'test_load_externally_decompressed_filesv  s   

r
  zextension,cmethod))r  rF   )r   r   )r   bz2)r   r   )r   r   )r   not-compressed)r   r  c                 C   s   |dv rt d u rtd | dj}d}|| }t|| t|d}t||ks-J W d    n1 s7w   Y  t	|}t
|t|sJJ ||ksPJ d S )Nr   zlzma is missingr.   zobject to dumpr   )r   r   r   r0   r1   r   r2   r   r   r3   rX   r_   )r6   r	  r   r7   rh   Z
dump_fnamer   ry   r   r   r   %test_compression_using_file_extension  s   

r  c           	   
   C   s4  t jddg}tjtjg}td ur|tjg7 }| dj	}|D ]w}|D ]r}||d}t
|| W d    n1 s<w   Y  ||d}t
|}W d    n1 sVw   Y  t|d}t
|}W d    n1 spw   Y  t|t jrt j|| t j|| q$||ksJ ||ksJ q$q d S )Nr   	some datar.   r   r   )r   rO   r  BZ2Filer   r   r   LZMAFiler0   r1   r   r2   r3   r   rX   rY   rZ   r[   )	r6   objsZfobjsr7   rh   Zfobjr   ry   Zobj_reloaded_2r   r   r   test_file_handle_persistence  s.   r  c                  C   sd   t jddg} | D ]%}t }t|| t|}t|t jr)t j	
|| q
||ks/J q
d S )Nr   r  )r   rO   ioBytesIOr   r2   r3   rX   rY   rZ   r[   )r  rh   r   ry   r   r   r   test_in_memory_persistence  s   
r  c                 C   s   t jd}| dj}t|d}t|| W d    n1 s"w   Y  t|d}tj|dd}W d    n1 s>w   Y  t j	|| d S )Nr   r.   r   r   rv   rt   )
r   rO   r0   r1   r   r   r2   r3   rZ   r[   )r6   rh   r7   r   ry   r   r   r   !test_file_handle_persistence_mmap  s   r  c              	   C   s   t jd}| dj}t|d}tj||dd W d    n1 s$w   Y  tt	|d<}t
t}tj|dd W d    n1 sHw   Y  t|d	ksUJ t|d
 jd|dd kseJ W d    d S 1 spw   Y  d S )Nr   r.   r   r   r/   r   rv   rt   r   r   zP"%(fileobj)r" is not a raw file, mmap_mode "%(mmap_mode)s" flag will be ignored.)fileobjru   )r   rO   r0   r1   r   r   r2   r   r   r   r   r   r3   rT   r   r   )r6   rh   r7   r   r   r   r   r   ,test_file_handle_persistence_compressed_mmap  s    

"r  c                  C   s   t jd} t }t| | tt}tj|dd W d    n1 s&w   Y  t	|dks3J t
|d jdddi ksBJ d S )Nr   rv   rt   r   r   zuIn memory persistence is not compatible with mmap_mode "%(mmap_mode)s" flag passed. mmap_mode option will be ignored.ru   )r   rO   r  r  r   r2   r   r   r3   rT   r   r   )rh   r  r   r   r   r   +test_file_handle_persistence_in_memory_mmap  s   
r  r   s   a little data as bytes.i'  z{}r   zlatin-1za little data as bytes.za large data as bytes.)idscompress_level)r   rE   	   c              
   C   s  |  dj}t|d}t|d|dO}| sJ || | | ks)J ttj	 |
  W d    n1 s=w   Y  ttj	 |  W d    n1 sVw   Y  W d    n1 sew   Y  |jsoJ tt |  W d    n1 sw   Y  W d    n1 sw   Y  t|dk}t|R}| sJ | sJ | | ksJ | |ksJ ttj	 |  W d    n1 sw   Y  | sJ |d | dksJ W d    n1 sw   Y  |jsJ W d    n	1 s
w   Y  t|d|d}| sJ || W d    n	1 s.w   Y  t|d}| |ksBJ | sIJ W d    n	1 sTw   Y  t|d|d}| sgJ || |  t|d}| |ks~J |  d S )Nr.   r   compresslevelr   r   )r0   r1   r   r   writabler  filenor   r  UnsupportedOperation_check_can_read_check_can_seekclosedr:   _check_not_closedreadableseekabler   _check_can_writeseektellclose)r6   r   r  r7   r   Zfzr   r   r   test_binary_zlibfile  sp   












r,  	bad_value   rf   c                 C   s`   |  dj}tt}t|d|d W d    n1 sw   Y  td|}|| d S )Nr.   r   r  zS'compresslevel' must be an integer between 1 and 9. You provided 'compresslevel={}')	r0   r1   r   r:   r   r   r   rA   rB   )r6   r-  r7   rC   patternr   r   r   +test_binary_zlibfile_bad_compression_levels<  s   
r0  bad_mode)rf   r   rs   r   r   rH   c                 C   sL   |  dj}tt}t|| W d    n1 sw   Y  |d d S )Nr.   zInvalid mode)r0   r1   r   r:   r   rB   )r6   r1  r7   rC   r   r   r   "test_binary_zlibfile_invalid_modesF  s
   
r2  bad_filec                 C   s@   t t}t| d W d    n1 sw   Y  |d d S )Nr   z1filename must be a str or bytes object, or a file)r   	TypeErrorr   rB   )r3  rC   r   r   r   *test_binary_zlibfile_invalid_filename_typeN  s   
r5  c                   @   r   )SubArrayc                 C   s   t t| ffS r   )_load_sub_arrayr   Zasarrayr"   r   r   r   
__reduce__[  s   zSubArray.__reduce__N)r'   r(   r)   r8  r   r   r   r   r6  Y      r6  c                 C   s   t | j}| |d d < |S r   )r6  rM   )Zarrdr   r   r   r7  ^  s   
r7  c                   @   s   e Zd ZdZdd ZdS )ra   z7A complex object containing numpy arrays as attributes.c                 C   s8   t jddd| _t jddd| _t jg ddd| _d S )Nrm   r^   rn   Zint32)rf   r?   g      4@r{   )r   r   rb   ro   rc   r\   rd   r"   r   r   r   __init__f  s   zComplexTestObject.__init__N)r'   r(   r)   __doc__r;  r   r   r   r   ra   c  s    ra   c                 C   sJ   |  dj}td}t|| t|}t|tsJ tj	|| d S )Nr.   )r?   )
r0   r1   r6  r   r2   r3   rX   r   rZ   r[   )r6   r7   rf   cr   r   r   test_numpy_subclassl  s   
r>  c                 C   sX   |  dj}d}t|t| t||ksJ t|| tt||ks*J d S )Nr.   {   )r0   r1   r   r2   r   r3   )r6   r7   valuer   r   r   test_pathlibv  s   rA  c                 C   s   |  dj}tddgddggdd  tjdddd d d dd d f fD ] }|jjr/J |jjr5J t	|| t
|}tj|| q'd S )	Nr.   r   rH   rE   rK   )r?   2      F)order)r0   r1   r   Zasfortranarrayro   rw   c_contiguousf_contiguousr   r2   r3   rZ   r[   )r6   r7   r\   array_reloadedr   r   r   "test_non_contiguous_array_pickling  s   "
rI  c                 C   sD   |  dj}td}tj||tjd t|}tj	
|| d S )Nr.   r?   protocol)r0   r1   r   zerosr   r2   pickleHIGHEST_PROTOCOLr3   rZ   r[   )r6   r7   
test_arrayrH  r   r   r   test_pickle_highest_protocol  s
   

rP  c            
   	   C   sJ  t d} d}ttjtj}|| |d t|}}| \}}|	d}t
| | W d    n1 s;w   Y  |	d}t
|}W d    n1 sUw   Y  t j||  t }	t
| |	 ||	  |	d}t
|}W d    n1 sw   Y  t j||  W d    d S 1 sw   Y  d S )Nr?   )	localhosti90  r   r   r   )r   r   socketAF_INETSOCK_STREAMbindlistencreate_connectionacceptmakefiler   r2   r3   rZ   r[   r  r  sendgetvalue)
rO  Z_ADDRZlistenerclientserverclient_addrZsfcfrH  Zbytes_to_sendr   r   r   test_pickle_in_socket  s,   


"r`  c                 C   s   |  dj}tj}tj|ddtj|ddg}t|| tj	|dd}t
|d tjs.J |d j|ks7J tj|| d S )N	test.mmaprp   rn   rs   rt   r   )r0   r1   rI   ZALLOCATIONGRANULARITYr   rL  ro   r   r2   r3   rX   r]   offsetrZ   r[   )r6   r   r   rh   Zmemmapsr   r   r    test_load_memmap_with_big_offset  s   rc  c                    sn   d}dG dd dt j G  fdddt}t||  t| j ks'J t| jks0J t| d S )N	test-nameztest-prefixc                   @      e Zd ZdS )z:test_register_compressor.<locals>.BinaryCompressorTestFileNr'   r(   r)   r   r   r   r   BinaryCompressorTestFile      rg  c                       s   e Zd Z fddZdS )z=test_register_compressor.<locals>.BinaryCompressorTestWrapperc                    s   t j|  d d S )Nrh   prefixr   r;  r"   rg  Zcompressor_prefixr   r   r;       
zFtest_register_compressor.<locals>.BinaryCompressorTestWrapper.__init__Nr'   r(   r)   r;  r   rl  r   r   BinaryCompressorTestWrapper  s    ro  )r  BufferedIOBaser   r   r   fileobj_factoryrj  pop)r6   compressor_namero  r   rl  r   test_register_compressor  s   rt  invalid_namec                 C   s@   t t}t| d  W d    n1 sw   Y  |d d S )Nz"Compressor name should be a string)r   r:   r   rB   )ru  rC   r   r   r   %test_register_compressor_invalid_name  s   
rv  c                     sd   G dd d G  fdddt } tt}td|   W d    n1 s&w   Y  |d d S )Nc                   @   re  )zCtest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectNrf  r   r   r   r   InvalidFileObject  rh  rw  c                       s   e Zd Z fddZdS )zJtest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapperc                    s   t j|  dd d S Ns   prefixri  rk  r"   rw  r   r   r;    rm  zStest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapper.__init__Nrn  r   ry  r   r   InvalidFileObjectWrapper  s    rz  invalidzQCompressor 'fileobj_factory' attribute should implement the file object interface)r   r   r:   r   rB   )rz  rC   r   ry  r   (test_register_compressor_invalid_fileobj  s   
r|  c                   @   r   )AnotherZlibCompressorWrapperc                 C   s   t j| tdd d S rx  )r   r;  r   r"   r   r   r   r;    s   z%AnotherZlibCompressorWrapper.__init__Nrn  r   r   r   r   r}    r9  r}  c                   @   r   ) StandardLibGzipCompressorWrapperc                 C   s   t j| tjdd d S rx  )r   r;  r   r   r"   r   r   r   r;  
  s   z)StandardLibGzipCompressorWrapper.__init__Nrn  r   r   r   r   r~    r9  r~  c                  C   s   d} t | t  tt}t | t  W d    n1 sw   Y  |d|  t | t dd | tv s8J t|  jt	j
ksBJ t|  d S )Nrd  z#Compressor '{}' already registered.T)force)r   r}  r   r:   r~  rB   rA   r   rq  r   r   rr  )rs  rC   r   r   r   +test_register_compressor_already_registered  s    
r  c                 C   s  dd l }d}|tv sJ t| j|jjksJ | dj}d}tj|||d t	|d}|
tttks8J W d    n1 sBw   Y  t||ksPJ t||d  t	|d}|
tttksiJ W d    n1 ssw   Y  t||ksJ d S )Nr   r   r.   	test datar/   r   r   )Z	lz4.framer   rq  frameZLZ4FrameFiler0   r1   r   r2   r   r   rT   r   r3   )r6   r   Z
compressorr   r   r   r   r   r   test_lz4_compression&  s    r  c                 C   s   |  dj}d}t}tt}tj||dd W d    n1 s!w   Y  || tt}t||d  W d    n1 sBw   Y  || d S )Nz
test.nolz4r  r   r/   r   )r0   r1   r   r   r:   r   r2   rB   )r6   r   r   msgrC   r   r   r    test_lz4_compression_without_lz4=  s   


r  rK  c                 C   s.  |  dj}tjd}tj|||d tj|dd}t|tj	s#J tj
|| |jjtj dks5J |jjs;J tjdtjdtjdtjdg}|  dj}tj|||d tj|dd}t|D ]&\}}t|tj	svJ tj
|| | |jjtj dksJ |jjsJ qjtjdtjdtjd	tjdtjd
tjdtjdtjdtjdtjdtjdtjdtjdtjdtjdtjdtjdtjdd	}|  dj}tj|||d tj|dd}	|	 D ](\}
}t|tj	sJ tj
||
 | |jjtj dksJ |jjsJ qd S )Nra  rH   rJ  rs   rt   r   z
test1.mmaprn   rE   r                     )	Za0Za1Za2a3Za4Za5Za6Za7Za8z
test2.mmap)r0   r1   r   rO   Zrandnr   r2   r3   rX   r]   rZ   r[   ctypesr   ZNUMPY_ARRAY_ALIGNMENT_BYTESrw   ZalignedrR   r   rp   items)r6   rK  r   rf   r]   Z
array_listZ
l_reloadedidxZ
array_dictZ
d_reloadedkeyr   r   r   test_memmap_alignment_paddingQ  sR   r  r   )r<  r4   rU   rO   r   r  r   r   r   rF   r  rM  rR  
contextlibr   rI   pathlibr   r   ImportErrorr   Zjoblib.test.commonr   r   r   r   r   r	   Zjoblib.testingr
   r   r   Zjoblibr   r   Zjoblib.testr   Zjoblib.numpy_pickle_utilsr   r   r   r   Zjoblib.compressorr   r   r   r   r   ZtypelistZ_noneappendr_   _typeboolZ_boolr   _intfloatZ_floatcomplexZ_complexr   _string_tupleZ_list_dictrT   Z_builtinr   r    r{   r+   Z	_instanceZ_objectr8   r<   r;   rD   rl   rr   rz   r}   r   r   r   r   r   r   r   r   r   r   rA   r   r   r   r  r  r
  r  r  r  r  r  r  r   encoder,  r0  r2  r5  rY   r6  r7  ra   r>  rA  rI  rP  r`  rc  rt  rv  r|  r}  r~  r  r  r  DEFAULT_PROTOCOL	protocolsrN  r  r   r   r   r   <module>   s|   	
















	2
	
1




S
 

(




		







4
	


	
		






