o
    ^Zh                  
   @   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yS   dZY nw 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rG 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   L/var/www/auris/lib/python3.10/site-packages/joblib/test/test_numpy_pickle.py	_functionU   s   
r   c                   @      e Zd Zdd ZdS )_classc                 C      d S r   r   selfr   r   r   _methodZ      z_class._methodN__name__
__module____qualname__r$   r   r   r   r   r    Y       r    c                   @   r   )	_newclassc                 C   r!   r   r   r"   r   r   r   r$   _   r%   z_newclass._methodNr&   r   r   r   r   r+   ^   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_typesp   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_error}   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_error   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   s6   
(


rk   c                 C   sL   t jtd t jd}| dj}tj||dd t|}t j	
|| d S )Nd   rM   r.   Tr/   )r   onesr   uint8r0   r1   r   r2   r3   rY   rZ   )r6   	big_arrayr7   Zarr_reloadedr   r   r   2test_numpy_persistence_bufferred_array_compression   s
   
rq   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      $@rI   )r   rN   rO   rP   r0   r1   r   r2   r3   rW   r\   r`   r^   ra   flagsZ	writeablerb   rc   rY   rZ   rK   )r6   rd   re   r7   brg   rj   obj_reloadedr   r   r   test_memmap_persistence   s@   
ry   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   rw   rm   r.   rr   rs   )r   rN   rO   rP   r[   objectr0   r1   r   r2   r3   rW   r\   )r6   rd   re   rw   	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.   rr   rs   )r   rN   rO   rP   maZmasked_greaterr0   r1   r   r2   r3   rW   Zmasked_array)r6   rd   re   r7   rw   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|t jrMJ t j|| t|dks^J |t|d d| dkslJ d S )Nr   r?   r.   r   r/   ru   rs   
c                 S   s   g | ]}t |qS r   )str.0wr   r   r   
<listcomp>  s    z3test_compress_mmap_mode_warning.<locals>.<listcomp>c                 S      g | ]}|j qS r   messager   r   r   r   r          z6mmap_mode "r+" is not compatible with compressed file z. "r+" flag will be ignored.)r   rN   rO   rP   r0   r1   r   r2   r   UserWarningr3   rW   r\   rY   rZ   rS   r   )r6   rd   rg   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 ]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?   rl   g    .ArL   rM   r     r/   g0@    )r0   r1   r   rn   intro   nbytesr   rN   randintr   r   r2   r   r3   )r6   r,   r7   Zsmall_arrayrp   rg   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   <i8rm   >i8<f8>f8r   abcrG   re   rw   O      C'est l'été !ztemp.pkl.gzr/   )r   arangerM   r[   ro   tobytesr0   r1   r   r2   rS   r3   ziprW   rX   r   rY   assert_equal)r6   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s;J |j|v sBJ tj|dd\}	}
|	j|jksSJ |
j|jks[J d S )	Nr   r   r   rm   ztemp.pklT)ensure_native_byte_orderF)r   rM   r   r0   r1   r   r2   r3   )r6   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   sL   d} t tt| d tjdddd W d    d S 1 sw   Y  d S )NzrNative byte ordering can only be enforced if 'mmap_mode' parameter is set to None, but got 'mmap_mode=r+' instead.)rB   z/path/to/some/dump.pklTru   )r   rt   )r   r:   reescaper   r3   )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r6ztjdd}td	 tj	| |d
}	W d   n1 sAw   Y  t
j| }
d|
v sTd|
v rVdnd}t d|
rd|durddnd}|| }t||ksJ d| ddd |D  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y5 } zE|dkrt|tsJ d}|t|v sJ 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yb } zd|}|t|jv sWJ 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   rG   rE   )rG   rE   rJ   T)recordalwaysrs   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   r   r   r   r   r   r   r   r     r   z!_check_pickle.<locals>.<listcomp>c                 S      g | ]
}t |jtr|qS r   )
issubclasscategoryDeprecationWarningr   r   r   r   r     s
    c                 S   r   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})"r   rB   r   groupgetwarningscatch_warningssimplefilterr   r3   rT   rU   basenamesearchrS   r   r   rA   r   r   rW   r   rX   r   rM   rY   r   	Exceptionr:   endswithr   argsr   AssertionError)r7   r   rt   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rJ d7   fddtD }|D ]}t||  qYd S )Nr   r   rm   r   r   r   rG   r   r   r   r   r   rG   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>)anyrT   rU   r0   )r   Zpickle_extensionstest_data_dirr   r   r     s    z=test_joblib_pickle_across_python_versions.<locals>.<listcomp>)r   r   rM   r[   ro   r   matrixrT   rU   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   rm   r   r   r   rG   r   r   r   r   r   c                    s$   g | ]}| d rtj |qS )r   )r   rT   rU   r0   )r   r   r   r   r   r     s    zGtest_joblib_pickle_across_python_versions_with_mmap.<locals>.<listcomp>rr   rs   )r   r   rM   r[   ro   r   r   rT   rU   r   r   r   r   r   r   r   r   r   r   3test_joblib_pickle_across_python_versions_with_mmap  s   
r   c                  C   s\  t jddgddgdt jdt ddt jdt ddg} | D ]5}tjd	kr.t|r-J nt|s4J t|}|jjrM|jj	 D ]	}|d
 jdk qBq |jjdksUJ q t jddgddgdt jdt ddt jdt ddg}|D ]5}tjdkrt|rJ nt|sJ t|}|jjr|jj	 D ]	}|d
 jdk qqv|jjdksJ qvd S )N)r   g       @)rE   g      @) r   )r   r   rm   rE   r   r   bigr   =)r   r   )r   r   r   r   little)
r   r[   r   rM   sys	byteorderr   r   fieldsvalues)Z	be_arraysr[   Z	convertedfZ	le_arraysr   r   r   .test_numpy_array_byte_order_mismatch_detection  s:   

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_argumentJ  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_exceptionT  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_argumentm  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.   )rl   rl   Zf8r   r?   r   rw   )re   rG   r   r   g      ?r   xzzlzma is support not availabler   zlz4 is not installed..r/   r   )r0   r1   r   rn   ranger   pytestskipr   r   r   r2   r   r   r3   rW   r^   rX   rY   rZ   )	r6   r,   r   r7   objectsZdump_filenamerg   r   rx   r   r   r   test_joblib_compression_formatsw  s4   

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_decompress  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_decompress  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  rg   Zfilename_rawZfilename_compressedrx   r   r   r   'test_load_externally_decompressed_files  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   rW   r^   )r6   r  r   r7   rg   Z
dump_fnamer   rx   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   rN   r	  BZ2Filer   r   r   LZMAFiler0   r1   r   r2   r3   r   rW   rX   rY   rZ   )	r6   objsZfobjsr7   rg   Zfobjr   rx   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   rN   ioBytesIOr   r2   r3   rW   rX   rY   rZ   )r  rg   r   rx   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   ru   rs   )
r   rN   r0   r1   r   r   r2   r3   rY   rZ   )r6   rg   r7   r   rx   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   ru   rs   r   r   zP"%(fileobj)r" is not a raw file, mmap_mode "%(mmap_mode)s" flag will be ignored.)fileobjrt   )r   rN   r0   r1   r   r   r2   r   r   r   r   r   r3   rS   r   r   )r6   rg   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   ru   rs   r   r   zuIn memory persistence is not compatible with mmap_mode "%(mmap_mode)s" flag passed. mmap_mode option will be ignored.rt   )r   rN   r  r  r   r2   r   r   r3   rS   r   r   )rg   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   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_zlibfileE  sd   



	







r)  	bad_value   re   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   
r-  bad_mode)re   r   rr   r   r   rG   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   r.  r7   rC   r   r   r   "test_binary_zlibfile_invalid_modes  s
   
r/  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   )r0  rC   r   r   r   *test_binary_zlibfile_invalid_filename_type  s   
r2  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)   r5  r   r   r   r   r3    r*   r3  c                 C   s   t | j}| |d d < |S r   )r3  rL   )Zarrdr   r   r   r4    s   
r4  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 )Nrl   r]   rm   Zint32)re   r?   g      4@rz   )r   r   ra   rn   rb   r[   rc   r"   r   r   r   __init__  s   zComplexTestObject.__init__N)r'   r(   r)   __doc__r7  r   r   r   r   r`     s    r`   c                 C   sJ   |  dj}td}t|| t|}t|tsJ tj	|| d S )Nr.   )r?   )
r0   r1   r3  r   r2   r3   rW   r   rY   rZ   )r6   r7   re   cr   r   r   test_numpy_subclass  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_pathlib  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r5J t	|| t
|}tj|| q'd S )	Nr.   r   rG   rE   rJ   )r?   2      F)order)r0   r1   r   Zasfortranarrayrn   rv   c_contiguousf_contiguousr   r2   r3   rY   rZ   )r6   r7   r[   array_reloadedr   r   r   "test_non_contiguous_array_pickling  s   "
rE  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   rY   rZ   )r6   r7   
test_arrayrD  r   r   r   test_pickle_highest_protocol  s
   

rL  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   rY   rZ   r  r  sendgetvalue)
rK  Z_ADDRZlistenerclientserverclient_addrZsfcfrD  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.mmapro   rm   rr   rs   r   )r0   r1   rH   ALLOCATIONGRANULARITYr   rH  rn   r   r2   r3   rW   r\   offsetrY   rZ   )r6   r   r   rg   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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      rd  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rg   prefixr
   r7  r"   rd  Zcompressor_prefixr   r   r7    s   
zFtest_register_compressor.<locals>.BinaryCompressorTestWrapper.__init__Nr'   r(   r)   r7  r   ri  r   r   BinaryCompressorTestWrapper  s    rk  )r  BufferedIOBaser
   r   r   fileobj_factoryrg  pop)r6   compressor_namerk  r   ri  r   test_register_compressor  s   rp  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   )rq  rC   r   r   r   %test_register_compressor_invalid_name.  s   
rr  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                   @   rb  )zCtest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectNrc  r   r   r   r   InvalidFileObject9  re  rs  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   prefixrf  rh  r"   rs  r   r   r7  =     zStest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapper.__init__Nrj  r   ru  r   r   InvalidFileObjectWrapper<  s    rw  invalidzQCompressor 'fileobj_factory' attribute should implement the file object interface)r
   r   r:   r   rB   )rw  rC   r   ru  r   (test_register_compressor_invalid_fileobj6  s   
ry  c                   @   r   )AnotherZlibCompressorWrapperc                 C   s   t j| tdd d S rt  )r
   r7  r	   r"   r   r   r   r7  J  rv  z%AnotherZlibCompressorWrapper.__init__Nrj  r   r   r   r   rz  I  r*   rz  c                   @   r   ) StandardLibGzipCompressorWrapperc                 C   s   t j| tjdd d S rt  )r
   r7  r   r   r"   r   r   r   r7  O  s   z)StandardLibGzipCompressorWrapper.__init__Nrj  r   r   r   r   r{  N  r*   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 )Nra  z#Compressor '{}' already registered.T)force)r   rz  r   r:   r{  rB   rA   r   rm  r   r   rn  )ro  rC   r   r   r   +test_register_compressor_already_registeredS  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   rm  frameZLZ4FrameFiler0   r1   r   r2   r   r   rS   r   r3   )r6   r   Z
compressorr   r   r   r   r   r   test_lz4_compressionh  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  rG  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 )Nr]  rG   rF  rr   rs   r   z
test1.mmaprm   rE   r                     )	Za0Za1Za2a3Za4Za5Za6Za7Za8z
test2.mmap)r0   r1   r   rN   Zrandnr   r2   r3   rW   r\   rY   rZ   ctypesr   ZNUMPY_ARRAY_ALIGNMENT_BYTESrv   ZalignedrQ   r   ro   items)r6   rG  r   re   r\   Z
array_listZ
l_reloadedidxZ
array_dictZ
d_reloadedkeyr   r   r   test_memmap_alignment_padding  sP   



r  r   )r8  r	  r4   r   r  rH   rT   rI  rN   r   rN  r   r   rF   
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appendr^   _typeboolZ_boolr   _intfloatZ_floatcomplexZ_complexr   _string_tupleZ_list_dictrS   Z_builtinr   r    rz   r+   Z	_instance_objectr8   r<   r;   rD   rk   rq   ry   r|   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)  r-  r/  r2  rX   r3  r4  r`   r:  r=  rE  rL  r\  r`  rp  rr  ry  rz  r{  r}  r  r  DEFAULT_PROTOCOL	protocolsrJ  r  r   r   r   r   <module>   sr    
















1
	
,





[
$

*
	

	$		






	2



	
		






