o
    \i                  
   @   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   ~/var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/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-   filename_memberr   r   r   test_standard_typesp   s   
r9   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}"dummyr:   r/   )formatr   r;   r   r2   match)r>   exception_msgexcinfor   r   r   test_compress_level_error   s
   

rF   )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dtype__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	filenamesobj_item
obj_loadedr   r   r   test_numpy_persistence   s6   
(


ro   c                 C   sL   t jtd t jd}| dj}tj||dd t|}t j	
|| d S )Nd   rO   r.   Tr/   )r   onesr   uint8r0   r1   r   r2   r3   r\   r]   )r6   	big_arrayr7   arr_reloadedr   r   r   2test_numpy_persistence_bufferred_array_compression   s
   
rv   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      $@rK   )r   rQ   rR   rS   r0   r1   r   r2   r3   rZ   r_   rc   ra   rd   flags	writeablere   rf   r\   r]   rM   )r6   rg   rh   r7   brj   rn   obj_reloadedr   r   r   test_memmap_persistence   s@   
r   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   r}   rq   r.   rw   rx   )r   rQ   rR   rS   r^   objectr0   r1   r   r2   r3   rZ   r_   )r6   rg   rh   r}   	constructr7   a_clone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.   rw   rx   )r   rQ   rR   rS   mamasked_greaterr0   r1   r   r2   r3   rZ   masked_array)r6   rg   rh   r7   r}   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/   rz   rx   
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   rQ   rR   rS   r0   r1   r   r2   r   UserWarningr3   rZ   r_   r\   r]   rV   r   )r6   rg   rj   this_filenamewarninforeloaded_obj	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@   rp   g    .ArN   rO   r     r/   g0@    )r0   r1   r   rr   intrs   nbytesr   rQ   randintr   r   r2   r   r3   )r6   r,   r7   small_arrayrt   rj   sizeobj_filenamemem_usedwrite_buf_size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   <i8rq   >i8<f8>f8r   abcrI   rh   r}   O      C'est l'été !ztemp.pkl.gzr/   )r   arangerO   r^   rs   tobytesr0   r1   r   r2   rV   r3   ziprZ   r[   r   r\   assert_equal)r6   expected_listfname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   rq   ztemp.pklT)ensure_native_byte_orderF)r   rO   r   r0   r1   r   r2   r3   )r6   little_endian_dtypebig_endian_dtype
all_dtypesle_arraybe_arrayr   le_array_native_loadbe_array_native_loadle_array_nonnative_load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.)rC   z/path/to/some/dump.pklTrz   )r   ry   )r   r;   reescaper   r3   )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   rI   rG   )rI   rG   rL   T)recordalwaysrx   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   rC   r   groupgetwarningscatch_warningssimplefilterr   r3   rW   rX   basenamesearchrV   r   r   rB   r   r   rZ   r   r[   r   rO   r\   r   	Exceptionr;   endswithr   argsr   AssertionError)r7   r   ry   version_matchpy_version_used_for_writing%py_version_to_default_pickle_protocolpickle_reading_protocolpickle_writing_protocolr   r   filename_base expected_nb_deprecation_warningsexpected_nb_user_warningsexpected_nb_warningsdeprecation_warningsuser_warningsr   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   rq   r   r   r   rI   r   r   r   r   r   rI   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>)anyrW   rX   r0   )r   pickle_extensionstest_data_dirr   r   r     s    z=test_joblib_pickle_across_python_versions.<locals>.<listcomp>)r   r   rO   r^   rs   r   matrixrW   rX   dirnameabspathr   __file__lzmalistdirr   r   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   rq   r   r   r   rI   r   r   r   r   r   c                    s$   g | ]}| d rtj |qS )r   )r   rW   rX   r0   )r   r   r   r   r   r     s    zGtest_joblib_pickle_across_python_versions_with_mmap.<locals>.<listcomp>rw   rx   )r   r   rO   r^   rs   r   r   rW   rX   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       @)rG   g      @) r   )r  r   rq   rG   r   r   bigr   =)r  r   )r  r   r   r   little)
r   r^   r   rO   sys	byteorderr   r   fieldsvalues)	be_arraysr^   	convertedf	le_arraysr   r   r   .test_numpy_array_byte_order_mismatch_detection  s:   

r  compress_tuple)rH   rG   gziprG   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.   rA   r/   rbr   r0   r1   r   r2   openr   )r6   r  r7   r  r   r   r   test_compress_tuple_argumentJ  s
   "r  zcompress_tuple,message))rH   rG   extraz9Compress argument tuple should contain exactly 2 elements)wrongrG   z(Non valid compression method given: "{}"r  )rH   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.   rA   r/   )r0   r1   r   r;   r   r2   rC   )r6   r  r   r7   rE   r   r   r   &test_compress_tuple_argument_exceptionT  s
   
r  compress_stringrH   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.   rA   r/   r  r  )r6   r  r7   r  r   r   r   test_compress_string_argumentm  s
   "r  )r   rG      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.   )rp   rp   f8r   r@   r   r}   )rh   rI   r   r   g      ?r   xzzlzma is support not availabler   zlz4 is not installed..r/   r  )r0   r1   r   rr   ranger   pytestskipr   r   r   r2   r  r   r3   rZ   ra   r[   r\   r]   )	r6   r,   r   r7   objectsdump_filenamerj   r  r~   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source_filenametarget_filenamefobufr   r   r   _gzip_file_decompress  s   
"r4  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  rH   
decompressr-  r.  r/  r   r   r   _zlib_file_decompress  s   "r6  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   	extensionr5  rj   filename_rawfilename_compressedr~   r   r   r   'test_load_externally_decompressed_files  s   

r;  zextension,cmethod))r7  rH   )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   rZ   ra   )r6   r8  r   r7   rj   
dump_fnamer  r~   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   rQ   r<  BZ2Filer  r,  r   LZMAFiler0   r1   r   r2   r3   r  rZ   r[   r\   r]   )	r6   objsfobjsr7   rj   fobjr  r~   obj_reloaded_2r   r   r   test_file_handle_persistence  s.   rG  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   rQ   ioBytesIOr   r2   r3   rZ   r[   r\   r]   )rC  rj   r  r~   r   r   r   test_in_memory_persistence  s   
rJ  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  rz   rx   )
r   rQ   r0   r1   r  r   r2   r3   r\   r]   )r6   rj   r7   r  r~   r   r   r   !test_file_handle_persistence_mmap  s   rK  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  rz   rx   r   r   zP"%(fileobj)r" is not a raw file, mmap_mode "%(mmap_mode)s" flag will be ignored.)fileobjry   )r   rQ   r0   r1   r  r   r2   r   r  r,  r   r   r3   rV   r   r   )r6   rj   r7   r  r   r   r   r   ,test_file_handle_persistence_compressed_mmap   s    

"rM  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   rz   rx   r   r   zuIn memory persistence is not compatible with mmap_mode "%(mmap_mode)s" flag passed. mmap_mode option will be ignored.ry   )r   rQ   rH  rI  r   r2   r   r   r3   rV   r   r   )rj   r3  r   r   r   r   +test_file_handle_persistence_in_memory_mmap3  s   
rN  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   rG   	   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   rH  UnsupportedOperation_check_can_read_check_can_seekclosedr;   _check_not_closedreadableseekabler-  _check_can_writeseektellclose)r6   r   rP  r7   r  fzr   r   r   test_binary_zlibfileE  sd   



	







rb  	bad_value   rh   c                 C   s`   |  dj}tt}t|d|d W d    n1 sw   Y  td|}|| d S )Nr.   r+  rR  zS'compresslevel' must be an integer between 1 and 9. You provided 'compresslevel={}')	r0   r1   r   r;   r	   r   r   rB   rC   )r6   rc  r7   rE   patternr   r   r   +test_binary_zlibfile_bad_compression_levels  s   
rf  bad_mode)rh   r   rw   r   r   rI   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	   rC   )r6   rg  r7   rE   r   r   r   "test_binary_zlibfile_invalid_modes  s
   
rh  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	   rC   )ri  rE   r   r   r   *test_binary_zlibfile_invalid_filename_type  s   
rk  c                   @   r   )SubArrayc                 C   s   t t| ffS r   )_load_sub_arrayr   asarrayr"   r   r   r   
__reduce__  s   zSubArray.__reduce__N)r'   r(   r)   ro  r   r   r   r   rl    r*   rl  c                 C   s   t | j}| |d d < |S r   )rl  rN   )arrdr   r   r   rm    s   
rm  c                   @   s   e Zd ZdZdd ZdS )rc   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 )Nrp   r`   rq   int32)rh   r@   g      4@r   )r   r   rd   rr   re   r^   rf   r"   r   r   r   __init__  s   zComplexTestObject.__init__N)r'   r(   r)   __doc__rs  r   r   r   r   rc     s    rc   c                 C   sJ   |  dj}td}t|| t|}t|tsJ tj	|| d S )Nr.   )r@   )
r0   r1   rl  r   r2   r3   rZ   r   r\   r]   )r6   r7   rh   cr   r   r   test_numpy_subclass  s   
rv  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   ry  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   rI   rG   rL   )r@   2      F)order)r0   r1   r   asfortranarrayrr   r{   c_contiguousf_contiguousr   r2   r3   r\   r]   )r6   r7   r^   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)r0   r1   r   zerosr   r2   pickleHIGHEST_PROTOCOLr3   r\   r]   )r6   r7   
test_arrayr  r   r   r   test_pickle_highest_protocol  s
   

r  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   r\   r]   rH  rI  sendgetvalue)
r  _ADDRlistenerclientserverclient_addrsfcfr  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.mmaprs   rq   rw   rx   r   )r0   r1   rJ   ALLOCATIONGRANULARITYr   r  rr   r   r2   r3   rZ   r_   offsetr\   r]   )r6   r   r   rj   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      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rj   prefixr
   rs  r"   r  compressor_prefixr   r   rs    s   
zFtest_register_compressor.<locals>.BinaryCompressorTestWrapper.__init__Nr'   r(   r)   rs  r   r  r   r   BinaryCompressorTestWrapper  s    r  )rH  BufferedIOBaser
   r   r   fileobj_factoryr  pop)r6   compressor_namer  r   r  r   test_register_compressor  s   r  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   rC   )r  rE   r   r   r   %test_register_compressor_invalid_name.  s   
r  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                   @   r  )zCtest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectNr  r   r   r   r   InvalidFileObject9  r  r  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"   r  r   r   rs  =     zStest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapper.__init__Nr  r   r  r   r   InvalidFileObjectWrapper<  s    r  invalidzQCompressor 'fileobj_factory' attribute should implement the file object interface)r
   r   r;   r   rC   )r  rE   r   r  r   (test_register_compressor_invalid_fileobj6  s   
r  c                   @   r   )AnotherZlibCompressorWrapperc                 C   s   t j| tdd d S r  )r
   rs  r	   r"   r   r   r   rs  J  r  z%AnotherZlibCompressorWrapper.__init__Nr  r   r   r   r   r  I  r*   r  c                   @   r   ) StandardLibGzipCompressorWrapperc                 C   s   t j| tjdd d S r  )r
   rs  r  r,  r"   r   r   r   rs  O  s   z)StandardLibGzipCompressorWrapper.__init__Nr  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 )Nr  z#Compressor '{}' already registered.T)force)r   r  r   r;   r  rC   rB   r   r  r  r,  r  )r  rE   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   )	lz4.framer   r  frameLZ4FrameFiler0   r1   r   r2   r  r-  rV   r   r3   )r6   r   
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   rC   )r6   r   r   msgrE   r   r   r    test_lz4_compression_without_lz4  s   


r  r  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  rI   r  rw   rx   r   z
test1.mmaprq   rG   r                     )	a0a1a2a3a4a5a6a7a8z
test2.mmap)r0   r1   r   rQ   randnr   r2   r3   rZ   r_   r\   r]   ctypesr   NUMPY_ARRAY_ALIGNMENT_BYTESr{   alignedrT   r   rs   items)r6   r  r   rh   r_   
array_list
l_reloadedidx
array_dict
d_reloadedkeyr   r   r   test_memmap_alignment_padding  sP   



r  r   )rt  r<  r4   r  rH  rJ   rW   r  rQ   r   r  r
  r   rH   
contextlibr   pathlibr   r   ImportErrorr&  joblibr   r   joblib.compressorr   r   r   r	   r
   joblib.numpy_pickle_utilsr   r   r   r   joblib.testr   joblib.test.commonr   r   r   r   r   r   joblib.testingr   r   r   typelist_noneappendra   _typebool_boolr   _intfloat_floatcomplex_complexr   _string_tuple_list_dictrV   _builtinr   r    r   r+   	_instance_objectr9   r=   r<   rF   ro   rv   r   r   r   r   r   r   r   r   r   r  r  r  r  rB   r  r  r*  r4  r6  r;  r?  rG  rJ  rK  rM  rN  r   encoderb  rf  rh  rk  r[   rl  rm  rc   rv  ry  r  r  r  r  r  r  r  r  r  r  r  r  DEFAULT_PROTOCOL	protocolsr  r  r   r   r   r   <module>   sr    
















1
	
,





[
$

*
	

	$		






	2



	
		






