a
    h                  
   @   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Zddlm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 ddlmZmZmZmZmZ ddlmZm Z m!Z!m"Z" ddl#m$Z$ dd	l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ dd
l,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)e-dd+d,gd-d. ZTe*d/d0 ZUe*d1d2 ZVd3d4 ZWdd5d6ZXe*d7d8 ZYe*d9d: ZZe*d;d< Z[e-d=d>d?gd@dA Z\e-dBdCdDdE]dFfdGdH]dFfgdIdJ Z^e-dKdLdMgdNdO Z_e*e-dg dPe-dQedRdS Z`dTdU ZadVdW Zbe-dXdYebfdZeafgd[d\ Zce-d]g d^d_d` Zde*dadb Zee*dcdd Zfe*dedf Zge*dgdh Zhe*didj Zie-dkdldmdn]ejddodo kdp gdqdrgdse-dtg dudvdw Zle-dxdddydzdi gd{d| Zme-d}g d~dd Zne-dddi gdd Zoe'durG dd de'jpZqdd ZrG dd dZse*dd Ztdd Zue*dd Zve*dd Zwe*dd Zxe*dd Zydd Zze-dddi gdd Z{dd Z|G dd deZ}G dd deZ~dd Ze(dd Ze+dd ZejgZejejkre2ej e*e-dedd ZdS )z@Test the numpy pickler as a replacement of the standard pickler.    N)closing)Path)numpy_pickleregister_compressor)_COMPRESSORS_LZ4_PREFIXLZ4_NOT_INSTALLED_ERRORBinaryZlibFileCompressorWrapper)_IO_BUFFER_SIZE_detect_compressor_ensure_native_byte_order#_is_numpy_array_byte_order_mismatch)data)memory_usednpwith_lz4with_memory_profiler
with_numpywithout_lz4)parametrizeraiseswarns    c                 c   s
   | V  d S Nr   )xr   r   Y/var/www/html/assistant/venv/lib/python3.9/site-packages/joblib/test/test_numpy_pickle.py	_functionU   s    r   c                   @   s   e Zd Zdd ZdS )_classc                 C   s   d S r   r   selfr   r   r   _methodZ   s    z_class._methodN__name__
__module____qualname__r"   r   r   r   r   r   Y   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"   _   s    z_newclass._methodNr#   r   r   r   r   r'   ^   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_typesp   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_error}   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_error   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   s6    
(


rg   c                 C   sL   t jtd t jd}| dj}tj||dd t|}t j	
|| d S )Nd   rI   r*   Tr+   )r   onesr   uint8r,   r-   r   r.   r/   rU   rV   )r2   	big_arrayr3   Zarr_reloadedr   r   r   2test_numpy_persistence_bufferred_array_compression   s
    
rm   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      $@rE   )r   rJ   rK   rL   r,   r-   r   r.   r/   rS   rX   r\   rZ   r]   flagsZ	writeabler^   r_   rU   rV   rG   )r2   r`   ra   r3   brc   rf   obj_reloadedr   r   r   test_memmap_persistence   s@    
ru   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   rs   ri   r*   rn   ro   )r   rJ   rK   rL   rW   objectr,   r-   r   r.   r/   rS   rX   )r2   r`   ra   rs   Z	constructr3   Za_cloneZb_cloner   r   r   $test_memmap_persistence_mixed_dtypes   s    
rw   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*   rn   ro   )r   rJ   rK   rL   maZmasked_greaterr,   r-   r   r.   r/   rS   Zmasked_array)r2   r`   ra   r3   rs   r   r   r   test_masked_array_persistence	  s    
ry   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|t jrJ t j|| t|dksJ |t|d d| dksJ d S )Nr   r;   r*   r   r+   rq   ro   
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   rJ   rK   rL   r,   r-   r   r.   r   UserWarningr/   rS   rX   rU   rV   rO   r{   )r2   r`   rc   Zthis_filenamewarninfoZreloaded_objZ	debug_msgr   r   r   test_compress_mmap_mode_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;   rh   g    .ArH   rI   r     r+   g0@    )r,   r-   r   rj   intrk   nbytesr{   rJ   randintr   r   r.   r   r/   )r2   r(   r3   Zsmall_arrayrl   rc   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   <i8ri   >i8<f8>f8r   abcrC   ra   rs   O      C'est l'été !ztemp.pkl.gzr+   )r   arangerI   rW   rk   tobytesr,   r-   r   r.   rO   r/   ziprS   rT   r   rU   assert_equal)r2   expected_listfnameZdumped_filenamesresult_listresultexpectedr   r   r   $test_compressed_pickle_dump_and_loadD  s$    

r   c                 C   s   t d}t d}||f}t jd|d}t jd|d}| dj}t||g| tj|dd\}}|j|jksvJ |j|v sJ tj|dd\}	}
|	j|jksJ |
j|jksJ d S )	Nr   r   r   ri   ztemp.pklT)ensure_native_byte_orderF)r   rI   r   r,   r-   r   r.   r/   )r2   Zlittle_endian_dtypeZbig_endian_dtypeZ
all_dtypesZle_arrayZbe_arrayr   Zle_array_native_loadZbe_array_native_loadZle_array_nonnative_loadZbe_array_nonnative_loadr   r   r   test_memmap_load^  s"    



r   c                  C   sJ   d} t tt| d  tjdddd W d    n1 s<0    Y  d S )NzrNative byte ordering can only be enforced if 'mmap_mode' parameter is set to None, but got 'mmap_mode=r+' instead.)r>   z/path/to/some/dump.pklTrq   )r   rp   )r   r6   reescaper   r/   )Zexpected_msgr   r   r   test_invalid_parameters_raisez  s    r   c              
   C   s  t d| }t|d}ddd}|dd}||d}||krrztjdd(}t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sJ d| ddd |D  dd |D }dd |D }|D ] }t|jd| ks"J q"|D ]0}t | }t d| dt|jsHJ qHt|	|D ]P\}}t|tjrt|}|j|jksJ tj|| n||ksJ qW n tyn } z||dkrt|tsJ d}|t|v sZJ n>| drXtjd rXt|tsDJ t t|v sZJ 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   rC   rA   )rC   rA   rF   T)recordalwaysro   Nz_0.9z_0.8.4r   z_0.1.+.pkl$z6Did not get the expected number of warnings. Expected z but got warnings: c                 S   s   g | ]
}|j qS r   r   r|   r   r   r   r     r   z!_check_pickle.<locals>.<listcomp>c                 S   s   g | ]}t |jtr|qS r   )
issubclasscategoryDeprecationWarningr|   r   r   r   r     s   c                 S   s   g | ]}t |jtr|qS 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})"r   r>   r   groupgetwarningscatch_warningssimplefilterr   r/   rP   rQ   basenamesearchrO   r{   r   r=   r   r   rS   r   rT   r   rI   rU   r   	Exceptionr6   endswithr   argsr   AssertionError)r3   r   rp   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_warningsZexpected_nb_warningsZdeprecation_warningsZuser_warningsr~   Zescaped_filenamer   r   excr   er   r   r   _check_pickle  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   ri   r   r   r   rC   r   r   r   r   r   rC   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>)anyrP   rQ   r,   )r}   Zpickle_extensionstest_data_dirr   r   r     s   z=test_joblib_pickle_across_python_versions.<locals>.<listcomp>)r   r   rI   rW   rk   r   matrixrP   rQ   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   ri   r   r   r   rC   r   r   r   r   r   c                    s$   g | ]}| d rtj |qS )r   )r   rP   rQ   r,   )r}   r   r   r   r   r     s   
zGtest_joblib_pickle_across_python_versions_with_mmap.<locals>.<listcomp>rn   ro   )r   r   rI   rW   rk   r   r   rP   rQ   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   ri   rA   r   r   bigr   =)r   r   )r   r   r   r   little)
r   rW   r   rI   sys	byteorderr   r   fieldsvalues)Z	be_arraysrW   Z	convertedfZ	le_arraysr   r   r   .test_numpy_array_byte_order_mismatch_detection  s4    

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_argumentJ  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_exceptionT  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_argumentm  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*   )rh   rh   Zf8r   r;   r   rs   )ra   rC   r   r   g      ?r   xzzlzma is support not availabler   zlz4 is not installed..r+   r   )r,   r-   r   rj   ranger   pytestskipr   r   r   r.   r   r   r/   rS   rZ   rT   rU   rV   )	r2   r(   r   r3   objectsZdump_filenamerc   r   rt   r   r   r   test_joblib_compression_formatsw  s0    
.
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_decompress  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_decompress  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   rc   Zfilename_rawZfilename_compressedrt   r   r   r   'test_load_externally_decompressed_files  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/   rS   rZ   )r2   r   r   r3   rc   Z
dump_fnamer   rt   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   rJ   r  BZ2Filer   r   r   LZMAFiler,   r-   r   r.   r/   r   rS   rT   rU   rV   )	r2   objsZfobjsr3   rc   Zfobjr   rt   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   rJ   ioBytesIOr   r.   r/   rS   rT   rU   rV   )r  rc   r   rt   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   rq   ro   )
r   rJ   r,   r-   r   r   r.   r/   rU   rV   )r2   rc   r3   r   rt   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   rq   ro   r   r   zP"%(fileobj)r" is not a raw file, mmap_mode "%(mmap_mode)s" flag will be ignored.)fileobjrp   )r   rJ   r,   r-   r   r   r.   r   r   r   r   r   r/   rO   r{   r   )r2   rc   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   rq   ro   r   r   zuIn memory persistence is not compatible with mmap_mode "%(mmap_mode)s" flag passed. mmap_mode option will be ignored.rp   )r   rJ   r
  r  r   r.   r   r   r/   rO   r{   r   )rc   r   r   r   r   r   +test_file_handle_persistence_in_memory_mmap3  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_zlibfileE  sL    
&D

H
(
2,*.

r"  	bad_value   ra   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)ra   r   rn   r~   r   rC   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_modes  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_type  s    
(r+  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&   r.  r   r   r   r   r,    s   r,  c                 C   s   t | j}| |d d < |S r   )r,  rH   )Zarrdr   r   r   r-    s    
r-  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 )Nrh   rY   ri   Zint32)ra   r;   g      4@rv   )r   r   r]   rj   r^   rW   r_   r    r   r   r   __init__  s    zComplexTestObject.__init__N)r$   r%   r&   __doc__r0  r   r   r   r   r\     s   r\   c                 C   sJ   |  dj}td}t|| t|}t|ts8J tj	|| d S )Nr*   )r;   )
r,   r-   r,  r   r.   r/   rS   r   rU   rV   )r2   r3   ra   cr   r   r   test_numpy_subclass  s    
r3  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_pathlib  s    r6  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   rC   rA   rF   )r;   2      F)order)r,   r-   r   Zasfortranarrayrj   rr   c_contiguousf_contiguousr   r.   r/   rU   rV   )r2   r3   rW   array_reloadedr   r   r   "test_non_contiguous_array_pickling  s    "
r>  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/   rU   rV   )r2   r3   
test_arrayr=  r   r   r   test_pickle_highest_protocol  s
    

rE  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/   rU   rV   r
  r  sendgetvalue)
rD  Z_ADDRZlistenerclientserverclient_addrZsfcfr=  Zbytes_to_sendr   r   r   test_pickle_in_socket  s$    


*(*rU  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.mmaprk   ri   rn   ro   r   )r,   r-   rD   ALLOCATIONGRANULARITYr   rA  rj   r   r.   r/   rS   rX   offsetrU   rV   )r2   r   r   rc   Zmemmapsr   r   r    test_load_memmap_with_big_offset  s    rY  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   r\  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rc   prefixr
   r0  r    r\  Zcompressor_prefixr   r   r0    s    zFtest_register_compressor.<locals>.BinaryCompressorTestWrapper.__init__Nr$   r%   r&   r0  r   r`  r   r   BinaryCompressorTestWrapper  s   rb  )r
  BufferedIOBaser
   r   r   fileobj_factoryr^  pop)r2   compressor_namerb  r   r`  r   test_register_compressor  s    rg  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>   )rh  r?   r   r   r   %test_register_compressor_invalid_name.  s    
(ri  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>.InvalidFileObjectNr[  r   r   r   r   InvalidFileObject9  s   rj  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   prefixr]  r_  r    rj  r   r   r0  =  s    zStest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapper.__init__Nra  r   rl  r   r   InvalidFileObjectWrapper<  s   rm  invalidzQCompressor 'fileobj_factory' attribute should implement the file object interface)r
   r   r6   r   r>   )rm  r?   r   rl  r   (test_register_compressor_invalid_fileobj6  s    
*ro  c                   @   s   e Zd Zdd ZdS )AnotherZlibCompressorWrapperc                 C   s   t j| tdd d S rk  )r
   r0  r	   r    r   r   r   r0  J  s    z%AnotherZlibCompressorWrapper.__init__Nra  r   r   r   r   rp  I  s   rp  c                   @   s   e Zd Zdd ZdS ) StandardLibGzipCompressorWrapperc                 C   s   t j| tjdd d S rk  )r
   r0  r   r   r    r   r   r   r0  O  s    z)StandardLibGzipCompressorWrapper.__init__Nra  r   r   r   r   rq  N  s   rq  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 )NrZ  z#Compressor '{}' already registered.T)force)r   rp  r   r6   rq  r>   r=   r   rd  r   r   re  )rf  r?   r   r   r   +test_register_compressor_already_registeredS  s    
*rs  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   rd  frameZLZ4FrameFiler,   r-   r   r.   r   r   rO   r   r/   )r2   r   Z
compressorr   r   r   r   r   r   test_lz4_compressionh  s    44rv  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.nolz4rt  r   r+   r   )r,   r-   r   r   r6   r   r.   r>   )r2   r   r   msgr?   r   r   r    test_lz4_compression_without_lz4  s    
.

.rx  r@  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 )NrV  rC   r?  rn   ro   r   z
test1.mmapri   rA   r                     )	Za0Za1Za2a3Za4Za5Za6Za7Za8z
test2.mmap)r,   r-   r   rJ   Zrandnr   r.   r/   rS   rX   rU   rV   ctypesr   ZNUMPY_ARRAY_ALIGNMENT_BYTESrr   ZalignedrM   r   rk   items)r2   r@  r   ra   rX   Z
array_listZ
l_reloadedidxZ
array_dictZ
d_reloadedkeyr   r   r   test_memmap_alignment_padding  sN    



r  )N)r1  r  r0   r   r
  rD   rP   rB  rJ   r   rG  r   r   rB   
contextlibr   pathlibr   r   ImportErrorr   Zjoblibr   r   Zjoblib.compressorr   r   r   r	   r
   Zjoblib.numpy_pickle_utilsr   r   r   r   Zjoblib.testr   Zjoblib.test.commonr   r   r   r   r   r   Zjoblib.testingr   r   r   ZtypelistZ_noneappendrZ   _typebool_boolr   _intfloatZ_floatcomplexZ_complexr{   _string_tupleZ_list_dictrO   Z_builtinr   r   rv   r'   Z	_instance_objectr4   r8   r7   r@   rg   rm   ru   rw   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(  r+  rT   r,  r-  r\   r3  r6  r>  rE  rU  rY  rg  ri  ro  rp  rq  rs  rv  rx  DEFAULT_PROTOCOLZ	protocolsrC  r  r   r   r   r   <module>   sn  
 
















1
	
,





[
$

*
	

	$		






	2



	
		






