
    HWh                     R
   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Jr  SSKrSSKJr   SSKrSSKrSSKJrJrJrJr  SSKJrJr  SSKJrJrJr  SSK J!r!J"r"  SS	K#J$r$  SS
K%J&r&  SSK%J'r'  SSK%J(r(  SSK%J)r)  SSK*J+r+J,r,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&Q5      S' 5       5       rT\\\" SS(S)/5      S* 5       5       5       rU\S+ 5       rVS~S, jrW\S- 5       rX\S. 5       rY\S/ 5       rZ\" S0S1S2/5      S3 5       r[\" S4S5S6S7R                  S85      4S9S:R                  S85      4/5      S; 5       r]\" S<S=S>/5      S? 5       r^\\" S/ S@Q5      \" SA\+5      SB 5       5       5       r_SC r`SD ra\" SESF\a4SG\`4/5      SH 5       rb\" SI/ SJQ5      SK 5       rc\SL 5       rd\SM 5       re\SN 5       rf\SO 5       rg\SP 5       rh\" SQSRSSSTR                  \R                  " SSU5      SU-  5      R                  SV5      -  /SWSX/SY9\" SZ/ S[Q5      S\ 5       5       rk\" S]SSS^S_S0 /5      S` 5       rl\" Sa/ SbQ5      Sc 5       rm\" SdSS0 /5      Se 5       rn\b"   " Sf Sg\R                  5      rpSh rq " Si Sj5      rr\Sk 5       rsSl rt\Sm 5       ru\Sn 5       rv\So 5       rw\Sp 5       rxSq ry\" SrSS0 /5      Ss 5       rzSt r{ " Su Sv\-5      r| " Sw Sx\-5      r}Sy r~\Sz 5       r\S{ 5       r\GR                  /r\GR                  \GR                  :w  a  \Re                  \GR                  5        \\" S|\5      S} 5       5       rg! \ a    Sr GNf = f)z@Test the numpy pickler as a replacement of the standard pickler.    N)closing)Path)np
with_numpywith_lz4without_lz4)with_memory_profilermemory_used)parametrizeraiseswarns)numpy_pickleregister_compressor)data)_IO_BUFFER_SIZE)_detect_compressor)#_is_numpy_array_byte_order_mismatch)_ensure_native_byte_order)_COMPRESSORS_LZ4_PREFIXCompressorWrapperLZ4_NOT_INSTALLED_ERRORBinaryZlibFile    c              #      #    U v   g 7fNr   )xs    ?/usr/lib/python3/dist-packages/joblib/test/test_numpy_pickle.py	_functionr    K   s
     
Gs   c                       \ rS rSrS rSrg)_classO   c                     g r   r   selfs    r   _method_class._methodP           r   N__name__
__module____qualname____firstlineno__r'   __static_attributes__r   r*   r   r"   r"   O       r*   r"   c                       \ rS rSrS rSrg)	_newclassT   c                     g r   r   r%   s    r   r'   _newclass._methodU   r)   r*   r   Nr+   r   r*   r   r3   r3   T   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   e   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   r   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   x   sL    #VN3 	
	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S	"C,--$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?   rl   rm   )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      $@r[   )r   ra   rb   rc   r<   r=   r   r>   r?   rj   ro   rs   rq   rt   flags	writeableru   rv   rl   rm   r]   )rB   rw   rx   rC   brz   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"%//3JJ!!*"6"6"%--1JJ!!*"6"6"%--1 ""8t<J!!''1111#'J1R %%////!#J2$$X=LJJ!!,":":","8"8:JJ!!,"8"8","6"68 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   ra   rb   rc   rn   objectr<   r=   r   r>   r?   rj   ro   )rB   rw   rx   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   ra   rb   rc   mamasked_greaterr<   r=   r   r>   r?   rj   masked_array)rB   rw   rx   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  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  oUR                  PM     nn[        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   ra   rb   rc   r<   r=   r   r>   r   UserWarningr?   strmessagerf   )rB   rw   rx   this_filenamewarninfow	debug_msgs          r   test_compress_mmap_mode_warningr     s     ))


"C"AKK
+33Ma3	{	x-48 
		848a3q6845I#+,8a		8H,x=A(y(HQK	:	<	<	< 
	4,s   0DD=D
D
cache_size)Nr   rM   c                    U R                  S5      R                  n[        R                  R	                  S5      nUR                  S5      n[        R                  " S5        [        R                  " SS9 n[        R                  " XBUS9  S S S 5        Ub  SOSn[        W5      U:X  d   eU HC  nUR                  [        :X  d   e[        UR                  5      S	R!                  U5      :X  a  MC   e   g ! , (       d  f       Np= f)
Nr:   r   rX   alwaysTrecord)r   r   zzPlease do not set 'cache_size' in joblib.dump, this parameter has no effect and will be removed. You used 'cache_size={0}')r<   r=   r   ra   rb   rc   warningssimplefiltercatch_warningsr   r>   rf   categoryDeprecationWarningr   r   rP   )rB   r   rC   rw   rx   r   expected_nb_warningsr   s           r   test_cache_size_warningr   %  s     {{:&..H
))


"C'"A(#		 	 	-!*= 
. * 61Ax=0000zz////AII((.z(:; 	< ; 	 
.	-s   6C66
D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   ra   randintr
   r   r>   r   r?   )rB   r7   rC   small_arrayr   rz   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"8E
 )+??)))|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   abcrY   rx   r   O      C'est l'été !ztemp.pkl.gzr;   )r   aranger_   rn   r   tobytesr<   r=   r   r>   rf   r?   ziprj   rk   r   rl   assert_equal)rB   expected_listfnamedumped_filenamesresult_listresultexpecteds          r   $test_compressed_pickle_dump_and_loadr   U  sG   YYq8YYq8YYq8YYq8XXq%qq)9:#FYYs"((3;;=+-M KK&..E#((J A%%%##E*K;h

++0:H<<8>>111JJ##F5%%% <r*   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a9   [
        R                  " SS9 n[
        R                  " S	5        [
        R                  " S
SSS9  [        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   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   [1        W	U5       Hv  u  nn[3        U[4        R6                  5      (       aI  [9        U5      nUR:                  UR:                  :X  d   e[4        R<                  R?                  UU5        Mn  UU:X  a  Mv   e   g [        R                  " U 5        [M        S5      e! , (       d  f       GN= fs  snf s  snf ! [@         a  nUS:X  a/  [3        U[B        5      (       d   eSnU[)        U5      ;   d   e SnAgU RE                  S5      (       aI  [F        RH                  S   (       a1  [3        U[B        5      (       d   e[J        [)        U5      ;   d   e SnAge SnAff = f! [B         a6  nSR-                  U5      nU[)        URH                  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   rY   rU   )rY   rU   r\   Tr   r   ignorenumpyz"The compiler package is deprecated)moduler   r   Nz_0.9z_0.8.4r   z_0.1.+.pkl$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})'rerQ   r   groupgetr   r   r   filterwarningsr   r?   rg   rh   basenamesearchrf   
issubclassr   r   r   r   r   rP   escaper   rj   r   rk   r   r_   rl   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_warningsr   r   deprecation_warningsuser_warningsescaped_filenamer   r   excr   es                          r   _check_pickler   m  s}    HH.9M"%m&9&9!&<"=01aL)CGG1MCGG#Q(97	((5%%h/''W@B +//N 6 GG,,X6M-'8}+D 01KL - 		-77% )*,- & 1L !x=$8888 $$5#azJJ 2(48 ! $5 $.#azJJ(-8  . *AII''-vh'78 9 8 * ##%99X#6 yy!"2!33GH		N$ $ $ $ # %(]$C h

338BH!<<8>>999JJ++FH=!X--- %D.	*h'  "F G Gy 65"$5.,  	 +a/!#z2222O#c(***""6**x}}Q/?!#z2222.#c(:::	(  	*8??')Gc!&&k)))	*s   "K 6AJ<7A3K *#KKK #KK
-K ;AK BK K !M? <
KK 
M<"0M7AM76M77M<?
N?	,N::N?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   rY   r   r   r   r   r   rY   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     M;LCr{{3//;Ls   !)r   r   r_   rn   r   r   matrixrg   rh   dirnameabspathr   __file__lzmalistdiranyr<   r   )r   test_data_dirpickle_extensionsr  pickle_filenamesr   s      `  r   )test_joblib_pickle_across_python_versionsr    s*    YYq8YYq8XXq%qq)9:#FYYs"((3;;= YYy@+-M GGOOBGGOODMM$BCM?--"$**]";O";BM;LMM 8]B7";  O "e+ "	O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 H9  o"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   rY   r   r   r   r   r   r   r   r   )r   r   r_   rn   r   r   r  rg   rh   r  r  r   r  r
  r   r<   r   )r   r  r  r  r   s        r   3test_joblib_pickle_across_python_versions_with_mmapr    s   YYq8YYq8XXq%qq)9:#FYYs"((3;;= YYy@+-M GGOOBGGOODMM$BCM **]+D+B{{6/B 	(]'+  D "ec: "D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   rn   r   r_   sys	byteorderr   r   fieldsvalues)	be_arraysrn   	convertedf	le_arrayss        r   .test_numpy_array_byte_order_mismatch_detectionr    s    8X.!,k :<1BHHUO41BHHUO46I ==E!:5AAAAA6u====-e4	??!!__++224!#% 5 ??,,333  8X.!,k :<1BHHUO41BHHUO46I ==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UU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'    s_     {{:&..Hgx-/ 
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: "{}"r)  )rV   r)  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_exceptionr+  *  sL     {{:&..H	
	w'8E 
MM' 
	s   A
A)compress_stringrV   r"  c                     U R                  S5      R                  n[        R                  " SUU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   r,  rC   r  s       r   test_compress_string_argumentr.  9  sZ     {{:&..Hgx.0 
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   )rx   rY   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?   rj   rq   rk   rl   rm   )	rB   r7   r0  rC   objectsdump_filenamerz   r  r   s	            r   test_joblib_compression_formatsr;  D  s3    {{:&..HwwZt4Ry3RQ5G . 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_decompressrF  d  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$  Nr=  )r&  rV   
decompressr?  r@  rA  s       r   _zlib_file_decompressrI  m  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   	extensionrH  rz   filename_rawfilename_compressedr   s          r   'test_load_externally_decompressed_filesrO  v  s]    
  C;;z*22L&2c/ "1  $$\2Lr*   zextension,cmethod))rJ  rV   )r   r"  )r   bz2)r   r	  )r   r4  )r   not-compressed)r  rQ  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)Nr3  zlzma is missingr:   zobject to dumpr$  )r	  r7  r8  r<   r=   r   r>   r&  r   r?   rj   rq   )rB   rL  r0  rC   rz   
dump_fnamer  r   s           r   %test_compression_using_file_extensionrT    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:   r=  r$  )r   ra   rP  BZ2Filer"  r>  r	  LZMAFiler<   r=   r   r>   r?   r&  rj   rk   rl   rm   )	rB   objsfobjsrC   rz   fobjr  r   obj_reloaded_2s	            r   test_file_handle_persistencer]    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   rV  )r   ra   ioBytesIOr   r>   r?   rj   rk   rl   rm   )rY  rz   r  r   s       r   test_in_memory_persistencera    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:   r=  r$  r   r   )
r   ra   r<   r=   r&  r   r>   r?   rl   rm   )rB   rz   rC   r  r   s        r   !test_file_handle_persistence_mmaprc    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:   r=  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   ra   r<   r=   r&  r   r>   r   r"  r>  r   r   r?   rf   r   r   )rB   rz   rC   r  r   s        r   ,test_file_handle_persistence_compressed_mmaprf    s    
))

8
$C{{:&..H	h	#;7 
 
x.	/1;8a40  8}!!!HQK''((67d*KLL 	M L	 
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   ra   r_  r`  r   r>   r   r   r?   rf   r   r   )rz   rE  r   s      r   +test_file_handle_persistence_in_memory_mmaprh    s    
))

8
$C
**,Cc	{	x#. 
x=A##$%t,-- . - 
	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:   r=  compresslevelr$  r   )r<   r=   r&  r   writabler@  filenor   r_  UnsupportedOperation_check_can_read_check_can_seekclosedrH   _check_not_closedreadableseekabler?  _check_can_writeseektellclose)rB   r   rj  rC   r  fzs         r   test_binary_zlibfiler}    s    {{:&..H	h	At*8:=?;;== =HHTN99;!((*,,,//0""$ 1 //0""$ 1: yyyJ  "   
 
h	A";;== =;;== =99;!((*,,,779$$$//0##% 1;;== =GGAJ779>!>  yyy 
 
$&4
69;{{}}}

6
 
$	'2wwyD   {{}}} 
(
 
$n	EB;;===HHTNHHJ	$	'B779HHJQ 10 10: :   
	* 10  
	
6 
6
 
(	'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   rx   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:   r=  rm  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  <  sd    {{:&..H	
	wxY? 
ii ::@&:KMGMM'	 
	s   A66
Bbad_mode)rx   r   r   r   r   rY   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  F  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  N  s1    			gx& 
MMEF 
		   7
Ac                       \ rS rSrS rSrg)SubArrayiY  c                 <    [         [        R                  " U 5      44$ r   )_load_sub_arrayr   asarrayr%   s    r   
__reduce__SubArray.__reduce__[  s    "RZZ%5$888r*   r   N)r,   r-   r.   r/   r  r0   r   r*   r   r  r  Y  s    	9r*   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)rs   ic  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   rp   r   int32)rx   rM   g      4@r   )r   r   rt   r   ru   rn   rv   r%   s    r   __init__ComplexTestObject.__init__f  s9    !yyI>DWWS8DNXXoXFDNr*   )rt   ru   rv   N)r,   r-   r.   r/   __doc__r  r0   r   r*   r   rs   rs   c  s    E	Gr*   rs   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?   rj   r   rl   rm   )rB   rC   rx   cs       r   test_numpy_subclassr  l  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  v  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   rY   rU   r\   )rM   2      F)order)r<   r=   r   asfortranarrayr   r   c_contiguousf_contiguousr   r>   r?   rl   rm   )rB   rC   rn   array_reloadeds       r   "test_non_contiguous_array_picklingr    s    {{:&..H
 %%1v1v&67;GGL4QAX>@ ;;++++;;++++%*%**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?   rl   rm   )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   r=  r$  )r   r   socketAF_INETSOCK_STREAMbindlistencreate_connectionacceptmakefiler   r>   r?   rl   rm   r_  r`  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=   rZ   ALLOCATIONGRANULARITYr   r  r   r   r>   r?   rj   ro   offsetrl   rm   )rB   r   r   rz   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rz   prefixr   r  )r&   r  compressor_prefixs    r   r  Ftest_register_compressor.<locals>.BinaryCompressorTestWrapper.__init__  s    &&t1I.?Ar*   r   Nr,   r-   r.   r/   r  r0   )r  r  s   r   BinaryCompressorTestWrapperr    s    	A 	Ar*   r  )r_  BufferedIOBaser   r   r   fileobj_factoryr  pop)rB   compressor_namer  r  r  s      @@r   test_register_compressorr    s    !O%2#4#4 A A&7 A )D)FG)99$% & %(//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>.InvalidFileObjecti  r   Nr  r   r*   r   InvalidFileObjectr    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    &&t1B.79r*   r   Nr  )r  s   r   InvalidFileObjectWrapperr    s    	9 	9r*   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    sU     9#4 9
 

	wI'?'AB 
 MM . / 
	s   A
A'c                       \ rS rSrS rSrg)AnotherZlibCompressorWrapperi  c                 8    [         R                  " U [        SS9  g r  )r   r  r   r%   s    r   r  %AnotherZlibCompressorWrapper.__init__  s    ""4^INr*   r   Nr  r   r*   r   r  r    s    Or*   r  c                       \ rS rSrS rSrg) StandardLibGzipCompressorWrapperi  c                 L    [         R                  " U [        R                  SS9  g r  )r   r  r"  r>  r%   s    r   r  )StandardLibGzipCompressorWrapper.__init__
  s    ""4T]]9Mr*   r   Nr  r   r*   r   r  r    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"  r>  r  )r  rS   s     r   +test_register_compressor_already_registeredr    s    !O )E)GH	
	wO<>	@ 
 MM76/*, )I)K"$ 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&  r?  rf   r   r?   )rB   r   
compressorr   r   r  s         r   test_lz4_compressionr  &  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  rY   r  r   r   r   z
test1.mmapr   rU   r                     )	a0a1a2a3a4a5a6a7a8z
test2.mmap)r<   r=   r   ra   randnr   r>   r?   rj   ro   rl   rm   ctypesr   NUMPY_ARRAY_ALIGNMENT_BYTESr   alignedrd   r   r   items)rB   r  r   rx   ro   
array_list
l_reloadedidx
array_dict
d_reloadedkeys              r   test_memmap_alignment_paddingr$  Q  s    KK$,,E
		Aa2u4Ffbii((((JJ!!!,\EEEJLJ<< 			BIIOOA.
		BIIOOA.J KK%--Ej(;""5C8J ,&")),,,,


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


%%jov>MM!I!IIQN	PN||##### *r*   r   )r  r@   rg   ra   r   r_  r  r   r"  rV   rP  r  r  
contextlibr   rZ   pathlibr   r	  ImportErrorr7  joblib.test.commonr   r   r   r   r	   r
   joblib.testingr   r   r   joblibr   r   joblib.testr   joblib.numpy_pickle_utilsr   r   r   r   joblib.compressorr   r   r   r   r   typelist_noneappendrq   _typebool_boolr   _intfloat_floatcomplex_complexr   _string_tuple_list_dictrf   _builtinr    r"   r   r3   	_instance_objectrE   rJ   rI   rT   r   r   r   r   r   r   r   r   r   r   r  r  r  r'  rP   r+  r.  r;  rF  rI  rO  rT  r]  ra  rc  rf  rh  r   encoder}  r  r  r  rk   r  r  rs   r  r  r  r  r  r  r  r  r  r  r  r  r  r  DEFAULT_PROTOCOL	protocolsr  r$  r   r*   r   <module>rC     s&   F  	  	 	 
    
       D D @ 5 5 5  5 8 I ?H H  	    Q  
1v  	q  1:  
a&  	  
  
     
 
 		    	 H	 	 
+   Z!Q Xx ! ! !!) B/0! 1! Z45/G 6 /Gd ; ; ./ ./b . .$ 	- 	-  $ \=)< * <& Z$'/ (  /0 & &.P*f , ,@ ; ;( %4 %4P [9:: ;: %L9@@IK 5<<WEG	HII  018 28 Z#Y%' & $ ': #*++,.//$  &	'	'$ - -< 	' 	' 
5 
5 M M  . . V0dkk ..D1D8::@&:KLM ,-EF	H
 y)1 *H1h [2r2sB34 5 Z34" 5" Z!R%G &G >92:: 9

G G ( (6 = =  > > B B> 0 0&2 ^aR[)8 *8/$O#4 ON'8 N&0 
, 
,,   $$%		f555V,,- Z#4$ $ 4$}!  Ds   T T&%T&