
    Ug                        d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlmZ ddlZddlmZ 	 ddlZn# e$ r dZY nw xY wddlZddlmZmZmZmZ ddlmZmZ ddlmZmZmZ ddl m!Z!m"Z" dd	l#m$Z$ dd
l%m&Z& ddl%m'Z' ddl%m(Z( ddl%m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/ g Z0dZ1e02                    e1           e3Z4e02                    e4            e5d          Z6e02                    e6            e7d          Z8e02                    e8            e9d          Z:e02                    e:            e;d          Z<e02                    e<            e=d          Z>e02                    e>           dZ?e02                    e?           g Z@e02                    e@           i ZAe02                    eA           eBZCe02                    eC           d ZD G d d          ZE G d deF          ZGe02                    eD           e02                    eE           e02                    eG            eE            ZHe02                    eH            eG            ZIe02                    eI            edddg           ede0          d                         ZJd ZK eddd eL            g          d             ZMe edg d          d                         ZNed              ZOed!             ZPed"             ZQed#             ZRed$             ZSe ed%g d&          d'                         ZTee edd(d)g          d*                                     ZUed+             ZVd~d,ZWed-             ZXed.             ZYed/             ZZ ed0d1d2g          d3             Z[ ed4d5d6d7\                    d8          fd9d:\                    d8          fg          d;             Z] ed<d=d>g          d?             Z^e edg d@           edAe+          dB                                     Z_dC Z`dD Za edEdFeafdGe`fg          dH             Zb edIg dJ          dK             ZcedL             ZdedM             ZeedN             ZfedO             ZgedP             Zh edQdRdSdT\                     eji        ddU          dUz            j                    dV          z  gdWdXgY           edZg d[          d\                         Zk ed]ddd^d_di g          d`             Zl edag db          dc             Zm eddddi g          de             Zne# G df dgejo                  Zpdh Zq G di dj          Zredk             Zsdl Ztedm             Zuedn             Zvedo             Zwedp             Zxdq Zy edrddi g          ds             Zzdt Z{ G du dve-          Z| G dw dxe-          Z}dy Z~edz             Zed{             Zej        gZej        ej        k    re2                    ej                   e ed|e          d}                         ZdS )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              #      K   | V  d S Nr   )xs    \/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/joblib/test/test_numpy_pickle.py	_functionr    K   s      
GGGGG    c                       e Zd Zd ZdS )_classc                     d S r   r   selfs    r   _methodz_class._methodP       r!   N__name__
__module____qualname__r'   r   r!   r   r#   r#   O   #            r!   r#   c                       e Zd Zd ZdS )	_newclassc                     d S r   r   r%   s    r   r'   z_newclass._methodU   r(   r!   Nr)   r   r!   r   r/   r/   T   r-   r!   r/   compressmemberc                     |                      d          j        }t          j        |||           t          j        |          }|t          j        |          k    r||k    sJ d S d S )Ntest.pklr1   )joinstrpathr   dumploadcopydeepcopy)tmpdirr1   r2   filename_members        r   test_standard_typesr?   e   sv     {{:&&.Hfh::::))G v&&&&     '&  r!   c                      t          t                    5  t          j        dt	                                 d d d            d S # 1 swxY w Y   d S )Nfoo)r   
ValueErrorr   r8   dictr   r!   r   test_value_errorrD   r   s    	
		 ) )%((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   "AAAwrong_compress
   c                     d                     |           }t          t                    5 }t          j        dd|            d d d            n# 1 swxY w Y   |                    |           d S )Nz%Non valid compress level given: "{0}"dummyrA   r5   )formatr   rB   r   r8   match)rE   exception_msgexcinfos      r   test_compress_level_errorrN   x   s    #VN33 	
		 Cw'5>BBBBC C C C C C C C C C C C C C CMM-     s   AAA)FTr      zlibc                    |                      d          j        }t          j                            d          }|                    d          }t          |f|j        f||f|||gf          D ]\  }}t          j	        |||          }t          |          dk    sJ |d         |k    sJ t          j                            |d                   sJ t          j        |          }|D ]}	t          |	t          j                  sJ t          j                            t          j        |          t          j        |                     t          j        |dz   ddt          j        	          }t          j	        |||          }t          |          dk    sJ t          j        |          }t-          |          t          j        ur/t/          |d
          rt          |t-          |                    sJ t          j                            ||           t1                      }t          j	        |||          }t          |          dk    sJ t          j        |          }
t          |
t-          |                    sJ t          j                            |
j        |j                   t          j                            |
j        |j                   t          j                            |
j        |j                   d S )Nr4   r   rG      r5   r   mmapw+   )modeshapedtype__array_prepare__)r6   r7   r   randomRandomStaterandom_sample	enumerateTr   r8   lenospathexistsr9   
isinstancendarraytestingassert_array_equalarraymemmapfloat64typehasattrComplexTestObjectarray_float	array_int	array_obj)r<   r1   r=   rndaindexobj	filenamesobj_item
obj_loadeds              r   test_numpy_persistencery      s    {{:&&.H
)


"
"C'""A!v1v1ay ABB E E
s %c8hGGG	 9~~""""|x''''w~~il+++++  ** 	0 	0DdBJ//////

%%bhsmmRXd^^DDDD )Hv%D
L
L
LC!#x(CCCIy>>QX&&DS		""C,-- 	# $S		*****J!!$,,, 

C!#x(CCCIy>>Q"8,,Jj$s)),,,,,J!!*"8#/JJJJ!!*"6FFFJ!!*"6FFFFFr!   c                     t          j        t          dz   t           j                  }|                     d          j        }t          j        ||d           t          j        |          }t           j	        
                    ||           d S )Nd   rY   r4   Tr5   )r   onesr   uint8r6   r7   r   r8   r9   rf   rg   )r<   	big_arrayr=   arr_reloadeds       r   2test_numpy_persistence_bufferred_array_compressionr      sw    3.rx@@@I{{:&&.HiD9999$X..LJ!!)\:::::r!   c                 ^   t           j                            d          }|                    d          }|                     d          j        }t          j        ||           t          j        |d          }t          |t           j
                  sJ |                     d          j        }t                      }t          j        ||           t          j        |d          }t          |t          |                    sJ t          |j        t           j
                  sJ |j        j        j        rJ t          |j        t           j
                  sJ |j        j        j        rJ t          |j        t           j
                  rJ t           j                            |j        |j                   t           j                            |j        |j                   t           j                            |j        |j                   t          j        |d          }|j        j        j        sJ d|j        dd<   |j        j        j        sJ d|j        dd<   t          j        |d          }t           j                            |j        |j                   t           j                            |j        |j                   t          j        |d	           |j        j        j        sJ |j        j        dk    sJ |j        j        j        sJ |j        j        dk    sJ d S )
Nr   rG   z	test1.pklr	mmap_modez	test2.pklr+g      $@rU   )r   r[   r\   r]   r6   r7   r   r8   r9   rd   ri   rm   rk   rn   flags	writeablero   rp   rf   rg   rW   )r<   rq   rr   r=   brt   rx   obj_reloadeds           r   test_memmap_persistencer      s   
)


"
"C"A{{;''/Ha"""(c222Aa##### {{;''/H


Cc8$$$"8s;;;Jj$s)),,,,,j,bi88888%+5555j*BI66666#)3333*.	:::::J!!*"8"%/3 3 3J!!*"6"%-1 1 1J!!*"6"%-1 1 1 "8t<<<J!'1111#'J1R4 %////!#J2$X===LJ!!,":","8: : :J!!,"8","68 8 8 h$////%////$,,,,!'1111!&$......r!   c                    t           j                            d          }|                    d          }t          j        ddgt
                    }||f}|                     d          j        }t          j	        ||           t          j
        |d          \  }}t          |t           j                  sJ t          |t           j                  rJ d S )	Nr   rG   r   r   r|   r4   r   r   )r   r[   r\   r]   rh   objectr6   r7   r   r8   r9   rd   ri   )r<   rq   rr   r   	constructr=   a_cloneb_clones           r   $test_memmap_persistence_mixed_dtypesr      s     )


"
"C"A
!S(((AAI{{:&&.Hi***#(SAAAGW gry))))) '29-------r!   c                 z   t           j                            d          }|                    d          }t           j                            |d          }|                     d          j        }t          j	        ||           t          j
        |d          }t          |t           j        j                  sJ d S )Nr   rG   g      ?r4   r   r   )r   r[   r\   r]   mamasked_greaterr6   r7   r   r8   r9   rd   masked_array)r<   rq   rr   r=   r   s        r   test_masked_array_persistencer     s     )


"
"C"A
Q$$A{{:&&.Ha"""(c222Aa+,,,,,,,r!   c                 "   t           j                            d          }|                    d          }|                     d          j        }t          j        ||d           t          t                    5 }t          j
        |d           d d d            n# 1 swxY w Y   d                    d	 |D                       }d
 |D             }t          |          dk    s
J |            t          |d                   d| dk    sJ d S )Nr   rG   r4   r   r5   r   r   
c                 ,    g | ]}t          |          S r   )str.0ws     r   
<listcomp>z3test_compress_mmap_mode_warning.<locals>.<listcomp>  s    444a3q66444r!   c                     g | ]	}|j         
S r   )messager   s     r   r   z3test_compress_mmap_mode_warning.<locals>.<listcomp>  s    ,,,a	,,,r!   z6mmap_mode "r+" is not compatible with compressed file z. "r+" flag will be ignored.)r   r[   r\   r]   r6   r7   r   r8   r   UserWarningr9   r`   r   )r<   rq   rr   this_filenamewarninfo	debug_msgs         r   test_compress_mmap_mode_warningr     sd    )


"
"C"AKK
++3Ma3333	{		 9x-488889 9 9 9 9 9 9 9 9 9 9 9 9 9 9		44844455I,,8,,,Hx==AyHQK	<	< 	< 	<	< 	< 	< 	< 	< 	<s   :BB!$B!
cache_size)Nr   rG   c                    |                      d          j        }t          j                            d          }|                    d          }t          j        d           t          j        d          5 }t          j
        |||           d d d            n# 1 swxY w Y   |dnd}t          |          |k    sJ |D ]A}|j        t          k    sJ t          |j                  d	                    |          k    sJ Bd S )
Nr4   r   rR   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}')r6   r7   r   r[   r\   r]   warningssimplefiltercatch_warningsr   r8   r`   categoryDeprecationWarningr   r   rJ   )r<   r   r=   rq   rr   r   expected_nb_warningsr   s           r   test_cache_size_warningr   %  sY    {{:&&.H
)


"
"C'""A(###		 	-	-	- >!X*====> > > > > > > > > > > > > > > * 611Ax==00000 < <z/////AI((.z(:(:; ; ; ; ;< <s   8BB #B TFc                     |                      d          j        }t          j        d          }t          j        dt	          d          z  t          j                  }||fD ]}|j        dz  }|t          t          j        	                    dd                    z   }t          t          j        |||          }t          d	z   }	||	k    sJ t          t          j        |          }d
t          z   }
|||
z   k     sJ d S )Nr4   rG   rG   r{   g    .ArX   rY   r     r5   g0@    )r6   r7   r   r}   intr~   nbytesr   r[   randintr
   r   r8   r   r9   )r<   r1   r=   small_arrayr   rt   sizeobj_filenamemem_usedwrite_buf_sizeread_buf_sizes              r   test_memory_usager   :  s   
 {{:&&.H'(##KcCHHnBH===IY' / /zC#bi&7&74&@&@"A"AA|0"L8E E E
 )+??>))))|0,?? _,$....../ /r!   c                    t          j        dt          j        d                    t          j        dt          j        d                    t          j        dt          j        d                    t          j        dt          j        d                    t          j        dddd	d
gd          t          j        dt           j                                                  dg}|                     d          j        }t          j	        ||d          }t          |          dk    sJ t          j        |          }t          ||          D ]i\  }}t          |t           j                  rBt          |          }|j        |j        k    sJ t           j                            ||           a||k    sJ jd S )N   <i8r|   >i8<f8>f8r   abcrS   rr   r   O      C'est l'été !ztemp.pkl.gzr5   )r   arangerY   rh   r~   tobytesr6   r7   r   r8   r`   r9   ziprd   re   r   rf   assert_equal)r<   expected_listfnamedumped_filenamesresult_listresultexpecteds          r   $test_compressed_pickle_dump_and_loadr   U  s   Yq888Yq888Yq888Yq888Xq%qq)9)9:#FFFYs"(333;;==+-M KK&&.E#(JJJ  A%%%%#E**K];; & &h
++ 	&0::H<8>1111J##FH5555X%%%%%& &r!   c                    t          j        d|           }t          |                    d                    }ddd}|                    dd          }|                    |d          }||k    r	 t          j        d          5 }t          j        d	           t          j        d
dd           t          j
        | |          }	ddd           n# 1 swxY w Y   t          j                            |           }
d|
v sd|
v rdnd}t          j        d|
          r|dnd}||z   }t          |          |k    sJ d |D             }d |D             }|D ]/}t!          |j                  d                    |           k    sJ 0|D ]C}t          j        |           }t          j        d| dt!          |j                            sJ Dt)          |	|          D ]i\  }}t+          |t,          j                  rBt1          |          }|j        |j        k    sJ t,          j                            ||           a||k    sJ jdS # t8          $ r}|dk    r-t+          |t:                    sJ d}|t!          |          v sJ nX|                     d          rBt>          j         d         r0t+          |t:                    sJ tB          t!          |          v sJ n Y d}~dS Y d}~dS d}~ww xY w	 t          j
        |            tE          d          # t:          $ r8}d                    |          }|t!          |j                   v sJ Y d}~dS d}~ww xY w)zHelper function to test joblib pickle content.

    Note: currently only pickles containing an iterable are supported
    by this function.
    z.+py(\d)(\d).+r   rS   rO   )rS   rO   rV   Tr   r   ignorenumpyz"The compiler package is deprecated)moduler   r   Nz_0.9z_0.8.4r   z_0.1.+.pkl$c                 F    g | ]}t          |j        t                    |S r   )
issubclassr   r   r   s     r   r   z!_check_pickle.<locals>.<listcomp>  s?     $5 $5 $5zJ 2(4 (4$5$5 $5 $5r!   c                 F    g | ]}t          |j        t                    |S r   )r   r   r   r   s     r   r   z!_check_pickle.<locals>.<listcomp>  s>     . . .zJ(- (-.. . .r!   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})#rerK   r   groupgetr   r   r   filterwarningsr   r9   ra   rb   basenamesearchr`   r   r   rJ   escaper   rd   r   re   r   rY   rf   r   	ExceptionrB   endswithr   argsr   AssertionError)r=   r   r   version_matchpy_version_used_for_writing%py_version_to_default_pickle_protocolpickle_reading_protocolpickle_writing_protocolr   r   filename_base expected_nb_deprecation_warningsexpected_nb_user_warningsr   deprecation_warningsuser_warningsr   escaped_filenamer   r   excr   es                          r   _check_pickler   m  s    H.99M"%m&9&9!&<&<"="=01aLL)CGG1MMCGG#Q( ("9997	(555 O%h///'W@B B B B +/INNNO O O O O O O O O O O O O O O G,,X66M-''8}+D+D 01qKL - 	-77).% )*,- & 13LL !x==$88888$5 $5#$5 $5 $5 . .#. . .M * 9 9AI''-vh'7'78 8 8 8 8
 # $ $#%9X#6#6 yH"2HHH	NN$ $ $ $ $ $ %(]$C$C . . h
33 .8BBH!<8>9999J++FH====!X-----. .  	 	 	 +a//!#z22222O#c((*****""6** x}Q/? !#z22222.#c((::::: +***** ;:::::	 	*h'''  "F G G G 	* 	* 	*8??') )Gc!&kk))))))))))	*sW   1I ACI CI CE-I 
K1BK,,K15#L 
M"-MMc            
         t          j        dt          j        d                    t          j        dt          j        d                    t          j        dddddgd	          t          j        d
t           j                                                  t          j        g dt          j        d                    dg} t          j        	                    t          j        
                    t          j                            dt          dz  fdt          j                  D             }|D ]}t          ||            d S )Nr   r   r|   r   r   r   rS   r   r   r   r   r   rS   r   ).pkl.gzz.gzip.bz2lz4).xz.lzmac                     g | ]=t          fd D                       t          j                                      >S )c              3   B   K   | ]}                     |          V  d S r   )r   )r   extfns     r   	<genexpr>zGtest_joblib_pickle_across_python_versions.<locals>.<listcomp>.<genexpr>  s/      MMCr{{3//MMMMMMr!   )anyra   rb   r6   )r   r  pickle_extensionstest_data_dirs    @r   r   z=test_joblib_pickle_across_python_versions.<locals>.<listcomp>  sd     O O OMMMM;LMMMMMO]B77 O O Or!   )r   r   rY   rh   r~   r   matrixra   rb   dirnameabspathr   __file__lzmalistdirr   )r   pickle_filenamesr   r  r  s      @@r   )test_joblib_pickle_across_python_versionsr    sP    Yq888Yq888Xq%qq)9)9:#FFFYs"(333;;== Yyyy@@@+-M GOOBGOODM$B$BCCM?--O O O O O"$*]";";O O O " , ,e]++++, ,r!   c            
         t          j        dt          j        d                    t          j        dt          j        d                    t          j        dddddgd	          t          j        d
t           j                                                  t          j        g dt          j        d                    dg} t          j        	                    t          j        
                    t          j                            fdt          j                  D             }|D ]}t          || d           d S )Nr   r   r|   r   r   r   rS   r   r   r   r   r   c                 z    g | ]7}|                     d           t          j                            |          8S )r   )r   ra   rb   r6   )r   r  r  s     r   r   zGtest_joblib_pickle_across_python_versions_with_mmap.<locals>.<listcomp>  sQ     D D Dr{{6/B/BD
]B''D D Dr!   r   r   )r   r   rY   rh   r~   r   r  ra   rb   r	  r
  r   r  r  r   )r   r  r   r  s      @r   3test_joblib_pickle_across_python_versions_with_mmapr    s4   Yq888Yq888Xq%qq)9)9:#FFFYs"(333;;== Yyyy@@@+-M GOOBGOODM$B$BCCMD D D D*]++D D D " ; ;e]c:::::; ;r!   c                  
   t          j        ddgddg          t          j        dt          j        d                    t          j        dt          j        d                    g} | D ]}t          j        d	k    rt          |          rJ nt          |          sJ t          |          }|j        j        r3|j        j        	                                D ]}|d
         j        dk     |j        j        dk    sJ t          j        ddgddg          t          j        dt          j        d                    t          j        dt          j        d                    g}|D ]}t          j        dk    rt          |          rJ nt          |          sJ t          |          }|j        j        r3|j        j        	                                D ]}|d
         j        dk     |j        j        dk    sJ d S )N)r   g       @)rO   g      @) r   )r  r   r|   rO   r   r   bigr   =)r  r   )r  r   r   r   little)
r   rh   r   rY   sys	byteorderr   r   fieldsvalues)	be_arraysrh   	convertedf	le_arrayss        r   .test_numpy_array_byte_order_mismatch_detectionr     s:    8X.!,k :< < <1BHUOO4441BHUOO4446I  
4 
4=E!!:5AAAAAA6u=====-e44	?! 	4_+2244 & &!#%%%& ?,33333 8X.!,k :< < <1BHUOO4441BHUOO4446I  
4 
4=H$$:5AAAAAA6u=====-e44	?! 	4_+2244 & &!#%%%& ?,33333
4 
4r!   compress_tuple)rP   rO   gziprO   c                     |                      d          j        }t          j        d||           t	          |d          5 }t          |          |d         k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr4   rI   r5   rbr   r6   r7   r   r8   openr   )r<   r!  r=   r  s       r   test_compress_tuple_argumentr(    s     {{:&&.Hgx-/ / / / 
h		 :!!$$q(999999: : : : : : : : : : : : : : : : : :s   A,,A03A0zcompress_tuple,message))rP   rO   extraz9Compress argument tuple should contain exactly 2 elements)wrongrO   z(Non valid compression method given: "{}"r*  )rP   r*  z$Non valid compress level given: "{}"c                     |                      d          j        }t          t                    5 }t	          j        d||           d d d            n# 1 swxY w Y   |                    |           d S )Nr4   rI   r5   )r6   r7   r   rB   r   r8   rK   )r<   r!  r   r=   rM   s        r   &test_compress_tuple_argument_exceptionr,  *  s     {{:&&.H	
		 Fw'8nEEEEF F F F F F F F F F F F F F FMM's   AAAcompress_stringrP   r#  c                     |                      d          j        }t          j        d||           t	          |d          5 }t          |          |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr4   rI   r5   r%  r&  )r<   r-  r=   r  s       r   test_compress_string_argumentr/  9  s     {{:&&.Hgx.0 0 0 0 
h		 8!!$$777778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   A&&A*-A*)r   rO      cmethodc                    |                      d          j        }t          j        dd          t	          d          dddg d	i d
df}|dv rt
          t          j        d           n,|dk    r&t          j	        d
         rt          j        d           |dz   |z   }|D ]}t          j        ||||f           t          |d          5 }t          |          |k    sJ 	 d d d            n# 1 swxY w Y   t          j        |          }t          |t!          |                    sJ t          |t          j                  r!t          j                            ||           ||k    sJ d S )Nr4   )r{   r{   f8r   rG   r   r   )rr   rS   r   r   g      ?r  xzzlzma is support not availabler   zlz4 is not installed..r5   r%  )r6   r7   r   r}   ranger  pytestskipr   r   r   r8   r'  r   r9   rd   rk   re   rf   rg   )	r<   r1   r1  r=   objectsdump_filenamert   r  r   s	            r   test_joblib_compression_formatsr<  D  s    {{:&&.HwZt444Ryy3RQ5G .  T\34444	E		hmA.	 	+,,,sNW,M ' '#}7JKKKK-&& 	4!%a((G33333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 $(77,S		22222c2:&& 	'J)),<<<<3&&&&&' 's   
C--C1	4C1	c                    t          t          j        | d                    5 }|                                }ddd           n# 1 swxY w Y   t	          |d          5 }|                    |           ddd           dS # 1 swxY w Y   dS )zDecompress a gzip file.r%  Nwb)r   r#  GzipFilereadr'  writesource_filenametarget_filenamefobufs       r   _gzip_file_decompressrG  d  s    	55	6	6 "ggii               
ot	$	$ 
                 s#   AAABB	Bc                    t          | d          5 }t          j        |                                          }ddd           n# 1 swxY w Y   t          |d          5 }|                    |           ddd           dS # 1 swxY w Y   dS )zDecompress a zlib file.r%  Nr>  )r'  rP   
decompressr@  rA  rB  s       r   _zlib_file_decompressrJ  m  s    	ot	$	$ )obggii(() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
ot	$	$ 
                 s#   'AAABB	Bzextension,decompress.zr   c                     d}|                      d          j        }||z   }t          j        ||            |||           t          j        |          }||k    sJ d S )Nza string to persistr4   )r6   r7   r   r8   r9   )r<   	extensionrI  rt   filename_rawfilename_compressedr   s          r   'test_load_externally_decompressed_filesrP  v  sz    
  C;;z**2L&2c./// J"L111  $\22L,r!   zextension,cmethod))rK  rP   )r   r#  )r   bz2)r   r  )r   r5  )r   not-compressed)r  rR  c                    |dv rt           t          j        d           |                     d          j        }d}||z   }t          j        ||           t          |d          5 }t          |          |k    sJ 	 d d d            n# 1 swxY w Y   t          j	        |          }t          |t          |                    sJ ||k    sJ d S )Nr4  zlzma is missingr4   zobject to dumpr%  )r  r8  r9  r6   r7   r   r8   r'  r   r9   rd   rk   )r<   rM  r1  r=   rt   
dump_fnamer  r   s           r   %test_compression_using_file_extensionrU    s    .  T\%&&&{{:&&.H
CI%Jc:&&&	j$		 01!!$$/////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  $Z00LlDII.....3s   &B		BBc                 (   t           j                            d          dg}t          j        t          j        g}t          |t          j        gz  }|                     d          j	        }|D ]#}|D ]} ||d          5 }t          j        ||           d d d            n# 1 swxY w Y    ||d          5 }t          j        |          }d d d            n# 1 swxY w Y   t          |d          5 }t          j        |          }d d d            n# 1 swxY w Y   t          |t           j                  rBt           j                            ||           t           j                            ||           ||k    sJ ||k    sJ %d S )Nr   	some datar4   r>  r%  )r   r[   rQ  BZ2Filer#  r?  r  LZMAFiler6   r7   r   r8   r9   r'  rd   re   rf   rg   )	r<   objsfobjsr=   rt   fobjr  r   obj_reloaded_2s	            r   test_file_handle_persistencer^    sN   IX&&4D[$-(E$- {{:&&.H - - 	- 	-Dh%% *!#q)))* * * * * * * * * * * * * * *
 h%% 4+0334 4 4 4 4 4 4 4 4 4 4 4 4 4 4
 h%% 6!-!21!5!56 6 6 6 6 6 6 6 6 6 6 6 6 6 6 #rz** -
--lC@@@
--ncBBBB#s****%,,,,,'	-- -s6   B##B'*B':CC"C6DDDc                  P   t           j                            d          dg} | D ]}t          j                    }t	          j        ||           t	          j        |          }t          |t           j                  r!t           j	        
                    ||           y||k    sJ d S )Nr   rW  )r   r[   ioBytesIOr   r8   r9   rd   re   rf   rg   )rZ  rt   r  r   s       r   test_in_memory_persistencerb    s    IX&&4D ' 'JLL#q!!!#(++c2:&& 	'J)),<<<<3&&&&&' 'r!   c                    t           j                            d          }|                     d          j        }t	          |d          5 }t          j        ||           d d d            n# 1 swxY w Y   t	          |d          5 }t          j        |d          }d d d            n# 1 swxY w Y   t           j        	                    ||           d S )Nr   r4   r>  r%  r   r   )
r   r[   r6   r7   r'  r   r8   r9   rf   rg   )r<   rt   r=   r  r   s        r   !test_file_handle_persistence_mmaprd    s9   
)

8
$
$C{{:&&.H	h		 "#q!!!" " " " " " " " " " " " " " " 
h		 <#(d;;;< < < < < < < < < < < < < < < J!!,44444s$   
A,,A03A0B**B.1B.c                 h   t           j                            d          }|                     d          j        }t	          |d          5 }t          j        ||d           d d d            n# 1 swxY w Y   t          t          j	        |d                    5 }t          t                    5 }t          j        |d           d d d            n# 1 swxY w Y   t          |          d	k    sJ t          |d
         j                  d|ddz  k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r4   r>  r"  r5   r%  r   r   r   r   zP"%(fileobj)r" is not a raw file, mmap_mode "%(mmap_mode)s" flag will be ignored.)fileobjr   )r   r[   r6   r7   r'  r   r8   r   r#  r?  r   r   r9   r`   r   r   )r<   rt   r=   r  r   s        r   ,test_file_handle_persistence_compressed_mmaprg    s   
)

8
$
$C{{:&&.H	h		 8#q;77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 
x..	/	/ M1; 	18a40000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	18}}!!!!HQK'(((67d*K*KLL L L L L	M M M M M M M M M M M M M M M M M MsH   
A..A25A2D'0CD'C	D'C	>D''D+.D+c                     t           j                            d          } t          j                    }t	          j        | |           t          t                    5 }t	          j        |d           d d d            n# 1 swxY w Y   t          |          dk    sJ t          |d         j                  dddiz  k    sJ d S )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[   r`  ra  r   r8   r   r   r9   r`   r   r   )rt   rF  r   s      r   +test_file_handle_persistence_in_memory_mmapri    s   
)

8
$
$C
*,,Cc3	{		 /x#..../ / / / / / / / / / / / / / /x==A#$$%t,-- - - - - -s   A??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   rO   	   c                 X   |                      d          j        }t          |d          5 }t          |d|          5 }|                                sJ |                    |           |                                |                                k    sJ t          t          j	                  5  |
                                 d d d            n# 1 swxY w Y   t          t          j	                  5  |                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |j        sJ t          t                    5  |                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |d          5 }t          |          5 }|                                sJ |                                sJ |                                |                                k    sJ |                                |k    sJ t          t          j	                  5  |                                 d d d            n# 1 swxY w Y   |                                sJ |                    d           |                                dk    sJ 	 d d d            n# 1 swxY w Y   |j        sJ 	 d d d            n# 1 swxY w Y   t          |d|          5 }|                                sJ |                    |           d d d            n# 1 swxY w Y   t          |d          5 }|                                |k    sJ |                                sJ 	 d d d            n# 1 swxY w Y   t          |d|          }|                                sJ |                    |           |                                 t          |d          }|                                |k    sJ |                                 d S )Nr4   r>  compresslevelr%  r   )r6   r7   r'  r   writablerA  filenor   r`  UnsupportedOperation_check_can_read_check_can_seekclosedrB   _check_not_closedreadableseekabler@  _check_can_writeseektellclose)r<   r   rk  r=   r  fzs         r   test_binary_zlibfiler~    s6    {{:&&.H	h		 #At*8: : : 		%=?;;==   HHTNNN99;;!((**,,,,/00 % %""$$$% % % % % % % % % % % % % % % /00 % %""$$$% % % % % % % % % % % % % % %		% 		% 		% 		% 		% 		% 		% 		% 		% 		% 		% 		% 		% 		% 		% yJ 	# 	#  """	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	## # # # # # # # # # # # # # # 
h		 A 		"";;==   ;;==   99;;!((**,,,,7799$$$$/00 & &##%%%& & & & & & & & & & & & & & &;;==   GGAJJJ7799>>>>>		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" 		" y               
$&4
6 
6 
6 9;{{}}
              
 
$	'	' 2wwyyD    {{}}              
 
$n	E	E	EB;;==HHTNNNHHJJJ	$	'	'B7799HHJJJJJs!  FA1D,/CD,CD,CD,4D	D,DD,DD, F,D0	0F3D0	4 FE5)F5E9	9F<E9	=FFF'K"7BKI$K$I((K+I(,AK5K"K	K"K		K""K&)K&?,L77L;>L;1NNN	bad_value   rr   c                 .   |                      d          j        }t          t                    5 }t	          |d|           d d d            n# 1 swxY w Y   t          j        d                    |                    }|                    |           d S )Nr4   r>  rn  zS'compresslevel' must be an integer between 1 and 9. You provided 'compresslevel={}')	r6   r7   r   rB   r   r   r   rJ   rK   )r<   r  r=   rM   patterns        r   +test_binary_zlibfile_bad_compression_levelsr  <  s    {{:&&.H	
		 @wxY????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @i ::@&:K:KM MGMM's   AAAbad_mode)rr   r   r   r   r   rS   c                     |                      d          j        }t          t                    5 }t	          ||           d d d            n# 1 swxY w Y   |                    d           d S )Nr4   zInvalid mode)r6   r7   r   rB   r   rK   )r<   r  r=   rM   s       r   "test_binary_zlibfile_invalid_modesr  F  s    {{:&&.H	
		 +wx***+ + + + + + + + + + + + + + +MM.!!!!!s   AAAbad_filec                     t          t                    5 }t          | d           d d d            n# 1 swxY w Y   |                    d           d S )Nr%  z1filename must be a str or bytes object, or a file)r   	TypeErrorr   rK   )r  rM   s     r   *test_binary_zlibfile_invalid_filename_typer  N  s    				 'gx&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'MMEFFFFF   266c                       e Zd Zd ZdS )SubArrayc                 :    t           t          j        |           ffS r   )_load_sub_arrayr   asarrayr%   s    r   
__reduce__zSubArray.__reduce__[  s    "RZ%5%5$888r!   N)r*   r+   r,   r  r   r!   r   r  r  Y  s#        	9 	9 	9 	9 	9r!   r  c                 <    t          | j                  }| |d d <   |S r   )r  rX   )arrds     r   r  r  ^  s#    SY!!!r!   c                       e Zd ZdZd ZdS )rm   z7A complex object containing numpy arrays as attributes.c                     t          j        dd          | _        t          j        dd          | _        t          j        g dd          | _        d S )Nr{   rj   r|   int32)rr   rG   g      4@r   )r   r   rn   r}   ro   rh   rp   r%   s    r   __init__zComplexTestObject.__init__f  sM    !yI>>>DWS888DNXoooXFFFDNNNr!   N)r*   r+   r,   __doc__r  r   r!   r   rm   rm   c  s.        EE	G 	G 	G 	G 	Gr!   rm   c                    |                      d          j        }t          d          }t          j        ||           t          j        |          }t          |t                    sJ t          j        	                    ||           d S )Nr4   )rG   )
r6   r7   r  r   r8   r9   rd   r   rf   rg   )r<   r=   rr   cs       r   test_numpy_subclassr  l  sx    {{:&&.HAa"""(##Aa"""""J!!!Q'''''r!   c                 .   |                      d          j        }d}t          j        |t	          |                     t          j        |          |k    sJ t          j        ||           t          j        t	          |                    |k    sJ d S )Nr4   {   )r6   r7   r   r8   r   r9   )r<   r=   values      r   test_pathlibr  v  s    {{:&&.HEeT(^^,,,X&&%////eX&&&T(^^,,555555r!   c                    |                      d          j        }t          j        ddgddgg          dd          t          j        dd          d d d dd d f         fD ]g}|j        j        rJ |j        j        rJ t          j	        ||           t          j
        |          }t          j                            ||           hd S )	Nr4   r   rS   rO   rV   )rG   2      F)order)r6   r7   r   asfortranarrayr}   r   c_contiguousf_contiguousr   r8   r9   rf   rg   )r<   r=   rh   array_reloadeds       r   "test_non_contiguous_array_picklingr    s    {{:&&.H
 %1v1v&677;GL444QQQAAAX>@ 
= 
= ;++++;++++%***%*844

%%ne<<<<
= 
=r!   c                    |                      d          j        }t          j        d          }t	          j        ||t          j                   t	          j        |          }t          j	        
                    ||           d S )Nr4   rG   protocol)r6   r7   r   zerosr   r8   pickleHIGHEST_PROTOCOLr9   rf   rg   )r<   r=   
test_arrayr  s       r   test_pickle_highest_protocolr    sn     {{:&&.H"Jj(V5LMMMM!&x00NJ!!.*=====r!   c                     t          j        d          } d}t          j        t          j        t          j                  }|                    |           |                    d           t          j        |          5 }|                                \  }}|	                    d          5 }t          j        | |           d d d            n# 1 swxY w Y   |	                    d          5 }t          j        |          }d d d            n# 1 swxY w Y   t           j                            ||            t          j                    }	t          j        | |	           |                    |	                                           |	                    d          5 }t          j        |          }d d d            n# 1 swxY w Y   t           j                            ||            d d d            d S # 1 swxY w Y   d S )NrG   )	localhosti90  r   r>  r%  )r   r   socketAF_INETSOCK_STREAMbindlistencreate_connectionacceptmakefiler   r8   r9   rf   rg   r`  ra  sendgetvalue)
r  _ADDRlistenerclientserverclient_addrsfcfr  bytes_to_sends
             r   test_pickle_in_socketr    s    2J E}V^V-?@@HMM%OOA		!%	(	( BF&oo//__T"" 	.bj"---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. __T"" 	3b).r22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	
%%njAAA 
*m444M**,,---__T"" 	3b).r22N	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	
%%njAAA)B B B B B B B B B B B B B B B B B Bs   >-G6+CG6C	G6C	G6-DG6D	G6D	BG6F>2G6>G	G6G	#G66G:=G:c                    |                      d          j        }t          j        }t	          j        |d          t	          j        |d          g}t          j        ||           t          j	        |d          }t          |d         t          j                  sJ |d         j        |k    sJ t          j                            ||           d S )N	test.mmapr~   r|   r   r   r   )r6   r7   rT   ALLOCATIONGRANULARITYr   r  r}   r   r8   r9   rd   ri   offsetrf   rg   )r<   r   r   rt   memmapss        r    test_load_memmap_with_big_offsetr    s     KK$$,E%D8D((("'$g*F*F*F
GCc5!!!555Ggaj"),,,,,1:t####J!!#w/////r!   c                 &   d}d G d dt           j                   G fddt                    }t          | |                       t          |         j        k    sJ t          |         j        k    sJ t	          j        |           d S )N	test-nameztest-prefixc                       e Zd ZdS ):test_register_compressor.<locals>.BinaryCompressorTestFileNr*   r+   r,   r   r!   r   BinaryCompressorTestFiler            r!   r  c                       e Zd Z fdZdS )=test_register_compressor.<locals>.BinaryCompressorTestWrapperc                 6    t          j        |            d S )Nrt   prefixr   r  )r&   r  compressor_prefixs    r   r  zFtest_register_compressor.<locals>.BinaryCompressorTestWrapper.__init__  s5    &t1I.?A A A A A Ar!   Nr*   r+   r,   r  )r  r  s   r   BinaryCompressorTestWrapperr    s;        	A 	A 	A 	A 	A 	A 	A 	Ar!   r  )r`  BufferedIOBaser   r   r   fileobj_factoryr  pop)r<   compressor_namer  r  r  s      @@r   test_register_compressorr    s    !O%    2#4   A A A A A A A A&7 A A A )D)D)F)FGGG)9$% % % %(/3DDDDD _%%%%%r!   invalid_namec                     t          t                    5 }t          | d            d d d            n# 1 swxY w Y   |                    d           d S )Nz"Compressor name should be a string)r   rB   r   rK   )r  rM   s     r   %test_register_compressor_invalid_namer    s     

		 0wL$///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0MM677777r  c                       G d d           G fddt                     } t          t                    5 }t          d |                        d d d            n# 1 swxY w Y   |                    d           d S )Nc                       e Zd ZdS )Ctest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectNr  r   r!   r   InvalidFileObjectr    r  r!   r  c                       e Zd Z fdZdS )Jtest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapperc                 6    t          j        | d           d S Ns   prefixr  r  )r&   r  s    r   r  zStest_register_compressor_invalid_fileobj.<locals>.InvalidFileObjectWrapper.__init__  s/    &t1B.79 9 9 9 9 9r!   Nr  )r  s   r   InvalidFileObjectWrapperr    s.        	9 	9 	9 	9 	9 	9 	9r!   r  invalidzQCompressor 'fileobj_factory' attribute should implement the file object interface)r   r   rB   r   rK   )r  rM   r  s     @r   (test_register_compressor_invalid_fileobjr    s          9 9 9 9 9 9 9#4 9 9 9
 

		 CwI'?'?'A'ABBBC C C C C C C C C C C C C C C MM . / / / / /s   AA!$A!c                       e Zd Zd ZdS )AnotherZlibCompressorWrapperc                 >    t          j        | t          d           d S r  )r   r  r   r%   s    r   r  z%AnotherZlibCompressorWrapper.__init__  s     "4^INNNNNNr!   Nr  r   r!   r   r  r    s(        O O O O Or!   r  c                       e Zd Zd ZdS ) StandardLibGzipCompressorWrapperc                 H    t          j        | t          j        d           d S r  )r   r  r#  r?  r%   s    r   r  z)StandardLibGzipCompressorWrapper.__init__
  s"    "4T]9MMMMMMr!   Nr  r   r!   r   r  r    s(        N N N N Nr!   r  c                     d} t          | t                                 t          t                    5 }t          | t	                                 d d d            n# 1 swxY w Y   |                    d                    |                      t          | t	                      d           | t          v sJ t          |          j        t          j
        k    sJ t          j        |            d S )Nr  z#Compressor '{}' already registered.T)force)r   r  r   rB   r  rK   rJ   r   r  r#  r?  r  )r  rM   s     r   +test_register_compressor_already_registeredr    sF   !O )E)G)GHHH	
		 @wO<>>	@ 	@ 	@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ MM76/**, , , )I)K)K"$ $ $ $ l****(8DMIIII _%%%%%s   AA #A c                    dd l }d}|t          v sJ t          |         j        |j        j        k    sJ |                     d          j        }d}t          j        |||           t          |d          5 }|
                    t          t                              t          k    sJ 	 d d d            n# 1 swxY w Y   t          j        |          |k    sJ t          j        ||dz              t          |d          5 }|
                    t          t                              t          k    sJ 	 d d d            n# 1 swxY w Y   t          j        |          |k    sJ d S )Nr   r   r4   	test datar5   r%  r   )	lz4.framer   r  frameLZ4FrameFiler6   r7   r   r8   r'  r@  r`   r   r9   )r<   r   
compressorr   r   r  s         r   test_lz4_compressionr   &  s    J%%%%
#3sy7MMMMMKK
##+EDdEJ7777	eT		 7avvc+&&'';666667 7 7 7 7 7 7 7 7 7 7 7 7 7 7U##t++++ dEFN+++	eT		 7avvc+&&'';666667 7 7 7 7 7 7 7 7 7 7 7 7 7 7U##t++++++s$   73B77B;>B;3EEEc                    |                      d          j        }d}t          }t          t                    5 }t          j        ||d           d d d            n# 1 swxY w Y   |                    |           t          t                    5 }t          j        ||dz              d d d            n# 1 swxY w Y   |                    |           d S )Nz
test.nolz4r  r   r5   r   )r6   r7   r   r   rB   r   r8   rK   )r<   r   r   msgrM   s        r    test_lz4_compression_without_lz4r  =  s;    KK%%-ED
!C	
		 7w$66667 7 7 7 7 7 7 7 7 7 7 7 7 7 7MM#	
		 0w$///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0MM#s#   AA #A B55B9<B9r  c                    |                      d          j        }t          j                            d          }t          j        |||           t          j        |d          }t          |t          j	                  sJ t          j
                            ||           |j        j        t
          j        z  dk    sJ |j        j        sJ t          j                            d          t          j                            d          t          j                            d          t          j                            d          g}|                      d          j        }t          j        |||           t          j        |d          }t#          |          D ]t\  }}t          |t          j	                  sJ t          j
                            ||         |           |j        j        t
          j        z  dk    sJ |j        j        sJ ut          j        dt          j                  t          j        d	t          j                  t          j        d
t          j                  t          j        dt          j                  t          j        dt          j                  t          j        dt          j                  t          j        dt          j                  t          j        dt          j                  t          j        dt          j                  d	}|                      d          j        }t          j        |||           t          j        |d          }	|	                                D ]t\  }
}t          |t          j	                  sJ t          j
                            ||
         |           |j        j        t
          j        z  dk    sJ |j        j        sJ ud S )Nr  rS   r  r   r   r   z
test1.mmapr|   rO   r                     )	a0a1a2a3a4a5a6a7a8z
test2.mmap)r6   r7   r   r[   randnr   r8   r9   rd   ri   rf   rg   ctypesr   NUMPY_ARRAY_ALIGNMENT_BYTESr   alignedr^   r   r~   items)r<   r  r   rr   ri   
array_list
l_reloadedidx
array_dict
d_reloadedkeys              r   test_memmap_alignment_paddingr  Q  sZ    KK$$,E
	Aa2222u444Ffbi(((((J!!!V,,,\EEJJJJ< 		BIOOA..
	BIOOA..J KK%%-Ej%(;;;;"5C888J ,, $ $V&"),,,,,

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

%%jov>>>M!IIQNNNN|#####$ $r!   r   )r  r:   ra   r[   r   r`  r  r   r#  rP   rQ  r  r  
contextlibr   rT   pathlibr   r  ImportErrorr8  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appendrk   _typebool_boolr   _intfloat_floatcomplex_complexr   _string_tuple_list_dictr`   _builtinr    r#   r   r/   	_instance_objectr?   rD   rC   rN   ry   r   r   r   r   r   r   r   r   r   r  r  r   r(  rJ   r,  r/  r<  rG  rJ  rP  rU  r^  rb  rd  rg  ri  r   encoder~  r  r  r  re   r  r  rm   r  r  r  r  r  r  r  r  r  r  r  r  r   r  DEFAULT_PROTOCOL	protocolsr  r  r   r!   r   <module>r>     s@   F F  				  				 				 



    



               KKKK   DDD  D D D D D D D D D D D D @ @ @ @ @ @ @ @ 5 5 5 5 5 5 5 5 5 5 5 4 4 4 4 4 4 4       5 5 5 5 5 5 8 8 8 8 8 8 I I I I I I ? ? ? ? ? ?H H H H H H H H H H H H H H  	        Q    
s1vv    	q    71::    
#a&&    	    
    
                 
       
 		        	   FHH	 	   
)++     Z!Q  Xx  ! ! !  ! !) ) ) B/00! ! 10! Z44455/G /G 65 /Gd ; ; ; ./ ./ ./b . . .$ 	- 	- 	-   $ \===))< < *) <& Z$''/ / ('  /0 & & &.P* P* P* P*f , , ,@ ; ; ;( %4 %4 %4P [9::: : ;:: %L9@@IIK 5<<WEEG	HI I I I  0118 8 218 Z##Y%%' ' &% $# ':     #*++,./ / / /$  & & &	' 	' 	' 	'$ - - -< 	' 	' 	' 
5 
5 
5 M M M  . . . V0dkk(&.D11D8: ::@&:K:KLM ,-EF	H H H
 yyy))1 1 *)H H1h [2r2sB344  54 Z33344" " 54" Z!R%%G G &%G >9 9 9 9 92: 9 9 9
  
G G G G G G G G ( ( (6 6 6 = = =  > > > B B B> 0 0 0& & &2 ^aR[))8 8 *)8/ / /$O O O O O#4 O O ON N N N N'8 N N N& & &0 
, , 
,,    $%		f555V,--- Z##4$ 4$ $# 4$ 4$ 4$s   A	 	AA