
    7Th                     
   S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSKrSSKJr  SSKJr   SSKrSSKrSSKJrJr  SSKJrJrJrJrJr  SSKJrJ r J!r!J"r"  SSK#J$r$  SS	K%J&r&J'r'J(r(J)r)J*r*J+r+  SS
K,J-r-J.r.J/r/  / r0Sr1\0Re                  \15        \3r4\0Re                  \45        \5" S5      r6\0Re                  \65        \7" S5      r8\0Re                  \85        \9" S5      r:\0Re                  \:5        \;" S5      r<\0Re                  \<5        \=" S5      r>\0Re                  \>5        Sr?\0Re                  \?5        / r@\0Re                  \@5        0 rA\0Re                  \A5        \BrC\0Re                  \C5        S rD " S S5      rE " S S\F5      rG\0Re                  \D5        \0Re                  \E5        \0Re                  \G5        \E" 5       rH\0Re                  \H5        \G" 5       rI\0Re                  \I5        \-" SSS/5      \-" S\05      S 5       5       rJS rK\-" SSS\L" 5       /5      S 5       rM\*\-" S/ SQ5      S 5       5       rN\*S 5       rO\*S 5       rP\*S 5       rQ\*S 5       rR\*S  5       rS\*\)\-" SS!S"/5      S# 5       5       5       rT\*S$ 5       rU\*S% 5       rVS& rWSyS' jrX\*S( 5       rY\*S) 5       rZ\*S* 5       r[\-" S+S,S-/5      S. 5       r\\-" S/S0S1S2R                  S35      4S4S5R                  S35      4/5      S6 5       r^\-" S7S8S9/5      S: 5       r_\*\-" S/ S;Q5      \-" S<\5      S= 5       5       5       r`S> raS? rb\-" S@SA\b4SB\a4/5      SC 5       rc\-" SD/ SEQ5      SF 5       rd\*SG 5       re\*SH 5       rf\*SI 5       rg\*SJ 5       rh\*SK 5       ri\-" SLSMSNSOR                  \R                  " SSP5      SP-  5      R                  SQ5      -  /SRSS/ST9\-" SU/ SVQ5      SW 5       5       rl\-" SXSSSYSZS0 /5      S[ 5       rm\-" S\/ S]Q5      S^ 5       rn\-" S_SS0 /5      S` 5       ro\'b"   " Sa Sb\'R                  5      rqSc rr " Sd Se5      rs\*Sf 5       rtSg ru\*Sh 5       rv\*Si 5       rw\*Sj 5       rx\*Sk 5       rySl rz\-" SmSS0 /5      Sn 5       r{So r| " Sp Sq\5      r} " Sr Ss\5      r~St r\(Su 5       r\+Sv 5       r\GR                  /r\GR                  \GR                  :w  a  \Re                  \GR                  5        \*\-" Sw\5      Sx 5       5       rg! \ a    Sr GNf = f)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              #      #    U v   g 7fNr   )xs    U/var/www/auris/envauris/lib/python3.13/site-packages/joblib/test/test_numpy_pickle.py	_functionr    U   s
     
Gs   c                       \ rS rSrS rSrg)_classY   c                     g r   r   selfs    r   _method_class._methodZ           r   N__name__
__module____qualname____firstlineno__r'   __static_attributes__r   r*   r   r"   r"   Y       r*   r"   c                       \ rS rSrS rSrg)	_newclass^   c                     g r   r   r%   s    r   r'   _newclass._method_   r)   r*   r   Nr+   r   r*   r   r3   r3   ^   r1   r*   r3   compressmemberc                     U R                  S5      R                  n[        R                  " X#US9  [        R                  " U5      nU[
        R                  " U5      :X  a  X$:X  d   eg g )Ntest.pklr7   )joinstrpathr   dumploadcopydeepcopy)tmpdirr7   r8   filename_members        r   test_standard_typesrE   p   s\     {{:&..Hf:)G v&&    'r*   c                      [        [        5         [        R                  " S[	        5       5        S S S 5        g ! , (       d  f       g = f)Nfoo)r   
ValueErrorr   r>   dictr   r*   r   test_value_errorrJ   }   s(    	
	%( 
		s	    9
Awrong_compress
   c                     SR                  U 5      n[        [        5       n[        R                  " SSU S9  S S S 5        WR                  U5        g ! , (       d  f       N = f)Nz%Non valid compress level given: "{0}"dummyrG   r;   )formatr   rH   r   r>   match)rK   exception_msgexcinfos      r   test_compress_level_errorrT      sJ     <BB>RM	
	w'5>B 
MM-  
	s   A
A )FTr      zlibc                 @   U R                  S5      R                  n[        R                  R	                  S5      nUR                  S5      n[        U4UR                  4XD4XDU/45       H  u  pV[        R                  " XbUS9n[        U5      S:X  d   eUS   U:X  d   e[        R                  R                  US   5      (       d   e[        R                  " U5      nU H$  n	[        U	[        R                   5      (       a  M$   e   [        R"                  R%                  [        R&                  " U5      [        R&                  " U5      5        M     [        R(                  " US-   SS[        R*                  S	9n[        R                  " XbUS9n[        U5      S:X  d   e[        R                  " U5      n[-        U5      [        R(                  La-  [/        US
5      (       a  [        U[-        U5      5      (       d   e[        R"                  R%                  X5        [1        5       n[        R                  " XbUS9n[        U5      S:X  d   e[        R                  " U5      n
[        U
[-        U5      5      (       d   e[        R"                  R%                  U
R2                  UR2                  5        [        R"                  R%                  U
R4                  UR4                  5        [        R"                  R%                  U
R6                  UR6                  5        g )Nr:   r   )rM      r;   r   mmapw+   )modeshapedtype__array_prepare__)r<   r=   r   randomRandomStaterandom_sample	enumerateTr   r>   lenospathexistsr?   
isinstancendarraytestingassert_array_equalarraymemmapfloat64typehasattrComplexTestObjectarray_float	array_int	array_obj)rB   r7   rC   rndaindexobj	filenamesobj_item
obj_loadeds              r   test_numpy_persistencer~      s[    {{:&..H
))


"C'"A!vvay AB
 %%chG	 9~"""|x'''ww~~il++++   *DdBJJ////  	

%%bhhsmRXXd^D! C& ))Hv%D
LC!!#(CIy>QX&DCy		!gc3F&G&G$S	****JJ!!$, 
C!!#(CIy>Q""8,Jj$s),,,,JJ!!*"8"8#//JJJ!!*"6"6FJJ!!*"6"6Fr*   c                 "   [         R                  " [        S-   [         R                  S9nU R	                  S5      R
                  n[        R                  " XSS9  [        R                  " U5      n[         R                  R                  X5        g )Nd   r^   r:   Tr;   )r   onesr   uint8r<   r=   r   r>   r?   rk   rl   )rB   	big_arrayrC   arr_reloadeds       r   2test_numpy_persistence_bufferred_array_compressionr      sa    3.rxx@I{{:&..HiD9$$X.LJJ!!):r*   c                    [         R                  R                  S5      nUR                  S5      nU R	                  S5      R
                  n[        R                  " X#5        [        R                  " USS9n[        U[         R                  5      (       d   eU R	                  S5      R
                  n[        5       n[        R                  " XS5        [        R                  " USS9n[        U[        U5      5      (       d   e[        UR                  [         R                  5      (       d   eUR                  R                  R                  (       a   e[        UR                   [         R                  5      (       d   eUR                   R                  R                  (       a   e[        UR"                  [         R                  5      (       a   e[         R$                  R'                  UR                  UR                  5        [         R$                  R'                  UR                   UR                   5        [         R$                  R'                  UR"                  UR"                  5        [        R                  " USS9nUR                  R                  R                  (       d   eSUR                  SS& UR                   R                  R                  (       d   eSUR                   SS& [        R                  " USS9n[         R$                  R'                  UR                  UR                  5        [         R$                  R'                  UR                   UR                   5        [        R                  " US	S9  UR                   R                  R                  (       d   eUR                   R(                  S:X  d   eUR                  R                  R                  (       d   eUR                  R(                  S:X  d   eg )
Nr   rM   z	test1.pklr	mmap_modez	test2.pklr+g      $@rZ   )r   r`   ra   rb   r<   r=   r   r>   r?   ri   rn   rr   rp   rs   flags	writeablert   ru   rk   rl   r\   )rB   rv   rw   rC   bry   r}   obj_reloadeds           r   test_memmap_persistencer      s   
))


"C"A{{;'//Ha"(c2Aa#### {{;'//H

Cc$""8s;Jj$s),,,,j,,bii8888%%++5555j**BII6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                    [         R                  R                  S5      nUR                  S5      n[         R                  " SS/[
        S9nX#4nU R                  S5      R                  n[        R                  " XE5        [        R                  " USS9u  pg[        U[         R                  5      (       d   e[        U[         R                  5      (       a   eg )	Nr   rM   r   r   r   r:   r   r   )r   r`   ra   rb   rm   objectr<   r=   r   r>   r?   ri   rn   )rB   rv   rw   r   	constructrC   a_cloneb_clones           r   $test_memmap_persistence_mixed_dtypesr      s     ))


"C"A
!S(AI{{:&..Hi*#((SAG gryy)))) '299-----r*   c                    [         R                  R                  S5      nUR                  S5      n[         R                  R                  US5      nU R                  S5      R                  n[        R                  " X#5        [        R                  " USS9n[        U[         R                  R                  5      (       d   eg )Nr   rM   g      ?r:   r   r   )r   r`   ra   rb   mamasked_greaterr<   r=   r   r>   r?   ri   masked_array)rB   rv   rw   rC   r   s        r   test_masked_array_persistencer   	  s     ))


"C"A
Q$A{{:&..Ha"(c2Aa++,,,,r*   c                    [         R                  R                  S5      nUR                  S5      nU R	                  S5      R
                  n[        R                  " X#SS9  [        [        5       n[        R                  " USS9nS S S 5        SR	                  W Vs/ s H  n[        U5      PM     sn5      nU Vs/ s H  ofR                  PM     nn[        W[         R                  5      (       a   e[         R                  R!                  X%5        [#        U5      S:X  d   U5       e[        US   5      S	U S
3:X  d   eg ! , (       d  f       N= fs  snf s  snf )Nr   rM   r:   r   r;   r   r   
z6mmap_mode "r+" is not compatible with compressed file z. "r+" flag will be ignored.)r   r`   ra   rb   r<   r=   r   r>   r   UserWarningr?   strmessageri   rn   rk   rl   re   )rB   rv   ry   this_filenamewarninforeloaded_objw	debug_msgs           r   test_compress_mmap_mode_warningr     s    ))


"C


B
CKK
+33Mc15	{	x#(($G 
		848a3q6845I#+,8a		8H,,		2222JJ!!#4x=A(y(HQK :< 	<	< 
	4,s   0EE=E
ETFc                    U R                  S5      R                  n[        R                  " S5      n[        R                  " S[	        S5      -  [        R
                  S9nX44 H  nUR                  S-  nU[        [        R                  R                  SS5      5      -   n[        [        R                  XWUS9n[        S	-   n	X::  d   e[        [        R                  U5      nS
[        -   n
XU
-   :  a  M   e   g )Nr:   rM   rM   r   g    .Ar]   r^   r     r;   g0@    )r<   r=   r   r   intr   nbytesr   r`   randintr   r   r>   r   r?   )rB   r7   rC   small_arrayr   ry   sizeobj_filenamemem_usedwrite_buf_sizeread_buf_sizes              r   test_memory_usager   *  s    
 {{:&..H''(#KcCHnBHH=I'zzC#bii&7&74&@"AA|00#hW )+==)))|00,? _,.... (r*   c                    [         R                  " S[         R                  " S5      S9[         R                  " S[         R                  " S5      S9[         R                  " S[         R                  " S5      S9[         R                  " S[         R                  " S5      S9[         R                  " SSSS	S
./SS9[         R                  " S[         R                  S9R                  5       S/nU R                  S5      R                  n[        R                  " XSS9n[        U5      S:X  d   e[        R                  " U5      n[        XA5       Hs  u  pV[        U[         R                  5      (       aH  [        U5      nUR                  UR                  :X  d   e[         R                   R#                  XV5        Ml  XV:X  a  Ms   e   g )N   <i8r   >i8<f8>f8r   abcrX   rw   r   O      C'est l'été !ztemp.pkl.gzr;   )r   aranger^   rm   r   tobytesr<   r=   r   r>   re   r?   zipri   rj   r   rk   assert_equal)rB   expected_listfnamedumped_filenamesresult_listresultexpecteds          r   $test_compressed_pickle_dump_and_loadr   D  sI    			!288E?+
		!288E?+
		!288E?+
		!288E?+
!U!!,-S9
		#RXX&..0M KK&..E#((J A%%%##E*K;h

++0:H<<8>>111JJ##F5%%% <r*   c                 D   [         R                  " S5      n[         R                  " S5      nX4n[         R                  " SUS9n[         R                  " SUS9nU R                  S5      R                  n[
        R                  " XE/U5        [
        R                  " USS9u  pxUR                  UR                  :X  d   eUR                  U;   d   e[
        R                  " USS9u  pU	R                  UR                  :X  d   eU
R                  UR                  :X  d   eg )	Nr   r   r   r   ztemp.pklT)ensure_native_byte_orderF)r   r^   r   r<   r=   r   r>   r?   )rB   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%8Jyy"56Hyy"23HKK
#++Ex*E21=1B1B2.  %%)=)C)CCCC%%3337C7H7H84 #((HNN:::"((HNN:::r*   c                      Sn [        [        [        R                  " U 5      S9   [        R
                  " SSSS9  S S S 5        g ! , (       d  f       g = f)NzrNative byte ordering can only be enforced if 'mmap_mode' parameter is set to None, but got 'mmap_mode=r+' instead.)rQ   z/path/to/some/dump.pklTr   )r   r   )r   rH   reescaper   r?   )expected_msgs    r   test_invalid_parameters_raiser   z  sB    	: 
 

"))L"9	:$tt	
 
;	:	:s   A
Ac                    [         R                  " SU 5      n[        UR                  S5      5      nSSS.nUR	                  SS5      nUR	                  US5      nXg:  GaH   [
        R                  " SS9 n[
        R                  " S	5        [        R                  " XS
9n	SSS5        [        R                  R                  U 5      n
SU
;   d  SU
;   a  SOSn[         R                  " SU
5      (       a  Ub  SOSnX-   n[        W5      U:X  d'   SU SU Vs/ s H  oR                  PM     sn 35       eU Vs/ s H&  n[!        UR"                  [$        5      (       d  M$  UPM(     nnU Vs/ s H&  n[!        UR"                  [&        5      (       d  M$  UPM(     nnU H-  n[)        UR                  5      SR+                  U 5      :X  a  M-   e   U HN  n[         R,                  " U 5      n[         R                  " SU S3[)        UR                  5      5      (       a  MN   e   [/        W	U5       Hv  u  nn[1        U[2        R4                  5      (       aI  [7        U5      nUR8                  UR8                  :X  d   e[2        R:                  R=                  UU5        Mn  UU:X  a  Mv   e   g [        R                  " U 5        [K        S5      e! , (       d  f       GN1= fs  snf s  snf s  snf ! [>         a  nUS:X  a/  [1        U[@        5      (       d   eSnU[)        U5      ;   d   e SnAgU RC                  S5      (       aI  [D        RF                  S   (       a1  [1        U[@        5      (       d   e[H        [)        U5      ;   d   e SnAge SnAff = f! [@         a6  nSR+                  U5      nU[)        URF                  5      ;   d   e SnAgSnAff = f)zHelper function to test joblib pickle content.

Note: currently only pickles containing an iterable are supported
by this function.
z.+py(\d)(\d).+r   rX   rU   )rX   rU   r[   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   rQ   r   groupgetwarningscatch_warningssimplefilterr   r?   rf   rg   basenamesearchre   r   
issubclasscategoryDeprecationWarningr   r   rP   r   r   ri   r   rj   r   r^   rk   r   	ExceptionrH   endswithr   argsr	   AssertionError)rC   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>	((5%%h/*//N 6 GG,,X6M-]1JQR - IIm];;	@U  & 1L ! x=$88 H'((;'/0x!IIx0138 $$#az!**>P'Q8 ! $ )1X1Jqzz;4WQMX)		N##)6(#344 * ##%99X#6 yy!"2!33GH#aii.    # %(]$C h

338BH!<<8>>999JJ++FH=!X--- %D2	*h' P G 65& 1$ Y,  	 +a/!#z2222H  #c(***""6**x}}Q/?!#z2222.#c(:::	.  	*8??@WXGc!&&k)))	*s   "K, 6+K!A6K, K,K, 9#K" K"&K, ,#K'K'-K, 
AK, BK, $K, *!N 
KK, ,
N60N+AN
NN
O,OOc            
      8  ^ [         R                  " S[         R                  " S5      S9[         R                  " S[         R                  " S5      S9[         R                  " SSSSS./S	S9[         R                  " S
[         R                  S9R                  5       [         R                  " / SQ[         R                  " S5      S9S/n [        R                  R                  [        R                  R                  [        R                  5      5      nSn[        b  US-  n[        R                  " U5       V^s/ s H?  m[        U4S jU 5       5      (       d  M  [        R                  R!                  UT5      PMA     nnU H  n[#        XP5        M     g s  snf )Nr   r   r   r   r   r   rX   r   r   r   r   r   rX   r   ).pkl.gzz.gzip.bz2lz4).xz.lzmac              3   F   >#    U  H  nTR                  U5      v   M     g 7fr   )r   ).0extfns     r   	<genexpr><test_joblib_pickle_across_python_versions.<locals>.<genexpr>  s     =+<Cr{{3+<s   !)r   r   r^   rm   r   r   matrixrf   rg   dirnameabspathr   __file__lzmalistdiranyr<   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=+<== 	(]B'+   "e+ "s   :F$Fc            
         [         R                  " S[         R                  " S5      S9[         R                  " S[         R                  " S5      S9[         R                  " SSSSS./S	S9[         R                  " S
[         R                  S9R                  5       [         R                  " / SQ[         R                  " S5      S9S/n [        R                  R                  [        R                  R                  [        R                  5      5      n[        R                  " U5       Vs/ s H:  nUR                  S5      (       d  M  [        R                  R                  X5      PM<     nnU H  n[!        X@SS9  M     g s  snf )Nr   r   r   r   r   r   rX   r   r   r   r   r   r   r   r   )r   r   r^   rm   r   r   r  rf   rg   r  r  r   r  r  r   r<   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 **]++B;;v 	(]'+  
 "ec: "s   *F#Fc                     [         R                  " SS/SS/S9[         R                  " S[         R                  " S5      S9[         R                  " S[         R                  " S5      S9/n U  H  n[        R
                  S	:X  a  [        U5      (       a   eO[        U5      (       d   e[        U5      nUR                  R                  (       a?  UR                  R                  R                  5        H  nUS
   R
                  S:H    M     M  UR                  R
                  S:X  a  M   e   [         R                  " SS/SS/S9[         R                  " S[         R                  " S5      S9[         R                  " S[         R                  " S5      S9/nU H  n[        R
                  S:X  a  [        U5      (       a   eO[        U5      (       d   e[        U5      nUR                  R                  (       a?  UR                  R                  R                  5        H  nUS
   R
                  S:H    M     M  UR                  R
                  S:X  a  M   e   g )N)r   g       @)rU   g      @) r   )r  r   r   rU   r   r   bigr   =)r  r   )r  r   r   r   little)
r   rm   r   r^   sys	byteorderr   r   fieldsvalues)	be_arraysrm   	convertedf	le_arrayss        r   .test_numpy_array_byte_order_mismatch_detectionr&    s    	(H%k;-GH
		!288E?+
		!288E?+I ==E!:5AAAAA6u====-e4	??!!__++224!#% 5 ??,,333  	(H%k;-GH
		!288E?+
		!288E?+I ==H$:5AAAAA6u====-e4	??!!__++224!#% 5 ??,,333 r*   compress_tuple)rV   rU   gziprU   c                     U R                  S5      R                  n[        R                  " SX!S9  [	        US5       n[        U5      US   :X  d   e S S S 5        g ! , (       d  f       g = f)Nr:   rO   r;   rbr   r<   r=   r   r>   openr   )rB   r'  rC   r$  s       r   test_compress_tuple_argumentr.  J  sX     {{:&..HgxA	h	!!$q(9999 
		s   A
A*zcompress_tuple,message))rV   rU   extraz9Compress argument tuple should contain exactly 2 elements)wrongrU   z(Non valid compression method given: "{}"r0  )rV   r0  z$Non valid compress level given: "{}"c                     U R                  S5      R                  n[        [        5       n[        R
                  " SX1S9  S S S 5        WR                  U5        g ! , (       d  f       N = f)Nr:   rO   r;   )r<   r=   r   rH   r   r>   rQ   )rB   r'  r   rC   rS   s        r   &test_compress_tuple_argument_exceptionr2  T  sL    $ {{:&..H	
	w'8E 
MM' 
	s   A
A)compress_stringrV   r)  c                     U R                  S5      R                  n[        R                  " SX!S9  [	        US5       n[        U5      U:X  d   e S S S 5        g ! , (       d  f       g = f)Nr:   rO   r;   r+  r,  )rB   r3  rC   r$  s       r   test_compress_string_argumentr5  m  sS     {{:&..HgxB	h	!!$777 
		s   A
A')r   rU      cmethodc                    U R                  S5      R                  n[        R                  " SSS9[	        S5      SSS./ S	0 S
S4nUS;   a  [
        c  [        R                  " S5        O4US:X  a.  [        R                  S
   (       a  [        R                  " S5        US-   U-   nU H  n[        R                  " XeX!4S9  [        US5       n[        U5      U:X  d   e S S S 5        [        R                  " U5      n[        U[!        U5      5      (       d   e[        U[        R"                  5      (       a!  [        R$                  R'                  X5        M  X:X  a  M   e   g ! , (       d  f       N= f)Nr:   )r   r   f8r   rM   r   r   )rw   rX   r   r   g      ?r  xzzlzma is support not availabler  zlz4 is not installed..r;   r+  )r<   r=   r   r   ranger  pytestskipr   r   r   r>   r-  r   r?   ri   rp   rj   rk   rl   )	rB   r7   r7  rC   objectsdump_filenamery   r$  r   s	            r   test_joblib_compression_formatsrB  w  s8    {{:&..H
j-b	C


		G . T\34	E	hmmA. 	+,sNW,M#7JK-&!%a(G333 ' $((7,S	2222c2::&&JJ)),<&&&  '&s   E%%
E3	c                    [        [        R                  " U S5      5       nUR                  5       nSSS5        [	        US5       nUR                  W5        SSS5        g! , (       d  f       N5= f! , (       d  f       g= f)zDecompress a gzip file.r+  Nwb)r   r)  GzipFilereadr-  writesource_filenametarget_filenamefobufs       r   _gzip_file_decompressrM    sZ    	5	6"ggi 
7 
ot	$
 
%	$ 
7	6 
%	$s   A!A2!
A/2
B c                    [        U S5       n[        R                  " UR                  5       5      nSSS5        [        US5       nUR	                  W5        SSS5        g! , (       d  f       N5= f! , (       d  f       g= f)zDecompress a zlib file.r+  NrD  )r-  rV   
decompressrF  rG  rH  s       r   _zlib_file_decompressrP    sZ    	ot	$oobggi( 
% 
ot	$
 
%	$ 
%	$ 
%	$s   %A!A2!
A/2
B zextension,decompress.zr  c                     SnU R                  S5      R                  nXA-   n[        R                  " X55        U" XT5        [        R                  " U5      nX6:X  d   eg )Nza string to persistr:   )r<   r=   r   r>   r?   )rB   	extensionrO  ry   filename_rawfilename_compressedr   s          r   'test_load_externally_decompressed_filesrV    s]      C;;z*22L&2c/ "1  $$\2Lr*   zextension,cmethod))rQ  rV   )r  r)  )r  bz2)r  r  )r  r;  )r   not-compressed)r  rX  c                    US;   a  [         c  [        R                  " S5        U R                  S5      R                  nSnX1-   n[
        R                  " XE5        [        US5       n[        U5      U:X  d   e S S S 5        [
        R                  " U5      n[        U[        U5      5      (       d   eXt:X  d   eg ! , (       d  f       NH= f)Nr:  zlzma is missingr:   zobject to dumpr+  )r  r>  r?  r<   r=   r   r>   r-  r   r?   ri   rp   )rB   rS  r7  rC   ry   
dump_fnamer$  r   s           r   %test_compression_using_file_extensionr[    s     . T\%&{{:&..H
C%Jc&	j$	1!!$/// 
   $$Z0LlDI.... 
 	s   'B<<
C
c                 T   [         R                  R                  S5      S/n[        R                  [        R
                  /n[        b  U[        R                  /-  nU R                  S5      R                  nU H  nU H  nU" US5       n[        R                  " XF5        S S S 5        U" US5       n[        R                  " U5      nS S S 5        [        US5       n[        R                  " U5      nS S S 5        [        U[         R                  5      (       aB  [         R                   R#                  WU5        [         R                   R#                  WU5        M  WU:X  d   eWU:X  a  M   e   M     g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)Nr   	some datar:   rD  r+  )r   r`   rW  BZ2Filer)  rE  r  LZMAFiler<   r=   r   r>   r?   r-  ri   rj   rk   rl   )	rB   objsfobjsrC   ry   fobjr$  r   obj_reloaded_2s	            r   test_file_handle_persistencerd    s@   IIX&4D[[$--(E$-- {{:&..HDh%!!#) &
 h%+003 &
 h%!-!2!21!5 & #rzz**

--lC@

--ncB#s***%,,,'  %%
 &%
 &%s$   E73FF7
F
F
F'c                  h   [         R                  R                  S5      S/n U  H  n[        R                  " 5       n[        R
                  " X5        [        R                  " U5      n[        U[         R                  5      (       a!  [         R                  R                  X15        M  X1:X  a  M   e   g )Nr   r]  )r   r`   ioBytesIOr   r>   r?   ri   rj   rk   rl   )r`  ry   r$  r   s       r   test_in_memory_persistencerh    s}    IIX&4DJJL#!#((+c2::&&JJ)),<&&& r*   c                    [         R                  R                  S5      nU R                  S5      R                  n[	        US5       n[
        R                  " X5        S S S 5        [	        US5       n[
        R                  " USS9nS S S 5        [         R                  R                  WU5        g ! , (       d  f       NY= f! , (       d  f       N@= f)Nr   r:   rD  r+  r   r   )
r   r`   r<   r=   r-  r   r>   r?   rk   rl   )rB   ry   rC   r$  r   s        r   !test_file_handle_persistence_mmaprj    s    
))

8
$C{{:&..H	h	#! 
 
h	#((d; 
 JJ!!,4 
	 
	s   B12C1
B?
Cc                 J   [         R                  R                  S5      nU R                  S5      R                  n[	        US5       n[
        R                  " XSS9  S S S 5        [        [        R                  " US5      5       n[        [        5       n[
        R                  " USS9  S S S 5        [        W5      S	:X  d   e[        US
   R                  5      SUSS.-  :X  d   e S S S 5        g ! , (       d  f       N= f! , (       d  f       N^= f! , (       d  f       g = f)Nr   r:   rD  r(  r;   r+  r   r   r   r   zP"%(fileobj)r" is not a raw file, mmap_mode "%(mmap_mode)s" flag will be ignored.)fileobjr   )r   r`   r<   r=   r-  r   r>   r   r)  rE  r   r   r?   re   r   r   )rB   ry   rC   r$  r   s        r   ,test_file_handle_persistence_compressed_mmaprm     s    
))

8
$C{{:&..H	h	#;7 
 
x.	/1;8a40  8}!!!##$$23$&GHH	
H 
0	/ 
	   
0	/s0   C2DD+=D2
D 
D	D
D"c                  |   [         R                  R                  S5      n [        R                  " 5       n[        R
                  " X5        [        [        5       n[        R                  " USS9  S S S 5        [        W5      S:X  d   e[        US   R                  5      SSS0-  :X  d   eg ! , (       d  f       NC= f)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   r`   rf  rg  r   r>   r   r   r?   re   r   r   )ry   rL  r   s      r   +test_file_handle_persistence_in_memory_mmapro  3  s    
))

8
$C
**,Cc	{	x#. 
x=AHQK !4()	)	)	 
	s   B--
B;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   rU   	   c                    U R                  S5      R                  n[        US5       n[        USUS9 nUR	                  5       (       d   eUR                  U5        UR                  5       UR                  5       :X  d   e[        [        R                  5         UR                  5         S S S 5        [        [        R                  5         UR                  5         S S S 5        S S S 5        WR                  (       d   e[        [        5         UR                  5         S S S 5        S S S 5        [        US5       n[        U5       nUR                  5       (       d   eUR!                  5       (       d   eUR                  5       UR                  5       :X  d   eUR#                  5       U:X  d   e[        [        R                  5         UR%                  5         S S S 5        UR!                  5       (       d   eUR'                  S5        UR)                  5       S:X  d   e S S S 5        WR                  (       d   e S S S 5        [        USUS9 nUR	                  5       (       d   eUR                  U5        S S S 5        [        US5       nUR#                  5       U:X  d   eUR!                  5       (       d   e S S S 5        [        USUS9nUR	                  5       (       d   eUR                  U5        UR+                  5         [        US5      nUR#                  5       U:X  d   eUR+                  5         g ! , (       d  f       GN= f! , (       d  f       GNw= f! , (       d  f       GN= f! , (       d  f       GNX= f! , (       d  f       GNb= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNX= f! , (       d  f       GN'= f)Nr:   rD  compresslevelr+  r   )r<   r=   r-  r
   writablerG  filenor   rf  UnsupportedOperation_check_can_read_check_can_seekclosedrH   _check_not_closedreadableseekablerF  _check_can_writeseektellclose)rB   r   rq  rC   r$  fzs         r   test_binary_zlibfiler  E  s    {{:&..H	h	At>Bb;;== =HHTN99;!((*,,,//0""$ 1 //0""$ 1 C yyyJ  "   
 
h	A";;== =;;== =99;!((*,,,779$$$//0##% 1;;== =GGAJ779>!>  yyy 
 
$n	E{{}}}
 
F 
$	'2wwyD   {{}}} 
(
 
$n	EB;;===HHTNHHJ	$	'B779HHJO 10 10 CB   
	( 10  
	 
F	E 
(	's   NA&ML;+!MMM%*NM1 N<N9BN'
NAN'"N9)O.O;
M
M
MM
M.	)N1
N 	;N
N
N$N''
N6	1N99
O
O
O,	bad_value   rw   c                    U R                  S5      R                  n[        [        5       n[	        USUS9  S S S 5        [
        R                  " SR                  U5      5      nWR                  U5        g ! , (       d  f       NE= f)Nr:   rD  rt  zS'compresslevel' must be an integer between 1 and 9. You provided 'compresslevel={}')	r<   r=   r   rH   r
   r   r   rP   rQ   )rB   r  rC   rS   patterns        r   +test_binary_zlibfile_bad_compression_levelsr    se    {{:&..H	
	wxY? 
ii	**0&*;G MM' 
	s   A66
Bbad_mode)rw   r   r   r   r   rX   c                     U R                  S5      R                  n[        [        5       n[	        X!5        S S S 5        WR                  S5        g ! , (       d  f       N = f)Nr:   zInvalid mode)r<   r=   r   rH   r
   rQ   )rB   r  rC   rS   s       r   "test_binary_zlibfile_invalid_modesr    sB    {{:&..H	
	wx* 
MM.! 
	s   A
Abad_filec                     [        [        5       n[        U S5        S S S 5        WR                  S5        g ! , (       d  f       N = f)Nr+  z1filename must be a str or bytes object, or a file)r   	TypeErrorr
   rQ   )r  rS   s     r   *test_binary_zlibfile_invalid_filename_typer    s1    			gx& 
MMEF 
		   7
Ac                       \ rS rSrS rSrg)SubArrayi  c                 <    [         [        R                  " U 5      44$ r   )_load_sub_arrayr   asarrayr%   s    r   
__reduce__SubArray.__reduce__  s    "RZZ%5$777r*   r   N)r,   r-   r.   r/   r  r0   r   r*   r   r  r    s    	8r*   r  c                 8    [        U R                  5      nXS S & U$ r   )r  r]   )arrds     r   r  r    s    SYY!r*   c                       \ rS rSrSrS rSrg)rr   i  z7A complex object containing numpy arrays as attributes.c                     [         R                  " SSS9U l        [         R                  " SSS9U l        [         R
                  " / SQSS9U l        g )Nr   ro   r   int32)rw   rM   g      4@r   )r   r   rs   r   rt   rm   ru   r%   s    r   __init__ComplexTestObject.__init__  s9    !yyI>DWWS8DNXXoXFDNr*   )rs   rt   ru   N)r,   r-   r.   r/   __doc__r  r0   r   r*   r   rr   rr     s    E	Gr*   rr   c                    U R                  S5      R                  n[        S5      n[        R                  " X!5        [        R
                  " U5      n[        U[        5      (       d   e[        R                  R                  X25        g )Nr:   )rM   )
r<   r=   r  r   r>   r?   ri   r   rk   rl   )rB   rC   rw   cs       r   test_numpy_subclassr    sb    {{:&..HAa"(#Aa""""JJ!!!'r*   c                 ,   U R                  S5      R                  nSn[        R                  " U[	        U5      5        [        R
                  " U5      U:X  d   e[        R                  " X!5        [        R
                  " [	        U5      5      U:X  d   eg )Nr:   {   )r<   r=   r   r>   r   r?   )rB   rC   values      r   test_pathlibr    ss    {{:&..HEeT(^,X&%///e&T(^,555r*   c                    U R                  S5      R                  n[        R                  " SS/SS//5      SS  [        R                  " SSS9S S 2S S2S S 24   4 H  nUR
                  R                  (       a   eUR
                  R                  (       a   e[        R                  " X!5        [        R                  " U5      n[        R                  R                  X25        M     g )	Nr:   r   rX   rU   r[   )rM   2      F)order)r<   r=   r   asfortranarrayr   r   c_contiguousf_contiguousr   r>   r?   rk   rl   )rB   rC   rm   array_reloadeds       r   "test_non_contiguous_array_picklingr    s    {{:&..H
 	Aq6Aq6*+AB/
C(BQB2 ;;++++;;++++%*%**84


%%n<r*   c                    U R                  S5      R                  n[        R                  " S5      n[        R
                  " X![        R                  S9  [        R                  " U5      n[        R                  R                  X25        g )Nr:   rM   protocol)r<   r=   r   zerosr   r>   pickleHIGHEST_PROTOCOLr?   rk   rl   )rB   rC   
test_arrayr  s       r   test_pickle_highest_protocolr    s]     {{:&..H"JjV5L5LM!&&x0NJJ!!.=r*   c                     [         R                  " S5      n Sn[        R                  " [        R                  [        R                  5      nUR                  U5        UR                  S5        [        R                  " U5       nUR                  5       u  pEUR                  S5       n[        R                  " X5        S S S 5        UR                  S5       n[        R                  " U5      nS S S 5        [         R                  R                  WU 5        [        R                   " 5       n	[        R                  " X	5        UR#                  U	R%                  5       5        UR                  S5       n[        R                  " U5      nS S S 5        [         R                  R                  X5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       NY= f! , (       d  f       g = f)NrM   )	localhosti90  r   rD  r+  )r   r   socketAF_INETSOCK_STREAMbindlistencreate_connectionacceptmakefiler   r>   r?   rk   rl   rf  rg  sendgetvalue)
r  _ADDRlistenerclientserverclient_addrsfcfr  bytes_to_sends
             r   test_pickle_in_socketr    sV    2J E}}V^^V-?-?@HMM%OOA		!	!%	(F&oo/__T"bj- # __T"b)..r2N # 	

%%njA 

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

%%nA) 
)	( #" #" #"# 
)	(sU   $G-(F9?G-G/BG-2G	'G-9
G	G-
G	G-
G*	&G--
G;c                    U R                  S5      R                  n[        R                  n[        R
                  " USS9[        R                  " USS9/n[        R                  " X15        [        R                  " USS9n[        US   [        R                  5      (       d   eUS   R                  U:  d   e[        R                  R                  X45        g )N	test.mmapr   r   r   r   r   )r<   r=   rY   ALLOCATIONGRANULARITYr   r  r   r   r>   r?   ri   rn   offsetrk   rl   )rB   r   r   ry   memmapss        r    test_load_memmap_with_big_offsetr    s     KK$,,E%%D88D("''$g*F
GCc!5Ggaj")),,,,1:t###JJ!!#/r*   c                   ^^ SnSm " S S[         R                  5      m " UU4S jS[        5      n[        X" 5       5        [        U   R
                  T:X  d   e[        U   R                  T:X  d   e[        R                  " U5        g )N	test-nameztest-prefixc                       \ rS rSrSrg):test_register_compressor.<locals>.BinaryCompressorTestFilei  r   Nr,   r-   r.   r/   r0   r   r*   r   BinaryCompressorTestFiler        r*   r  c                   $   > \ rS rSrU U4S jrSrg)=test_register_compressor.<locals>.BinaryCompressorTestWrapperi  c                 2   > [         R                  " U TTS9  g )Nry   prefixr   r  )r&   r  compressor_prefixs    r   r  Ftest_register_compressor.<locals>.BinaryCompressorTestWrapper.__init__  s    &&2;Lr*   r   Nr,   r-   r.   r/   r  r0   )r  r  s   r   BinaryCompressorTestWrapperr    s    	 	r*   r  )rf  BufferedIOBaser   r   r   fileobj_factoryr  pop)rB   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                     [        [        5       n[        U S 5        S S S 5        WR                  S5        g ! , (       d  f       N = f)Nz"Compressor name should be a string)r   rH   r   rQ   )r  rS   s     r   %test_register_compressor_invalid_namer  .  s3     

	wL$/ 
MM67 
	r  c                     ^  " S S5      m " U4S jS[         5      n [        [        5       n[        SU " 5       5        S S S 5        WR	                  S5        g ! , (       d  f       N = f)Nc                       \ rS rSrSrg)Ctest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjecti9  r   Nr  r   r*   r   InvalidFileObjectr  9  r  r*   r  c                   "   > \ rS rSrU 4S jrSrg)Jtest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapperi<  c                 2   > [         R                  " U TSS9  g Ns   prefixr  r  )r&   r  s    r   r  Stest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapper.__init__=  s    &&t1B9Ur*   r   Nr  )r  s   r   InvalidFileObjectWrapperr  <  s    	V 	Vr*   r  invalidzQCompressor 'fileobj_factory' attribute should implement the file object interface)r   r   rH   r   rQ   )r  rS   r  s     @r   (test_register_compressor_invalid_fileobjr  6  sW     V#4 V 

	wI'?'AB 
 MM	$ 
	s   A
A'c                       \ rS rSrS rSrg)AnotherZlibCompressorWrapperiI  c                 8    [         R                  " U [        SS9  g r  )r   r  r
   r%   s    r   r  %AnotherZlibCompressorWrapper.__init__J  s    ""4^INr*   r   Nr  r   r*   r   r  r  I  s    Or*   r  c                       \ rS rSrS rSrg) StandardLibGzipCompressorWrapperiN  c                 L    [         R                  " U [        R                  SS9  g r  )r   r  r)  rE  r%   s    r   r  )StandardLibGzipCompressorWrapper.__init__O  s    ""4T]]9Mr*   r   Nr  r   r*   r   r   r   N  s    Nr*   r   c                     Sn [        U [        5       5        [        [        5       n[        U [	        5       5        S S S 5        WR                  SR                  U 5      5        [        U [	        5       SS9  U [        ;   d   e[        U    R                  [        R                  :X  d   e[        R                  " U 5        g ! , (       d  f       N= f)Nr  z#Compressor '{}' already registered.T)force)r   r  r   rH   r   rQ   rP   r   r  r)  rE  r  )r  rS   s     r   +test_register_compressor_already_registeredr  S  s    !O )E)GH	
	wO-M-OP 
MM7>>OP)I)KSWXl***(88DMMIII _% 
	s   C  
Cc                    SS K nSnU[        ;   d   e[        U   R                  UR                  R                  :X  d   eU R                  S5      R                  nSn[        R                  " XCUS9  [        US5       nUR                  [        [        5      5      [        :X  d   e S S S 5        [        R                  " U5      U:X  d   e[        R                  " XCS-   5        [        US5       nUR                  [        [        5      5      [        :X  d   e S S S 5        [        R                  " U5      U:X  d   eg ! , (       d  f       N= f! , (       d  f       N<= f)Nr   r  r:   	test datar;   r+  r   )	lz4.framer   r  frameLZ4FrameFiler<   r=   r   r>   r-  rF  re   r   r?   )rB   r  
compressorr   r   r$  s         r   test_lz4_compressionr  h  s    J%%%
#33syy7M7MMMMKK
#++EDdJ7	eT	avvc+&';666 
U#t+++ dFN+	eT	avvc+&';666 
U#t+++ 
	 
	s   >)E 1)E 
E
Ec                    U R                  S5      R                  nSn[        n[        [        5       n[
        R                  " X!SS9  S S S 5        WR                  U5        [        [        5       n[
        R                  " X!S-   5        S S S 5        UR                  U5        g ! , (       d  f       Nb= f! , (       d  f       N1= f)Nz
test.nolz4r  r  r;   r   )r<   r=   r	   r   rH   r   r>   rQ   )rB   r   r   msgrS   s        r    test_lz4_compression_without_lz4r    s     KK%--ED
!C	
	w$6 
MM#	
	w$/ 
MM# 
	 
	s   B%1B6%
B36
Cr  c                    U R                  S5      R                  n[        R                  R	                  S5      n[
        R                  " X2US9  [
        R                  " USS9n[        U[        R                  5      (       d   e[        R                  R                  X45        UR                  R                  [
        R                  -  S:X  d   eUR                  R                   (       d   e[        R                  R	                  S5      [        R                  R	                  S5      [        R                  R	                  S5      [        R                  R	                  S5      /nU R                  S5      R                  n[
        R                  " XRUS9  [
        R                  " USS9n[#        U5       H  u  pt[        U[        R                  5      (       d   e[        R                  R                  XW   U5        UR                  R                  [
        R                  -  S:X  d   eUR                  R                   (       a  M   e   [        R$                  " S[        R&                  S9[        R$                  " S	[        R&                  S9[        R$                  " S
[        R&                  S9[        R$                  " S[        R&                  S9[        R$                  " S[        R&                  S9[        R$                  " S[        R&                  S9[        R$                  " S[        R&                  S9[        R$                  " S[        R&                  S9[        R$                  " S[        R&                  S9S.	nU R                  S5      R                  n[
        R                  " XUS9  [
        R                  " USS9n	U	R)                  5        H  u  p[        U[        R                  5      (       d   e[        R                  R                  X   U5        UR                  R                  [
        R                  -  S:X  d   eUR                  R                   (       a  M   e   g )Nr  rX   r  r   r   r   z
test1.mmapr   rU   r                     )	a0a1a2a3a4a5a6a7a8z
test2.mmap)r<   r=   r   r`   randnr   r>   r?   ri   rn   rk   rl   ctypesr   NUMPY_ARRAY_ALIGNMENT_BYTESr   alignedrc   r   r   items)rB   r  r   rw   rn   
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!!!,== H HHAMMM<< 			
		
		
			J KK%--Ej(;""5C8J ,&")),,,,


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


%%jov>}}!!L$L$LLPQQQQ||#####	 *r*   r   )r  rW  r@   r)  rf  rY   rf   r  r`   r   r  r  r   rV   
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appendrp   _typebool_boolr   _intfloat_floatcomplex_complexr   _string_tuple_list_dictre   _builtinr    r"   r   r3   	_instance_objectrE   rJ   rI   rT   r~   r   r   r   r   r   r   r   r   r   r   r  r  r&  r.  rP   r2  r5  rB  rM  rP  rV  r[  rd  rh  rj  rm  ro  r   encoder  r  r  r  rj   r  r  rr   r  r  r  r  r  r  r  r  r  r  r   r  r  r  DEFAULT_PROTOCOL	protocolsr  r+  r   r*   r   <module>rJ     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 
 
$  " 
"FNN1d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