
    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ZddlmZ ddlmZ ddlmZmZ ddlmZmZ ddlmZ ddlmZmZ dd	lmZmZ dd
lmZ ddlmZmZ ddlmZm Z  ddl!m"Z"m#Z# ddl!m$Z$ ddl%m&Z&m'Z'm(Z( ddl)m*Z* dudZ+d Z,d Z-d Z.d Z/ e&dddg          d             Z0d Z1d Z2d Z3d Z4d Z5d  Z6d! Z7d" Z8g fd#Z9d$ Z:e" e&d%dd&g          d'                         Z;e"d(             Z<d) Z=d* Z>d+ Z?d, Z@ e&d-d.gd/d&fg d0dfg          d1             ZAd2 ZBd3 ZCd4 ZDd5 ZEd6 ZFd7 ZGd8 ZHd9 ZId: ZJd; ZKd< ZLd= ZMd> ZNd? ZOd@dAdBdCZPdDeQdEeRdFeRfdGZSdH ZTdI ZUdvdJZVdK ZWdL ZXdM ZYdN ZZdO Z[dP Z\dQ Z]dwdRZ^e$dS             Z_e$dT             Z`dU Za G dV dWe          Zb G dX dYe          Zc e&dZd ed             ee            g          d[             Zfd\ Zgd] Zhd^ Zid_ Zjd` Zkda Zldb Zmdc Zndd ZodxdeZpejq        &                    dfdgdhdid&djdkdlidmg          dn             Zrdo Zsdp Zt G dq dr          Zu G ds dt          ZvdS )yz
Test the memory module.
    N)Memory)expires_after)MemorizedFuncNotMemorizedFunc)MemorizedResultNotMemorizedResult)_FUNCTION_HASHES)register_store_backend_STORE_BACKENDS)_build_func_identifier_store_backend_factory)JobLibCollisionWarning)Paralleldelayed)StoreBackendBaseFileSystemStoreBackend)
with_numpynp)with_multiprocessing)parametrizeraiseswarns)hash   c                     | dz  |z   S )z3 A module-level function for testing purposes.
        )xys     V/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/joblib/test/test_memory.pyfr!   *   s     6A:    c                     t          |d          }|                    |           } t          d          D ]=}t          d          D ]+} | |          |k    sJ t          |          |dz   k    sJ ,>dS )z Given a function and an accumulator (a list that grows every
        time the function is called), check that the function can be
        decorated by memory to be a lazy identity.
    r   locationverbose   r   r   N)r   cacherangelen)funcaccumulatorr%   memoryi_s         r    check_identity_lazyr0   2   s     Xq111F<<D1XX - -q 	- 	-A477a<<<<{##q1u,,,,,	-- -r"   c                    | j                                         \  }t          j                            |j        d          }t          |d          5 }|                    d           d d d            d S # 1 swxY w Y   d S )N
output.pklwgarbage)store_backend	get_itemsospathjoinopenwrite)r-   single_cache_itemoutput_filenamer!   s       r    corrupt_single_cache_itemr>   A   s    -7799gll#4#9<HHO	os	#	# q		                 s   A44A8;A8c                 D    g fd}|                     | d|           S )Nc                 2                         |            d S Nappend)itemrecordeds    r    append_to_recordz6monkeypatch_cached_func_warn.<locals>.append_to_recordO   s    r"   warn)setattr)r+   monkeypatch_fixturerF   rE   s      @r    monkeypatch_cached_func_warnrJ   H   sA    
 H    f.>???Or"   c                    t                      fd}t          || j                   dD ]}dD ]}t          | j        d||          }t	          j        | j        d           |                    |          } |d           |                    d	
           t                    } |d          }t                    |dz   k    sJ |	                    |d          |k    sJ t                    |dz   k    sJ d|_
        t          | j        d          } |                    |          d           dS )z, Simple test of memory lazy evaluation.
    c                 2                         d           | S Nr   rB   argr,   s    r    r!   z"test_memory_integration.<locals>.f_       1
r"   )FT)rN
   )r%   r&   	mmap_modecompressT)ignore_errorsr   F)rG   __main__r   r$   N)listr0   strpathr   shutilrmtreer(   clearr*   eval
__module__)	tmpdirr!   rT   rS   r-   gcurrent_accumulatoroutr,   s	           @r    test_memory_integrationrb   W   s    &&K
     ;777 " ; ;$ 	 	IV^R&/(D D DF M&.====QAAaDDDGGG"%k"2"2!A$$CC;#6#:::::{{1a  C'''';#6#:::::: ALV^Q777FFLLOOAr"   call_before_reducingTFc                 $  
 dD ]}d}d                     |          }t          t          t          j        |          |d                     t                      d         }d|_         |d          dk    sJ |j        j        |k    sJ t          | j
        d	
          }|                    |          
t          t          j        | dz                      dk    sJ t          j        | dz            d	         }d|v sJ | dz  |z  }|d	k    rt          j        |          dgk    sJ t          j        |dz            g k    sJ |r[ 
d           t          t          j        |dz                      dk    sJ  t          d          
fddD                       }	nZ t          d          
fddD                       }	t          t          j        |dz                      dk    sJ  
d           t          t          j        |dz                      dk    sJ +t          t          j        |dz                      dk    sJ  
d           t          t          j        |dz                      dk    sJ d S )N)r   r   z0
        def f(x):
            return x
        z<ipython-input-{}-000000000000>exec)filenamemoder!   rV   r   r   r$   joblibzipython-inputr'   r   n_jobsc              3   H   K   | ]} t                    |          V  d S rA   r   .0r.   cached_fs     r    	<genexpr>zHtest_parallel_call_cached_function_defined_in_jupyter.<locals>.<genexpr>   6      (N(N!):):):1)=)=(N(N(N(N(N(Nr"   )r   r   c              3   H   K   | ]} t                    |          V  d S rA   rl   rm   s     r    rp   zHtest_parallel_call_cached_function_defined_in_jupyter.<locals>.<genexpr>   rq   r"      )formatre   compiletextwrapdedentlocalsr]   __code__co_filenamer   rX   r(   r*   r7   listdirr   )r^   rc   
session_noipython_cell_sourceipython_cell_id	aliased_fr-   f_cache_relative_directoryf_cache_directoryresro   s             @r    5test_parallel_call_cached_function_defined_in_jupyterr      s   &  MA MA

 <BB:NN 344(  	
 	
 	
 HHSM	)	 y||q    !-@@@@;;;<<	**2:fx/0011Q6666%'Z0A%B%B1%E""<<<<<"X-0JJ??:/00SE9999:/#566"<<<<#  2:&7#&=>>??1DDDD )ha((((N(N(N(Nv(N(N(NNN )ha((((N(N(N(Nv(N(N(NNN2:&7#&=>>??1DDDD
 rz"3c"9::;;q@@@@@ rz"3c"9::;;q@@@@HQKKK rz"3c"9::;;q@@@@@[MA MAr"   c                     t                      fd} t          dd          }|                    |           }t          d          D ]4}t	                    } |d           t	                    |dz   k    sJ 5dS )z, Test memory with location=None: no memoize c                 2                         d           | S rM   rB   rN   s    r    ffztest_no_memory.<locals>.ff   rP   r"   Nr   r$   rs   r   )rW   r   r(   r)   r*   )r   r-   ggr/   r`   r,   s        @r    test_no_memoryr      s    &&K     T1---F	b		B1XX ; ;!+..
1;#6#::::::; ;r"   c                     t                      d	fd	}t          || j                   t          | j        d          }|                    |          } |dd          dk    sJ dS )
z4 Test memory with a function with keyword arguments.Nr   c                 2                         d           | S rM   rB   )arg1arg2r,   s     r    r_   ztest_memory_kwarg.<locals>.g   s    1r"   r   r$      r   )r   r   rM   )rW   r0   rX   r   r(   )r^   r_   r-   r,   s      @r    test_memory_kwargr      s    &&K      ;777V^Q777FQA1"1######r"   c                 b    t                      fdt          fd| j                   dS )z+ Test memory with a function with a lambda.c                 2                         d           | S z4 A helper function to define l as a lambda.
        r   rB   )r   r,   s    r    helperz"test_memory_lambda.<locals>.helper	       	1r"   c                      |           S rA   r   )r   r   s    r    <lambda>z$test_memory_lambda.<locals>.<lambda>  s    &&)) r"   N)rW   r0   rX   )r^   r,   r   s    @@r    test_memory_lambdar     sL    &&K     ++++[&.IIIIIr"   c                 d   t          | j        d          }|j        d             }|}|j        d             }|}t          t                    5 } |d            |d           ddd           n# 1 swxY w Y   t          |          dk    sJ dt          |d         j                  v sJ dS )z> Check that name collisions with functions will raise warningsr   r$   c                     | S )z0 A first function called name_collision
        r   r   s    r    name_collisionz2test_memory_name_collision.<locals>.name_collision  	     r"   c                     | S )z1 A second function called name_collision
        r   r   s    r    r   z2test_memory_name_collision.<locals>.name_collision  r   r"   r   N	collision)r   rX   r(   r   r   r*   strmessage)r^   r-   r   abwarninfos         r    test_memory_name_collisionr     s   V^Q777F\  \
 	A\  \
 	A	%	&	& (	!	!               x==A#hqk122222222s   A22A69A6c                 t   t          | j        d          }|                    d           }|                    d           }t          t                    5 } |d          dk    sJ  |d          dk    sJ  |d          dk    sJ 	 d d d            n# 1 swxY w Y   t          |          dk    sJ d S )Nr   r$   c                     | S rA   r   r   s    r    r   z7test_memory_warning_lambda_collisions.<locals>.<lambda>1  s    q r"   c                     | dz   S rM   r   r   s    r    r   z7test_memory_warning_lambda_collisions.<locals>.<lambda>2  s
    q1u r"   r   r   rs   )r   rX   r(   r   r   r*   )r^   r-   r   r   r   s        r    %test_memory_warning_lambda_collisionsr   .  s    V^Q777F[[!!A__%%A	%	&	& (qttqyyyyqttqyyyyqttqyyyyy               x==As   4BBBc                    t          | j        d          }t          d          }|                    |          }t          d          }|                    |          }t	          t
                    5 } |d            |d            |d           d d d            n# 1 swxY w Y   t          |          dk    sJ dt          |d         j                  	                                v sJ d S )Nr   r$   lambda x: xzlambda x: x+1r   r   zcannot detect)
r   rX   r\   r(   r   r   r*   r   r   lower)r^   r-   a1b1r   s        r    'test_memory_warning_collision_detectionr   >  s'    V^Q777F	m		B	b		B	o		B	b		B	%	&	& (
1
1
1              
 x==Ac(1+"566<<>>>>>>>>s   3"B!!B%(B%c                     t                      fd}ddl} |j        |d          }t          || j                   dS )z$ Test memory with functools.partial.c                 2                         d           |S r   rB   r   r   r,   s     r    r+   z!test_memory_partial.<locals>.funcT  r   r"   r   Nr   )rW   	functoolspartialr0   rX   )r^   r+   r   functionr,   s       @r    test_memory_partialr   P  sa    &&K      y q))H+v~>>>>>r"   c                     t          | j        d          }t          d          }|                    |          } |d          dk    sJ dS )zF Smoke test memory with a function with a function defined in an eval.r   r$   r   r   N)r   rX   r\   r(   )r^   r-   mmms       r    test_memory_evalr   `  sK    V^Q777F]A	aB2a55A::::::r"   c                 N    t          |           }|                     d           |S )zx A function with a side effect in its arguments.

        Return the length of its argument and append one element.
    N)r*   rC   )r   len_xs     r    count_and_appendr   j  s#    
 FFEHHTNNNLr"   c                     t          | j        d          }|                    t                    } |            dk    sJ  |            dk    sJ dS )zx Check that if a function has a side effect in its arguments, it
        should use the hash of changing arguments.
    r   r$   r   N)r   rX   r(   r   )r^   r-   r+   s      r    test_argument_changer   t  sX     V^Q777F<<())D 466Q;;;; 466Q;;;;;;r"   rS   rQ   c                   	 t                      	d	fd	}t          | j        |d          }|                    |          }t          j                            d          }t          d          D ]d}|                    d          }t          d          D ]=}t	          j	         ||          |k              sJ t          	          |dz   k    sJ >edS )	z/ Test memory with a function with numpy arrays.Nc                 2                         d           | S rM   rB   rN   s    r    nztest_memory_numpy.<locals>.n  rP   r"   r   r%   rS   r&   r'   )rR   rR   r   rA   )rW   r   rX   r(   r   randomRandomStater)   random_sampleallr*   )
r^   rS   r   r-   cached_nrndr.   r   r/   r,   s
            @r    test_memory_numpyr     s     &&K      V^y  F||AH
)


"
"C1XX - -h''q 	- 	-A6((1++*+++++{##q1u,,,,,	-- -r"   c                 |   t          | j        dd          }|                                d             }t          j        d          } ||          } ||          }t          |t          j                  sJ |j        dk    sJ t          |t          j                  sJ |j        dk    sJ ~~t          j	                     t          |           t          ||          } ||          }t          |          dk    sJ d}	|	|d         v sJ t          |t          j                  sJ |j        dk    sJ dS )	z8Check that mmap_mode is respected even at the first callrQ   r   r   c                     | dz  S Nr   r   r   s    r    twicez0test_memory_numpy_check_mmap_mode.<locals>.twice      1ur"   r'   r   Exception while loading resultsN)r   rX   r(   r   ones
isinstancememmaprg   gccollectr>   rJ   r*   )
r^   monkeypatchr-   r   r   r   crecorded_warningsdexception_msgs
             r    !test_memory_numpy_check_mmap_moder     sS    V^sAFFFF\\^^  ^ 	

AaAaAa#####6S====a#####6S==== 	
	JLLLf%%% 5UKHHaA !!Q&&&&5M-a00000a#####6S======r"   c                    t          | j        d          } G d dt                    |j        d	fd	            } |             t	          d          D ]4}t                    5   |d           ddd           n# 1 swxY w Y   5dS )
z1 Smoketest the exception handling of Memory.
    r   r$   c                       e Zd ZdS )*test_memory_exception.<locals>.MyExceptionN__name__r]   __qualname__r   r"   r    MyExceptionr             r"   r   c                     | rd S rA   r   )excr   s    r    hz test_memory_exception.<locals>.h  s     		 	r"   r'   r   N)r   )r   rX   	Exceptionr(   r)   r   )r^   r-   r   r/   r   s       @r    test_memory_exceptionr     s    V^Q777F    i    \     \
 ACCC1XX  K   	 	AaDDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   (B  B	B	c                 ~   t          | j        d          }t                      |                    dg          d
fd	            }|j        dgk    sJ  |dd           t                    dk    sJ  |dd           t                    dk    sJ  |dd           t                    dk    sJ d	S )z# Test the ignore feature of memory r   r$   r   ignorer   c                 2                         d           d S rM   rB   r   s     r    zztest_memory_ignore.<locals>.z  s    1r"   r   r   Nr   r   rX   rW   r(   r   r*   )r^   r-   r   r,   s      @r    test_memory_ignorer     s    V^Q777F&&K\\#\       8uAa1IIII{q    Aa1IIII{q    Aa1IIII{q      r"   c                    t          | j        d          }t                      d }|                    dg          |dfd	                        }|j        dgk    sJ  |dd           t                    dk    sJ  |dd           t                    dk    sJ  |dd	           t                    dk    sJ d
S )z; Test the ignore feature of memory on a decorated function r   r$   c                 F     t          j                    fd            }|S )Nc                       | i |S rA   r   )argskwargsr!   s     r    wrappedz?test_memory_ignore_decorated.<locals>.decorate.<locals>.wrapped  s    1d%f%%%r"   )r   wraps)r!   r   s   ` r    decoratez.test_memory_ignore_decorated.<locals>.decorate  s6    				& 	& 	& 	& 
		&r"   r   r   r   c                 2                         d           d S rM   rB   r   s     r    r   z'test_memory_ignore_decorated.<locals>.z  s     	1r"   r   r   Nr   r   )r^   r-   r   r   r,   s       @r    test_memory_ignore_decoratedr     s   V^Q777F&&K   \\#\     X   8uAa1IIII{q    Aa1IIII{q    Aa1IIII{q      r"   c                     t          | j        d          }|j        d             } |d          dk    sJ  |d          dk    sJ  |d          dk    sJ dS )	z_Non-regression test against 0.12.0 changes.

    https://github.com/joblib/joblib/pull/751
    r   r$   c                     | dz   S rM   r   r   s    r    plus_onez,test_memory_args_as_kwargs.<locals>.plus_one
  r   r"   r   r   r   r'   N)r   rX   r(   )r^   r-   r   s      r    test_memory_args_as_kwargsr     s    
 V^Q777F\  \ 8A;;!8a===A 8a===Ar"   zignore, verbose, mmap_moder   d   rR   c                     t          | j        d          }|                    |||          d             }|j        |k    sJ |j        |k    sJ |j        |k    sJ dS )z7Check cache may be called with kwargs before decoratingr   r$   )r   r&   rS   c                     d S rA   r   r   s    r    r   z"test_partial_decoration.<locals>.z  s    r"   N)r   rX   r(   r   _verboserS   )r^   r   r&   rS   r-   r   s         r    test_partial_decorationr    s     V^Q777F\\I\FF  GF 8v:    ;)######r"   c                    t          | j        d          }t                              d          }|                    d            | j        dg|R  j        }|                    t                    }t          t                    }t          j
                            |j        j        |          }||k    sJ t          j
                            |          sJ |j        t          j
                            |j        j                  k    sJ t          j                     |                                rJ t          j
                            t          j
                            |d                    sJ |                                sJ |                    d          }t          j
                            |j        j        |j        |          } |d          }t          j
                            |          sJ t          j        t          j
                            |d                     | |d          k    sJ d S )	Nr   r$   .r!   rh   zfunc_code.pyr   r2   )r   rX   r   splitrC   r9   r(   r!   r   r7   r8   r5   r%   existsdirnamer	   r[   _check_previous_func_code_get_args_idfunc_idremove)	r^   r-   r8   r_   r  r%   args_id
output_dirr   s	            r    test_func_dirr  &  s   V^Q777F>>#DKK6;x'$'''/DQA$Q''Gw||AO4g>>Ht7>>$?bgooao.FGGGGGG
 **,,,,,7>>"',,t^<<=====&&((((( nnQGao6	7KKJ	!A7>>*%%%%%Ibgll:|44555!999999r"   c                 j   t          | j        d          }|                    t                    } |d          }t	          j        t	          j        |                    }|                    d          }t          j	        
                    |j        j        |j        |          }t          j	                            |          sJ ||j                            |j        |g          k    sJ t	          j        t	          j        |                    }|j        j        |j        j        k    sJ t          d d          }t	          j        t	          j        |                     |                    t                    }t	          j        t	          j        |                    } |d           d S )Nr   r$   r   )r   rX   r(   r!   pickleloadsdumpsr
  r7   r8   r9   r5   r%   r  r  	load_item)	r^   r-   r_   outputr   r  r  memory2gps	            r    test_persistencer  F  sU   V^Q777FQAQqTTFV\!__%%AnnQGao6	7KKJ7>>*%%%%%Q_..	7/CDDDDDDl6<//00G(G,A,JJJJJ T1---F
Lf%%&&&QA	fl1oo	&	&BBqEEEEEr"   c                    t          t          | j                  t          | j        d                              t                    fD ]}|                    d          }|rJ t          |t                    sJ  |d          dk    sJ |                    d          }|sJ t          |t                    sJ |                                 d S )Nr   r$   r      )	r   r!   rX   r   r(   check_call_in_cacher   boolr[   )r^   r+   results      r    test_check_call_in_cacher  ]  s    q&.11;;;AA!DDF 	 	))!,,&$'''''tAww!||||))!,,&$'''''

	 	r"   c                    t          t          t          | j                  t	          t                    t          | j        d                              t                    t          d                               t                    ft          t          t          t          f          D ]\  }} |d          dk    sJ |	                    d          }t          ||          sJ |                                dk    sJ |                                 t          t                    5  |                                 d d d            n# 1 swxY w Y   |                                 d S )Nr   r$   r%   r   r  )zipr   r!   rX   r   r   r(   r   r   call_and_shelver   getr[   r   KeyError)r^   r+   Resultr  s       r    test_call_and_shelver&  j  s    ]1fn==-a00#V^,-/ / //4uQxx#T22288;;	 -.@,.@BC C  f tAww!||||%%a((&&)))))zz||q    H 	 	JJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	! s   (E		E	E	c                    t          | j        d                              t                    }|                    d          }t          |t                    sJ t          t                    5 }|j	        |j
        k    sJ 	 d d d            n# 1 swxY w Y   t          |          dk    sJ dt          |d         j                  v sJ d S )Nr   r$   r   r   z1The 'argument_hash' attribute has been deprecated)r   rX   r(   r!   r"  r   r   r   DeprecationWarningargument_hashr  r*   r   r   )r^   r+   r  r3   s       r    "test_call_and_shelve_argument_hashr+    s    6>1555;;A>>D!!!$$Ffo.....	!	"	" 6a#v~555556 6 6 6 6 6 6 6 6 6 6 6 6 6 6q66Q;;;;>qu}     s   /BBBc                    |                      d          }|                    d           t          j        |j                  j        }t          j        d           |                                dk    sJ |t          j        |j                  j        k    rt          j
        d           t          | j        d          }|                    t                    }|                    d          }t          j                             |j        j        |j        |d          } |d          dk    sJ t          j        |          j        }t          j        d	           |                    d          }t)          |t*                    sJ t          j        |          j        |k    sJ t          j        d	           |                                dk    sJ t          j        |          j        |k    sJ d
S )z6Check call_and_shelve only load stored data if needed.test_access      ?z>filesystem does not support fine-grained access time attributer   r$   r   r2   r  r   N)r9   r;   r7   statrX   st_atimetimesleepreadpytestskipr   r(   r!   r
  r8   r5   r%   r  r"  r   r   r#  )	r^   test_access_time_filetest_access_timer-   r+   r  result_pathfirst_access_timer  s	            r    .test_call_and_shelve_lazily_load_stored_resultr:    s   "KK66...w4<==F 	JsOOO %%''=888827#8#@AAJJJ 	   	! 	! 	! V^Q777F<<??D""G',,v3<#|WlD DK477a<<<<,,5JqMMM !!!$$Ffo.....7;(,=====JqMMM ::<<17;(+<<<<<<<r"   c                 8   t          t          | j                  t          t                    fD ]}|                     d          j        }|                    d          }t          |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   |
                                |
                                k    sJ t          j        |           d S )Nzpickling_test.datr   wbrb)r   r!   rX   r   r9   r"  r:   r  dumploadr#  r7   r  )r^   r+   rf   r  fpresult2s         r    test_memorized_picklingrB    st   q&.113CA3F3FG  ;;233;%%a(((D!! 	$RK###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$(D!! 	&Rk"ooG	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&{{}}

,,,,
	( s$   0BB	B	-CC	C	c                 X   t          t          | j                  }|                    d          }t          t          | j                  }|                    d          }|                                |                                k    sJ t          |          t          |          k    sJ t          t                    }t          |           t          |                    d                     t          t          | j        dt          j                              }|                    d          }|                                 t          t          | j        d          }|                    d          }|                                 t          t          | j        dt          j                              }|                    d          }|                                 t          t          | j        d          }|                    d          }|                                 d S )Nr      )r&   	timestamp)r&   r  )r   r!   rX   r"  r#  reprr   r1  )r^   r+   r  func2rA  s        r    test_memorized_reprrH    s   FN++D!!!$$F!V^,,E##A&&G::<<7;;==((((::e$$$$ ADJJJ		a	 	 !!! FNB$)++NNND!!"%%F
JJLLLFNB777D!!"%%F
JJLLLFNAMMMD!!"%%F
JJLLLFNA666D!!"%%F
JJLLLLLr"   c                    |                     d          j        }t          j                            |d          }d}t          |d          5 }|                    |           d d d            n# 1 swxY w Y   |                    |           dd l}t          |j        d          }|
                    |j                  }	 |	d            |	d            |	d           t          |d          5 }|                    d	|z              d d d            n# 1 swxY w Y    |	d            |	d           t          j        |           t          j         |           d
}t          |d          5 }|                    |           d d d            n# 1 swxY w Y    |	d            |	d           t          j                            d           t          j                            d           dd l}|
                    |j                  }	 |	d            |	d           |                                 \  }
}|
dk    sJ d S )N
tmp_importztmp_joblib_.pyz$def f(x):
    print(x)
    return x
r3   r   r$   r   r   z

z-def f(x):
    print("x=%s" % x)
    return x
z
Reloading
tmp_joblib_z1
2
Reloading
x=1
)mkdirrX   r7   r8   r9   r:   r;   syspath_prependrK  r   r(   r!   rY   rZ   sysstdoutmodulespop
readouterr)capsysr^   r   dir_namerf   contentmodule_filetmpr-   r!   ra   errs               r    test_memory_file_modificationrY    s    ||L))1Hw||H&677H7G	h		 #'"""# # # # # # # # # # # # # # # )))V^Q777FSUAAaDDDAaDDDAaDDD 
h		 ,&7*+++, , , , , , , , , , , , , , , AaDDDAaDDD M(HX@G	h		 #'"""# # # # # # # # # # # # # # # AaDDDAaDDD J]###KOOM"""SUA AaDDDAaDDD  ""HC*******s6   A//A36A34DD D4FFFc                     d S rA   r   r   r   s     r    _function_to_cacher\    s    Dr"   c                     | |z   S rA   r   r[  s     r    _sumr^        q5Lr"   c                     | |z  S rA   r   r[  s     r    _productra    r_  r"   c                    t           j        t          _        t          | j        d          }|                    t                    } |dd          dk    sJ  |dd          dk    sJ t          t                    5  t          j        t          _         |dd          dk    sJ  |dd          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r$   r   r   r'   )	r^  ry   r\  r   rX   r(   r   r   ra  )r^   r-   r!   s      r    *test_memory_in_memory_function_code_changerc  "  s   "&-V^Q777F'((A1Q77a<<<<1Q77a<<<<	%	&	&  &.&7#qAww!||||qAww!|||||	                 s   ?;CCCc                  N    t          d           } |                                  d S )Nr   )r   r[   )r-   s    r    $test_clear_memory_with_none_locationre  2  s#    T"""F
LLNNNNNr"   kw1kw2rf  rg  c                    | |||fS rA   r   )r   r   rf  rg  s       r    func_with_kwonly_argsrj  7  s    ac>r"   r   r   returnc                     | |z   S rA   r   r[  s     r    func_with_signaturerm  ;  r_  r"   c                 z   t          | j        d          }|                    t                    } |ddd          dk    sJ t	          t
                    5 } |dddd	           d d d            n# 1 swxY w Y   |                    d
            |dddd           t	          t
                    5 } |dddd	           d d d            n# 1 swxY w Y   |                    d
           |                    t          dg          } |dddd          dk    sJ  |dddd          dk    sJ d S )Nr   r$   r   r   r'   )rf  )r   r   r'   rg  rs   )rg  z?Keyword-only parameter 'kw1' was passed as positional parameterrh  rg  r   )r   r   r'   rs   ignored)r   rX   r(   rj  r   
ValueErrormatch)r^   r-   func_cachedexcinfos       r    !test_memory_func_with_kwonly_argsrt  ?  s   V^Q777F,,455K;q!###'77777 

		 $wAq!####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $MM    
 K1!####	
		 $wAq!####$ $ $ $ $ $ $ $ $ $ $ $ $ $ $MM     ,,4eW,EEK;q!***l::::;q!	222lBBBBBBs$   A55A9<A98CCCc                     t          | j        d          }|                    t                    } |dd          dk    sJ d S )Nr   r$   r   g       @g      @)r   rX   r(   rm  )r^   r-   rr  s      r    test_memory_func_with_signaturerv  [  sK    V^Q777F,,233K;q"######r"   c                 &   t          | j        d          }|                                d             t          t	          |                    }|D ]} |           t                    fd|D             }fd|D             }||fS )Nr   r$   c                     dS )N  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   rO   s    r    get_1000_bytesz(_setup_toy_cache.<locals>.get_1000_bytese  s    zr"   c                 :    g | ]}                     |          S r   )r
  )rn   rO   r{  s     r    
<listcomp>z$_setup_toy_cache.<locals>.<listcomp>n  s7     ( ( ( $0055 ( ( (r"   c                 f    g | ]-}t           j                            j        j        |          .S r   )r7   r8   r9   r5   r%   )rn   r  r  r{  s     r    r}  z$_setup_toy_cache.<locals>.<listcomp>q  sF     3 3 3  W\\.">"G")74 4 3 3 3r"   )r   rX   r(   rW   r)   r   )	r^   
num_inputsr-   inputsrO   hash_dirnamesfull_hashdirsr  r{  s	          @@r    _setup_toy_cacher  b  s    V^Q777F\\^^  ^ %
##$$F  s$^44G( ( ( ( &( ( (M3 3 3 3 3$13 3 3M =.00r"   c                 ^   t          |           \  }}}|j                                        }d |D             }t          |          t          |          k    sJ d fd|D             }d |D             }||k    sJ d |D             }d |D             }	d |D             }
|
|	k    sJ d S )Nc                     g | ]	}|j         
S r   )r8   rn   cis     r    r}  z#test__get_items.<locals>.<listcomp>z  s    )))R)))r"   c                 v      fdt          j                   D             }t          d |D                       S )Nc                 P    g | ]"}t           j                            |          #S r   r7   r8   r9   )rn   fn	directorys     r    r}  z;test__get_items.<locals>.get_files_size.<locals>.<listcomp>~  s9     7 7 7 gll9b11 7 7 7r"   c              3   T   K   | ]#}t           j                            |          V  $d S rA   )r7   r8   getsize)rn   r@  s     r    rp   z:test__get_items.<locals>.get_files_size.<locals>.<genexpr>  s0      <<227??2&&<<<<<<r"   )r7   r{   sum)r  
full_pathss   ` r    get_files_sizez'test__get_items.<locals>.get_files_size}  sR    7 7 7 7 "
9 5 57 7 7
<<<<<<<<r"   c                 &    g | ]} |          S r   r   )rn   hash_dirr  s     r    r}  z#test__get_items.<locals>.<listcomp>  s3     !< !< !<%- "0!9!9 !< !< !<r"   c                     g | ]	}|j         
S r   )sizer  s     r    r}  z#test__get_items.<locals>.<listcomp>  s    000B000r"   c                 N    g | ]"}t           j                            |d           #S )r2   r  )rn   r  s     r    r}  z#test__get_items.<locals>.<listcomp>  s8     3 3 3$ X|<< 3 3 3r"   c                     g | ]>}t           j                             t          j                            |                    ?S r   )datetimefromtimestampr7   r8   getatime)rn   r  s     r    r}  z#test__get_items.<locals>.<listcomp>  sI     $ $ $ 	''(8(8(<(<==$ $ $r"   c                     g | ]	}|j         
S r   last_accessr  s     r    r}  z#test__get_items.<locals>.<listcomp>  s    444R^444r"   )r  r5   r6   set)r^   r-   expected_hash_dirsr/   items	hash_dirsexpected_hash_cache_sizeshash_cache_sizesoutput_filenamesexpected_last_accesseslast_accessesr  s              @r    test__get_itemsr  w  s(   $4V$<$<!F **,,E))5)))Iy>>S!3444444= = =
!< !< !< !<1:!< !< !<00%000888883 3(13 3 3$ $"$ $ $ 54e444M2222222r"   c                    t          | d          \  }}}|j                            d          }|g k    sJ t          |           \  }}}|j                                        }|j                            d          }t	          |          }t
                              t          |          t          |                    sJ t	          |          |dz
  k    sJ |j                            d          }t          |          t          |          k    sJ |j                            d          }|g k    sJ d}	|j                            |	          }
t          |
          sJ t          |                      |j                            d	          }t          |                              |          }t          d
 |D                       t          d |D                       k    sJ d S )Nr   )r  1K2Kr   i   1M  ip  c              3   $   K   | ]}|j         V  d S rA   r  r  s     r    rp   z,test__get_items_to_delete.<locals>.<genexpr>  s$      ??2??????r"   c              3   $   K   | ]}|j         V  d S rA   r  r  s     r    rp   z,test__get_items_to_delete.<locals>.<genexpr>  s$      992999999r"   )r  r5   _get_items_to_deleter6   r*   r  issubsetsorted
differencemaxmin)r^   r-   r/   items_to_deleteexpected_hash_cachedirsr  	nb_hashesitems_to_delete_2048bitems_to_delete_emptybytes_limit_too_smallitems_to_delete_500bitems_to_delete_6000bsurviving_itemss                r    test__get_items_to_deleter    s	   #Fq999LFAq*??EEOb    )9&)A)A&F#Q **,,E *??EEO+,,I<<O,,c%jj999999q=0000 #0EEdKK/""f-B&C&CCCCC #0EEdKK B&&&&  !/DD  #$$00c%jj000 #0EEdKK%jj++,ABBO??)>?????9999999: : : : : :r"   c                    t          |           \  }}}|j                                        }|                                 |j                                        }t	          |          t	          |          k    sJ |                    d           |j                                        }t	          |          t	          |          k    sJ |                    d           |j                                        }t
                              t          |          t          |                    sJ t          |          dk    sJ d}|                    |           |j                                        }|g k    sJ d S )Nr  )bytes_limit3Kr   r  r  r5   r6   reduce_sizer  r  r  r*   )r^   r-   r/   ref_cache_itemscache_itemsr  s         r    #test_memory_reduce_size_bytes_limitr    s{   #F++LFAq*4466O &0022K/""f[&9&99999 4(((&0022K/""f[&9&99999 4(((&0022K<<K((#o*>*>?????{q      
#8999&0022K"r"   c                    t          |           \  }}}|j                                        }|                                 |j                                        }t	          |          t	          |          k    sJ |                    d           |j                                        }t	          |          t	          |          k    sJ |                    d           |j                                        }t
                              t          |          t          |                    sJ t          |          dk    sJ |                    d           |j                                        }|g k    sJ d S )NrR   )items_limitr   r   r  )r^   r-   r/   r  r  s        r    #test_memory_reduce_size_items_limitr    st   #F++LFAq*4466O &0022K/""f[&9&99999 2&&&&0022K/""f[&9&99999 1%%%&0022K<<K((#o*>*>?????{q     1%%%&0022K"r"   c                    dd l }dd l}t          |           \  }}}|j                                        }|                                 |j                                        }t          |          t          |          k    sJ |                     |j        d                     |j                                        }t          |          t          |          k    sJ  |j        d            |d            |d           |                     |j        d                     |j                                        }t          
                    t          |          t          |                    rJ t          |          dk    sJ |                     |j        d                     |j                                        }|g k    sJ d S )	Nr   r   )days)	age_limitr(  secondsr   )r1  r  r  r5   r6   r  r  	timedeltar2  r  r  r*   )r^   r1  r  r-   r/   	put_cacher  r  s           r    !test_memory_reduce_size_age_limitr    s   KKKOOO+F33FAy*4466O &0022K/""f[&9&99999 !3!3!;!;!;<<<&0022K/""f[&9&99999 DJqMMMIbMMMIbMMM
!3!3A!>!>!>???&0022K||C,,c/.B.BCCCCC{q     !3!3A!>!>!>???&0022K"r"   c                     t          |           \  }}}|                                 t          j        |j        j                  g k    sJ |                    d          rJ d S )Nrs   )
stacklevel)r  r[   r7   r{   r5   r%   r	  )r^   r-   r/   r_   s       r    test_memory_clearr    sh    #F++LFAq
LLNNN:f*344:::: **a*8888888r"   c                      dgdz  } | S )Nry  i  r   )complex_objs    r    fast_func_with_complex_outputr    s    ,%Kr"   c                 Z    d t          t          d                    D             }| r|ndS )Nc                 .    i | ]}t          |          |S r   )r   )rn   r.   s     r    
<dictcomp>z=fast_func_with_conditional_complex_output.<locals>.<dictcomp>  s     6663q661666r"   g     j@zsimple output)r)   int)complex_outputr  s     r    )fast_func_with_conditional_complex_outputr    s0    66eCHHoo666K(=;;o=r"   c                    t          | j                  }|                    t                     t	          d          fdt          d          D                        |                                \  }}d}||vsJ ||vsJ d S )Nr   r   ri   c              3   F   K   | ]} t                                V  d S rA   rl   rn   r.   rr  s     r    rp   zMtest_cached_function_race_condition_when_persisting_output.<locals>.<genexpr>*  s4      @@!+w{++--@@@@@@r"   r'   r   )r   rX   r(   r  r   r)   rR  r^   capfdr-   rO  stderrr   rr  s         @r    :test_cached_function_race_condition_when_persisting_outputr  "  s    
 V^,,,F,,<==KHA@@@@uQxx@@@@@@%%''NFF
 6M&&&&&&&&&&r"   c                    t          | j                  }|                    t                     t	          d          fdt          d          D                        |                                \  }}d}||vsJ ||vsJ d S )Nr   r   ri   c              3   ^   K   | ]'} t                    |d z  dk    rdnd          V  (dS )r   r   TFNrl   r  s     r    rp   zOtest_cached_function_race_condition_when_persisting_output_2.<locals>.<genexpr>A  sY       * * ,w{++AEQJJDDEJJ * * * * * *r"   r'   r   )r   rX   r(   r  r   r)   rR  r  s         @r    <test_cached_function_race_condition_when_persisting_output_2r  6  s     V^,,,F,,HIIKHA * * * * %a* * * * * * %%''NFF
 6M&&&&&&&&&&r"   c                 @   t          | j                  }d }|                    |          }d} ||          \  }}||k    sJ t          |           t	          ||          } ||          \  }	}
t          |          dk    sJ d}||d         v sJ |	|k    sJ |
|k    sJ t          |           |                    |          }	 |                                 t          d          # t          $ r%}d}|t          |j                  v sJ Y d }~d S d }~ww xY w)	Nr   c                 T    t          j        d           | t          j                     fS )Ng{Gz?r1  r2  rz  s    r    r+   zItest_memory_recomputes_after_an_error_while_loading_results.<locals>.funcR  s%     	
4DIKKr"   rO   r   r   r   z<It normally not possible to load a corrupted MemorizedResultzis corrupted)r   rX   r(   r>   rJ   r*   r"  r#  AssertionErrorr$  r   r   )r^   r   r-   r+   cached_func	input_argrO   rE  r   recomputed_argrecomputed_timestampr   	referenceer   s                  r    ;test_memory_recomputes_after_an_error_while_loading_resultsr  N  s   V^,,,F      ,,t$$KI [++NC ) f%%% 5[+NN+6;s+;+;(N( !!Q&&&&5M-a00000S    )++++ f%%%++C00I&
 
 	
  & & & #af++%%%%%%%%%%&s   #C. .
D8DDc                       e Zd ZdZdS )IncompleteStoreBackendzAThis backend cannot be instantiated and should raise a TypeError.N)r   r]   r   __doc__r   r"   r    r  r  }  s        KKDr"   r  c                   B    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )DummyStoreBackendz(A dummy store backend that does nothing.c                     dS )zOpen an item on store.Nr   )selfr   r   s      r    
_open_itemzDummyStoreBackend._open_item      r"   c                     dS )z!Check if an item location exists.Nr   r  r%   s     r    _item_existszDummyStoreBackend._item_exists  r  r"   c                     dS )z&Move an item from src to dst in store.Nr   )r  srcdsts      r    
_move_itemzDummyStoreBackend._move_item  r  r"   c                     dS )zCreate location on store.Nr   r  s     r    create_locationz!DummyStoreBackend.create_location  r  r"   c                     dS )z&Check if an object exists in the storeFr   r  objs     r    r  zDummyStoreBackend.exists  s    ur"   c                     dS )zClear object on storeNr   r  s     r    clear_locationz DummyStoreBackend.clear_location  r  r"   c                     g S )z3Returns the whole list of items available in cache.r   )r  s    r    r6   zDummyStoreBackend.get_items  s    	r"   c                     dS )zConfigure the storeNr   )r  r%   r   r   s       r    	configurezDummyStoreBackend.configure  r  r"   N)r   r]   r   r  r  r  r  r  r  r
  r6   r  r   r"   r    r  r    s        22                  r"   r  invalid_prefixc                     t          t                    5 }t          | d            d d d            n# 1 swxY w Y   |                    d           d S )Nz&Store backend name should be a string*r   rp  r
   rq  )r  rs  s     r    (test_register_invalid_store_backends_keyr    s     

		 5w~t4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5MM;<<<<<   266c                      t          t                    5 } t          dd            d d d            n# 1 swxY w Y   |                     d           d S )Nfsz.Store backend should inherit StoreBackendBase*r  rs  s    r    +test_register_invalid_store_backends_objectr    s     

		 +wtT***+ + + + + + + + + + + + + + +MMCDDDDDr  c                      t          t                    5 } t          dd           d d d            n# 1 swxY w Y   |                     d           d S )Nz/tmp/joblibunknown)r%   backendzUnknown location*)r   	TypeErrorr   rq  r  s    r    !test_memory_default_store_backendr    s    				 :gy9999: : : : : : : : : : : : : : :MM&'''''s   377c                       G d d          }  |             }t          t                    5 }t          d|           d d d            n# 1 swxY w Y   d}|t          |d         j                  v sJ d S )Nc                       e Zd ZdS )Htest_warning_on_unknown_location_type.<locals>.NonSupportedLocationClassNr   r   r"   r    NonSupportedLocationClassr    r   r"   r  localr   zbInstantiating a backend using a NonSupportedLocationClass as a location is not supported by joblibr   )r   UserWarningr   r   r   )r  unsupported_locationr   expected_mesages       r    %test_warning_on_unknown_location_typer$    s           4466	{		 Gxw1EFFFFG G G G G G G G G G G G G G G-O c(1+"566666666s   A

AAc                     d} t          | t                     | t          ft          j                    v sJ t	          t
                    5 }t          | d           d d d            n# 1 swxY w Y   |                    d           d S )Nisbfake_locationznCan't instantiate abstract class IncompleteStoreBackend (without an implementation for|with) abstract methods*)r
   r  r   r  r   r  r   rq  )backend_namers  s     r    )test_instanciate_incomplete_store_backendr)    s     L<)?@@@01_5J5L5LLLLL				 >g|_===> > > > > > > > > > > > > > >MM K L L L L Ls   
A''A+.A+c                      d} t          | t                     | t          ft          j                    v sJ t	          | d          }t          |t                    sJ d S )Ndsbdummy_location)r
   r  r   r  r   r   )r(  backend_objs     r    test_dummy_store_backendr.    sg     L<):;;;+,0E0G0GGGGG(7GHHKk#45555555r"   c                  h    t          j        d          } t          d|           }|j        dk    sJ d S )Nsome_folderr   )pathlibPathr   r%   )r8   r-  s     r    0test_instanciate_store_backend_with_pathlib_pathr3    s:    <&&D($77K=000000r"   c                 V   d}t                      }|j        J t          |           t          |          |                    d           k    sJ |                    | j                   t          |          |                    | j                  k    sJ t          |           d S )Nz-FileSystemStoreBackend(location="{location}")r   )r   r%   rF  r   rt   r  rX   )r^   repr_patternr  s      r    "test_filesystem_store_backend_reprr6    s     CL$&&G###MMMw<<<...====== fn%%%w<<<...GGGGGGMMMMMr"   c                    d }t          | j        d          }|                    |          }d}t          |          |                    ||j        j                  k    sJ |                    dd          }d}t          |          |                    |j        j        |j        |j	                  k    sJ t          |          d	                    |j        j        
          k    sJ d S )Nc                     | |z   S rA   r   r[  s     r    my_funcz)test_memory_objects_repr.<locals>.my_func   s    1ur"   r   r$   z/MemorizedFunc(func={func}, location={location}))r+   r%   *   zJMemorizedResult(location="{location}", func="{func}", args_id="{args_id}"))r%   r+   r  zMemory(location={location})r   )
r   rX   r(   r   rt   r5   r%   r"  r  r  )r^   r9  r-   memorized_funcmemorized_func_reprmemorized_resultmemorized_result_reprs          r    test_memory_objects_reprr?    s<      V^Q777F\\'**NK~"5"<"<%. #= #0 #0 0 0 0 0 &55b"==C   $9$@$@%.% ( %A %* %* * * * *
 v;;7>>%. ? 0 0 0 0 0 0 0 0r"   c                    t          | j                  }|j        d             }|                    d          }t	          j        |          }t	          j        |          }|j        j        |j        j        k    sJ |j	        |j	        k    sJ |j
        |j
        k    sJ t          |          t          |          k    sJ d S )Nr   c                     | dz  S r   r   r   s    r    r_   z'test_memorized_result_pickle.<locals>.g!  s    !tr"   rs   )r   rX   r(   r"  r  r  r  r5   r%   r+   r  r   )r^   r-   r_   r=  memorized_result_picklememorized_result_loadss         r    test_memorized_result_picklerD    s    
 V^,,,F\  \ ((++$l+;<<#\*ABB)2,56 6 6 6 $:$?????#'='EEEEE  C(>$?$???????r"   c                 6   |g }t          |           }t          |          }t          |                                          t          |                                          k    sJ |                                D ]}||v r||         ||         k    sJ d S rA   )varsr  keys)leftrightignored_attrs	left_vars
right_varsattrs         r    comparerN  0  s    T

IeJy~~  C
(9(9$:$:::::   3 3=  *T"2222223 3r"   memory_kwargsr'   r   )rT   r&   r  	parameterunused)rS   r&   backend_optionsc                    t          dd| j        i|}t          j        t          j        |                    }t          |j        |j                   t          ||t          g d                     t          |          t          |          k    sJ |	                    t                    }t          j        t          j        |                    }t          |j        |j                   t          ||t          g d                     t          |          t          |          k    sJ |                    d          }t          j        t          j        |                    }t          |j        |j                   t          ||t          g d                     t          |          t          |          k    sJ d S )Nr%   )r5   rE  _func_code_id)rJ  r   r   )r   rX   r  r  r  rN  r5   r  r   r(   r!   r"  )r^   rO  r-   memory_reloadedrr  func_cached_reloadedr=  memorized_result_reloadeds           r    test_memory_pickle_dump_loadrX  =  s   
 ==V^=}==Fl6<#7#788O F /"?@@@FOMMMNNP P P P<<4000000,,q//K!<[(A(ABB K%';'IJJJK-MMMNNP P P P%9 : ::::: #22155 &V\:J-K-K L L*%35 5 57MMMNNP P P P !!T*C%D%DDDDDDDr"   c                    |                     t          j                   d}t          | j        d          }|j        d             } ||          }d|j        v sJ |                                 t          | j        d          }|j        d             } ||          }d|j        vsJ |                                 d S )Nr'      r$   c                     | dz  S r   r   r   s    r    r!   ztest_info_log.<locals>.fg      Avr"   Queryingr   c                     | dz  S r   r   r   s    r    r!   ztest_info_log.<locals>.fq  r\  r"   )	set_levelloggingINFOr   rX   r(   textr[   )r^   caplogr   r-   r!   r/   s         r    test_info_logrd  a  s    
W\"""	AV^R888F\  \ 	
!A$$$$
LLNNNV^Q777F\  \ 	
!AV[((((
LLNNNNNr"   c                     ddl m} |dk    rt          d          t          j        t          d          5  t          | j        d          }d d d            d S # 1 swxY w Y   d S )	Nr   )__version__z1.5z6Bytes limit is deprecated and should be removed by 1.4r  rq  r  )r%   r  )rh   rf  r)  r4  r   r   rX   )r^   rf  r/   s      r    test_deprecated_bytes_limitrh  z  s    """"""e D
 
 	
 
(	>	>	> > >FN===> > > > > > > > > > > > > > > > > >s   AA"Ac                   x    e Zd ZdZddZd Zej                            dddg          d             Z	d	 Z
d
 ZdS )TestCacheValidationCallbackz.Tests on parameter `cache_validation_callback`Nc                 B    d|d<   |t          j        |           |dz  S )NTrunr   r  )r  r   r   delays       r    foozTestCacheValidationCallback.foo  s*    %Ju1ur"   c                     d}t          j        t          |          5  |                    d           ddd           dS # 1 swxY w Y   dS )z2Test invalid values for `cache_validation_callbackz9cache_validation_callback needs to be callable. Got True.rg  T)cache_validation_callbackN)r4  r   rp  r(   )r  r-   rq  s      r    &test_invalid_cache_validation_callbackzBTestCacheValidationCallback.test_invalid_cache_validation_callback  s    K]:U333 	9 	9LL4L888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   AA	Aconsider_cache_validTFc                     |                     | j        fddg          }ddiddi}} |d|          dk    sJ  |d|          dk    sJ |d         sJ |d         k    sJ dS )	zTest expiry of old resultsc                     S rA   r   )r/   rr  s    r    r   zUTestCacheValidationCallback.test_constant_cache_validation_callback.<locals>.<lambda>  s    :N r"   r   rp  r   rl  Fr   rs   Nr(   rn  )r  r-   rr  r!   d1d2s     `   r    'test_constant_cache_validation_callbackzCTestCacheValidationCallback.test_constant_cache_validation_callback  s    
 LLH0N0N0N0N5  
 

 %BqBxx1}}}}qBxx1}}}}%y%y0000000r"   c                 X   d }|                     | j        |dg          }ddiddi}} |d|d          d	k    sJ  |d|d          d	k    sJ |d         sJ |d         sJ ddiddi}} |d|d
          d	k    sJ  |d|d
          d	k    sJ |d         sJ |d         rJ dS )z*Test cache validity based on run duration.c                 &    | d         }|dk    rdS d S )Ndurationg?Tr   )metadatar|  s     r    rp  z^TestCacheValidationCallback.test_memory_only_cache_long_run.<locals>.cache_validation_callback  s!    
+H#~~t ~r"   r   ru  rl  Fr   r   )rm  rs   g?Nrv  )r  r-   rp  r!   rw  rx  s         r    test_memory_only_cache_long_runz;TestCacheValidationCallback.test_memory_only_cache_long_run  s,   	 	 	
 LLH0I5  
 
 %BqBa   A%%%%qBa   A%%%%%y%y %BqBc"""a''''qBc"""a''''%ye9r"   c                 F   |                     | j        t          d          dg          }ddiddiddi}}} |d|          dk    sJ  |d|          dk    sJ t          j        d	            |d|          dk    sJ |d         sJ |d         rJ |d         sJ d
S )z!Test expiry of old cached resultsg333333?r  r   ru  rl  Fr   rs   r.  N)r(   rn  r   r1  r2  )r  r-   r!   rw  rx  d3s         r    test_memory_expires_afterz5TestCacheValidationCallback.test_memory_expires_after  s     LLHb0I0I0I5  
 

 U^eU^eU^BqBxx1}}}}qBxx1}}}}
2qBxx1}}}}%ye9%yr"   rA   )r   r]   r   r  rn  rq  r4  markr   ry  r~  r  r   r"   r    rj  rj    s        44   9 9 9 [3dE]CC1 1 DC1   6    r"   rj  c                   4    e Zd ZdZed             Zd Zd ZdS )TestMemorizedFuncz8Tests for the MemorizedFunc and NotMemorizedFunc classesc                 J    |                     | d          dz   || <   ||          S )Nr   r   )r#  )r   counters     r    r!   zTestMemorizedFunc.f  s(    [[A&&*
qzr"   c                    |                     | j        dg          }i } |d|          dk    sJ  |d|          dk    sJ |                    d|          \  }}|dk    s
J d            t          |t                    s
J d            dS )Test calling the functionr  r   r   r   f has not been called properly0Metadata are not returned by MemorizedFunc.call.N)r(   r!   callr   dictr  r-   r!   r  r   metas         r    test_call_method_memorizedz,TestMemorizedFunc.test_call_method_memorized  s     LLL44qG}}!!!!qG}}!!!!&&G$$4Avvv7vvv$%% 	
 	
>	
 	
 	
 	
 	
r"   c                 
   t          | j                  }i } |d|          dk    sJ  |d|          dk    sJ |                    d|          \  }}|dk    s
J d            t          |t                    s
J d            dS )r  r   r   r'   r  r  N)r   r!   r  r   r  r  s         r    test_call_method_not_memorizedz0TestMemorizedFunc.test_call_method_not_memorized  s     TV$$qG}}!!!!qG}}!!!!&&G$$4Avvv7vvv$%% 	
 	
>	
 	
 	
 	
 	
r"   N)r   r]   r   r  staticmethodr!   r  r  r   r"   r    r  r    sQ        >>  \
 
 

 
 
 
 
r"   r  r   )rR   )TrA   )wr  r   r   r`  rY   r7   os.pathr1  r  rN  r1  r  rv   r4  joblib.memoryr   r   r   r   r   r   r	   r
   r   r   r   r   joblib.parallelr   r   joblib._store_backendsr   r   joblib.test.commonr   r   r   joblib.testingr   r   r   joblib.hashingr   r!   r0   r>   rJ   rb   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r&  r+  r:  rB  rH  rY  r\  r^  ra  rc  re  rj  r  floatrm  rt  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rW   r  r  r  r$  r)  r.  r3  r6  r?  rD  rN  r  rX  rd  rh  rj  r  r   r"   r    <module>r     s        				   				    



                 ' ' ' ' ' ' 9 9 9 9 9 9 9 9 = = = = = = = = * * * * * * A A A A A A A A H H H H H H H H 0 0 0 0 0 0 - - - - - - - - K K K K K K K K - - - - - - - - 3 3 3 3 3 3 5 5 5 5 5 5 5 5 5 5      
   - - -  
 
 
( ( (V #dE]33_A _A 43_AD; ; ; $ $ $ 
J 
J 
J3 3 38   ? ? ?$? ? ?           [4+&&- - '& -( $ $ $N  ,! ! !&! ! !4  ( )cUC,=-/TN,< = =
$ 
$= =
$  @
 
 
.
 
 
  ,
 
 
!= != !=H	 	 	  @5+ 5+ 5+p	 	 	
         
 (-%     3 5 U    C C C8$ $ $1 1 1 1*3 3 34$; $; $;N  8  6  >9 9 9  
> > > >
 ' ' '& ' ' '.,& ,& ,&^	 	 	 	 	- 	 	 	
! ! ! ! !( ! ! !H ddffddff566= = 76=E E E( ( (7 7 7	L 	L 	L6 6 61 1 1  (0 0 0:@ @ @,
3 
3 
3 
3 '(Q77(+/:H.EG GHI IE E	I IE@  2> > >K K K K K K K K\$
 $
 $
 $
 $
 $
 $
 $
 $
 $
r"   