Ë
    ÷Q(häÅ  ã            	       óÔ  — 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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„ 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 d'dfg«      d(„ «       ZAd)„ ZBd*„ ZCejˆ                  jQ                  d+ddg«      d,„ «       ZEd-„ ZFd.„ ZGd/„ ZHd0„ ZId1„ ZJd2„ ZKd3„ ZLd4„ ZMd5„ ZNd6„ ZOd7d8d9œd:„ZPd;eQd<eRd=eRfd>„ZSd?„ ZTd@„ ZUdodA„ZVdB„ ZWdC„ ZXdD„ ZYdE„ ZZdF„ Z[dG„ Z\dH„ Z]dpdI„Z^e%dJ„ «       Z_e%dK„ «       Z`dL„ Za G dM„ dNe«      Zb G dO„ dPe«      Zc e(dQd ed«        ee«       g«      dR„ «       ZfdS„ ZgdT„ ZhdU„ ZidV„ ZjdW„ ZkdX„ ZldY„ ZmdZ„ Znd[„ Zodqd\„Zpejˆ                  jQ                  d]d^d_d`œddadbdciddœg«      de„ «       Zqdf„ Zr G dg„ dh«      Zs G di„ dj«      Zte& e(dkdl ejê                  dl«       ejê                  dl«      jí                  «       g«      dm„ «       «       Zwy)rz
Test the memory module.
é    N)Ú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     úU/var/www/skyplay_api_hub/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_lazyr0   6   sk   € ô ˜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   sb   € Ø!×/Ñ/×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_fixturerF   rE   s      @r   Úmonkeypatch_cached_func_warnrJ   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'   rB   ©Úargr,   s    €r   r    z"test_memory_integration.<locals>.fc   ó   ø€ Ø×Ñ˜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_integrationrc   \   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    rW   r'   r   r#   Újoblibzipython-inputr&   r   ©Ún_jobsc              3   ó@   •K  — | ]  } t        ‰«      |«      –— Œ y ­wrA   ©r   ©Ú.0r.   Úcached_fs     €r   ú	<genexpr>zHtest_parallel_call_cached_function_defined_in_jupyter.<locals>.<genexpr>Ô   ó   øè ø€ Ò"H¸AÐ#4¤7¨8Ó#4°Q×#7Ñ"Hùó   ƒ)r'   r   c              3   ó@   •K  — | ]  } t        ‰«      |«      –— Œ y ­wrA   rm   rn   s     €r   rq   zHtest_parallel_call_cached_function_defined_in_jupyter.<locals>.<genexpr>Ú   rr   rs   é   çš™™™™™É?é   )Úformatrf   ÚcompileÚtextwrapÚdedentr^   Ú__code__Úco_filenamer   rY   r(   r*   r7   Úlistdirr   r)   ÚtimeÚsleep)r_   rd   Ú
session_noÚipython_cell_sourceÚipython_cell_idÚ	my_localsr    r-   Úf_cache_relative_directoryÚf_cache_directoryr/   rp   s              @r   Ú5test_parallel_call_cached_function_defined_in_jupyterr‡   Š   s�  ø€ ð" ó VAˆ
ðÐð
 <×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VA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 rM   rB   rN   s    €r   Úffztest_no_memory.<locals>.ffø   rP   r!   Nr   r#   rw   r'   )rX   r   r(   r)   r*   )rŠ   r-   Úggr/   ra   r,   s        @r   Útest_no_memoryrŒ   ô   si   ø€ ä“&€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 rM   rB   )Úarg1Úarg2r,   s     €r   r`   ztest_memory_kwarg.<locals>.g  s   ø€ Ø×Ñ˜1ÔØˆr!   r   r#   é   r   )r�   r�   rM   )rX   r0   rY   r   r(   )r_   r`   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'   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)rX   r0   rY   )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   rY   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 rA   r   r�   s    r   r™   z7test_memory_warning_lambda_collisions.<locals>.<lambda>=  s   € ˜q€ r!   c                 ó   — | dz   S rM   r   r�   s    r   r™   z7test_memory_warning_lambda_collisions.<locals>.<lambda>>  s
   € ˜q 1™u€ r!   r'   r   rw   )r   rY   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   rY   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•   rB   ©r   r   r,   s     €r   r+   z!test_memory_partial.<locals>.func`  r—   r!   r   Nr'   )rX   Ú	functoolsÚpartialr0   rY   )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   rY   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*   rC   )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   rY   r(   r¿   )r_   r-   r+   s      r   Útest_argument_changerÁ   €  sC   € ô ˜VŸ^™^°QÔ7€FØ�<‰<Ô(Ó)€Dñ ‹6�QŠ;Ðˆ;ñ ‹6�QŠ;Ð‰;r!   rS   rQ   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 rM   rB   rN   s    €r   Únztest_memory_numpy.<locals>.n”  rP   r!   r   ©r$   rS   r%   r&   )rR   rR   r'   rA   )rX   r   rY   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È!Ô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 callrQ   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   rY   r(   r   ÚonesÚ
isinstanceÚmemmaprh   ÚgcÚcollectr>   rJ   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 rA   r   )Úexcrå   s    €r   Úhz test_memory_exception.<locals>.hÒ  s   ø€ áØÐð r!   r&   r'   N)r   )r   rY   Ú	Exceptionr(   r)   r   )r_   r-   ré   r/   rå   s       @r   Útest_memory_exceptionrë   Ë  sz   ø€ ä˜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 rM   rB   r´   s     €r   Úzztest_memory_ignore.<locals>.zå  s   ø€ à×Ñ˜1Õr!   ©r   r   N©r'   ©r   rY   rX   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 rA   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 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€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 rM   r   rÐ   s    r   Úplus_onez,test_memory_args_as_kwargs.<locals>.plus_one  rÒ   r!   r'   r   rÐ   r&   N)r   rY   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   rR   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%   rS   c                  ó   — y rA   r   r�   s    r   rð   z"test_partial_decoration.<locals>.z'  s   € àr!   N)r   rY   r(   rî   Ú_verboserS   )r_   rî   r%   rS   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    ri   zfunc_code.pyr'   r2   )r   rY   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  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   rY   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  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 rA   r   ©r/   r  s    €r   r™   z*test_check_call_in_cache.<locals>.<lambda>k  s   ø€ ÐCW€ r!   ©Úcache_validation_callbackr   r#   c                 ó   •— ‰S rA   r   r   s    €r   r™   z*test_check_call_in_cache.<locals>.<lambda>n  s   ø€ Ð3G€ r!   r   é   )
r	   r    rY   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    rY   r   r   r(   r
   r   Úcall_and_shelverÕ   Úgetr\   r   ÚKeyError)r_   r+   ÚResultr'  s       r   Útest_call_and_shelver0  ~  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   r2   r$  r'   N)r9   r;   r7   ÚstatrY   Úst_atimer   r€   Ú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•  € à"Ÿ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    rY   r   r9   r,  r:   r  ÚdumpÚloadr-  r7   r  )r_   r+   rg   r'  ÚfpÚresult2s         r   Útest_memorized_picklingrE  ¹  sÏ   € Üœq &§.¡.Ó1Ô3CÄAÓ3FÐGò ˆØ—;‘;Ð2Ó3×;Ñ;ˆØ×%Ñ% aÓ(ˆÜ�(˜DÓ!ð 	$ RÜ�K‰K˜ Ô#÷	$ä�(˜DÓ!ð 	& RÜ—k‘k "“oˆG÷	&à�{‰{‹} §
¡
£Ò,Ð,Ð,Ü
�	‰	�(Õñ÷	$ð 	$ú÷	&ð 	&ú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    rY   r,  r-  Úreprr   r   )r_   r+   r'  Úfunc2rD  s        r   Útest_memorized_reprrK  Å  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
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
)ÚmkdirrY   r7   r8   r9   r:   r;   Úsyspath_prependrN  r   r(   r    rZ   r[   ÚsysÚstdoutÚmodulesÚpopÚ
readouterr)Úcapsysr_   rÙ   Údir_namerg   ÚcontentÚmodule_fileÚtmpr-   r    rb   Ú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 rA   r   ©r¤   r¥   s     r   Ú_function_to_cacher_    s   € àr!   c                 ó   — | |z   S rA   r   r^  s     r   Ú_sumra  #  ó   € Øˆq‰5€Lr!   c                 ó   — | |z  S rA   r   r^  s     r   Ú_productrd  '  rb  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&   )	ra  r|   r_  r   rY   r(   r   r   rd  )r_   r-   r    s      r   Ú*test_memory_in_memory_function_code_changerf  +  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_locationrh  ;  s   € Ü˜TÔ"€FØ
‡L�L…Nr!   Úkw1Úkw2©ri  rj  c                ó   — | |||fS rA   r   )r¤   r¥   ri  rj  s       r   Úfunc_with_kwonly_argsrm  @  s   € Øˆa��cˆ>Ðr!   r¤   r¥   Úreturnc                 ó   — | |z   S rA   r   r^  s     r   Úfunc_with_signaturerp  D  rb  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&   )ri  )r'   r   r&   rj  rw   )rj  z?Keyword-only parameter 'kw1' was passed as positional parameterrk  rj  rí   )r'   r   r&   rw   Úignored)r   rY   r(   rm  r   Ú
ValueErrorÚmatch)r_   r-   Úfunc_cachedÚexcinfos       r   Ú!test_memory_func_with_kwonly_argsrw  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   rY   r(   rp  )r_   r-   ru  s      r   Útest_memory_func_with_signaturery  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   ©rO   s    r   Úget_1000_bytesz(_setup_toy_cache.<locals>.get_1000_bytesl  s   € àr!   )r   rY   r(   rX   r)   r   r  r7   r8   r9   r5   r$   )
r_   Ú
num_inputsr-   r~  ÚinputsrO   r  Úhash_dirnamesr  Úfull_hashdirss
             r   Ú_setup_toy_cacherƒ  i  sÒ   € Ü˜VŸ^™^°QÔ7€Fà‡\�\ƒ^ñó ðô ”%˜
Ó#Ó$€FØò ˆÙ�sÕðô % ^Ó4€GØAGÖH¸#�^×0Ñ0°Õ5ÐH€MÐHð %öàô 	�‰�‰�^×1Ñ1×:Ñ:¸GÀWÕMð€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rA   )r7   r8   Úgetsize)ro   rC  s     r   rq   z:test__get_items.<locals>.get_files_size.<locals>.<genexpr>†  s   è ø€ Ò<¨2”2—7‘7—?‘? 2×&Ñ<ùs   ‚)+)r7   r~   r8   r9   Úsum)Ú	directoryÚfnÚ
full_pathss      r   Úget_files_sizez'test__get_items.<locals>.get_files_size„  sD   € Ü<>¿J¹JÀyÓ<QÖR°b”b—g‘g—l‘l 9¨bÕ1ÐRˆ
ÐRÜÑ<°Ô<Ó<Ð<ùò Ss   ˜'Ar2   )rƒ  r5   r6   r8   ÚsetÚsizer7   r9   ÚdatetimeÚfromtimestampÚgetatimeÚlast_access)r_   r-   Úexpected_hash_dirsr/   ÚitemsÚciÚ	hash_dirsrŒ  Úhash_dirÚexpected_hash_cache_sizesÚhash_cache_sizesÚoutput_filenamesrŠ  Úexpected_last_accessesÚlast_accessess                  r   Útest__get_itemsr�  ~  sH  € Ü$4°VÓ$<Ñ!€FÐ Ø× Ñ ×*Ñ*Ó,€EØ#(Ö)˜R�—“Ð)€IÐ)Üˆy‹>œSÐ!3Ó4Ò4Ð4Ð4ò=ð KTÖ T¸h¡°Õ!9Ð TÐÐ TØ*/Ö0 B˜Ÿ›Ð0ÐÐ0ØÐ8Ò8Ð8Ð8àMVÖWÀœŸ™Ÿ™ X¨|Õ<ÐWÐÐWð IYöØBDŒ×Ñ×'Ñ'¬¯©×(8Ñ(8¸Ó(<Õ=ðÐð ð /4Ö4¨�R—^“^Ð4€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rA   ©r’  ©ro   r•  s     r   rq   z,test__get_items_to_delete.<locals>.<genexpr>¸  s   è ø€ Ò> "ˆr�~�~Ñ>ùó   ‚c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrA   r¤  r¥  s     r   rq   z,test__get_items_to_delete.<locals>.<genexpr>¸  s   è ø€ ò FØˆ��ñFùr¦  )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­  € ä# 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ƒ  r5   r6   Úreduce_sizerª  r�  r©  r*   )r_   r-   r/   Ú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 )NrR   )Úitems_limitr   r   r»  )r_   r-   r/   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©rt  gü©ñÒMbP?)r�  r   rƒ  r5   r6   r¼  rª  Ú	timedeltar€   r�  r©  r*   r7  r   rs  )r_   r�  r   r-   r/   Ú	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Ð)?Ô	@ñ EØ×ÑÐ%7 X×%7Ñ%7ÀÔ%CÐÔD÷Eð €D‡J�JˆuÔØ
×ÑÐ!3 ×!3Ñ!3¸AÔ!>ÐÔ?Ø×&Ñ&×0Ñ0Ó2€KØ˜"ÒÐÑ÷Eð Eús   Å?$HÈHc                 óÆ   — t        | «      \  }}}|j                  «        t        j                  |j                  j
                  «      g k(  sJ ‚|j                  d¬«      rJ ‚y )Nrw   )Ú
stacklevel)rƒ  r\   r7   r~   r5   r$   r  )r_   r-   r/   r`   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×  (  s7   € Ü&+¬C°«H£oÖ6 ”3�q“6˜1‘9Ð6€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   rj   c              3   ó>   •K  — | ]  } t        ‰«      «       –— Œ y ­wrA   rm   ©ro   r.   ru  s     €r   rq   zMtest_cached_function_race_condition_when_persisting_output.<locals>.<genexpr>5  s   øè ø€ Ò@°!Ð+”w˜{Ó+×-Ñ@ùs   ƒr&   rÓ   )r   rY   r(   rÓ  r   r)   rU  ©r_   Úcapfdr-   rR  ÚstderrrÝ   ru  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   rj   c              3   óT   •K  — | ]  } t        ‰«      |d z  dk(  rdnd«      –— Œ! y­w)r   r   TFNrm   rÚ  s     €r   rq   zOtest_cached_function_race_condition_when_persisting_output_2.<locals>.<genexpr>K  s/   øè ø€ ò Ø@AÐŒ�Ó Q¨¡U¨a¢Z™T°U×;ñùs   ƒ%(r&   rÓ   )r   rY   r(   r×  r   r)   rU  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!   rO   r'   rÓ   r   z<It normally not possible to load a corrupted MemorizedResultzis corrupted)r   rY   r(   r>   rJ   r*   r,  r-  ÚAssertionErrorr.  r¢   rø   )r_   rÙ   r-   r+   Úcached_funcÚ	input_argrO   rH  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   r6   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  r6   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   rs  r   rt  )r  rv  s     r   Ú(test_register_invalid_store_backends_keyr
  °  s:   € ô 
”
Ó	ð 5˜wÜ˜~¨tÔ4÷5à‡M�MÐ;Õ<÷5ð 5úó	   �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	  ©rv  s    r   Ú+test_register_invalid_store_backends_objectr  ¸  s:   € ô 
”
Ó	ð +˜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   rt  r  s    r   Ú!test_memory_default_store_backendr  À  s8   € ä	”	Ó	ð :˜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  Ç  sn   € ÷ñ ñ 5Ó6Ðä	Œ{Ó	ð G˜xÜ˜wÐ1EÕF÷Gð	ð ð
 œc (¨1¡+×"5Ñ"5Ó6Ñ6Ð6Ñ6÷Gð Gú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   rt  )Úbackend_namerv  s     r   Ú)test_instanciate_incomplete_store_backendr"  Ø  sl   € ð €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        j                  d«      } t        d| «      }	 |j                  dk(  sJ ‚	 t	        j
                  dd¬«       y # t	        j
                  dd¬«       w xY w)NÚsome_folderr  TrU   )ÚpathlibÚPathr   r$   rZ   r[   )r8   r&  s     r   Ú0test_instanciate_store_backend_with_pathlib_pathr,  ñ  sR   € ä�<‰<˜Ó&€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$   rI  r¢   rx   r  rY   )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 rA   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   rY   r(   r¢   rx   r5   r$   r,  r  r  )r_   r2  r-   Úmemorized_funcÚmemorized_func_reprÚmemorized_resultÚmemorized_result_reprs          r   Útest_memory_objects_reprr8    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   r`   z'test_memorized_result_pickle.<locals>.g6  ó   € à�!‰tˆr!   rw   )r   rY   r(   r,  r  r  r  r5   r$   r+   r  r¢   )r_   r-   r`   r6  Ú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 rA   )Úvarsr�  Úkeys)ÚleftÚrightÚignored_attrsÚ	left_varsÚ
right_varsÚattrs         r   ÚcomparerH  G  s}   € ØÐØˆä�T“
€IÜ�e“€JÜˆy�~‰~ÓÓ ¤C¨
¯©Ó(9Ó$:Ò:Ð:Ð:Ø—‘Ó ò 3ˆØ�=Ñ ØØ˜‰ *¨TÑ"2Ó2Ð2Ð2ñ3r!   Úmemory_kwargsr&   r   )rT   r%   r$  Ú	parameterÚunused)rS   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$   )r5   rH  Ú_func_code_id)rD  r'   r   )r   rY   r  r  r  rH  r5   r�  r   r(   r    r,  )r_   rI  r-   Úmemory_reloadedru  Úfunc_cached_reloadedr6  Úmemorized_result_reloadeds           r   Útest_memory_pickle_dump_loadrR  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   rY   r(   Útextr\   )r_   Úcaplogr   r-   r    r/   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)r7  r   rs  r(   )ró  r-   rt  s      r   Ú&test_invalid_cache_validation_callbackzBTestCacheValidationCallback.test_invalid_cache_validation_callback¥  s8   € àKˆÜ�]‰]œ:¨UÔ3ñ 	9Ø�L‰L°4ˆLÔ8÷	9÷ 	9ñ 	9ú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 rA   r   r   s    €r   r™   zUTestCacheValidationCallback.test_constant_cache_validation_callback.<locals>.<lambda>°  s   ø€ Ð0D€ r!   rÜ   ©r"  rî   ra  Fr   rw   N©r(   rc  )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   )Úmetadataro  s     r   r"  z^TestCacheValidationCallback.test_memory_only_cache_long_run.<locals>.cache_validation_callback¾  s   € Ø 
Ñ+ˆHØ˜#Š~Øð r!   rÜ   rh  ra  Fr   r   )rb  rw   rv   Nri  )ró  r-   r"  r    rj  rk  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Ü   rh  ra  Fr   rw   r3  N)r(   rc  r   r   r€   )ró  r-   r    rj  rk  Ú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!   rA   )rã   r^   rä   rï  rc  re  r7  Úmarkr   rl  rq  rt  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)ÚTestMemorizedFuncz8Tests 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   rw  rw  ç  s!   „ Ù>àñó ðò
ó
r!   rw  r$   Útest_cache_dirc                 óà  — t        | «      }t        j                  g d¢g d¢g«      }|j                  t        j                  «      } ||«       t        j                  | «      } 	 t        j                  j                  | d«      }d}t        |«      5 }||j                  «       k(  sJ ‚	 ddd«       t        j                  | d¬«       y# 1 sw Y   Œ!xY w# t        j                  | d¬«       w xY w)zoTest that using the memory object automatically creates a `.gitignore` file
    within the new cache directory.)r'   r   r&   )rw   r$  é   z
.gitignorez%# Created by joblib automatically.
*
NTrU   )r   r   Úasarrayr(   Úsquarer*  r+  r7   r8   r9   r:   r6  rZ   r[   )r$   ÚmemÚarrÚcostly_operationÚpath_to_gitignore_fileÚgitignore_file_contentr    s          r   Útest_memory_creates_gitignorer�    s¿   € ô �Ó
€CÜ
�*‰*’i¢Ð+Ó
,€CØ—y‘y¤§¡Ó+ÐÙ�SÔä�|‰|˜HÓ%€Hð4Ü!#§¡§¡¨h¸Ó!EÐØ!JÐÜÐ(Ó)ð 	6¨QØ)¨Q¯V©V«XÒ5Ð5Ñ5÷	6ô 	�‰�h¨dÖ3÷		6ð 	6ûô 	�‰�h¨dÖ3ús$   Á$-C ÂCÂ(C ÃCÃC ÃC-rò   )rR   )TrA   )xrï  r�  rµ   r×   rY  r7   Úos.pathr*  r  rZ   rQ  rz   r   r7  Ú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    r0   r>   rJ   rc   r‡   rŒ   r’   rš   r§   r«   r±   r¸   r¼   r¿   rÁ   rÌ   rÞ   rë   rô   rþ   r  r  r  r  ru  r(  r0  r=  rE  rK  r\  r_  ra  rd  rf  rh  rm  rÕ  Úfloatrp  rw  ry  rƒ  r�  r·  r¿  rÂ  rÍ  rÐ  rÓ  r×  rÞ  rá  rì  rî  rñ  r  rX   r
  r  r  r  r"  r'  r,  r/  r8  r>  rH  rR  r]  r_  rw  r+  Úresolver�  r   r!   r   ú<module>rš     s{  ðñó Û Û 	Û Û 	Û Û Û Û Û 
Û Û ã ç 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 ÙØàØˆ�‰Ð%Ó&Øˆ�‰Ð%Ó&×.Ñ.Ó0ðóñ4óó ñ4r!   