a
    !f                  
   @   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y   dZY n0 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r6G 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   ^/var/www/html/python-backend/venv/lib/python3.9/site-packages/joblib/test/test_numpy_pickle.py	_functionK   s    r   c                   @   s   e Zd Zdd ZdS )_classc                 C   s   d S r   r   selfr   r   r   _methodP   s    z_class._methodN__name__
__module____qualname__r"   r   r   r   r   r   O   s   r   c                   @   s   e Zd Zdd ZdS )	_newclassc                 C   s   d S r   r   r    r   r   r   r"   U   s    z_newclass._methodNr#   r   r   r   r   r'   T   s   r'   compressmemberc                 C   sD   |  dj}tj|||d t|}|t|kr@||ks@J d S )Ntest.pklr(   )joinstrpathr   dumploadcopydeepcopy)tmpdirr(   r)   filenameZ_memberr   r   r   test_standard_typese   s
    
r4   c                   C   s:   t t tdt  W d    n1 s,0    Y  d S )Nfoo)r   
ValueErrorr   r.   dictr   r   r   r   test_value_errorr   s    
r8   wrong_compress
   c                 C   sP   d | }tt }tjdd| d W d    n1 s80    Y  || d S )Nz%Non valid compress level given: "{0}"dummyr5   r+   )formatr   r6   r   r.   match)r9   Zexception_msgexcinfor   r   r   test_compress_level_errorx   s    
.r@   )FTr      zlibc                 C   s  |  dj}tjd}|d}t|f|jf||f|||gfD ]\}}tj	|||d}t
|dksjJ |d |kszJ tj|d sJ t|}|D ]}	t|	tjsJ qtjt|t| qBtj|d ddtjd	}tj	|||d}t
|dksJ t|}t|tjurBt|d
rBt|t|sBJ tj|| t }tj	|||d}t
|dksxJ 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__)r,   r-   r   randomRandomStaterandom_sample	enumerateTr   r.   lenospathexistsr/   
isinstancendarraytestingassert_array_equalarraymemmapfloat64typehasattrComplexTestObjectarray_float	array_int	array_obj)r2   r(   r3   rndaindexobj	filenamesZobj_item
obj_loadedr   r   r   test_numpy_persistence   s:    
(


rh   c                 C   sL   t jtd t jd}| dj}tj||dd t|}t j	
|| d S )Nd   rJ   r*   Tr+   )r   onesr   uint8r,   r-   r   r.   r/   rV   rW   )r2   	big_arrayr3   Zarr_reloadedr   r   r   2test_numpy_persistence_bufferred_array_compression   s
    
rn   c                 C   s  t jd}|d}| dj}t|| tj|dd}t	|t j
sLJ | dj}t }t|| tj|dd}t	|t|sJ t	|jt j
sJ |jjjrJ t	|jt j
sJ |jjjrJ t	|jt j
rJ t j|j|j t j|j|j t j|j|j tj|dd}|jjjs0J d|jdd< |jjjsNJ 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      $@rF   )r   rK   rL   rM   r,   r-   r   r.   r/   rT   rY   r]   r[   r^   flagsZ	writeabler_   r`   rV   rW   rH   )r2   ra   rb   r3   brd   rg   obj_reloadedr   r   r   test_memmap_persistence   sT    





rv   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sjJ t|t jrzJ d S )	Nr   r;   r   rt   rj   r*   ro   rp   )r   rK   rL   rM   rX   objectr,   r-   r   r.   r/   rT   rY   )r2   ra   rb   rt   	constructr3   Za_cloneZb_cloner   r   r   $test_memmap_persistence_mixed_dtypes   s    
ry   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*   ro   rp   )r   rK   rL   rM   maZmasked_greaterr,   r-   r   r.   r/   rT   Zmasked_array)r2   ra   rb   r3   rt   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^0    Y  dd	d
 |D }dd
 |D }t|dksJ |t|d d| dksJ d S )Nr   r;   r*   r   r+   rr   rp   
c                 S   s   g | ]}t |qS r   )str.0wr   r   r   
<listcomp>      z3test_compress_mmap_mode_warning.<locals>.<listcomp>c                 S   s   g | ]
}|j qS r   )messager~   r   r   r   r     r   z6mmap_mode "r+" is not compatible with compressed file z. "r+" flag will be ignored.)r   rK   rL   rM   r,   r-   r   r.   r   UserWarningr/   rP   r}   )r2   ra   rb   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^0    Y  |d urtdnd}t||ksJ |D ]*}|jtksJ t|jd	|ksJ qd S )
Nr*   r   rC   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}')r,   r-   r   rK   rL   rM   warningssimplefiltercatch_warningsr   r.   rP   categoryDeprecationWarningr}   r   r=   )r2   r   r3   ra   rb   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 ]n}|jd }|ttj	dd }t
tj|||d}td	 }	||	ksJ t
tj|}d
t }
|||
 k s6J q6d S )Nr*   r;   r;   ri   g    .ArI   rJ   r     r+   g0@    )r,   r-   r   rk   intrl   nbytesr}   rK   randintr	   r   r.   r   r/   )r2   r(   r3   Zsmall_arrayrm   rd   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sJ t|}t||D ]H\}}t|t jrt|}|j|jksJ t j|| q||ksJ qd S )N   <i8rj   >i8<f8>f8r   abcrD   rb   rt   O      C'est l'été !ztemp.pkl.gzr+   )r   arangerJ   rX   rl   tobytesr,   r-   r   r.   rP   r/   ziprT   rU   r   rV   assert_equal)r2   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rfztjdd8}td	 tjd
ddd t	j
| |d}	W d   n1 s0    Y  tj| }
d|
v sd|
v rdnd}t d|
r|durdnd}|| }t||ksJ dd |D }dd |D }|D ] }t|jd| ksJ q|D ]0}t | }t d| dt|js<J q<t|	|D ]P\}}t|tjrt|}|j|jksJ tj|| n||ksxJ qxW n tyb } z||dkrt|tsJ d}|t|v sNJ n>| drLtj d rLt|ts8J t!t|v sNJ n W Y d}~n
d}~0 0 n\zt	
|  t"dW nD ty } z*d|}|t|j v sJ W Y d}~n
d}~0 0 dS )zHelper function to test joblib pickle content.

    Note: currently only pickles containing an iterable are supported
    by this function.
    z.+py(\d)(\d).+r   rD   rA   )rD   rA   rG   Tr   r   ignorenumpyz"The compiler package is deprecated)moduler   rp   Nz_0.9z_0.8.4r   z_0.1.+.pkl$c                 S   s   g | ]}t |jtr|qS r   )
issubclassr   r   r~   r   r   r   r     s   z!_check_pickle.<locals>.<listcomp>c                 S   s   g | ]}t |jtr|qS r   )r   r   r   r~   r   r   r   r     s   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})#rer>   r   groupgetr   r   r   filterwarningsr   r/   rQ   rR   basenamesearchrP   r}   r   r=   escaper   rT   r   rU   r   rJ   rV   r   	Exceptionr6   endswithr   argsr   AssertionError)r3   r   rq   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r d7   fddtD }|D ]}t||  qd S )Nr   r   rj   r   r   r   rD   r   r   r   r   r   rD   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>  r   zGtest_joblib_pickle_across_python_versions.<locals>.<listcomp>.<genexpr>)anyrQ   rR   r,   )r   Zpickle_extensionstest_data_dirr   r   r     s   z=test_joblib_pickle_across_python_versions.<locals>.<listcomp>)r   r   rJ   rX   rl   r   matrixrQ   rR   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 qd S )Nr   r   rj   r   r   r   rD   r   r   r   r   r   c                    s$   g | ]}| d rtj |qS )r   )r   rQ   rR   r,   )r   r   r   r   r   r     s   zGtest_joblib_pickle_across_python_versions_with_mmap.<locals>.<listcomp>ro   rp   )r   r   rJ   rX   rl   r   r   rQ   rR   r   r   r   r   r   r   r   r   r   r   3test_joblib_pickle_across_python_versions_with_mmap  s    

r   c                  C   sf  t jddgddgdt jdt ddt jdt ddg} | D ]j}tjd	kr\t|rhJ nt|shJ t|}|jjr|jj	 D ]}|d
 jdk qq@|jjdks@J q@t jddgddgdt jdt ddt jdt ddg}|D ]t}tjdkrt|rJ nt|sJ t|}|jjrP|jj	 D ]}|d
 jdk q8q|jjdksJ qd S )N)r   g       @)rA   g      @) r   )r   r   rj   rA   r   r   bigr   =)r   r   )r   r   r   r   little)
r   rX   r   rJ   sys	byteorderr   r   fieldsvalues)Z	be_arraysrX   Z	convertedfZ	le_arraysr   r   r   .test_numpy_array_byte_order_mismatch_detection  s<    



r   compress_tuple)rB   rA   gziprA   c                 C   s^   |  dj}tjd||d t|d$}t||d ks<J W d    n1 sP0    Y  d S )Nr*   r<   r+   rbr   r,   r-   r   r.   openr   )r2   r   r3   r   r   r   r   test_compress_tuple_argument  s    r   zcompress_tuple,message))rB   rA   extraz9Compress argument tuple should contain exactly 2 elements)wrongrA   z(Non valid compression method given: "{}"r   )rB   r   z$Non valid compress level given: "{}"c                 C   sR   |  dj}tt }tjd||d W d    n1 s:0    Y  || d S )Nr*   r<   r+   )r,   r-   r   r6   r   r.   r>   )r2   r   r   r3   r?   r   r   r   &test_compress_tuple_argument_exception*  s    
.r   compress_stringrB   r   c                 C   sZ   |  dj}tjd||d t|d }t||ks8J W d    n1 sL0    Y  d S )Nr*   r<   r+   r   r   )r2   r   r3   r   r   r   r   test_compress_string_argument9  s    r   )r   rA      cmethodc           	   	   C   s  |  dj}tjdddtddddg d	i d
df}|dv rPtd u rPtd n|dkrltj	d
 rltd |d | }|D ]}t
j||||fd t|d }t||ksJ W d    n1 s0    Y  t
|}t|t|sJ t|tjrtj|| q|||ks|J q|d S )Nr*   )ri   ri   Zf8r   r;   r   rt   )rb   rD   r   r   g      ?r   xzzlzma is support not availabler   zlz4 is not installed..r+   r   )r,   r-   r   rk   ranger   pytestskipr   r   r   r.   r   r   r/   rT   r[   rU   rV   rW   )	r2   r(   r   r3   objectsZdump_filenamerd   r   ru   r   r   r   test_joblib_compression_formatsD  s&    
.
r   c                 C   sp   t t| d}| }W d   n1 s.0    Y  t|d}|| W d   n1 sb0    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   sp   t | d}t| }W d   n1 s.0    Y  t |d}|| W d   n1 sb0    Y  dS )zDecompress a zlib file.r   Nr   )r   rB   
decompressr   r   r   r   r   r   _zlib_file_decompressm  s    ,r  zextension,decompress.zr   c                 C   sH   d}|  dj}|| }t|| ||| t|}||ksDJ d S )Nza string to persistr*   )r,   r-   r   r.   r/   )r2   	extensionr  rd   Zfilename_rawZfilename_compressedru   r   r   r   'test_load_externally_decompressed_filesv  s    

r  zextension,cmethod))r  rB   )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sZJ W d    n1 sn0    Y  t	|}t
|t|sJ ||ksJ d S )Nr   zlzma is missingr*   zobject to dumpr   )r   r   r   r,   r-   r   r.   r   r   r/   rT   r[   )r2   r  r   r3   rd   Z
dump_fnamer   ru   r   r   r   %test_compression_using_file_extension  s    
.
r
  c           	   
   C   s8  t jddg}tjtjg}td ur0|tjg7 }| dj	}|D ]}|D ]}||d}t
|| W d    n1 sx0    Y  ||d}t
|}W d    n1 s0    Y  t|d}t
|}W d    n1 s0    Y  t|t jrt j|| t j|| qH||ks$J ||ksHJ qHq@d S )Nr   	some datar*   r   r   )r   rK   r  BZ2Filer   r   r   LZMAFiler,   r-   r   r.   r/   r   rT   rU   rV   rW   )	r2   objsZfobjsr3   rd   Zfobjr   ru   Zobj_reloaded_2r   r   r   test_file_handle_persistence  s$    *((r  c                  C   sd   t jddg} | D ]J}t }t|| t|}t|t jrRt j	
|| q||ksJ qd S )Nr   r  )r   rK   ioBytesIOr   r.   r/   rT   rU   rV   rW   )r  rd   r   ru   r   r   r   test_in_memory_persistence  s    
r  c                 C   s   t jd}| dj}t|d}t|| W d    n1 sD0    Y  t|d}tj|dd}W d    n1 s|0    Y  t j	|| d S )Nr   r*   r   r   rr   rp   )
r   rK   r,   r-   r   r   r.   r/   rV   rW   )r2   rd   r3   r   ru   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 sH0    Y  tt	|dv}t
t}tj|dd W d    n1 s0    Y  t|d	ksJ t|d
 jd|dd ksJ W d    n1 s0    Y  d S )Nr   r*   r   r   r+   r   rr   rp   r   r   zP"%(fileobj)r" is not a raw file, mmap_mode "%(mmap_mode)s" flag will be ignored.)fileobjrq   )r   rK   r,   r-   r   r   r.   r   r   r   r   r   r/   rP   r}   r   )r2   rd   r3   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 sL0    Y  t	|dksfJ t
|d jdddi ksJ d S )Nr   rr   rp   r   r   zuIn memory persistence is not compatible with mmap_mode "%(mmap_mode)s" flag passed. mmap_mode option will be ignored.rq   )r   rK   r  r  r   r.   r   r   r/   rP   r}   r   )rd   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.)Zidscompress_level)r   rA   	   c              
   C   s   |  dj}t|d}t|d|d}| s6J || | | ksTJ ttj	 |
  W d    n1 s|0    Y  ttj	 |  W d    n1 s0    Y  W d    n1 s0    Y  |jsJ tt |  W d    n1 s0    Y  W d    n1 s(0    Y  t|d}t|}| sVJ | sdJ | | kszJ | |ksJ ttj	 |  W d    n1 s0    Y  | sJ |d | dksJ W d    n1 s 0    Y  |jsJ W d    n1 s,0    Y  t|d|d(}| sTJ || W d    n1 st0    Y  t|d0}| |ksJ | sJ W d    n1 s0    Y  t|d|d}| sJ || |  t|d}| |ksJ |  d S )Nr*   r   compresslevelr   r   )r,   r-   r   r   writabler   filenor   r  UnsupportedOperation_check_can_read_check_can_seekclosedr6   _check_not_closedreadableseekabler   _check_can_writeseektellclose)r2   r   r  r3   r   Zfzr   r   r   test_binary_zlibfile  sX    
&D

H
(
2,*.

r(  	bad_value   rb   c                 C   s`   |  dj}tt}t|d|d W d    n1 s80    Y  td|}|| d S )Nr*   r   r  zS'compresslevel' must be an integer between 1 and 9. You provided 'compresslevel={}')	r,   r-   r   r6   r   r   r   r=   r>   )r2   r)  r3   r?   patternr   r   r   +test_binary_zlibfile_bad_compression_levels<  s    
,r,  bad_mode)rb   r   ro   r   r   rD   c                 C   sL   |  dj}tt}t|| W d    n1 s40    Y  |d d S )Nr*   zInvalid mode)r,   r-   r   r6   r   r>   )r2   r-  r3   r?   r   r   r   "test_binary_zlibfile_invalid_modesF  s    
(r.  bad_filec                 C   s@   t t}t| d W d    n1 s(0    Y  |d d S )Nr   z1filename must be a str or bytes object, or a file)r   	TypeErrorr   r>   )r/  r?   r   r   r   *test_binary_zlibfile_invalid_filename_typeN  s    
(r1  c                   @   s   e Zd Zdd ZdS )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&   r4  r   r   r   r   r2  Y  s   r2  c                 C   s   t | j}| |d d < |S r   )r2  rI   )Zarrdr   r   r   r3  ^  s    
r3  c                   @   s   e Zd ZdZdd ZdS )r]   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 )Nri   rZ   rj   Zint32)rb   r;   g      4@rw   )r   r   r^   rk   r_   rX   r`   r    r   r   r   __init__f  s    zComplexTestObject.__init__N)r$   r%   r&   __doc__r6  r   r   r   r   r]   c  s   r]   c                 C   sJ   |  dj}td}t|| t|}t|ts8J tj	|| d S )Nr*   )r;   )
r,   r-   r2  r   r.   r/   rT   r   rV   rW   )r2   r3   rb   cr   r   r   test_numpy_subclassl  s    
r9  c                 C   sX   |  dj}d}t|t| t||ks2J t|| tt||ksTJ d S )Nr*   {   )r,   r-   r   r.   r   r/   )r2   r3   valuer   r   r   test_pathlibv  s    r<  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rjJ t	|| t
|}tj|| qNd S )	Nr*   r   rD   rA   rG   )r;   2      F)order)r,   r-   r   Zasfortranarrayrk   rs   c_contiguousf_contiguousr   r.   r/   rV   rW   )r2   r3   rX   array_reloadedr   r   r   "test_non_contiguous_array_pickling  s    "
rD  c                 C   sD   |  dj}td}tj||tjd t|}tj	
|| d S )Nr*   r;   protocol)r,   r-   r   zerosr   r.   pickleHIGHEST_PROTOCOLr/   rV   rW   )r2   r3   
test_arrayrC  r   r   r   test_pickle_highest_protocol  s
    

rK  c            
   	   C   sL  t d} d}ttjtj}|| |d t|}| \}}|	d}t
| | W d    n1 sv0    Y  |	d}t
|}W d    n1 s0    Y  t j||  t }	t
| |	 ||	  |	d}t
|}W d    n1 s0    Y  t j||  W d    n1 s>0    Y  d S )Nr;   )	localhosti90  r   r   r   )r   r   socketAF_INETSOCK_STREAMbindlistencreate_connectionacceptmakefiler   r.   r/   rV   rW   r  r  sendgetvalue)
rJ  Z_ADDRZlistenerclientserverclient_addrZsfcfrC  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snJ tj|| d S )N	test.mmaprl   rj   ro   rp   r   )r,   r-   rE   ALLOCATIONGRANULARITYr   rG  rk   r   r.   r/   rT   rY   offsetrV   rW   )r2   r   r   rd   Zmemmapsr   r   r    test_load_memmap_with_big_offset  s    r_  c                    sn   d}dG dd dt j G  fdddt}t||  t| j ksNJ t| jks`J t| d S )N	test-nameztest-prefixc                   @   s   e Zd ZdS )z:test_register_compressor.<locals>.BinaryCompressorTestFileNr$   r%   r&   r   r   r   r   BinaryCompressorTestFile  s   rb  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rd   prefixr   r6  r    rb  Zcompressor_prefixr   r   r6    s    zFtest_register_compressor.<locals>.BinaryCompressorTestWrapper.__init__Nr$   r%   r&   r6  r   rf  r   r   BinaryCompressorTestWrapper  s   rh  )r  BufferedIOBaser   r   r   fileobj_factoryrd  pop)r2   compressor_namerh  r   rf  r   test_register_compressor  s    rm  invalid_namec                 C   s@   t t}t| d  W d    n1 s(0    Y  |d d S )Nz"Compressor name should be a string)r   r6   r   r>   )rn  r?   r   r   r   %test_register_compressor_invalid_name  s    
(ro  c                     sd   G dd d G  fdddt } tt}td|   W d    n1 sL0    Y  |d d S )Nc                   @   s   e Zd ZdS )zCtest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectNra  r   r   r   r   InvalidFileObject  s   rp  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   prefixrc  re  r    rp  r   r   r6    s    zStest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapper.__init__Nrg  r   rr  r   r   InvalidFileObjectWrapper  s   rs  invalidzQCompressor 'fileobj_factory' attribute should implement the file object interface)r   r   r6   r   r>   )rs  r?   r   rr  r   (test_register_compressor_invalid_fileobj  s
    
*ru  c                   @   s   e Zd Zdd ZdS )AnotherZlibCompressorWrapperc                 C   s   t j| tdd d S rq  )r   r6  r   r    r   r   r   r6    s    z%AnotherZlibCompressorWrapper.__init__Nrg  r   r   r   r   rv    s   rv  c                   @   s   e Zd Zdd ZdS ) StandardLibGzipCompressorWrapperc                 C   s   t j| tjdd d S rq  )r   r6  r   r   r    r   r   r   r6  
  s    z)StandardLibGzipCompressorWrapper.__init__Nrg  r   r   r   r   rw    s   rw  c                  C   s   d} t | t  tt}t | t  W d    n1 s:0    Y  |d|  t | t dd | tv spJ t|  jt	j
ksJ t|  d S )Nr`  z#Compressor '{}' already registered.T)force)r   rv  r   r6   rw  r>   r=   r   rj  r   r   rk  )rl  r?   r   r   r   +test_register_compressor_already_registered  s    
"ry  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spJ W d    n1 s0    Y  t||ksJ t||d  t	|d&}|
tttksJ W d    n1 s0    Y  t||ksJ d S )Nr   r   r*   	test datar+   r   r   )Z	lz4.framer   rj  frameZLZ4FrameFiler,   r-   r   r.   r   r   rP   r   r/   )r2   r   Z
compressorr   r   r   r   r   r   test_lz4_compression&  s    44r|  c                 C   s   |  dj}d}t}tt }tj||dd W d    n1 sB0    Y  || tt }t||d  W d    n1 s0    Y  || d S )Nz
test.nolz4rz  r   r+   r   )r,   r-   r   r   r6   r   r.   r>   )r2   r   r   msgr?   r   r   r    test_lz4_compression_without_lz4=  s    
.

.r~  rF  c                 C   s4  |  dj}tjd}tj|||d tj|dd}t|tj	sFJ tj
|| |jjtj dksjJ |jjsvJ tjdtjdtjdtjdg}|  dj}tj|||d tj|dd}t|D ]N\}}t|tj	sJ tj
|| | |jjtj dksJ |jjsJ qt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|tj	sJ tj
||
 | |jjtj dksJ |jjsJ qd S )Nr\  rD   rE  ro   rp   r   z
test1.mmaprj   rA   r                     )	Za0Za1Za2a3Za4Za5Za6Za7Za8z
test2.mmap)r,   r-   r   rK   Zrandnr   r.   r/   rT   rY   rV   rW   ctypesr   ZNUMPY_ARRAY_ALIGNMENT_BYTESrs   ZalignedrN   r   rl   items)r2   rF  r   rb   rY   Z
array_listZ
l_reloadedidxZ
array_dictZ
d_reloadedkeyr   r   r   test_memmap_alignment_paddingQ  sP    r  )N)r7  r0   rQ   rK   r   r  r   r   r   rB   r  rH  rM  
contextlibr   rE   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_dictrP   Z_builtinr   r   rw   r'   Z	_instance_objectr4   r8   r7   r@   rh   rn   rv   ry   r{   r   r   r   r   r   r   r   r   r   r=   r   r   r   r  r  r  r
  r  r  r  r  r  r   encoder(  r,  r.  r1  rU   r2  r3  r]   r9  r<  rD  rK  r[  r_  rm  ro  ru  rv  rw  ry  r|  r~  DEFAULT_PROTOCOL	protocolsrI  r  r   r   r   r   <module>   sx  
	
















	2
	
1




S
 

(




		


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