Ë
    æÿæiCÇ  ã                   ób  — 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mZ ddlZddlmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZ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*m+Z+ dnd
„Z,d„ Z-d„ Z.d„ Z/d„ Z0 e)dddg«      d„ «       Z1d„ Z2d„ Z3d„ Z4d„ Z5d„ Z6d„ Z7d„ Z8d„ Z9g fd„Z:d„ Z;e' e)dddg«      d„ «       «       Z<e'd „ «       Z=d!„ Z>d"„ Z?d#„ Z@d$„ ZA e)d%d&gd'dfg d(dfg«      d)„ «       ZBd*„ ZCd+„ ZDejŠ                  jS                  d,ddg«      d-„ «       ZFd.„ ZGd/„ ZHd0„ ZId1„ ZJd2„ ZKd3„ ZLd4„ ZMd5„ ZNd6„ ZOd7„ ZPd8d9d:œd;„ZQd<eRd=eSd>eSfd?„ZTd@„ ZUdA„ ZVdodB„ZWdC„ ZXdD„ ZYdE„ ZZdF„ Z[dG„ Z\dH„ Z]dI„ Z^dpdJ„Z_e&dK„ «       Z`e&dL„ «       ZadM„ Zb G dN„ dOe«      Zc G dP„ dQe«      Zd e)dRd ee«        ef«       g«      dS„ «       ZgdT„ ZhdU„ ZidV„ ZjdW„ ZkdX„ ZldY„ ZmdZ„ Znd[„ Zod\„ Zpdqd]„ZqejŠ                  jS                  d^d_d`daœddbdcddideœg«      df„ «       Zrdg„ Zs G dh„ di«      Zt G dj„ dk«      Zu G dl„ dm«      Zvy)rz
Test the memory module.
é    N)ÚPath)ÚFileSystemStoreBackendÚStoreBackendBase)Úhash)Ú_FUNCTION_HASHESÚ_STORE_BACKENDSÚJobLibCollisionWarningÚMemorizedFuncÚMemorizedResultÚMemoryÚNotMemorizedFuncÚNotMemorizedResultÚ_build_func_identifierÚ_store_backend_factoryÚexpires_afterÚregister_store_backend)ÚParallelÚdelayed)ÚnpÚwith_multiprocessingÚ
with_numpy)ÚparametrizeÚraisesÚwarnsc                 ó   — | dz  |z   S )z-A module-level function for testing purposes.é   © )ÚxÚys     úl/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/joblib/test/test_memory.pyÚfr!   /   s   € àˆa‰4�!‰8€Oó    c                 óÀ   — t        |d¬«      }|j                  | «      } t        d«      D ]2  }t        d«      D ]"  } | |«      |k(  sJ ‚t        |«      |dz   k(  rŒ"J ‚ Œ4 y)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   é   N)r   ÚcacheÚrangeÚlen)ÚfuncÚaccumulatorr%   ÚmemoryÚiÚ_s         r    Úcheck_identity_lazyr1   6   sa   € ô ˜X¨qÔ1€FØ�<‰<˜Ó€DÜ�1ŽXˆÜ�q–ˆAÙ˜“7˜a’<Ð�<Ü�{Ó# q¨1¡uÓ,Ð,Ð,ñ ñ r"   c                 óô   — | j                   j                  «       \  }t        j                  j	                  |j                  d«      }t        |d«      5 }|j                  d«       d d d «       y # 1 sw Y   y xY w)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?   E   sY   € Ø!×/Ñ/×9Ñ9Ó;ÑÐÜ—g‘g—l‘lÐ#4×#9Ñ#9¸<ÓH€OÜ	ˆo˜sÔ	# qØ	�‰�	Ô÷ 
$×	#Ñ	#ús   ÁA.Á.A7c                 ó<   ‡— g Šˆfd„}|j                  | d|«       ‰S )Nc                 ó(   •— ‰j                  | «       y ©N©Úappend)ÚitemÚrecordeds    €r    Úappend_to_recordz6monkeypatch_cached_func_warn.<locals>.append_to_recordS   s   ø€ Ø�‰˜Õr"   Úwarn)Úsetattr)r,   Úmonkeypatch_fixturerG   rF   s      @r    Úmonkeypatch_cached_func_warnrK   L   s)   ø€ ð
 €Hôð ×Ñ  fÐ.>Ô?Ø€Or"   c                 óB  ‡— t        «       Šˆfd„}t        |‰| j                  «       dD ]¾  }dD ]z  }t        | j                  d||¬«      }t	        j
                  | j                  d¬«       |j                  |«      } |d«       |j                  d	¬
«       t        ‰«      } |d«      }Œ| t        ‰«      dz   k(  sJ ‚j                  |d«      k(  sJ ‚t        ‰«      |dz   k(  rŒ¾J ‚ d|_
        t        | j                  d¬«      } |j                  |«      d«       y)z&Simple test of memory lazy evaluation.c                 ó*   •— ‰j                  d«       | S ©Nr(   rC   ©Úargr-   s    €r    r!   z"test_memory_integration.<locals>.fc   ó   ø€ Ø×Ñ˜1ÔØˆ
r"   )FT)ÚrNé
   )r%   r&   Ú	mmap_modeÚcompressT©Úignore_errorsr(   F)rH   Ú__main__r   r$   N)Úlistr1   Ústrpathr   ÚshutilÚrmtreer)   Úclearr+   ÚevalÚ
__module__)	Útmpdirr!   rU   rT   r.   ÚgÚcurrent_accumulatorÚoutr-   s	           @r    Útest_memory_integrationrd   \   s  ø€ ä“&€Kô
ô ˜˜;¨¯©Ô7ó "ˆÛ$ˆIÜØŸ™ØØ#Ø!ô	ˆFô �M‰M˜&Ÿ.™.¸Õ=Ø—‘˜Q“ˆAÙˆaŒDØ�G‰G˜ˆGÔÜ"% kÓ"2ÐÙ�A“$‰Cð# %ô& �;ÓÐ#6¸Ñ#:Ò:Ð:Ð:à�{‰{˜1˜aÓ  CÒ'Ð'Ð'Ü�;ÓÐ#6¸Ñ#:Ó:Ð:Ð:ð/ "ð6 €A„LÜ˜VŸ^™^°QÔ7€FØ€F‡L�L�ƒO�AÕr"   Úcall_before_reducingTFc                 ó$  ‡— dD �]‰  }d}dj                  |«      }i }t        t        t        j                  |«      |d¬«      d |«       |d   }d|_         |d«      dk(  sJ ‚|j                  j                  |k(  sJ ‚t        | j                  d	¬
«      }|j                  |«      Š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 ‚|rJ ‰d«       t        t        j                  |	dz  «      «      dk(  sJ ‚ t        d¬«      ˆfd„dD «       «       n” t        d¬«      ˆfd„dD «       «       t        d«      D ]=  }
t        t        j                  |	dz  «      «      dk(  r nt!        j"                  d«       Œ? t        t        j                  |	dz  «      «      dk(  sJ ‚ ‰d«       t        t        j                  |	dz  «      «      dk(  r�Œ4J ‚t        t        j                  |	dz  «      «      dk(  sJ ‚ ‰d«       t        t        j                  |	dz  «      «      dk(  r�ŒŠJ ‚ y )N)r   r(   z0
        def f(x):
            return x
        z<ipython-input-{}-000000000000>Úexec)ÚfilenameÚmoder!   rX   r(   r   r$   Újoblibzipython-inputr'   r   ©Ún_jobsc              3   ó@   •K  — | ]  } t        ‰«      |«      –— Œ y ­wrB   ©r   ©Ú.0r/   Úcached_fs     €r    Ú	<genexpr>zHtest_parallel_call_cached_function_defined_in_jupyter.<locals>.<genexpr>Ô   ó   øè ø€ Ð"HÁ¸AÐ#4¤7¨8Ó#4°Q×#7Áùó   ƒ)r(   r   c              3   ó@   •K  — | ]  } t        ‰«      |«      –— Œ y ­wrB   rn   ro   s     €r    rr   zHtest_parallel_call_cached_function_defined_in_jupyter.<locals>.<genexpr>Ú   rs   rt   é   çš™™™™™É?é   )Úformatrg   ÚcompileÚtextwrapÚdedentr_   Ú__code__Úco_filenamer   rZ   r)   r+   r8   Úlistdirr   r*   ÚtimeÚsleep)r`   re   Ú
session_noÚipython_cell_sourceÚipython_cell_idÚ	my_localsr!   r.   Úf_cache_relative_directoryÚf_cache_directoryr0   rq   s              @r    Ú5test_parallel_call_cached_function_defined_in_jupyterrˆ   Š   s  ø€ ô" ˆ
ðÐð
 <×BÑBÀ:ÓNˆàˆ	ÜÜÜ—‘Ð 3Ó4Ø(Øôð Øô	
ð �c‰NˆØ!ˆŒñ �‹t�qŠyÐˆyØ�z‰z×%Ñ%¨Ò8Ð8Ð8ä §¡¸Ô;ˆØ—<‘< “?ˆä”2—:‘:˜f xÑ/Ó0Ó1°QÒ6Ð6Ð6Ü%'§Z¡Z°¸Ñ0AÓ%BÀ1Ñ%EÐ"ØÐ"<Ñ<Ð<Ð<à" XÑ-Ð0JÑJÐà˜‹?ä—:‘:Ð/Ó0°S°EÒ9Ð9Ð9Ü—:‘:Ð/°#Ñ5Ó6¸"Ò<Ð<Ð<á#Ù˜”ô œ2Ÿ:™:Ð&7¸#Ñ&=Ó>Ó?À1ÒDÐDÐDð #” Ô"Ó"HÁÓ"HÕHð #” Ô"Ó"HÁÓ"HÔHô ˜rž�AÜœ2Ÿ:™:Ð&7¸#Ñ&=Ó>Ó?À1ÒDÙÜ—J‘J˜s•Oð #ô œ2Ÿ:™:Ð&7¸#Ñ&=Ó>Ó?À1ÒDÐDÐDá˜”ô
 ”r—z‘zÐ"3°cÑ"9Ó:Ó;¸qÔ@Ð@Ð@ô ”r—z‘zÐ"3°cÑ"9Ó:Ó;¸qÒ@Ð@Ð@á�QŒKô ”r—z‘zÐ"3°cÑ"9Ó:Ó;¸qÔ@Ð@Ð@ñm r"   c                  óÌ   ‡— t        «       Šˆfd„} t        dd¬«      }|j                  | «      }t        d«      D ](  }t	        ‰«      } |d«       t	        ‰«      |dz   k(  rŒ(J ‚ y)z*Test memory with location=None: no memoizec                 ó*   •— ‰j                  d«       | S rN   rC   rO   s    €r    Úffztest_no_memory.<locals>.ffø   rQ   r"   Nr   r$   rx   r(   )rY   r   r)   r*   r+   )r‹   r.   Úggr0   rb   r-   s        @r    Útest_no_memoryr�   ô   sd   ø€ ä“&€Kôô ˜T¨1Ô-€FØ	�‰�bÓ	€BÜ�1ŽXˆÜ! +Ó.ÐÙ
ˆ1ŒÜ�;ÓÐ#6¸Ñ#:Ó:Ð:Ð:ñ r"   c                 óÂ   ‡— t        «       Šdˆfd„	}t        |‰| j                  «       t        | j                  d¬«      }|j	                  |«      } |dd¬«      dk(  sJ ‚y)	z3Test memory with a function with keyword arguments.Nc                 ó*   •— ‰j                  d«       | S rN   rC   )Úarg1Úarg2r-   s     €r    ra   ztest_memory_kwarg.<locals>.g  s   ø€ Ø×Ñ˜1ÔØˆr"   r   r$   é   r   )r�   r‘   rN   )rY   r1   rZ   r   r)   )r`   ra   r.   r-   s      @r    Útest_memory_kwargr“     sS   ø€ ä“&€Kõô ˜˜;¨¯©Ô7ä˜VŸ^™^°QÔ7€FØ�‰�Q‹€Aá�"˜1Ô Ò#Ð#Ñ#r"   c                 óZ   ‡‡— t        «       Šˆfd„Št        ˆfd„‰| j                  «       y)z*Test memory with a function with a lambda.c                 ó*   •— ‰j                  d«       | S ©z*A helper function to define l as a lambda.r(   rC   )r   r-   s    €r    Úhelperz"test_memory_lambda.<locals>.helper  ó   ø€ à×Ñ˜1ÔØˆr"   c                 ó   •—  ‰| «      S rB   r   )r   r—   s    €r    Ú<lambda>z$test_memory_lambda.<locals>.<lambda>  s	   ø€ ¡&¨¤)r"   N)rY   r1   rZ   )r`   r-   r—   s    @@r    Útest_memory_lambdar›     s"   ù€ ä“&€Kôô
 Ó+¨[¸&¿.¹.ÕIr"   c                 óB  — t        | j                  d¬«      }|j                  d„ «       }|}|j                  d„ «       }|}t        t        «      5 } |d«        |d«       ddd«       t        «      dk(  sJ ‚dt        |d   j                  «      v sJ ‚y# 1 sw Y   Œ6xY w)z=Check that name collisions with functions will raise warningsr   r$   c                 ó   — | S )z&A first function called name_collisionr   ©r   s    r    Úname_collisionz2test_memory_name_collision.<locals>.name_collision$  ó	   € ð ˆr"   c                 ó   — | S )z'A second function called name_collisionr   rž   s    r    rŸ   z2test_memory_name_collision.<locals>.name_collision+  r    r"   r(   NÚ	collision)r   rZ   r)   r   r	   r+   ÚstrÚmessage)r`   r.   rŸ   ÚaÚbÚwarninfos         r    Útest_memory_name_collisionr¨      s¤   € ä˜VŸ^™^°QÔ7€Fà‡\�\ñó ðð 	€Aà‡\�\ñó ðð 	€Aä	Ô%Ô	&¨(Ù	ˆ!ŒÙ	ˆ!Œ÷ 
'ô ˆx‹=˜AÒÐÐØœ#˜h q™k×1Ñ1Ó2Ñ2Ð2Ñ2÷ 
'Ð	&ús   ÁBÂBc                 ó2  — t        | j                  d¬«      }|j                  d„ «      }|j                  d„ «      }t        t        «      5 } |d«      dk(  sJ ‚ |d«      dk(  sJ ‚ |d«      dk(  sJ ‚	 d d d «       t        «      dk(  sJ ‚y # 1 sw Y   ŒxY w)Nr   r$   c                 ó   — | S rB   r   rž   s    r    rš   z7test_memory_warning_lambda_collisions.<locals>.<lambda>=  s   € ™qr"   c                 ó   — | dz   S rN   r   rž   s    r    rš   z7test_memory_warning_lambda_collisions.<locals>.<lambda>>  s   € ˜q 1šur"   r(   r   rx   )r   rZ   r)   r   r	   r+   )r`   r.   r¥   r¦   r§   s        r    Ú%test_memory_warning_lambda_collisionsr¬   :  s‹   € ä˜VŸ^™^°QÔ7€FØ�‰‘[Ó!€AØ�‰‘_Ó%€Aä	Ô%Ô	&¨(Ù�‹t�qŠyÐˆyÙ�‹t�qŠyÐˆyÙ�‹t�qŠyÐ‰y÷ 
'ô ˆx‹=˜AÒÐÑ÷ 
'Ð	&ús   Á(BÂBc                 óŽ  — t        | j                  d¬«      }t        d«      }|j                  |«      }t        d«      }|j                  |«      }t	        t
        «      5 } |d«        |d«        |d«       d d d «       t        «      dk(  sJ ‚dt        |d   j                  «      j                  «       v sJ ‚y # 1 sw Y   ŒDxY w)Nr   r$   úlambda x: xzlambda x: x+1r(   r   zcannot detect)
r   rZ   r^   r)   r   r	   r+   r£   r¤   Úlower)r`   r.   Úa1Úb1r§   s        r    Ú'test_memory_warning_collision_detectionr²   J  s¬   € ô ˜VŸ^™^°QÔ7€FÜ	ˆmÓ	€BØ	�‰�bÓ	€BÜ	ˆoÓ	€BØ	�‰�bÓ	€Bä	Ô%Ô	&¨(Ù
ˆ1ŒÙ
ˆ1ŒÙ
ˆ1Œ÷ 
'ô
 ˆx‹=˜AÒÐÐØœc (¨1¡+×"5Ñ"5Ó6×<Ñ<Ó>Ñ>Ð>Ñ>÷ 
'Ð	&ús   ÁB;Â;Cc                 ó€   ‡— t        «       Šˆfd„}ddl} |j                  |d«      }t        |‰| j                  «       y)z#Test memory with functools.partial.c                 ó*   •— ‰j                  d«       |S r–   rC   ©r   r   r-   s     €r    r,   z!test_memory_partial.<locals>.func`  r˜   r"   r   Nr(   )rY   Ú	functoolsÚpartialr1   rZ   )r`   r,   r¶   Úfunctionr-   s       @r    Útest_memory_partialr¹   \  s8   ø€ ä“&€Kôó
 à ˆy× Ñ   qÓ)€Hä˜ +¨v¯~©~Õ>r"   c                 ó„   — t        | j                  d¬«      }t        d«      }|j                  |«      } |d«      dk(  sJ ‚y)zESmoke test memory with a function with a function defined in an eval.r   r$   r®   r(   N)r   rZ   r^   r)   )r`   r.   ÚmÚmms       r    Útest_memory_evalr½   l  s9   € ä˜VŸ^™^°QÔ7€Fäˆ]Ó€AØ	�‰�a‹€Báˆa‹5�AŠ:Ð‰:r"   c                 ó>   — t        | «      }| j                  d«       |S )zsA function with a side effect in its arguments.

    Return the length of its argument and append one element.
    N)r+   rD   )r   Úlen_xs     r    Úcount_and_appendrÀ   v  s   € ô
 �‹F€EØ‡H�HˆT„NØ€Lr"   c                 óŒ   — t        | j                  d¬«      }|j                  t        «      } |«       dk(  sJ ‚ |«       dk(  sJ ‚y)zsCheck that if a function has a side effect in its arguments, it
    should use the hash of changing arguments.
    r   r$   r(   N)r   rZ   r)   rÀ   )r`   r.   r,   s      r    Útest_argument_changerÂ   €  sC   € ô ˜VŸ^™^°QÔ7€FØ�<‰<Ô(Ó)€Dñ ‹6�QŠ;Ðˆ;ñ ‹6�QŠ;Ð‰;r"   rT   rR   c                 ó~  ‡	— t        «       Š	dˆ	fd„	}t        | j                  |d¬«      }|j                  |«      }t        j
                  j                  d«      }t        d«      D ]V  }|j                  d«      }t        d«      D ]5  }t	        j                   ||«      |k(  «      sJ ‚t        ‰	«      |dz   k(  rŒ5J ‚ ŒX y)	z.Test memory with a function with numpy arrays.Nc                 ó*   •— ‰j                  d«       | S rN   rC   rO   s    €r    Únztest_memory_numpy.<locals>.n”  rQ   r"   r   ©r%   rT   r&   r'   )rS   rS   r(   rB   )rY   r   rZ   r)   r   ÚrandomÚRandomStater*   Úrandom_sampleÚallr+   )
r`   rT   rÅ   r.   Úcached_nÚrndr/   r¥   r0   r-   s
            @r    Útest_memory_numpyrÍ   Ž  s¤   ø€ ô “&€Kõô ˜VŸ^™^°yÈ!ÔL€FØ�|‰|˜A‹€Hä
�)‰)×
Ñ
 Ó
"€CÜ�1ŽXˆØ×Ñ˜hÓ'ˆÜ�q–ˆAÜ—6‘6™( 1›+¨Ñ*Ô+Ð+Ð+Ü�{Ó# q¨1¡uÓ,Ð,Ð,ñ ñ r"   c                 óX  — t        | j                  dd¬«      }|j                  «       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 ‚y)	z8Check that mmap_mode is respected even at the first callrR   r   rÆ   c                 ó   — | dz  S ©Nr   r   ©r¥   s    r    Útwicez0test_memory_numpy_check_mmap_mode.<locals>.twice©  ó   € à�1‰uˆr"   r'   r(   úException while loading resultsN)r   rZ   r)   r   ÚonesÚ
isinstanceÚmemmapri   ÚgcÚcollectr?   rK   r+   )
r`   Úmonkeypatchr.   rÒ   r¥   r¦   ÚcÚrecorded_warningsÚdÚexception_msgs
             r    Ú!test_memory_numpy_check_mmap_moderß   £  s  € ô ˜VŸ^™^°sÀAÔF€Fà‡\�\ƒ^ñó ðô 	�‰�‹
€Aáˆa‹€AÙˆa‹€Aä�aœŸ™Ô#Ð#Ð#Ø�6‰6�SŠ=Ðˆ=ä�aœŸ™Ô#Ð#Ð#Ø�6‰6�SŠ=Ðˆ=ð 	
Ø	Ü‡J�J„LÜ˜fÔ%ô 5°U¸KÓHÐÙˆa‹€AÜÐ Ó! QÒ&Ð&Ð&Ø5€MØÐ-¨aÑ0Ñ0Ð0Ð0ä�aœŸ™Ô#Ð#Ð#Ø�6‰6�SŠ=Ð‰=r"   c                 óú   ‡— t        | j                  d¬«      } G d„ dt        «      Š|j                  d	ˆfd„	«       } |«        t	        d«      D ]  }t        ‰«      5   |d«       ddd«       Œ  y# 1 sw Y   Œ+xY w)
z+Smoketest the exception handling of Memory.r   r$   c                   ó   — e Zd Zy)ú*test_memory_exception.<locals>.MyExceptionN©Ú__name__r_   Ú__qualname__r   r"   r    ÚMyExceptionrâ   Ï  ó   „ Ør"   ræ   c                 ó   •— | r‰‚y rB   r   )Úexcræ   s    €r    Úhz test_memory_exception.<locals>.hÒ  s   ø€ áØÐð r"   r'   r(   N)r   )r   rZ   Ú	Exceptionr)   r*   r   )r`   r.   rê   r0   ræ   s       @r    Útest_memory_exceptionrì   Ë  sj   ø€ ä˜VŸ^™^°QÔ7€Fô”iô ð ‡\�\ôó ðñ
 „Cä�1ŽXˆä�KÕ ÙˆaŒD÷ !Ð ñ ç Ð ús   Á	A1Á1A:	c                 ó@  ‡— t        | j                  d¬«      }t        «       Š|j                  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 ‚y	)z!Test the ignore feature of memoryr   r$   r   ©Úignorer(   c                 ó(   •— ‰j                  d«       y rN   rC   rµ   s     €r    Úzztest_memory_ignore.<locals>.zå  s   ø€ à×Ñ˜1Õr"   ©r   r   N©r(   ©r   rZ   rY   r)   rï   r+   )r`   r.   rñ   r-   s      @r    Útest_memory_ignorerõ   à  s£   ø€ ä˜VŸ^™^°QÔ7€FÜ“&€Kà‡\�\˜#˜€\Óôó  ðð �8‰8˜�uÒÐÐá€aˆ1…IÜˆ{Ó˜qÒ Ð Ð Ù€aˆ1…IÜˆ{Ó˜qÒ Ð Ð Ù€aˆ1…IÜˆ{Ó˜qÒ Ð Ñ r"   c                 óP  ‡— t        | j                  d¬«      }t        «       Šd„ }|j                  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 ‚y
)z9Test the ignore feature of memory on a decorated functionr   r$   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                  ó   •—  ‰| i |¤ŽS rB   r   )ÚargsÚkwargsr!   s     €r    Úwrappedz?test_memory_ignore_decorated.<locals>.decorate.<locals>.wrappedù  s   ø€ á�dÐ%˜fÑ%Ð%r"   )r¶   Úwraps)r!   rû   s   ` r    Údecoratez.test_memory_ignore_decorated.<locals>.decorateø  s%   ø€ Ü	�‰˜Ó	ó	&ó 
ð	&ð ˆr"   r   rî   r(   c                 ó(   •— ‰j                  d«       y rN   rC   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€FÜ“&€Kòð ‡\�\˜#˜€\ÓØôó ó  ðð �8‰8˜�uÒÐÐá€aˆ1…IÜˆ{Ó˜qÒ Ð Ð Ù€aˆ1…IÜˆ{Ó˜qÒ Ð Ð Ù€aˆ1…IÜˆ{Ó˜qÒ Ð Ñ r"   c                 ó¨   — t        | j                  d¬«      }|j                  d„ «       } |d«      dk(  sJ ‚ |d¬«      dk(  sJ ‚ |d¬«      dk(  sJ ‚y)	z_Non-regression test against 0.12.0 changes.

    https://github.com/joblib/joblib/pull/751
    r   r$   c                 ó   — | dz   S rN   r   rÑ   s    r    Úplus_onez,test_memory_args_as_kwargs.<locals>.plus_one  rÓ   r"   r(   r   rÑ   r'   N)r   rZ   r)   )r`   r.   r  s      r    Útest_memory_args_as_kwargsr    sd   € ô
 ˜VŸ^™^°QÔ7€Fà‡\�\ñó ðñ �A‹;˜!ÒÐÐÙ�aŒ=˜AÒÐÐñ �aŒ=˜AÒÐÑr"   zignore, verbose, mmap_moder   éd   rS   c                 óÌ   — t        | j                  d¬«      }|j                  |||¬«      d„ «       }|j                  |k(  sJ ‚|j                  |k(  sJ ‚|j
                  |k(  sJ ‚y)z7Check cache may be called with kwargs before decoratingr   r$   )rï   r&   rT   c                  ó   — y rB   r   rž   s    r    rñ   z"test_partial_decoration.<locals>.z'  s   € àr"   N)r   rZ   r)   rï   Ú_verboserT   )r`   rï   r&   rT   r.   rñ   s         r    Útest_partial_decorationr  "  sn   € ô ˜VŸ^™^°QÔ7€Fà‡\�\˜¨¸I€\ÓFñó Gðð �8‰8�vÒÐÐØ�:‰:˜Ò Ð Ð Ø�;‰;˜)Ò#Ð#Ñ#r"   c                 óœ  — t        | j                  d¬«      }t        j                  d«      }|j	                  d«        | j
                  dg|¢­Ž j                  }|j                  t        «      }t        t        «      }t        j                  j                  |j                  j                  |«      }||k(  sJ ‚t        j                  j                  |«      sJ ‚|j                  t        j                  j                  |j                  j                  «      k(  sJ ‚t        j                   «        |j#                  «       rJ ‚t        j                  j                  t        j                  j                  |d«      «      sJ ‚|j#                  «       sJ ‚|j%                  d«      }t        j                  j                  |j                  j                  |j&                  |«      } |d«      }t        j                  j                  |«      sJ ‚t        j(                  t        j                  j                  |d«      «       | |d«      k(  sJ ‚y )	Nr   r$   Ú.r!   rj   zfunc_code.pyr(   r3   )r   rZ   rä   ÚsplitrD   r:   r)   r!   r   r8   r9   r6   r%   ÚexistsÚdirnamer   r]   Ú_check_previous_func_codeÚ_get_args_idÚfunc_idÚremove)	r`   r.   r9   ra   r  r%   Úargs_idÚ
output_dirr¥   s	            r    Útest_func_dirr  0  sž  € ä˜VŸ^™^°QÔ7€FÜ�>‰>˜#Ó€DØ‡K�K�ÔØˆ6�;‰;�xÐ' $Ò'×/Ñ/€Dà�‰”Q‹€Aä$¤QÓ'€GÜ�w‰w�|‰|˜AŸO™O×4Ñ4°gÓ>€HØ�tÒÐÐÜ�7‰7�>‰>˜$ÔÐÐØ�?‰?œbŸg™gŸo™o¨a¯o©o×.FÑ.FÓGÒGÐGÐGô
 ×ÑÔØ×*Ñ*Ô,Ð,Ð,Ü�7‰7�>‰>œ"Ÿ'™'Ÿ,™, t¨^Ó<Ô=Ð=Ð=Ø×&Ñ&Ô(Ð(Ð(ð �n‰n˜QÓ€GÜ—‘—‘˜aŸo™o×6Ñ6¸¿	¹	À7ÓK€JÙ	ˆ!‹€AÜ�7‰7�>‰>˜*Ô%Ð%Ð%Ü‡I�IŒb�g‰g�l‰l˜: |Ó4Ô5Ø‘�!“Š9Ð‰9r"   c                 ó˜  — t        | j                  d¬«      }|j                  t        «      } |d«      }t	        j
                  t	        j                  |«      «      }|j                  d«      }t        j                  j                  |j                  j                  |j                  |«      }t        j                  j                  |«      sJ ‚||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                  |«      «       |j                  t        «      }t	        j
                  t	        j                  |«      «      } |d«       y )Nr   r$   r(   )r   rZ   r)   r!   ÚpickleÚloadsÚdumpsr  r8   r9   r:   r6   r%   r  r  Ú	load_item)	r`   r.   ra   Úoutputrê   r  r  Úmemory2Úgps	            r    Útest_persistencer  P  s6  € ä˜VŸ^™^°QÔ7€FØ�‰”Q‹€AÙˆq‹T€Fä�‰”V—\‘\ !“_Ó%€Aà�n‰n˜QÓ€GÜ—‘—‘˜aŸo™o×6Ñ6¸¿	¹	À7ÓK€JÜ�7‰7�>‰>˜*Ô%Ð%Ð%Ø�Q—_‘_×.Ñ.°·	±	¸7Ð/CÓDÒDÐDÐDÜ�l‰lœ6Ÿ<™<¨Ó/Ó0€GØ×Ñ×(Ñ(¨G×,AÑ,A×,JÑ,JÒJÐJÐJô ˜T¨1Ô-€FÜ
‡L�L”—‘˜fÓ%Ô&Ø�‰”Q‹€AÜ	�‰”f—l‘l 1“oÓ	&€BÙ€q…Er"   Úconsider_cache_validc                 óÌ  ‡— t        t        | j                  ˆfd„¬«      t        | j                  d¬«      j	                  t        ˆfd„¬«      fD ]p  }|j                  d«      }t        |t        «      sJ ‚|rJ ‚ |d«      dk(  sJ ‚|j                  d«      }t        |t        «      sJ ‚|‰k(  sJ ‚|j                  «        Œr t        t        «      }|j                  d«      rJ ‚y )Nc                 ó   •— ‰S rB   r   ©r0   r  s    €r    rš   z*test_check_call_in_cache.<locals>.<lambda>k  s   ø€ ÑCWr"   ©Úcache_validation_callbackr   r$   c                 ó   •— ‰S rB   r   r!  s    €r    rš   z*test_check_call_in_cache.<locals>.<lambda>n  s   ø€ Ñ3Gr"   r   é   )
r
   r!   rZ   r   r)   Úcheck_call_in_cacherÖ   Úboolr]   r   )r`   r  r,   Úresults    `  r    Útest_check_call_in_cacher)  g  sà   ø€ ô 	Üˆv�~‰~Ó9Wô	
ô 	˜Ÿ™°Ô2×8Ñ8ÜÓ)Gð 	9ó 	
ó	ˆð ×)Ñ)¨!Ó,ˆÜ˜&¤$Ô'Ð'Ð'ÙÐˆzÙ�A‹w˜!Š|Ðˆ|Ø×)Ñ)¨!Ó,ˆÜ˜&¤$Ô'Ð'Ð'ØÐ-Ò-Ð-Ð-Ø�
‰
�ðô" œAÓ€DØ×'Ñ'¨Ô*Ð*Ð*Ð*r"   c                 óZ  — t        t        t        | j                  «      t	        t        «      t        | j                  d¬«      j                  t        «      t        d ¬«      j                  t        «      ft        t        t        t        f«      D ]Ž  \  }} |d«      dk(  sJ ‚|j                  d«      }t        ||«      sJ ‚|j                  «       dk(  sJ ‚|j                  «        t        t        «      5  |j                  «        d d d «       |j                  «        Œ� y # 1 sw Y   ŒxY w)Nr   r$   ©r%   r   r%  )Úzipr
   r!   rZ   r   r   r)   r   r   Úcall_and_shelverÖ   Úgetr]   r   ÚKeyError)r`   r,   ÚResultr(  s       r    Útest_call_and_shelver1  ~  så   € ô äœ!˜VŸ^™^Ó,ÜœQÓÜ˜FŸN™N°AÔ6×<Ñ<¼QÓ?Ü˜DÔ!×'Ñ'¬Ó*ð		
ô 
Ô,¬oÔ?QÐRö‰ˆˆfñ �A‹w˜!Š|Ðˆ|Ø×%Ñ% aÓ(ˆÜ˜& &Ô)Ð)Ð)Ø�z‰z‹|˜qÒ Ð Ð à�‰ŒÜ”HÕØ�J‰JŒL÷ à�‰�ñ#÷ Ðús   Ã5D!Ä!D*	c                 ó  — | j                  d«      }|j                  d«       t        j                  |j                  «      j
                  }t        j                  d«       |j                  «       dk(  sJ ‚|t        j                  |j                  «      j
                  k(  rt        j                  d«       t        | j                  d¬«      }|j                  t        «      }|j                  d«      }t        j                  j                  |j                   j"                  |j$                  |d«      } |d«      dk(  sJ ‚t        j                  |«      j
                  }t        j                  d	«       |j'                  d«      }t)        |t*        «      sJ ‚t        j                  |«      j
                  |k(  sJ ‚t        j                  d	«       |j-                  «       dk(  sJ ‚t        j                  |«      j
                  |kD  sJ ‚y
)z6Check call_and_shelve only load stored data if needed.Útest_accessç      à?z>filesystem does not support fine-grained access time attributer   r$   r   r3   r%  r(   N)r:   r<   r8   ÚstatrZ   Úst_atimer€   r�   ÚreadÚpytestÚskipr   r)   r!   r  r9   r6   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•  € à"ŸK™K¨Ó6ÐØ×Ñ Ô.Ü—w‘wÐ4×<Ñ<Ó=×FÑFÐô 	‡J�Jˆs„OØ ×%Ñ%Ó'¨=Ò8Ð8Ð8àœ2Ÿ7™7Ð#8×#@Ñ#@ÓA×JÑJÒJô 	�‰ÐTÔUä˜VŸ^™^°QÔ7€FØ�<‰<œ‹?€DØ×Ñ Ó"€GÜ—'‘'—,‘,Ø×Ñ×%Ñ% t§|¡|°W¸ló€Kñ �‹7�aŠ<Ðˆ<ÜŸ™ Ó,×5Ñ5ÐÜ‡J�Jˆq„Mð ×!Ñ! !Ó$€FÜ�fœoÔ.Ð.Ð.Ü�7‰7�;Ó×(Ñ(Ð,=Ò=Ð=Ð=Ü‡J�Jˆq„Mð �:‰:‹<˜1ÒÐÐÜ�7‰7�;Ó×(Ñ(Ð+<Ò<Ð<Ñ<r"   c                 ó  — t        t        | j                  «      t        t        «      fD ]»  }| j	                  d«      j                  }|j                  d«      }t        |d«      5 }t        j                  ||«       d d d «       t        |d«      5 }t        j                  |«      }d d d «       j                  «       |j                  «       k(  sJ ‚t        j                  |«       Œ½ y # 1 sw Y   ŒnxY w# 1 sw Y   ŒPxY w)Nzpickling_test.datr   ÚwbÚrb)r
   r!   rZ   r   r:   r-  r;   r  ÚdumpÚloadr.  r8   r  )r`   r,   rh   r(  ÚfpÚresult2s         r    Útest_memorized_picklingrF  ¹  s»   € Üœq &§.¡.Ó1Ô3CÄAÓ3FÓGˆØ—;‘;Ð2Ó3×;Ñ;ˆØ×%Ñ% aÓ(ˆÜ�(˜DÔ! RÜ�K‰K˜ Ô#÷ "ä�(˜DÔ! RÜ—k‘k "“oˆG÷ "à�{‰{‹} §
¡
£Ò,Ð,Ð,Ü
�	‰	�(Õñ H÷ "Ð!úç!Ð!ús   Á%C)ÂC5Ã)C2	Ã5C>	c                 óÄ  — t        t        | j                  «      }|j                  d«      }t        t        | j                  «      }|j                  d«      }|j	                  «       |j	                  «       k(  sJ ‚t        |«      t        |«      k(  sJ ‚t        t        «      }t        |«       t        |j                  d«      «       t        t        | j                  dt        j                  «       ¬«      }|j                  d«      }|j	                  «        t        t        | j                  d¬«      }|j                  d«      }|j	                  «        t        t        | j                  dt        j                  «       ¬«      }|j                  d«      }|j	                  «        t        t        | j                  d¬«      }|j                  d«      }|j	                  «        y )Nr   é   )r&   Ú	timestamp)r&   r%  )r
   r!   rZ   r-  r.  Úreprr   r€   )r`   r,   r(  Úfunc2rE  s        r    Útest_memorized_reprrL  Å  sV  € Üœ˜FŸN™NÓ+€DØ×!Ñ! !Ó$€Fäœ!˜VŸ^™^Ó,€EØ×#Ñ# AÓ&€GØ�:‰:‹<˜7Ÿ;™;›=Ò(Ð(Ð(Ü�‹:œ˜e›Ò$Ð$Ð$ô œAÓ€DÜˆ„JÜˆ×	Ñ	˜aÓ	 Ô!ô œ˜FŸN™N°BÄ$Ç)Á)Ã+ÔN€DØ×!Ñ! "Ó%€FØ
‡J�J„Läœ˜FŸN™N°BÔ7€DØ×!Ñ! "Ó%€FØ
‡J�J„Läœ˜FŸN™N°AÄÇÁÃÔM€DØ×!Ñ! "Ó%€FØ
‡J�J„Läœ˜FŸN™N°AÔ6€DØ×!Ñ! "Ó%€FØ
‡J�J…Lr"   c                 ó  — |j                  d«      j                  }t        j                  j	                  |d«      }d}t        |d«      5 }|j                  |«       d d d «       |j                  |«       dd l}t        |j                  d¬«      }|j                  |j                  «      }	 |	d«        |	d«        |	d«       t        |d«      5 }|j                  d	|z   «       d d d «        |	d«        |	d«       t        j                  |«       t        j                   |«       d
}t        |d«      5 }|j                  |«       d d d «        |	d«        |	d«       t        j                  j                  d«       t        j                   j#                  d«       dd l}|j                  |j                  «      }	 |	d«        |	d«       | j%                  «       \  }
}|
dk(  sJ ‚y # 1 sw Y   �ŒŒxY w# 1 sw Y   �ŒxY w# 1 sw Y   Œ»xY w)NÚ
tmp_importztmp_joblib_.pyz$def f(x):
    print(x)
    return x
r4   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
)ÚmkdirrZ   r8   r9   r:   r;   r<   Úsyspath_prependrO  r   r)   r!   r[   r\   ÚsysÚstdoutÚmodulesÚpopÚ
readouterr)Úcapsysr`   rÚ   Údir_namerh   ÚcontentÚmodule_fileÚtmpr.   r!   rc   Úerrs               r    Útest_memory_file_modificationr]  å  s¥  € ð �|‰|˜LÓ)×1Ñ1€HÜ�w‰w�|‰|˜HÐ&6Ó7€HØ7€GÜ	ˆh˜Ô	 Ø×Ñ˜'Ô"÷ 
ð ×Ñ Ô)Ûä˜VŸ^™^°QÔ7€FØ�‰�S—U‘UÓ€Aá€a„DÙ€a„DÙ€a„Dô 
ˆh˜Ô	 Ø×Ñ˜& 7Ñ*Ô+÷ 
ñ €a„DÙ€a„Dô ‡M�M�(ÔÜ‡H�HˆXÔà@€GÜ	ˆh˜Ô	 Ø×Ñ˜'Ô"÷ 
ñ €a„DÙ€a„Dô ‡J�J×Ñ�]Ô#Ü‡K�K‡O�O�MÔ"Ûà�‰�S—U‘UÓ€Añ €a„DÙ€a„Dà× Ñ Ó"�H€CˆØÐ*Ò*Ð*Ñ*÷a 
Ñ	ú÷ 
Ñ	ú÷ 
Ð	ús$   Á
G&ÃG3Ä4H Ç&G0Ç3G=È H	c                  ó   — y rB   r   ©r¥   r¦   s     r    Ú_function_to_cacher`    s   € àr"   c                 ó   — | |z   S rB   r   r_  s     r    Ú_sumrb  #  ó   € Øˆq‰5€Lr"   c                 ó   — | |z  S rB   r   r_  s     r    Ú_productre  '  rc  r"   c                 óz  — t         j                  t        _        t        | j                  d¬«      }|j                  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 «       y # 1 sw Y   y xY w)Nr   r$   r(   r   r'   )	rb  r}   r`  r   rZ   r)   r   r	   re  )r`   r.   r!   s      r    Ú*test_memory_in_memory_function_code_changerg  +  sš   € Ü"&§-¡-ÔÔä˜VŸ^™^°QÔ7€FØ�‰Ô'Ó(€AáˆQ�‹7�aŠ<Ðˆ<ÙˆQ�‹7�aŠ<Ðˆ<ä	Ô%Õ	&ä&.×&7Ñ&7ÔÔ#Ù��A‹w˜!Š|Ðˆ|Ù��A‹w˜!Š|Ð‰|÷	 
'×	&Ñ	&ús   Á16B1Â1B:c                  ó<   — t        d ¬«      } | j                  «        y )Nr+  )r   r]   )r.   s    r    Ú$test_clear_memory_with_none_locationri  ;  s   € Ü˜TÔ"€FØ
‡L�L…Nr"   Úkw1Úkw2©rj  rk  c                ó   — | |||fS rB   r   )r¥   r¦   rj  rk  s       r    Úfunc_with_kwonly_argsrn  @  s   € Øˆa��cˆ>Ðr"   r¥   r¦   Úreturnc                 ó   — | |z   S rB   r   r_  s     r    Úfunc_with_signaturerq  D  rc  r"   c                 ó  — t        | j                  d¬«      }|j                  t        «      } |ddd¬«      dk(  sJ ‚t	        t
        «      5 } |dddd¬	«       d d d «       j                  d
«        |dddd¬«       t	        t
        «      5 } |dddd¬	«       d d d «       |j                  d
«       |j                  t        dg¬«      } |dddd¬«      dk(  sJ ‚ |dddd¬«      dk(  sJ ‚y # 1 sw Y   Œ–xY w# 1 sw Y   ŒaxY w)Nr   r$   r(   r   r'   )rj  )r(   r   r'   rk  rx   )rk  z?Keyword-only parameter 'kw1' was passed as positional parameterrl  rk  rî   )r(   r   r'   rx   Úignored)r   rZ   r)   rn  r   Ú
ValueErrorÚmatch)r`   r.   Úfunc_cachedÚexcinfos       r    Ú!test_memory_func_with_kwonly_argsrx  H  sú   € Ü˜VŸ^™^°QÔ7€FØ—,‘,Ô4Ó5€Ká�q˜! Ô#Ð'7Ò7Ð7Ð7ô 
”
Ô	˜wÙ�A�q˜! Õ#÷ 
à‡M�MÐSÔTñ ��1˜! Õ#ä	”
Ô	˜wÙ�A�q˜! Õ#÷ 
à‡M�MÐSÔTð —,‘,Ô4¸e¸W�,ÓE€KÙ�q˜! ¨Ô*¨lÒ:Ð:Ð:Ù�q˜! ¨	Ô2°lÒBÐBÑB÷ 
Ð	ú÷ 
Ð	ús   ÁC.ÂC:Ã.C7Ã:Dc                 óx   — t        | j                  d¬«      }|j                  t        «      } |dd«      dk(  sJ ‚y )Nr   r$   r(   g       @g      @)r   rZ   r)   rq  )r`   r.   rv  s      r    Útest_memory_func_with_signaturerz  b  s6   € Ü˜VŸ^™^°QÔ7€FØ—,‘,Ô2Ó3€Ká�q˜#Ó #Ò%Ð%Ñ%r"   c                 ó–  — t        | j                  d¬«      }|j                  «       d„ «       }t        t	        |«      «      }|D ]
  } ||«       Œ t        |«      }|D �cg c]  }|j                  |«      ‘Œ }}|D �cg c]7  }t        j                  j                  |j                  j                  ||«      ‘Œ9 }	}||	|fS c c}w c c}w )Nr   r$   c                  ó   — y)NÁè  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar   ©rP   s    r    Úget_1000_bytesz(_setup_toy_cache.<locals>.get_1000_bytesl  s   € àr"   )r   rZ   r)   rY   r*   r   r  r8   r9   r:   r6   r%   )
r`   Ú
num_inputsr.   r  ÚinputsrP   r  Úhash_dirnamesr  Úfull_hashdirss
             r    Ú_setup_toy_cacher„  i  sÑ   € Ü˜VŸ^™^°QÔ7€Fà‡\�\ƒ^ñó ðô ”%˜
Ó#Ó$€FÛˆÙ�sÕð ô % ^Ó4€GÙAGÓHÁ¸#�^×0Ñ0°Õ5À€MÐHñ %óá$ˆGô 	�‰�‰�^×1Ñ1×:Ñ:¸GÀWÕMØ$ð ð ð �= .Ð0Ð0ùò Iùòs   Á CÁ><Cc                 ó’  — t        | «      \  }}}|j                  j                  «       }|D �cg c]  }|j                  ‘Œ }}t	        |«      t	        |«      k(  sJ ‚d„ }|D �cg c]
  } ||«      ‘Œ }	}|D �cg c]  }|j
                  ‘Œ }
}|
|	k(  sJ ‚|D �cg c]"  }t        j                  j                  |d«      ‘Œ$ }}|D �cg c]>  }t        j                  j                  t        j                  j                  |«      «      ‘Œ@ }}|D �cg c]  }|j                  ‘Œ }}||k(  sJ ‚y c c}w c c}w c c}w c c}w c c}w c c}w )Nc                 ó°   — t        j                  | «      D �cg c]"  }t         j                  j                  | |«      ‘Œ$ }}t	        d„ |D «       «      S c c}w )Nc              3   óZ   K  — | ]#  }t         j                  j                  |«      –— Œ% y ­wrB   )r8   r9   Úgetsize)rp   rD  s     r    rr   z:test__get_items.<locals>.get_files_size.<locals>.<genexpr>†  s   è ø€ Ð<±¨2”2—7‘7—?‘? 2×&±ùs   ‚)+)r8   r   r9   r:   Úsum)Ú	directoryÚfnÚ
full_pathss      r    Úget_files_sizez'test__get_items.<locals>.get_files_size„  sG   € Ü<>¿J¹JÀyÔ<QÓRÑ<Q°b”b—g‘g—l‘l 9¨bÕ1Ð<Qˆ
ÐRÜÑ<±Ó<Ó<Ð<ùò Ss   ˜'Ar3   )r„  r6   r7   r9   ÚsetÚsizer8   r:   ÚdatetimeÚfromtimestampÚgetatimeÚlast_access)r`   r.   Úexpected_hash_dirsr0   ÚitemsÚciÚ	hash_dirsr�  Úhash_dirÚexpected_hash_cache_sizesÚhash_cache_sizesÚoutput_filenamesr‹  Úexpected_last_accessesÚlast_accessess                  r    Útest__get_itemsrž  ~  sO  € Ü$4°VÓ$<Ñ!€FÐ Ø× Ñ ×*Ñ*Ó,€EÙ#(Ó)¡5˜R�—“ 5€IÐ)Üˆy‹>œSÐ!3Ó4Ò4Ð4Ð4ò=ñ KTÓ TÉ)¸h¡°Õ!9È)ÐÐ TÙ*/Ó0©% B˜Ÿ›¨%ÐÐ0ØÐ8Ò8Ð8Ð8áMVÓWÉYÀœŸ™Ÿ™ X¨|Õ<ÈYÐÐWñ IYóÙHXÀ"Œ×Ñ×'Ñ'¬¯©×(8Ñ(8¸Ó(<Õ=ÐHXð ð ñ /4Ó4©e¨�R—^“^¨e€MÐ4ØÐ2Ò2Ð2Ñ2ùò# *ùò !UùÚ0ùò Xùòùò 5s$   ®D+Á#D0Á8D5Â'D:ÃAD?ÄEc                 óV  — t        | d¬«      \  }}}|j                  j                  d«      }|g k(  sJ ‚t        | «      \  }}}|j                  j                  «       }|j                  j                  d«      }t	        |«      }t
        j                  t        |«      t        |«      «      sJ ‚t	        |«      |dz
  k(  sJ ‚|j                  j                  d«      }t        |«      t        |«      k(  sJ ‚|j                  j                  d«      }|g k(  sJ ‚d}	|j                  j                  |	«      }
t        |
«      sJ t        |«      «       ‚|j                  j                  d	«      }t        |«      j                  |«      }t        d
„ |D «       «      t        d„ |D «       «      k  sJ ‚y )Nr   )r€  Ú1KÚ2Kr(   i   Ú1Méô  ip  c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrB   ©r“  ©rp   r–  s     r    rr   z,test__get_items_to_delete.<locals>.<genexpr>¸  s   è ø€ Ð>Ñ(= "ˆr�~�~Ñ(=ùó   ‚c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrB   r¥  r¦  s     r    rr   z,test__get_items_to_delete.<locals>.<genexpr>¸  s   è ø€ ð FÙ!0˜2ˆ��¡ùr§  )r„  r6   Ú_get_items_to_deleter7   r+   rŽ  ÚissubsetÚsortedÚ
differenceÚmaxÚmin)r`   r.   r0   Ú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­  € ä# F°qÔ9�L€FˆAˆqØ×*Ñ*×?Ñ?ÀÓE€OØ˜bÒ Ð Ð ä)9¸&Ó)AÑ&€FÐ# QØ× Ñ ×*Ñ*Ó,€Eð ×*Ñ*×?Ñ?ÀÓE€OÜÐ+Ó,€IÜ�<‰<œ˜OÓ,¬c°%«jÔ9Ð9Ð9ÜˆÓ 9¨q¡=Ò0Ð0Ð0ð #×0Ñ0×EÑEÀdÓKÐÜ�/Ó"¤fÐ-BÓ&CÒCÐCÐCð #×0Ñ0×EÑEÀdÓKÐØ  BÒ&Ð&Ð&ð  ÐØ!×/Ñ/×DÑDØóÐô Ð#Ô$Ð0¤c¨%£jÓ0Ð$ð #×0Ñ0×EÑEÀdÓKÐÜ˜%“j×+Ñ+Ð,AÓB€OäÑ>Ñ(=Ó>Ó>Ä#ñ FÙ!0óFó Cò ð ñ r"   c                 óœ  — t        | «      \  }}}|j                  j                  «       }|j                  «        |j                  j                  «       }t	        |«      t	        |«      k(  sJ ‚|j                  d¬«       |j                  j                  «       }t	        |«      t	        |«      k(  sJ ‚|j                  d¬«       |j                  j                  «       }t
        j                  t        |«      t        |«      «      sJ ‚t        |«      dk(  sJ ‚d}|j                  |¬«       |j                  j                  «       }|g k(  sJ ‚y )Nr¢  )Úbytes_limitÚ3Kr   r£  ©r„  r6   r7   Úreduce_sizer«  rŽ  rª  r+   )r`   r.   r0   Úref_cache_itemsÚcache_itemsr´  s         r    Ú#test_memory_reduce_size_bytes_limitrÀ  ½  s3  € Ü# FÓ+�L€FˆAˆqØ×*Ñ*×4Ñ4Ó6€Oð ×ÑÔØ×&Ñ&×0Ñ0Ó2€KÜ�/Ó"¤f¨[Ó&9Ò9Ð9Ð9ð ×Ñ 4ÐÔ(Ø×&Ñ&×0Ñ0Ó2€KÜ�/Ó"¤f¨[Ó&9Ò9Ð9Ð9ð ×Ñ 4ÐÔ(Ø×&Ñ&×0Ñ0Ó2€KÜ�<‰<œ˜KÓ(¬#¨oÓ*>Ô?Ð?Ð?Üˆ{Ó˜qÒ Ð Ð ð  ÐØ
×ÑÐ#8ÐÔ9Ø×&Ñ&×0Ñ0Ó2€KØ˜"ÒÐÑr"   c                 ó˜  — t        | «      \  }}}|j                  j                  «       }|j                  «        |j                  j                  «       }t	        |«      t	        |«      k(  sJ ‚|j                  d¬«       |j                  j                  «       }t	        |«      t	        |«      k(  sJ ‚|j                  d¬«       |j                  j                  «       }t
        j                  t        |«      t        |«      «      sJ ‚t        |«      dk(  sJ ‚|j                  d¬«       |j                  j                  «       }|g k(  sJ ‚y )NrS   )Úitems_limitr   r   r¼  )r`   r.   r0   r¾  r¿  s        r    Ú#test_memory_reduce_size_items_limitrÃ  Ù  s,  € Ü# FÓ+�L€FˆAˆqØ×*Ñ*×4Ñ4Ó6€Oð ×ÑÔØ×&Ñ&×0Ñ0Ó2€KÜ�/Ó"¤f¨[Ó&9Ò9Ð9Ð9ð ×Ñ 2ÐÔ&Ø×&Ñ&×0Ñ0Ó2€KÜ�/Ó"¤f¨[Ó&9Ò9Ð9Ð9ð ×Ñ 1ÐÔ%Ø×&Ñ&×0Ñ0Ó2€KÜ�<‰<œ˜KÓ(¬#¨oÓ*>Ô?Ð?Ð?Üˆ{Ó˜qÒ Ð Ð ð ×Ñ 1ÐÔ%Ø×&Ñ&×0Ñ0Ó2€KØ˜"ÒÐÑr"   c                 ó  — dd l }dd l}t        | «      \  }}}|j                  j	                  «       }|j                  «        |j                  j	                  «       }t        |«      t        |«      k(  sJ ‚|j                   |j                  d¬«      ¬«       |j                  j	                  «       }t        |«      t        |«      k(  sJ ‚ |j                  d«        |d«        |d«       |j                   |j                  d¬«      ¬«       |j                  j	                  «       }t        j                  t        |«      t        |«      «      rJ ‚t        |«      dk(  sJ ‚t        j                  t        d	¬
«      5  |j                   |j                  d¬«      ¬«       d d d «        |j                  d«       |j                   |j                  d¬«      ¬«       |j                  j	                  «       }|g k(  sJ ‚y # 1 sw Y   Œ`xY w)Nr   r(   )Údays)Ú	age_limitéÿÿÿÿéþÿÿÿ©Úsecondsr   zhas to be a positive©ru  gü©ñÒMbP?)r�  r€   r„  r6   r7   r½  r«  Ú	timedeltar�   rŽ  rª  r+   r8  r   rt  )r`   r�  r€   r.   r0   Ú	put_cacher¾  r¿  s           r    Ú!test_memory_reduce_size_age_limitrÎ  ô  sÆ  € ÛÛä+¨FÓ3Ñ€FˆAˆyØ×*Ñ*×4Ñ4Ó6€Oð ×ÑÔØ×&Ñ&×0Ñ0Ó2€KÜ�/Ó"¤f¨[Ó&9Ò9Ð9Ð9ð ×ÑÐ!3 ×!3Ñ!3¸Ô!;ÐÔ<Ø×&Ñ&×0Ñ0Ó2€KÜ�/Ó"¤f¨[Ó&9Ò9Ð9Ð9ð €D‡J�Jˆq„MÙˆb„MÙˆb„MØ
×ÑÐ!3 ×!3Ñ!3¸AÔ!>ÐÔ?Ø×&Ñ&×0Ñ0Ó2€KÜ�|‰|œC Ó,¬c°/Ó.BÔCÐCÐCÜˆ{Ó˜qÒ Ð Ð ô 
�‰”zÐ)?Ö	@Ø×ÑÐ%7 X×%7Ñ%7ÀÔ%CÐÔD÷ 
Að €D‡J�JˆuÔØ
×ÑÐ!3 ×!3Ñ!3¸AÔ!>ÐÔ?Ø×&Ñ&×0Ñ0Ó2€KØ˜"ÒÐÑ÷ 
AÐ	@ús   Å?$HÈHc                 óÆ   — t        | «      \  }}}|j                  «        t        j                  |j                  j
                  «      g k(  sJ ‚|j                  d¬«      rJ ‚y )Nrx   )Ú
stacklevel)r„  r]   r8   r   r6   r%   r  )r`   r.   r0   ra   s       r    Útest_memory_clearrÑ    sZ   € Ü# FÓ+�L€FˆAˆqØ
‡L�L„Nä�:‰:�f×*Ñ*×3Ñ3Ó4¸Ò:Ð:Ð:ð ×*Ñ*°aÐ*Ô8Ð8Ð8Ð8r"   c                  ó   — dgdz  } | S )Nr}  iè  r   )Úcomplex_objs    r    Úfast_func_with_complex_outputrÔ  #  s   € Ø�, Ñ%€KØÐr"   c                 ón   — t        t        d«      «      D �ci c]  }t        |«      |“Œ }}| r|S dS c c}w )Ng     jø@zsimple output)r*   Úintr£   )Úcomplex_outputr/   rÓ  s      r    Ú)fast_func_with_conditional_complex_outputrØ  (  s8   € Ü&+¬C°«H¤oÓ6¡o ”3�q“6˜1‘9 o€KÐ6Ù(ˆ;Ð=¨oÐ=ùò 7s   —2c                 óæ   ‡— t        | j                  ¬«      }|j                  t        «      Š t	        d¬«      ˆfd„t        d«      D «       «       |j                  «       \  }}d}||vsJ ‚||vsJ ‚y )Nr+  r   rk   c              3   ó>   •K  — | ]  } t        ‰«      «       –— Œ y ­wrB   rn   ©rp   r/   rv  s     €r    rr   zMtest_cached_function_race_condition_when_persisting_output.<locals>.<genexpr>5  s   øè ø€ Ð@±x°!Ð+”w˜{Ó+×-±xùs   ƒr'   rÔ   )r   rZ   r)   rÔ  r   r*   rV  ©r`   Úcapfdr.   rS  ÚstderrrÞ   rv  s         @r    Ú:test_cached_function_race_condition_when_persisting_outputrß  -  sp   ø€ ô
 ˜VŸ^™^Ô,€FØ—,‘,Ô<Ó=€Kà„H�AÔÓ@´u¸Q´xÓ@Ô@à×%Ñ%Ó'�N€FˆFð
 6€MØ Ñ&Ð&Ð&Ø Ñ&Ð&Ñ&r"   c                 óæ   ‡— t        | j                  ¬«      }|j                  t        «      Š t	        d¬«      ˆfd„t        d«      D «       «       |j                  «       \  }}d}||vsJ ‚||vsJ ‚y )Nr+  r   rk   c              3   óT   •K  — | ]  } t        ‰«      |d z  dk(  rdnd«      –— Œ! y­w)r   r   TFNrn   rÛ  s     €r    rr   zOtest_cached_function_race_condition_when_persisting_output_2.<locals>.<genexpr>K  s.   øè ø€ ð ÙEMÀÐŒ�Ó Q¨¡U¨a¢Z™T°U×;ÁXùs   ƒ%(r'   rÔ   )r   rZ   r)   rØ  r   r*   rV  rÜ  s         @r    Ú<test_cached_function_race_condition_when_persisting_output_2râ  A  sy   ø€ ô ˜VŸ^™^Ô,€FØ—,‘,ÔHÓI€Kà„H�AÔó ÜEJÈ1ÄXóô ð ×%Ñ%Ó'�N€FˆFð
 6€MØ Ñ&Ð&Ð&Ø Ñ&Ð&Ñ&r"   c                 óæ  — t        | j                  ¬«      }d„ }|j                  |«      }d} ||«      \  }}||k(  sJ ‚t        |«       t	        ||«      } ||«      \  }	}
t        |«      dk(  sJ ‚d}||d   v sJ ‚|	|k(  sJ ‚|
|kD  sJ ‚t        |«       |j                  |«      }	 |j                  «        t        d«      ‚# t        $ r%}d}|t        |j                  «      v sJ ‚Y d }~y d }~ww xY w)	Nr+  c                 óX   — t        j                  d«       | t        j                   «       fS )Ng{®Gáz„?©r€   r�   r~  s    r    r,   zItest_memory_recomputes_after_an_error_while_loading_results.<locals>.func\  s!   € ô 	�
‰
�4ÔØ”D—I‘I“KÐÐr"   rP   r(   rÔ   r   z<It normally not possible to load a corrupted MemorizedResultzis corrupted)r   rZ   r)   r?   rK   r+   r-  r.  ÚAssertionErrorr/  r£   rù   )r`   rÚ   r.   r,   Úcached_funcÚ	input_argrP   rI  rÜ   Úrecomputed_argÚrecomputed_timestamprÞ   Ú	referenceÚer¤   s                  r    Ú;test_memory_recomputes_after_an_error_while_loading_resultsrí  Y  s  € Ü˜VŸ^™^Ô,€Fò ð —,‘,˜tÓ$€KØ€IÙ  Ó+�N€Cˆð �)ÒÐÐô ˜fÔ%ô 5°[À+ÓNÐÙ+6°sÓ+;Ñ(€NÐ(ÜÐ Ó! QÒ&Ð&Ð&Ø5€MØÐ-¨aÑ0Ñ0Ð0Ð0Ø˜SÒ Ð Ð Ø )Ò+Ð+Ð+ô ˜fÔ%Ø×+Ñ+¨CÓ0€Ið&Ø�‰ŒÜØJó
ð 	
øô ò &Ø ˆØœ#˜aŸf™f›+Ñ%Ð%Õ%ûð&ús   Â'C Ã	C0ÃC+Ã+C0c                   ó   — e Zd ZdZy)ÚIncompleteStoreBackendzAThis backend cannot be instantiated and should raise a TypeError.N)rä   r_   rå   Ú__doc__r   r"   r    rï  rï  †  s   „ ÙKàr"   rï  c                   ó@   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy
)ÚDummyStoreBackendz(A dummy store backend that does nothing.c                  ó   — y)zOpen an item on store.Nr   )Úselfrù   rú   s      r    Ú
_open_itemzDummyStoreBackend._open_item�  ó   € àr"   c                  ó   — y)z!Check if an item location exists.Nr   ©rô  r%   s     r    Ú_item_existszDummyStoreBackend._item_exists“  rö  r"   c                  ó   — y)z&Move an item from src to dst in store.Nr   )rô  ÚsrcÚdsts      r    Ú
_move_itemzDummyStoreBackend._move_item—  rö  r"   c                  ó   — y)zCreate location on store.Nr   rø  s     r    Úcreate_locationz!DummyStoreBackend.create_location›  rö  r"   c                  ó   — y)z&Check if an object exists in the storeFr   ©rô  Úobjs     r    r  zDummyStoreBackend.existsŸ  s   € àr"   c                  ó   — y)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    r7   zDummyStoreBackend.get_items§  s   € àˆ	r"   c                  ó   — y)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  r7   r  r   r"   r    rò  rò  Œ  s-   „ Ù2òòòòòòòór"   rò  Úinvalid_prefixc                 ó†   — t        t        «      5 }t        | d «       d d d «       j                  d«       y # 1 sw Y   ŒxY w)Nz&Store backend name should be a string*©r   rt  r   ru  )r  rw  s     r    Ú(test_register_invalid_store_backends_keyr  °  s3   € ô 
”
Ô	˜wÜ˜~¨tÔ4÷ 
à‡M�MÐ;Õ<÷ 
Ð	úó	   �7·A c                  ó†   — t        t        «      5 } t        dd «       d d d «        j                  d«       y # 1 sw Y   ŒxY w)NÚfsz.Store backend should inherit StoreBackendBase*r
  ©rw  s    r    Ú+test_register_invalid_store_backends_objectr  ¸  s3   € ô 
”
Ô	˜wÜ˜t TÔ*÷ 
à‡M�MÐCÕD÷ 
Ð	úr  c                  óˆ   — t        t        «      5 } t        dd¬«       d d d «        j                  d«       y # 1 sw Y   ŒxY w)Nz/tmp/joblibÚunknown)r%   ÚbackendzUnknown location*)r   Ú	TypeErrorr   ru  r  s    r    Ú!test_memory_default_store_backendr  À  s1   € ä	”	Ô	˜gÜ˜¨yÕ9÷ 
à‡M�MÐ&Õ'÷ 
Ð	ús	   �8¸Ac                  óÄ   —  G d„ d«      }  | «       }t        t        «      5 }t        d|¬«       d d d «       d}|t        d   j                  «      v sJ ‚y # 1 sw Y   Œ(xY w)Nc                   ó   — e Zd Zy)ú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  Ç  sc   € ÷ñ ñ 5Ó6Ðä	Œ{Ô	˜xÜ˜wÐ1EÕF÷ 
ð	ð ð
 œc (¨1¡+×"5Ñ"5Ó6Ñ6Ð6Ñ6÷ 
Ð	ús   ¡AÁAc                  óæ   — d} t        | t        «       | t        ft        j                  «       v sJ ‚t	        t
        «      5 }t        | d«       d d d «       j                  d«       y # 1 sw Y   ŒxY w)NÚisbÚfake_locationznCan't instantiate abstract class IncompleteStoreBackend (without an implementation for|with) abstract methods*)r   rï  r   r•  r   r  r   ru  )Úbackend_namerw  s     r    Ú)test_instanciate_incomplete_store_backendr#  Ø  se   € ð €LÜ˜<Ô)?Ô@ØÔ0Ð1´_×5JÑ5JÓ5LÑLÐLÐLÜ	”	Ô	˜gÜ˜|¨_Ô=÷ 
à‡M�Mð	Aõ÷ 
Ð	ús   Á A'Á'A0c                  ó    — d} t        | t        «       | t        ft        j                  «       v sJ ‚t	        | d«      }t        |t        «      sJ ‚y )NÚdsbÚdummy_location)r   rò  r   r•  r   rÖ   )r"  Úbackend_objs     r    Útest_dummy_store_backendr(  æ  sO   € ð €LÜ˜<Ô):Ô;ØÔ+Ð,´×0EÑ0EÓ0GÑGÐGÐGä(¨Ð7GÓH€KÜ�kÔ#4Ô5Ð5Ñ5r"   c                  ó¾   — t        d«      } t        d| «      }	 |j                  dk(  sJ ‚	 t        j                  dd¬«       y # t        j                  dd¬«       w xY w)NÚsome_folderr  TrV   )r   r   r%   r[   r\   )r9   r'  s     r    Ú0test_instanciate_store_backend_with_pathlib_pathr+  ñ  sN   € ä�Ó€DÜ(¨°$Ó7€Kð9Ø×#Ñ# }Ò4Ð4Ñ4ä�‰�m°4Ö8øŒ�‰�m°4Ö8ús   ™A ÁAc                 ó.  — d}t        «       }|j                  �J ‚t        |«       t        |«      |j	                  d ¬«      k(  sJ ‚|j                  | j                  «       t        |«      |j	                  | j                  ¬«      k(  sJ ‚t        |«       y )Nz-FileSystemStoreBackend(location="{location}")r+  )r   r%   rJ  r£   ry   r  rZ   )r`   Úrepr_patternr  s      r    Ú"test_filesystem_store_backend_reprr.  û  sŠ   € ð C€LÜ$Ó&€GØ×ÑÐ#Ð#Ð#äˆ„Mäˆw‹<˜<×.Ñ.¸Ð.Ó=Ò=Ð=Ð=ð ×Ñ�f—n‘nÔ%äˆw‹<˜<×.Ñ.¸¿¹Ð.ÓGÒGÐGÐGäˆ…Mr"   c                 óì  — d„ }t        | j                  d¬«      }|j                  |«      }d}t        |«      |j	                  ||j
                  j                  ¬«      k(  sJ ‚|j                  dd«      }d}t        |«      |j	                  |j
                  j                  |j                  |j                  ¬«      k(  sJ ‚t        |«      d	j	                  |j
                  j                  ¬
«      k(  sJ ‚y )Nc                 ó   — | |z   S rB   r   r_  s     r    Úmy_funcz)test_memory_objects_repr.<locals>.my_func  s   € Ø�1‰uˆ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   rZ   r)   r£   ry   r6   r%   r-  r  r  )r`   r1  r.   Úmemorized_funcÚmemorized_func_reprÚmemorized_resultÚmemorized_result_reprs          r    Útest_memory_objects_reprr7    s  € òô ˜VŸ^™^°QÔ7€FØ—\‘\ 'Ó*€NàKÐäˆ~ÓÐ"5×"<Ñ"<Ø˜v×3Ñ3×<Ñ<ð #=ó #ò ð ð ð &×5Ñ5°b¸"Ó=Ðð 	Uð ô ÐÓ Ð$9×$@Ñ$@Ø×%Ñ%×.Ñ.Ø×%Ñ%Ø ×(Ñ(ð %Aó %ò ð ð ô ˆv‹;Ð7×>Ñ>Ø×%Ñ%×.Ñ.ð ?ó ò ð ñ r"   c                 óÆ  — t        | j                  ¬«      }|j                  d„ «       }|j                  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 ‚y )Nr+  c                 ó   — | dz  S rÐ   r   rž   s    r    ra   z'test_memorized_result_pickle.<locals>.g6  ó   € à�!‰tˆr"   rx   )r   rZ   r)   r-  r  r  r  r6   r%   r,   r  r£   )r`   r.   ra   r5  Úmemorized_result_pickleÚmemorized_result_loadss         r    Útest_memorized_result_pickler=  /  sÜ   € ô
 ˜VŸ^™^Ô,€Fà‡\�\ñó ðð ×(Ñ(¨Ó+ÐÜ$Ÿl™lÐ+;Ó<ÐÜ#Ÿ\™\Ð*AÓBÐð 	×&Ñ&×/Ñ/Ø!×/Ñ/×8Ñ8ò	9ðð	9ð × Ñ Ð$:×$?Ñ$?Ò?Ð?Ð?Ø×#Ñ#Ð'=×'EÑ'EÒEÐEÐEÜÐÓ ¤CÐ(>Ó$?Ò?Ð?Ñ?r"   c                 óð   — |€g }t        | «      }t        |«      }t        |j                  «       «      t        |j                  «       «      k(  sJ ‚|j                  «       D ]  }||v rŒ||   ||   k(  rŒJ ‚ y rB   )ÚvarsrŽ  Úkeys)ÚleftÚrightÚignored_attrsÚ	left_varsÚ
right_varsÚattrs         r    ÚcomparerG  G  sx   € ØÐØˆä�T“
€IÜ�e“€JÜˆy�~‰~ÓÓ ¤C¨
¯©Ó(9Ó$:Ò:Ð:Ð:Ø—‘Ö ˆØ�=Ñ ØØ˜‰ *¨TÑ"2Ó2Ð2Ð2ñ !r"   Úmemory_kwargsr'   r   )rU   r&   r%  Ú	parameterÚunused)rT   r&   Úbackend_optionsc                 óZ  — t        dd| j                  i|¤Ž}t        j                  t        j                  |«      «      }t        |j                  |j                  «       t        ||t        g d¢«      ¬«       t        |«      t        |«      k(  sJ ‚|j                  t        «      }t        j                  t        j                  |«      «      }t        |j                  |j                  «       t        ||t        g d¢«      ¬«       t        |«      t        |«      k(  sJ ‚|j                  d«      }t        j                  t        j                  |«      «      }t        |j                  |j                  «       t        ||t        g d¢«      ¬«       t        |«      t        |«      k(  sJ ‚y )Nr%   )r6   rI  Ú_func_code_id)rC  r(   r   )r   rZ   r  r  r  rG  r6   rŽ  r   r)   r!   r-  )r`   rH  r.   Úmemory_reloadedrv  Úfunc_cached_reloadedr5  Úmemorized_result_reloadeds           r    Útest_memory_pickle_dump_loadrQ  T  s`  € ô Ñ=˜VŸ^™^Ð=¨}Ñ=€Fä—l‘l¤6§<¡<°Ó#7Ó8€Oô ˆF× Ñ  /×"?Ñ"?Ô@ÜØØÜÒIÓJõô
 �‹<œ4 Ó0Ò0Ð0Ð0à—,‘,œq“/€Kä!Ÿ<™<¬¯©°[Ó(AÓBÐô ˆK×%Ñ%Ð';×'IÑ'IÔJÜØØÜÒIÓJõô
 �Ó¤Ð%9Ó :Ò:Ð:Ð:ð #×2Ñ2°1Ó5ÐÜ &§¡¬V¯\©\Ð:JÓ-KÓ LÐäÐ×*Ñ*Ð,E×,SÑ,SÔTÜØØ!ÜÒIÓJõô
 Ð Ó!¤TÐ*CÓ%DÒDÐDÑDr"   c                 óŠ  — |j                  t        j                  «       d}t        | j                  d¬«      }|j
                  d„ «       } ||«      }d|j                  v sJ ‚|j                  «        t        | j                  d¬«      }|j
                  d„ «       } ||«      }d|j                  vsJ ‚|j                  «        y )Nr'   é   r$   c                 ó   — | dz  S rÐ   r   rž   s    r    r!   ztest_info_log.<locals>.f‰  r:  r"   ÚQueryingr   c                 ó   — | dz  S rÐ   r   rž   s    r    r!   ztest_info_log.<locals>.f“  r:  r"   )Ú	set_levelÚloggingÚINFOr   rZ   r)   Útextr]   )r`   Úcaplogr   r.   r!   r0   s         r    Útest_info_logr\  ƒ  s±   € Ø
×Ñ”W—\‘\Ô"Ø	€Aä˜VŸ^™^°RÔ8€Fà‡\�\ñó ðñ 	
ˆ!‹€AØ˜Ÿ™Ñ$Ð$Ð$Ø
‡L�L„Nä˜VŸ^™^°QÔ7€Fà‡\�\ñó ðñ 	
ˆ!‹€AØ˜VŸ[™[Ñ(Ð(Ð(Ø
‡L�L…Nr"   c                   ór   — e Zd ZdZdd„Zd„ Zej                  j                  dddg«      d„ «       Z	d	„ Z
d
„ Zy)ÚTestCacheValidationCallbackz.Tests on parameter `cache_validation_callback`Nc                 óD   — d|d<   |�t        j                  |«       |dz  S )NTÚrunr   rå  )rô  r   rÝ   Údelays       r    ÚfoozTestCacheValidationCallback.fooŸ  s&   € Øˆˆ%‰ØÐÜ�J‰J�uÔØ�1‰uˆr"   c                 óŒ   — d}t        j                  t        |¬«      5  |j                  d¬«       ddd«       y# 1 sw Y   yxY w)z2Test invalid values for `cache_validation_callbackz9cache_validation_callback needs to be callable. Got True.rË  Tr"  N)r8  r   rt  r)   )rô  r.   ru  s      r    Ú&test_invalid_cache_validation_callbackzBTestCacheValidationCallback.test_invalid_cache_validation_callback¥  s/   € àKˆÜ�]‰]œ:¨UÖ3Ø�L‰L°4ˆLÔ8÷ 4×3Ñ3ús	   ž:ºAr  TFc                 ó´   ‡— |j                  | 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   ‰k7  sJ ‚y)	zTest expiry of old resultsc                 ó   •— ‰S rB   r   r!  s    €r    rš   zUTestCacheValidationCallback.test_constant_cache_validation_callback.<locals>.<lambda>°  s   ø€ Ñ0Dr"   rÝ   ©r#  rï   r`  Fr   rx   N©r)   rb  )rô  r.   r  r!   Úd1Úd2s     `   r    Ú'test_constant_cache_validation_callbackzCTestCacheValidationCallback.test_constant_cache_validation_callback«  s}   ø€ ð �L‰LØ�H‰HÛ&DØ�5ð ó 
ˆð ˜� %¨ ˆBˆÙ��B‹x˜1Š}Ðˆ}Ù��B‹x˜1Š}Ðˆ}à�%ŠyÐˆyØ�%‰yÐ0Ò0Ð0Ñ0r"   c                 ó   — d„ }|j                  | 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 ‚y)z*Test cache validity based on run duration.c                 ó   — | d   }|dkD  ryy )NÚdurationgš™™™™™¹?Tr   )Úmetadatarn  s     r    r#  z^TestCacheValidationCallback.test_memory_only_cache_long_run.<locals>.cache_validation_callback¾  s   € Ø 
Ñ+ˆHØ˜#Š~Øð r"   rÝ   rg  r`  Fr   r   )ra  rx   rw   Nrh  )rô  r.   r#  r!   ri  rj  s         r    Útest_memory_only_cache_long_runz;TestCacheValidationCallback.test_memory_only_cache_long_run»  sà   € ò	ð
 �L‰LØ�H‰HÐ0IÐSVÐRWð ó 
ˆð
 ˜� %¨ ˆBˆÙ��B˜aÔ  AÒ%Ð%Ð%Ù��B˜aÔ  AÒ%Ð%Ð%Ø�%ŠyÐˆyØ�%ŠyÐˆyð ˜� %¨ ˆBˆÙ��B˜cÔ" aÒ'Ð'Ð'Ù��B˜cÔ" aÒ'Ð'Ð'Ø�%ŠyÐˆyØ�e’9Ðˆ}�9r"   c                 ó  — |j                  | 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 ‚y
)z!Test expiry of old cached resultsg333333Ó?rÉ  rÝ   rg  r`  Fr   rx   r4  N)r)   rb  r   r€   r�   )rô  r.   r!   ri  rj  Úd3s         r    Útest_memory_expires_afterz5TestCacheValidationCallback.test_memory_expires_afterÕ  s«   € ð �L‰LØ�H‰H´ÀcÔ0JÐTWÐSXð ó 
ˆð ˜U�^ e¨U ^°e¸U°^�ˆBˆÙ��B‹x˜1Š}Ðˆ}Ù��B‹x˜1Š}Ðˆ}Ü�
‰
�3ŒÙ��B‹x˜1Š}Ðˆ}à�%ŠyÐˆyØ�e’9Ðˆ}Ø�%ŠyÐ‰yr"   rB   )rä   r_   rå   rð  rb  rd  r8  Úmarkr   rk  rp  rs  r   r"   r    r^  r^  œ  sD   „ Ù4óò9ð ‡[�[×ÑÐ3°d¸E°]ÓCñ1ó Dð1òó4r"   r^  c                   ó,   — e Zd ZdZed„ «       Zd„ Zd„ Zy)ÚTestMemorizedFuncú8Tests for the MemorizedFunc and NotMemorizedFunc classesc                 ó<   — |j                  | d«      dz   || <   ||    S )Nr   r(   )r.  )r   Úcounters     r    r!   zTestMemorizedFunc.fê  s%   € à—[‘[  AÓ&¨Ñ*ˆ�‰
Ø�q‰zÐr"   c                 óì   — |j                  | j                  dg¬«      }i } |d|«      dk(  sJ ‚ |d|«      dk(  sJ ‚|j                  d|«      \  }}|dk(  sJ d«       ‚t        |t        «      sJ d«       ‚y)úTest calling the functionry  rî   r   r(   úf has not been called properlyú0Metadata are not returned by MemorizedFunc.call.N)r)   r!   ÚcallrÖ   Údict©rô  r.   r!   ry  r   Úmetas         r    Útest_call_method_memorizedz,TestMemorizedFunc.test_call_method_memorizedï  s‰   € ð �L‰L˜Ÿ™¨¨ˆLÓ4ˆàˆÙ��G‹} Ò!Ð!Ð!Ù��G‹} Ò!Ð!Ð!à—&‘&˜˜GÓ$‰ˆˆ4Ø�AŠvÐ7Ð7Ó7ˆvÜ˜$¤Ô%ð 	
Ø>ó	
Ñ%r"   c                 óÚ   — t        | j                  «      }i } |d|«      dk(  sJ ‚ |d|«      dk(  sJ ‚|j                  d|«      \  }}|dk(  sJ d«       ‚t        |t        «      sJ d«       ‚y)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   € ô ˜TŸV™VÓ$ˆàˆÙ��G‹} Ò!Ð!Ð!Ù��G‹} Ò!Ð!Ð!à—&‘&˜˜GÓ$‰ˆˆ4Ø�AŠvÐ7Ð7Ó7ˆvÜ˜$¤Ô%ð 	
Ø>ó	
Ñ%r"   N)rä   r_   rå   rð  Ústaticmethodr!   r‚  r„  r   r"   r    rv  rv  ç  s!   „ Ù>àñó ðò
ó
r"   rv  c                   ó   — e Zd ZdZd„ Zd„ Zy)ÚTestAutoGitignorerw  c                 óà   — t        |j                  d«      «      }t        |«      }|j                  t        «      } |d«       |dz  }|j                  «       sJ ‚|j                  «       dk(  sJ ‚y)zsTest that using the memory object automatically creates a `.gitignore` file
        within the new cache directory.Útest_cache_dirr   ú
.gitignorez%# Created by joblib automatically.
*
N)r   rP  r   r)   Úidr  Ú	read_text)rô  r`   r%   ÚmemÚcostly_operationÚgitignore_files         r    Útest_memory_creates_gitignorez/TestAutoGitignore.test_memory_creates_gitignore  sl   € ô ˜Ÿ™Ð%5Ó6Ó7ˆä�XÓˆØŸ9™9¤R›=ÐÙ˜Ôà! LÑ0ˆØ×$Ñ$Ô&Ð&Ð&Ø×'Ñ'Ó)Ð-VÒVÐVÑVr"   c                 ó  — t        |j                  d«      «      }|dz  }d}|j                  |«       t        |«      } |j	                  t
        «      d«       |j                  «       sJ ‚|j                  «       |k(  sJ ‚y)zvTest that using the memory object does not overwrite an existing
        `.gitignore` file within the cache directory.r‰  rŠ  z# Existing .gitignore file!r   N)r   rP  Ú
write_textr   r)   r‹  r  rŒ  )rô  r`   r%   r�  Úexisting_contentr�  s         r    Ú1test_memory_does_not_overwrite_existing_gitignorezCTestAutoGitignore.test_memory_does_not_overwrite_existing_gitignore  s   € ô ˜Ÿ™Ð%5Ó6Ó7ˆØ! LÑ0ˆà8ÐØ×!Ñ!Ð"2Ô3ô �XÓˆØˆ�	‰	”"‹�aÔà×$Ñ$Ô&Ð&Ð&Ø×'Ñ'Ó)Ð-=Ò=Ð=Ñ=r"   N)rä   r_   rå   rð  r�  r”  r   r"   r    r‡  r‡    s   „ Ù>òWó>r"   r‡  ró   )rS   )TrB   )wrð  r�  r¶   rØ   rX  r8   Úos.pathr  r[   rR  r{   r€   Úpathlibr   r8  Újoblib._store_backendsr   r   Újoblib.hashingr   Újoblib.memoryr   r   r	   r
   r   r   r   r   r   r   r   r   Újoblib.parallelr   r   Újoblib.test.commonr   r   r   Újoblib.testingr   r   r   r!   r1   r?   rK   rd   rˆ   r�   r“   r›   r¨   r¬   r²   r¹   r½   rÀ   rÂ   rÍ   rß   rì   rõ   rÿ   r  r  r  r  rt  r)  r1  r>  rF  rL  r]  r`  rb  re  rg  ri  rn  rÖ  Úfloatrq  rx  rz  r„  rž  r¸  rÀ  rÃ  rÎ  rÑ  rÔ  rØ  rß  râ  rí  rï  rò  r  rY   r  r  r  r  r#  r(  r+  r.  r7  r=  rG  rQ  r\  r^  rv  r‡  r   r"   r    Ú<module>rž     s2  ðñó Û Û 	Û Û 	Û Û Û Û 
Û Û Ý ã ç KÝ ÷÷ ÷ ó ÷ .ß CÑ Cß 5Ñ 5ó
ò-òòò +ñ\ Ð# d¨E ]Ó3ñfAó 4ðfAòR;ò $ò 	Jò3ò4ò ?ò$?ò ð ó òð Ùˆ[˜4 ˜+Ó&ñ-ó 'ó ð-ð& ñ$ó ð$òNò*!ò&!ò6ñ( Ð)¨c¨U°C¸Ð,=ÀÀBÈ¸~Ð+NÓOñ
$ó Pð
$òò@
ð. ‡�×ÑÐ/°$¸°Ó?ñ+ó @ð+ò,ò.!=òH	òò@6+òr	ò
òòò ð
 (-°%ô ð˜3ð  5ð ¨Uó òCò4&ó1ò*3ò.%òPò8ò6"òJ9òó
>ð
 ñ'ó ð'ð& ñ'ó ð'ò.*&ôZ	Ð-ô 	ô!Ð(ô !ñH Ð ¡d£f©d«fÐ5Ó6ñ=ó 7ð=òEò(ò7ò"ò6ò9òò(ò@@ó0
3ð ‡�×ÑØà 1Ñ%Ø a¸[È(Ð<SÑTðóñ%Eóð%EòP÷2Hñ H÷V$
ñ $
÷N >ò  >r"   