
     YHh                     
   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 	 ddlZ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Z1e0je                  e1       e3Z4e0je                  e4        e5d      Z6e0je                  e6        e7d      Z8e0je                  e8        e9d      Z:e0je                  e:        e;d      Z<e0je                  e<        e=d      Z>e0je                  e>       dZ?e0je                  e?       g Z@e0je                  e@       i ZAe0je                  eA       eBZCe0je                  eC       d ZD G d d      ZE G d deF      ZGe0je                  eD       e0je                  eE       e0je                  eG        eE       ZHe0je                  eH        eG       ZIe0je                  eI        e-dddg       e-de0      d               ZJd ZK e-ddd eL       g      d        ZMe* e-dg d      d               ZNe*d        ZOe*d        ZPe*d        ZQe*d        ZRe*d         ZSe*e) e-dd!d"g      d#                      ZTe*d$        ZUe*d%        ZVd& ZWdyd'ZXe*d(        ZYe*d)        ZZe*d*        Z[ e-d+d,d-g      d.        Z\ e-d/d0d1d2j                  d3      fd4d5j                  d3      fg      d6        Z^ e-d7d8d9g      d:        Z_e* e-dg d;       e-d<e      d=                      Z`d> Zad? Zb e-d@dAebfdBeafg      dC        Zc e-dDg dE      dF        Zde*dG        Zee*dH        Zfe*dI        Zge*dJ        Zhe*dK        Zi e-dLdMdNdOj                   ej                  ddP      dPz        j                  dQ      z  gdRdSgT       e-dUg dV      dW               Zl e-dXdddYdZdi g      d[        Zm e-d\g d]      d^        Zn e-d_ddi g      d`        Zoe'" G da dbe'j                        Zqdc Zr G dd de      Zse*df        Ztdg Zue*dh        Zve*di        Zwe*dj        Zxe*dk        Zydl Zz e-dmddi g      dn        Z{do Z| G dp dqe      Z} G dr dse      Z~dt Ze(du        Ze+dv        Zej                  gZej                  ej                  k7  reje                  ej                         e* e-dwe      dx               Zy# e$ r dZY w xY w)zz@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              #      K   |  y wNr   )xs    V/var/www/html/planif/env/lib/python3.12/site-packages/joblib/test/test_numpy_pickle.py	_functionr    U   s     
Gs   c                       e Zd Zd Zy)_classc                      y r   r   selfs    r   _methodz_class._methodZ           N__name__
__module____qualname__r&   r   r(   r   r"   r"   Y       r(   r"   c                       e Zd Zd Zy)	_newclassc                      y r   r   r$   s    r   r&   z_newclass._method_   r'   r(   Nr)   r   r(   r   r/   r/   ^   r-   r(   r/   compressmemberc                     | j                  d      j                  }t        j                  |||       t        j                  |      }|t        j                  |      k(  r||k(  sJ y y )Ntest.pklr1   )joinstrpathr   dumploadcopydeepcopy)tmpdirr1   r2   filename_members        r   test_standard_typesr?   p   s`     {{:&..Hfh:)G v&&    'r(   c                      t        t              5  t        j                  dt	                      d d d        y # 1 sw Y   y xY w)Nfoo)r   
ValueErrorr   r8   dictr   r(   r   test_value_errorrD   }   s1    	
	 )%() ) )s	   8Awrong_compress
   c                     dj                  |       }t        t              5 }t        j                  dd|        d d d        j                  |       y # 1 sw Y   xY w)Nz%Non valid compress level given: "{0}"dummyrA   r5   )formatr   rB   r   r8   match)rE   exception_msgexcinfos      r   test_compress_level_errorrN      sU     <BB>RM	
	 Cw'5>BCMM- C Cs   AA)FTr      zlibc                    | j                  d      j                  }t        j                  j	                  d      }|j                  d      }t        |f|j                  f||f|||gf      D ]  \  }}t        j                  |||      }t        |      dk(  sJ |d   |k(  sJ t        j                  j                  |d         sJ t        j                  |      }|D ]  }	t        |	t        j                         rJ  t        j"                  j%                  t        j&                  |      t        j&                  |              t        j(                  |dz   ddt        j*                  	      }t        j                  |||      }t        |      dk(  sJ t        j                  |      }t-        |      t        j(                  ur#t/        |d
      rt        |t-        |            sJ t        j"                  j%                  ||       t1               }t        j                  |||      }t        |      dk(  sJ t        j                  |      }
t        |
t-        |            sJ t        j"                  j%                  |
j2                  |j2                         t        j"                  j%                  |
j4                  |j4                         t        j"                  j%                  |
j6                  |j6                         y )Nr4   r   )rG      r5   r   mmapw+   )modeshapedtype__array_prepare__)r6   r7   r   randomRandomStaterandom_sample	enumerateTr   r8   lenospathexistsr9   
isinstancendarraytestingassert_array_equalarraymemmapfloat64typehasattrComplexTestObjectarray_float	array_int	array_obj)r<   r1   r=   rndaindexobj	filenamesobj_item
obj_loadeds              r   test_numpy_persistencerx      se    {{:&..H
))


"C'"A!v1v1ay AB E
s %%c8hG	 9~"""|x'''ww~~il+++   * 	0DdBJJ///	0 	

%%bhhsmRXXd^D!E& ))Hv%D
LC!!#x(CIy>QX&DCy		!gc3F&G$S	***JJ!!$, 
C!!#x(CIy>Q""8,Jj$s),,,JJ!!*"8"8#//JJJ!!*"6"6FJJ!!*"6"6Fr(   c                 ,   t        j                  t        dz   t         j                        }| j	                  d      j
                  }t        j                  ||d       t        j                  |      }t         j                  j                  ||       y )Nd   rX   r4   Tr5   )r   onesr   uint8r6   r7   r   r8   r9   re   rf   )r<   	big_arrayr=   arr_reloadeds       r   2test_numpy_persistence_bufferred_array_compressionr      se    3.rxx@I{{:&..HiD9$$X.LJJ!!)\:r(   c                    t         j                  j                  d      }|j                  d      }| j	                  d      j
                  }t        j                  ||       t        j                  |d      }t        |t         j                        sJ | j	                  d      j
                  }t               }t        j                  ||       t        j                  |d      }t        |t        |            sJ t        |j                  t         j                        sJ |j                  j                  j                  rJ t        |j                   t         j                        sJ |j                   j                  j                  rJ t        |j"                  t         j                        rJ t         j$                  j'                  |j                  |j                         t         j$                  j'                  |j                   |j                          t         j$                  j'                  |j"                  |j"                         t        j                  |d      }|j                  j                  j                  sJ d|j                  dd |j                   j                  j                  sJ d|j                   dd t        j                  |d      }t         j$                  j'                  |j                  |j                         t         j$                  j'                  |j                   |j                          t        j                  |d	       |j                   j                  j                  sJ |j                   j(                  dk(  sJ |j                  j                  j                  sJ |j                  j(                  dk(  sJ y )
Nr   rG   z	test1.pklr	mmap_modez	test2.pklr+g      $@rT   )r   rZ   r[   r\   r6   r7   r   r8   r9   rc   rh   rl   rj   rm   flags	writeablern   ro   re   rf   rV   )r<   rp   rq   r=   brs   rw   obj_reloadeds           r   test_memmap_persistencer      s   
))


"C"A{{;'//Ha"(c2Aa### {{;'//H

Cc8$""8s;Jj$s),,,j,,bii888%%++5555j**BII666##))3333*..		:::JJ!!*"8"8#//JJJ!!*"6"6FJJ!!*"6"6F ""8t<J!!''1111#'J1R %%////!#J2$$X=LJJ!!,":":J<R<RSJJ!!,"8"8*:N:NO h$/%%////$$,,,!!''1111!!&&$...r(   c                    t         j                  j                  d      }|j                  d      }t        j                  ddgt
              }||f}| j                  d      j                  }t        j                  ||       t        j                  |d      \  }}t        |t         j                        sJ t        |t         j                        rJ y )	Nr   rG   r   r   r{   r4   r   r   )r   rZ   r[   r\   rg   objectr6   r7   r   r8   r9   rc   rh   )r<   rp   rq   r   	constructr=   a_cloneb_clones           r   $test_memmap_persistence_mixed_dtypesr      s     ))


"C"A
!S(AAI{{:&..Hi*#((SAGW gryy))) '299----r(   c                    t         j                  j                  d      }|j                  d      }t         j                  j                  |d      }| j                  d      j                  }t        j                  ||       t        j                  |d      }t        |t         j                  j                        sJ y )Nr   rG   g      ?r4   r   r   )r   rZ   r[   r\   mamasked_greaterr6   r7   r   r8   r9   rc   masked_array)r<   rp   rq   r=   r   s        r   test_masked_array_persistencer   	  s     ))


"C"A
Q$A{{:&..Ha"(c2Aa++,,,r(   c                    t         j                  j                  d      }|j                  d      }| j	                  d      j
                  }t        j                  ||d       t        t              5 }t        j                  |d      }d d d        dj	                  D cg c]  }t        |       c}      }|D cg c]  }|j                   }}t        t         j                        rJ t         j                  j!                  ||       t#        |      dk(  sJ |       t        |d         d	| d
k(  sJ y # 1 sw Y   xY wc c}w c c}w )Nr   rG   r4   r   r5   r   r   
z6mmap_mode "r+" is not compatible with compressed file z. "r+" flag will be ignored.)r   rZ   r[   r\   r6   r7   r   r8   r   UserWarningr9   strmessagerc   rh   re   rf   r_   )r<   rp   rs   this_filenamewarninforeloaded_objw	debug_msgs           r   test_compress_mmap_mode_warningr     s(    ))


"C


B
CKK
+33Mc=15	{	 Hx#(($GH		84a3q645I#+,a		,H,,		222JJ!!#|4x=A(y(HQK :< 	<	<H H4,s   3D="E	?E=ETFc                    | j                  d      j                  }t        j                  d      }t        j                  dt	        d      z  t        j
                        }||fD ]  }|j                  dz  }|t        t        j                  j                  dd            z   }t        t        j                  |||      }t        d	z   }	||	k  sJ t        t        j                  |      }d
t        z   }
|||
z   k  rJ  y )Nr4   rG   rG   rz   g    .ArW   rX   r     r5   g0@    )r6   r7   r   r|   intr}   nbytesr   rZ   randintr   r   r8   r   r9   )r<   r1   r=   small_arrayr~   rs   sizeobj_filenamemem_usedwrite_buf_sizeread_buf_sizes              r   test_memory_usager   *  s    
 {{:&..H''(#KcCHnBHH=IY' /zzC#bii&7&74&@"AA|00#|hW )+==>)))|00,? _,$..../r(   c                    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d	d
gd      t        j                  dt         j                        j                         dg}| j                  d      j                  }t        j                  ||d      }t        |      dk(  sJ t        j                  |      }t        ||      D ]m  \  }}t        |t         j                        rGt        |      }|j                  |j                  k(  sJ t         j                   j#                  ||       g||k(  rmJ  y )N   <i8r{   >i8<f8>f8r   abcrR   rq   r   O      C'est l'été !ztemp.pkl.gzr5   )r   arangerX   rg   r}   tobytesr6   r7   r   r8   r_   r9   ziprc   rd   r   re   assert_equal)r<   expected_listfnamedumped_filenamesresult_listresultexpecteds          r   $test_compressed_pickle_dump_and_loadr   D  sU    			!288E?+
		!288E?+
		!288E?+
		!288E?+
!U!!,-S9
		#RXX&..0M KK&..E#((J A%%%##E*K]; &h

+0:H<<8>>111JJ##FH5X%%%&r(   c                 L   t        j                  d      }t        j                  d      }||f}t        j                  d|      }t        j                  d|      }| j                  d      j                  }t        j                  ||g|       t        j                  |d      \  }}|j                  |j                  k(  sJ |j                  |v sJ t        j                  |d      \  }	}
|	j                  |j                  k(  sJ |
j                  |j                  k(  sJ y )	Nr   r   r   r{   ztemp.pklT)ensure_native_byte_orderF)r   rX   r   r6   r7   r   r8   r9   )r<   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_loads              r   test_memmap_loadr   ^  s   ((5/xx%'78Jyy"56Hyy"23HKK
#++Ex*E21=1B1B2..  %%)=)C)CCCC%%3337C7H7H844 #((HNN:::"((HNN:::r(   c                      d} t        t        t        j                  |             5  t	        j
                  ddd       d d d        y # 1 sw Y   y xY w)NzrNative byte ordering can only be enforced if 'mmap_mode' parameter is set to None, but got 'mmap_mode=r+' instead.)rK   z/path/to/some/dump.pklTr   )r   r   )r   rB   reescaper   r9   )expected_msgs    r   test_invalid_parameters_raiser   z  sK    	: 
 

"))L"9	: 
$tt	

 
 
s   A		Ac                    t        j                  d|       }t        |j                  d            }ddd}|j	                  dd      }|j	                  |d      }||k\  r	 t        j                  d      5 }t        j                  d	       t        j                  | |
      }	ddd       t        j                  j                  |       }
d|
v sd|
v rdnd}t        j                  d|
      r|dnd}||z   }t              |k(  s%J d| d|D cg c]  }|j                   c}        |D cg c]  }t!        |j"                  t$              s|! }}|D cg c]  }t!        |j"                  t&              s|! }}|D ]+  }t)        |j                        dj+                  |       k(  r+J  |D ]F  }t        j,                  |       }t        j                  d| dt)        |j                              rFJ  t/        	|      D ]m  \  }}t1        |t2        j4                        rGt7        |      }|j8                  |j8                  k(  sJ t2        j:                  j=                  ||       g||k(  rmJ  y	 t        j                  |        tK        d      # 1 sw Y   xY wc c}w c c}w c c}w # t>        $ r}|dk(  r#t1        |t@              sJ d}|t)        |      v sQJ | jC                  d      r8tD        jF                  d   r%t1        |t@              sJ tH        t)        |      v sJ  Y d}~yY d}~yd}~ww xY w# t@        $ r4}dj+                  |      }|t)        |jF                        v sJ Y d}~yd}~ww xY 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   rR   rO   )rR   rO   rU   T)recordalwaysr   Nz_0.9z_0.8.4r   z_0.1.+.pkl$z6Did not get the expected number of warnings. Expected z but got warnings: 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   rK   r   groupgetwarningscatch_warningssimplefilterr   r9   r`   ra   basenamesearchr_   r   
issubclasscategoryDeprecationWarningr   r   rJ   r   r   rc   r   rd   r   rX   re   r   	ExceptionrB   endswithr   argsr	   AssertionError)r=   r   r   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_warningsr   deprecation_warningsuser_warningsescaped_filenamer   r   excr   es                          r   _check_pickler     s    HH.9M"%m&9&9!&<"=01aL)CGG1MCGG#Q "99>	((5 O%%h/*//INO GG,,X6M-]1JQR - IIm];	@U  & 13LL ! x=$88 H'((;'/0!AII0138 $$z!**>P'Q$  $ )1X1Jqzz;4WQXMX) 		N##)6(#344 # #%99X#6 yy!"2!33GH#aii.   %(]$C . h

38BH!<<8>>999JJ++FH=!X---.2	*h' P GO O& 1$ Y,  	 +a/!#z222H  #c(***""6*x}}Q/?!#z222.#c(::: ; +	.  	*8??@WXGc!&&k)))	*s   !J4 7-J$A+J4 J%"J4 /J*J*J4 J/9J/=.J4 ,A
J4 7A;J4 3J4 8 M J"J4 4	L>=A2L99L>	M>
*M99M>c            
      *   t        j                  dt        j                  d            t        j                  dt        j                  d            t        j                  dddddgd	      t        j                  d
t         j                        j                         t        j                  g dt        j                  d            dg} t        j                  j                  t        j                  j                  t        j                              }d}t        |dz  }t        j                  |      D cg c]6  t        fd|D              r t        j                  j!                  |      8 }}|D ]  }t#        ||         y c c}w )Nr   r   r{   r   r   r   rR   r   r   r   r   r   rR   r   ).pkl.gzz.gzip.bz2lz4).xz.lzmac              3   @   K   | ]  }j                  |        y wr   )r   ).0extfns     r   	<genexpr>z<test_joblib_pickle_across_python_versions.<locals>.<genexpr>  s     =Cr{{3=s   )r   r   rX   rg   r}   r   matrixr`   ra   dirnameabspathr   __file__lzmalistdiranyr6   r   )r   test_data_dirpickle_extensionsr  pickle_filenamesr   s      `  r   )test_joblib_pickle_across_python_versionsr    s,    			!288E?+
		!288E?+
!U!!,-S9
		#RXX&..0 			)288E?3
M  GGOOBGGOODMM$BCM?-- **]+=+<== 	]B'  " ,e]+,s   ?;Fc            
      
   t        j                  dt        j                  d            t        j                  dt        j                  d            t        j                  dddddgd	      t        j                  d
t         j                        j                         t        j                  g dt        j                  d            dg} t        j                  j                  t        j                  j                  t        j                              }t        j                  |      D cg c]3  }|j                  d      r t        j                  j                  ||      5 }}|D ]  }t!        || d        y c c}w )Nr   r   r{   r   r   r   rR   r   r   r   r   r   r   r   r   )r   r   rX   rg   r}   r   r  r`   ra   r  r  r   r  r
  r   r6   r   )r   r  r  r  r   s        r   3test_joblib_pickle_across_python_versions_with_mmapr    s    			!288E?+
		!288E?+
!U!!,-S9
		#RXX&..0 			)288E?3
M GGOOBGGOODMM$BCM **]+;;v 	]B' 
 " ;e]c:;s   08F c                  l   t        j                  ddgddg      t        j                  dt        j                  d            t        j                  dt        j                  d            g} | D ]  }t        j
                  d	k(  rt        |      rJ t        |      sJ t        |      }|j                  j                  r<|j                  j                  j                         D ]  }|d
   j
                  dk(    |j                  j
                  dk(  rJ  t        j                  ddgddg      t        j                  dt        j                  d            t        j                  dt        j                  d            g}|D ]  }t        j
                  dk(  rt        |      rJ t        |      sJ t        |      }|j                  j                  r<|j                  j                  j                         D ]  }|d
   j
                  dk(    |j                  j
                  dk(  rJ  y )N)r   g       @)rO   g      @) r   )r  r   r{   rO   r   r   bigr   =)r  r   )r  r   r   r   little)
r   rg   r   rX   sys	byteorderr   r   fieldsvalues)	be_arraysrg   	convertedf	le_arrayss        r   .test_numpy_array_byte_order_mismatch_detectionr    s    	(H%k;-GH
		!288E?+
		!288E?+I  
4==E!:5AAA6u===-e4	??!!__++224 &!#%& ??,,333
4 	(H%k;-GH
		!288E?+
		!288E?+I  
4==H$:5AAA6u===-e4	??!!__++224 &!#%& ??,,333
4r(   compress_tuple)rP   rO   gziprO   c                     | j                  d      j                  }t        j                  d||       t	        |d      5 }t        |      |d   k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr4   rI   r5   rbr   r6   r7   r   r8   openr   )r<   r   r=   r  s       r   test_compress_tuple_argumentr'  J  sc     {{:&..Hgx.A	h	 :!!$q(9999: : :s    AA'zcompress_tuple,message))rP   rO   extraz9Compress argument tuple should contain exactly 2 elements)wrongrO   z(Non valid compression method given: "{}"r)  )rP   r)  z$Non valid compress level given: "{}"c                     | j                  d      j                  }t        t              5 }t	        j
                  d||       d d d        j                  |       y # 1 sw Y   xY w)Nr4   rI   r5   )r6   r7   r   rB   r   r8   rK   )r<   r   r   r=   rM   s        r   &test_compress_tuple_argument_exceptionr+  T  sY    $ {{:&..H	
	 Fw'8nEFMM'F Fs   AA'compress_stringrP   r"  c                     | j                  d      j                  }t        j                  d||       t	        |d      5 }t        |      |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr4   rI   r5   r$  r%  )r<   r,  r=   r  s       r   test_compress_string_argumentr.  m  s^     {{:&..Hgx/B	h	 8!!$7778 8 8s    AA$)r   rO      cmethodc                    | j                  d      j                  }t        j                  dd      t	        d      dddg d	i d
df}|dv rt
        t        j                  d       n-|dk(  r(t        j                  d
   rt        j                  d       |dz   |z   }|D ]  }t        j                  ||||f       t        |d      5 }t        |      |k(  sJ 	 d d d        t        j                  |      }t        |t!        |            sJ t        |t        j"                        r!t        j$                  j'                  ||       ||k(  rJ  y # 1 sw Y   zxY w)Nr4   )rz   rz   f8r   rG   r   r   )rq   rR   r   r   g      ?r	  xzzlzma is support not availabler   zlz4 is not installed..r5   r$  )r6   r7   r   r|   ranger	  pytestskipr   r   r   r8   r&  r   r9   rc   rj   rd   re   rf   )	r<   r1   r0  r=   objectsdump_filenamers   r  r   s	            r   test_joblib_compression_formatsr;  w  sF    {{:&..H
j-b	C


		G . T\34	E	hmmA. 	+,sNW,M '#}7JK-& 	4!%a(G333	4 $((7,S	222c2::&JJ)),<3&&&'	4 	4s   EE	c                     t        t        j                  | d            5 }|j                         }ddd       t	        |d      5 }|j                         ddd       y# 1 sw Y   0xY w# 1 sw Y   yxY w)zDecompress a gzip file.r$  Nwb)r   r"  GzipFilereadr&  writesource_filenametarget_filenamefobufs       r   _gzip_file_decompressrF    sj    	5	6 "ggi 
ot	$ 
   s   A A, A),A5c                     t        | d      5 }t        j                  |j                               }ddd       t        |d      5 }|j	                         ddd       y# 1 sw Y   0xY w# 1 sw Y   yxY w)zDecompress a zlib file.r$  Nr=  )r&  rP   
decompressr?  r@  rA  s       r   _zlib_file_decompressrI    sj    	ot	$ )oobggi() 
ot	$ 
 ) ) s   $A A, A),A5zextension,decompress.zr   c                     d}| j                  d      j                  }||z   }t        j                  ||        |||       t        j                  |      }||k(  sJ y )Nza string to persistr4   )r6   r7   r   r8   r9   )r<   	extensionrH  rs   filename_rawfilename_compressedr   s          r   'test_load_externally_decompressed_filesrO    sf      C;;z*22L&2c./ "L1  $$\2L,r(   zextension,cmethod))rJ  rP   )r   r"  )r   bz2)r   r	  )r   r4  )r   not-compressed)r  rQ  c                 |   |dv rt         t        j                  d       | j                  d      j                  }d}||z   }t        j                  ||       t        |d      5 }t        |      |k(  sJ 	 d d d        t        j                  |      }t        |t        |            sJ ||k(  sJ y # 1 sw Y   =xY w)Nr3  zlzma is missingr4   zobject to dumpr$  )r	  r7  r8  r6   r7   r   r8   r&  r   r9   rc   rj   )r<   rL  r0  r=   rs   
dump_fnamer  r   s           r   %test_compression_using_file_extensionrT    s     . T\%&{{:&..H
CI%Jc:&	j$	 01!!$///0  $$Z0LlDI...30 0s   $B22B;c                    t         j                  j                  d      dg}t        j                  t        j
                  g}t        |t        j                  gz  }| j                  d      j                  }|D ]  }|D ]  } ||d      5 }t        j                  ||       d d d         ||d      5 }t        j                  |      }d d d        t        |d      5 }t        j                  |      }d d d        t        |t         j                        rAt         j                   j#                  |       t         j                   j#                  |       |k(  sJ |k(  rJ   y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   	some datar4   r=  r$  )r   rZ   rP  BZ2Filer"  r>  r	  LZMAFiler6   r7   r   r8   r9   r&  rc   rd   re   rf   )	r<   objsfobjsr=   rs   fobjr  r   obj_reloaded_2s	            r   test_file_handle_persistencer]    s`   IIX&4D[[$--(E$-- {{:&..H - 	-Dh% *!!#q)*
 h% 4+0034
 h% 6!-!2!21!56 #rzz*

--lC@

--ncB#s***%,,,'	--* *
4 4
6 6s$   
E(2E4F (E14E= F	c                  V   t         j                  j                  d      dg} | D ]  }t        j                         }t	        j
                  ||       t	        j                  |      }t        |t         j                        r!t         j                  j                  ||       }||k(  rJ  y )Nr   rV  )r   rZ   ioBytesIOr   r8   r9   rc   rd   re   rf   )rY  rs   r  r   s       r   test_in_memory_persistencera    s    IIX&4D 'JJL#q!#((+c2::&JJ)),<3&&&'r(   c                    t         j                  j                  d      }| j                  d      j                  }t	        |d      5 }t        j                  ||       d d d        t	        |d      5 }t        j                  |d      }d d d        t         j                  j                  |       y # 1 sw Y   VxY w# 1 sw Y   6xY w)Nr   r4   r=  r$  r   r   )
r   rZ   r6   r7   r&  r   r8   r9   re   rf   )r<   rs   r=   r  r   s        r   !test_file_handle_persistence_mmaprc    s    
))

8
$C{{:&..H	h	 "#q!" 
h	 <#((d;< JJ!!,4" "< <s   B32B?3B<?Cc                 0   t         j                  j                  d      }| j                  d      j                  }t	        |d      5 }t        j                  ||d       d d d        t        t        j                  |d            5 }t        t              5 }t        j                  |d       d d d        t              d	k(  sJ t        |d
   j                        d|ddz  k(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   RxY w# 1 sw Y   y xY w)Nr   r4   r=  r!  r5   r$  r   r   r   r   zP"%(fileobj)r" is not a raw file, mmap_mode "%(mmap_mode)s" flag will be ignored.)fileobjr   )r   rZ   r6   r7   r&  r   r8   r   r"  r>  r   r   r9   r_   r   r   )r<   rs   r=   r  r   s        r   ,test_file_handle_persistence_compressed_mmaprf     s   
))

8
$C{{:&..H	h	 8#q;78 
x.	/ 
1; 	18a40	18}!!!##$$23$&GHH	
H
 
8 8	1 	1
 
s0   C4DD /;D4C= D		DDc                  p   t         j                  j                  d      } t        j                         }t	        j
                  | |       t        t              5 }t	        j                  |d       d d d        t              dk(  sJ t        |d   j                        dddiz  k(  sJ y # 1 sw Y   <xY w)Nr   r   r   r   r   zuIn memory persistence is not compatible with mmap_mode "%(mmap_mode)s" flag passed. mmap_mode option will be ignored.r   )r   rZ   r_  r`  r   r8   r   r   r9   r_   r   r   )rs   rE  r   s      r   +test_file_handle_persistence_in_memory_mmaprh  3  s    
))

8
$C
**,Cc3	{	 /x#./x=AHQK !4()	)	)	/ /s   B,,B5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   rO   	   c                 $   | j                  d      j                  }t        |d      5 }t        |d|      5 }|j	                         sJ |j                  |       |j                         |j                         k(  sJ t        t        j                        5  |j                          d d d        t        t        j                        5  |j                          d d d        d d d        j                  sJ t        t              5  |j                          d d d        d d d        t        |d      5 }t        |      5 }|j                         sJ |j!                         sJ |j                         |j                         k(  sJ |j#                         |k(  sJ t        t        j                        5  |j%                          d d d        |j!                         sJ |j'                  d       |j)                         dk(  sJ 	 d d d        j                  sJ 	 d d d        t        |d|      5 }|j	                         sJ |j                  |       d d d        t        |d      5 }|j#                         |k(  sJ |j!                         sJ 	 d d d        t        |d|      }|j	                         sJ |j                  |       |j+                          t        |d      }|j#                         |k(  sJ |j+                          y # 1 sw Y   kxY w# 1 sw Y   FxY w# 1 sw Y   KxY w# 1 sw Y   "xY w# 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   OxY w# 1 sw Y   "xY w# 1 sw Y   xY w)Nr4   r=  compresslevelr$  r   )r6   r7   r&  r
   writabler@  filenor   r_  UnsupportedOperation_check_can_read_check_can_seekclosedrB   _check_not_closedreadableseekabler?  _check_can_writeseektellclose)r<   r   rj  r=   r  fzs         r   test_binary_zlibfiler}  E  s    {{:&..H	h	 #At>B 	%b;;= =HHTN99;!((*,,,//0 %""$% //0 %""$%	% yyyJ 	#  "	## 
h	 A 		"";;= =;;= =99;!((*,,,779$$$//0 &##%&;;= =GGAJ779>!>		" yyy 
$n	E {{}}
 
$	' 2wwyD   {{}}
 
$n	EB;;==HHTNHHJ	$	'B779HHJO% %% %	% 	%	# 	## #(& &		" 		"   s   MA L+L(!L+	LL+"%ML8M4M, A6M6MA MM,5$M9-(NLL+L(#L++L5	0M8M	=MMMMM)	$M,,M69NN	bad_value   rq   c                    | j                  d      j                  }t        t              5 }t	        |d|       d d d        t        j                  dj                  |            }j                  |       y # 1 sw Y   ?xY w)Nr4   r=  rm  zS'compresslevel' must be an integer between 1 and 9. You provided 'compresslevel={}')	r6   r7   r   rB   r
   r   r   rJ   rK   )r<   r~  r=   rM   patterns        r   +test_binary_zlibfile_bad_compression_levelsr    sp    {{:&..H	
	 @wxY?@ii	**0&*;G MM'@ @s   A88Bbad_mode)rq   r   r   r   r   rR   c                     | j                  d      j                  }t        t              5 }t	        ||       d d d        j                  d       y # 1 sw Y   xY w)Nr4   zInvalid mode)r6   r7   r   rB   r
   rK   )r<   r  r=   rM   s       r   "test_binary_zlibfile_invalid_modesr    sK    {{:&..H	
	 +wx*+MM.!+ +s   AAbad_filec                     t        t              5 }t        | d       d d d        j                  d       y # 1 sw Y   xY w)Nr$  z1filename must be a str or bytes object, or a file)r   	TypeErrorr
   rK   )r  rM   s     r   *test_binary_zlibfile_invalid_filename_typer    s8    			 'gx&'MMEF' '	   7A c                       e Zd Zd Zy)SubArrayc                 :    t         t        j                  |       ffS r   )_load_sub_arrayr   asarrayr$   s    r   
__reduce__zSubArray.__reduce__  s    "RZZ%5$777r(   N)r*   r+   r,   r  r   r(   r   r  r    s    	8r(   r  c                 :    t        | j                        }| |d d  |S r   )r  rW   )arrds     r   r  r    s    SYY!r(   c                       e Zd ZdZd Zy)rl   z7A complex object containing numpy arrays as attributes.c                     t        j                  dd      | _        t        j                  dd      | _        t        j
                  g dd      | _        y )Nrz   ri   r{   int32)rq   rG   g      4@r   )r   r   rm   r|   rn   rg   ro   r$   s    r   __init__zComplexTestObject.__init__  s9    !yyI>DWWS8DNXXoXFDNr(   N)r*   r+   r,   __doc__r  r   r(   r   rl   rl     s    E	Gr(   rl   c                 
   | j                  d      j                  }t        d      }t        j                  ||       t        j
                  |      }t        |t              sJ t        j                  j                  ||       y )Nr4   )rG   )
r6   r7   r  r   r8   r9   rc   r   re   rf   )r<   r=   rq   cs       r   test_numpy_subclassr    sc    {{:&..HAa"(#Aa"""JJ!!!Q'r(   c                 "   | j                  d      j                  }d}t        j                  |t	        |             t        j
                  |      |k(  sJ t        j                  ||       t        j
                  t	        |            |k(  sJ y )Nr4   {   )r6   r7   r   r8   r   r9   )r<   r=   values      r   test_pathlibr    su    {{:&..HEeT(^,X&%///eX&T(^,555r(   c                    | j                  d      j                  }t        j                  ddgddgg      dd  t        j                  dd      d d d dd d f   fD ]}  }|j
                  j                  rJ |j
                  j                  rJ t        j                  ||       t        j                  |      }t        j                  j                  ||        y )	Nr4   r   rR   rO   rU   )rG   2      F)order)r6   r7   r   asfortranarrayr|   r   c_contiguousf_contiguousr   r8   r9   re   rf   )r<   r=   rg   array_reloadeds       r   "test_non_contiguous_array_picklingr    s    {{:&..H
 	Aq6Aq6*+AB/
C(BQB2 = ;;++++;;++++%*%**84


%%ne<=r(   c                    | j                  d      j                  }t        j                  d      }t	        j
                  ||t        j                         t	        j                  |      }t        j                  j                  ||       y )Nr4   rG   protocol)r6   r7   r   zerosr   r8   pickleHIGHEST_PROTOCOLr9   re   rf   )r<   r=   
test_arrayr  s       r   test_pickle_highest_protocolr    sa     {{:&..H"Jj(V5L5LM!&&x0NJJ!!.*=r(   c                     t        j                  d      } d}t        j                  t        j                  t        j                        }|j                  |       |j                  d       t        j                  |      5 }|j                         \  }}|j                  d      5 }t        j                  | |       d d d        |j                  d      5 }t        j                  |      }d d d        t         j                  j                  |        t        j                          }	t        j                  | |	       |j#                  |	j%                                |j                  d      5 }t        j                  |      }d d d        t         j                  j                  ||        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   JxY w# 1 sw Y   y xY w)NrG   )	localhosti90  r   r=  r$  )r   r   socketAF_INETSOCK_STREAMbindlistencreate_connectionacceptmakefiler   r8   r9   re   rf   r_  r`  sendgetvalue)
r  _ADDRlistenerclientserverclient_addrsfcfr  bytes_to_sends
             r   test_pickle_in_socketr    s    2J E}}V^^V-?-?@HMM%OOA		!	!%	( BF&oo/__T" 	.bj"-	. __T" 	3b)..r2N	3 	

%%njA 

*m4M**,-__T" 	3b)..r2N	3 	

%%njA)B B	. 	.	3 	3	3 	3#B BsU   %G&F5=GG,BG.G(G5F>	:GG
	GG	GG"c                    | j                  d      j                  }t        j                  }t	        j
                  |d      t	        j                  |d      g}t        j                  ||       t        j                  |d      }t        |d   t        j                        sJ |d   j                  |kD  sJ t        j                  j                  ||       y )N	test.mmapr}   r{   r   r   r   )r6   r7   rS   ALLOCATIONGRANULARITYr   r  r|   r   r8   r9   rc   rh   offsetre   rf   )r<   r   r   rs   memmapss        r    test_load_memmap_with_big_offsetr    s     KK$,,E%%D88D("''$g*F
GCc5!5Ggaj")),,,1:t###JJ!!#w/r(   c                    d}d G d dt         j                         G fddt              }t        | |              t        |   j
                  k(  sJ t        |   j                  k(  sJ t	        j                  |       y )N	test-nameztest-prefixc                       e Zd Zy):test_register_compressor.<locals>.BinaryCompressorTestFileNr*   r+   r,   r   r(   r   BinaryCompressorTestFiler        r(   r  c                       e Zd Z fdZy)=test_register_compressor.<locals>.BinaryCompressorTestWrapperc                 6    t        j                  |        y )Nrs   prefixr   r  )r%   r  compressor_prefixs    r   r  zFtest_register_compressor.<locals>.BinaryCompressorTestWrapper.__init__  s    &&2;Lr(   Nr*   r+   r,   r  )r  r  s   r   BinaryCompressorTestWrapperr    s    	r(   r  )r_  BufferedIOBaser   r   r   fileobj_factoryr  pop)r<   compressor_namer  r  r  s      @@r   test_register_compressorr    s    !O%2#4#4 &7  )D)FG(88<TTTT(//3DDDD _%r(   invalid_namec                     t        t              5 }t        | d        d d d        j                  d       y # 1 sw Y   xY w)Nz"Compressor name should be a string)r   rB   r   rK   )r  rM   s     r   %test_register_compressor_invalid_namer  .  s:     

	 0wL$/0MM670 0r  c                       G d d       G fddt               } t        t              5 }t        d |               d d d        j	                  d       y # 1 sw Y   xY w)Nc                       e Zd Zy)Ctest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectNr  r   r(   r   InvalidFileObjectr  9  r  r(   r  c                       e Zd Z fdZy)Jtest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapperc                 6    t        j                  | d       y Ns   prefixr  r  )r%   r  s    r   r  zStest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapper.__init__=  s    &&t1B9Ur(   Nr  )r  s   r   InvalidFileObjectWrapperr  <  s	    	Vr(   r  invalidzQCompressor 'fileobj_factory' attribute should implement the file object interface)r   r   rB   r   rK   )r  rM   r  s     @r   (test_register_compressor_invalid_fileobjr  6  sb     V#4 V 

	 CwI'?'ABC MM	$C Cs   AA!c                       e Zd Zd Zy)AnotherZlibCompressorWrapperc                 <    t        j                  | t        d       y r  )r   r  r
   r$   s    r   r  z%AnotherZlibCompressorWrapper.__init__J  s    ""4^INr(   Nr  r   r(   r   r  r  I  s    Or(   r  c                       e Zd Zd Zy) StandardLibGzipCompressorWrapperc                 P    t        j                  | t        j                  d       y r  )r   r  r"  r>  r$   s    r   r  z)StandardLibGzipCompressorWrapper.__init__O  s    ""4T]]9Mr(   Nr  r   r(   r   r  r  N  s    Nr(   r  c                     d} t        | t                      t        t              5 }t        | t	                      d d d        j                  dj                  |              t        | t	               d       | t        v sJ t        |    j                  t        j                  k(  sJ t        j                  |        y # 1 sw Y   xY w)Nr  z#Compressor '{}' already registered.T)force)r   r  r   rB   r  rK   rJ   r   r  r"  r>  r  )r  rM   s     r   +test_register_compressor_already_registeredr  S  s    !O )E)GH	
	 QwO-M-OPQMM7>>OP)I)KSWXl***(88DMMIII _%Q Qs   B??Cc                    dd l }d}|t        v sJ t        |   j                  |j                  j                  k(  sJ | j                  d      j                  }d}t        j                  |||       t        |d      5 }|j                  t        t                    t        k(  sJ 	 d d d        t        j                  |      |k(  sJ t        j                  ||dz          t        |d      5 }|j                  t        t                    t        k(  sJ 	 d d d        t        j                  |      |k(  sJ y # 1 sw Y   xY w# 1 sw Y   0xY w)Nr   r   r4   	test datar5   r$  r   )	lz4.framer   r  frameLZ4FrameFiler6   r7   r   r8   r&  r?  r_   r   r9   )r<   r   
compressorr   r   r  s         r   test_lz4_compressionr  h  s*    J%%%
#33syy7M7MMMMKK
#++EDdEJ7	eT	 7avvc+&';6667U#t+++ dEFN+	eT	 7avvc+&';6667U#t+++7 77 7s   >(D:.(E:EEc                    | j                  d      j                  }d}t        }t        t              5 }t        j                  ||d       d d d        j                  |       t        t              5 }t        j                  ||dz          d d d        |j                  |       y # 1 sw Y   ]xY w# 1 sw Y   'xY w)Nz
test.nolz4r  r   r5   r   )r6   r7   r	   r   rB   r   r8   rK   )r<   r   r   msgrM   s        r    test_lz4_compression_without_lz4r    s     KK%--ED
!C	
	 7w$67MM#	
	 0w$/0MM#7 70 0s   B(4B4(B14B=r  c                    | j                  d      j                  }t        j                  j	                  d      }t        j                  |||       t        j                  |d      }t        |t        j                        sJ t        j                  j                  ||       |j                  j                  t
        j                  z  dk(  sJ |j                  j                   sJ t        j                  j	                  d      t        j                  j	                  d      t        j                  j	                  d      t        j                  j	                  d      g}| j                  d      j                  }t        j                  |||       t        j                  |d      }t#        |      D ]  \  }}t        |t        j                        sJ t        j                  j                  ||   |       |j                  j                  t
        j                  z  dk(  sJ |j                  j                   rJ  t        j$                  dt        j&                        t        j$                  d	t        j&                        t        j$                  d
t        j&                        t        j$                  dt        j&                        t        j$                  dt        j&                        t        j$                  dt        j&                        t        j$                  dt        j&                        t        j$                  dt        j&                        t        j$                  dt        j&                        d	}| j                  d      j                  }t        j                  |||       t        j                  |d      }	|	j)                         D ]  \  }
}t        |t        j                        sJ t        j                  j                  ||
   |       |j                  j                  t
        j                  z  dk(  sJ |j                  j                   rJ  y )Nr  rR   r  r   r   r   z
test1.mmapr{   rO   r                     )	a0a1a2a3a4a5a6a7a8z
test2.mmap)r6   r7   r   rZ   randnr   r8   r9   rc   rh   re   rf   ctypesr   NUMPY_ARRAY_ALIGNMENT_BYTESr   alignedr]   r   r}   items)r<   r  r   rq   rh   
array_list
l_reloadedidx
array_dict
d_reloadedkeys              r   test_memmap_alignment_paddingr    s    KK$,,E
		Aa2u4Ffbii(((JJ!!!V,== H HHAMMM<< 			
		
		
			J KK%--Ej%(;""5C8J , $V&")),,,


%%jov>}}!!L$L$LLPQQQQ||####	$ ii*ii*ii*ii*ii"((+ii"((+ii"((+ii"((+ii"((+
J KK%--Ej%(;""5C8J!'') $V&")),,,


%%jov>}}!!L$L$LLPQQQQ||####	$r(   r   )r  rP  r:   r"  r_  rS   r`   r  rZ   r   r  r  r   rP   
contextlibr   pathlibr   r	  ImportErrorr7  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appendrj   _typebool_boolr   _intfloat_floatcomplex_complexr   _string_tuple_list_dictr_   _builtinr    r"   r   r/   	_instance_objectr?   rD   rC   rN   rx   r   r   r   r   r   r   r   r   r   r   r  r  r  r'  rJ   r+  r.  r;  rF  rI  rO  rT  r]  ra  rc  rf  rh  r   encoder}  r  r  r  rd   r  r  rl   r  r  r  r  r  r  r  r  r  r  r  r  r  r  DEFAULT_PROTOCOL	protocolsr  r  r   r(   r   <module>r=     s   F 
   	  	   	  
      5     6 5  	    Q  
1v  	q  1:  
a&  	  
  
     
 
 		    	 H	 	 
+   Z!Q Xx ! ! !!) B/0! 1! Z45.G 6 .Gb ; ; )/ )/X . .$ 	- 	-  & Z$'/ (  /. & &2 ; ;6	
X*v !, !,H ; ;0 '4 '4T [9:: ;: 	

 6==gF	

 299'B	
"#"  018 28 Z#Y%!' & $ !'H 
!"U,A$BC	$ 	$ - -< 	' 	' 
5 
5 
 
$  " 
"NFNN1d3d:;BB9MM
 
#$<= y)/ */d [2r2sB34 5 Z34" 5" Z!R%G &G >82:: 8
G G ( (6 = =" > > B B> 0 0&0 ^aR[)8 *8&O#4 O
N'8 N
&* 
, 
,.   $$%		f555V,,- Z#3$ $ 3$C$  Ds   S? ?T
	T
