ó
    oñ:iÌ=  ã                   óä  • S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
Jr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJrJr  SS	KJrJrJrJr  S
 rS rS r " S S\5      r  " S S\5      r!SSSSSSSSSSS/SS/SS0SS0SS0S\RD                  S/RF                  \$" S5      \$" S5      SSS.SSSS0S./r%\" S\%5      \" S\%5      S  5       5       r&S! r'\" S"S#9\S$ 5       5       r(S% r)S& r*\\" S'S(S)/5      S* 5       5       r+\S+ 5       r,\\" S,S-S./5      S/ 5       5       r-\\" \R\                  S0:H  S1S29S3 5       5       r/S4 r0S5 r1\S6 5       r2\S7 5       r3S8 r4S9 r5S: r6S; r7\S< 5       r8\" S=S>S?S@\9" SA5       V s/ s H"  n \Ru                  SB5      R                  5       PM$     sn SC4SD/ SEQSF.SG4/5      SH 5       r;\SI 5       r<\SJ 5       r=\SK 5       r>\SL 5       r?SM r@SN rAgs  sn f )Oz
Test the hashing module.
é    N)ÚProcessPoolExecutor)ÚDecimal)Úfilter_args©Úhash)ÚMemory)ÚnpÚ
with_numpy)ÚfixtureÚparametrizeÚraisesÚskipifc                 ó   • U $ ©N© )Úss    Ú[/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/joblib/test/test_hashing.pyÚunicoder      s   € Ø€Hó    c                 óÒ   • [        5       n[        S5       HD  n[        R                  " 5       nU " U6   UR                  [        R                  " 5       U-
  5        MF     [	        U5      $ )zTime function func on *args.é   )ÚlistÚrangeÚtimeÚappendÚmin)ÚfuncÚargsÚtimesÚ_Út1s        r   Ú	time_funcr"   "   sL   € ä‹F€EÜ�1ŽXˆÜ�YŠY‹[ˆÙˆd‰Ø�‰”T—Y’Y“[ 2Ñ%Ö&ñ ô ˆu‹:Ðr   c                 ó`   • [        U /UQ76 n[        U/UQ76 nS[        X4-
  5      X4-   -  -  nU$ )zCReturn the relative time between func1 and func2 applied on
*args.
ç      à?)r"   Úabs)Úfunc1Úfunc2r   Ú
time_func1Ú
time_func2Úrelative_diffs         r   Úrelative_timer+   ,   sB   € ô ˜5Ð( 4Ò(€JÜ˜5Ð( 4Ò(€JØœ3˜zÑ6Ó7¸:Ñ;RÑSÑT€MØÐr   c                   ó   • \ rS rSrS rSrg)ÚKlassé6   c                 ó   • U$ r   r   ©ÚselfÚxs     r   ÚfÚKlass.f7   ó   € Øˆr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r3   Ú__static_attributes__r   r   r   r-   r-   6   s   † õr   r-   c                   ó    • \ rS rSrS rS rSrg)ÚKlassWithCachedMethodé;   c                 óV   • [        US9nUR                  U R                  5      U l        g )N)Úlocation)r   Úcacher3   )r1   ÚcachedirÚmems      r   Ú__init__ÚKlassWithCachedMethod.__init__<   s    € Ü˜hÑ'ˆØ—‘˜4Ÿ6™6Ó"ˆ�r   c                 ó   • U$ r   r   r0   s     r   r3   ÚKlassWithCachedMethod.f@   r5   r   )r3   N)r6   r7   r8   r9   rC   r3   r:   r   r   r   r<   r<   ;   s   † ò#õr   r<   é   é   g      ð?ç       @y      ð?      ð?y       @      ð?ÚaÚb©rG   )rG   rG   ©rJ   rG   )rJ   rG   rM   )rJ   rG   ÚdÚobj1Úobj2c                 óF   • [        U 5      [        U5      :H  nXL nX#:X  d   eg)z!Smoke test hash on various types.Nr   )rO   rP   Úare_hashes_equalÚare_objs_identicals       r   Útest_trivial_hashrT   m   s+   € ô
 ˜D“z¤T¨$£ZÑ/ÐØ˜ÐØÓ1Ð1Ñ1r   c                  óv  • [         R                  " [        S5      5      n [        U R                  5      [        U R                  5      :X  d   e[
        R                  " [        S5      5      n[
        R                  " [        S5      5      n[        UR                  5      [        UR                  5      :w  d   eg )NrJ   é
   é	   )	ÚioÚStringIOr   r   ÚflushÚcollectionsÚdequer   Úextend)rJ   Úa1Úa2s      r   Útest_hash_methodsr`   w   sx   € ä
�Š”G˜C“LÓ!€AÜ�—‘‹=œD §¡›MÓ)Ð)Ð)Ü	×	Ò	œ5 ›9Ó	%€BÜ	×	Ò	œ5 ›8Ó	$€BÜ�—	‘	‹?œd 2§9¡9›oÓ-Ð-Ñ-r   Úfunction)Úscopec                  óÄ   • [         R                  R                  S5      n U R                  S5      nUR	                  5       nUR	                  5       nUS==   S-  ss'   XU4$ )Nr   ©rV   rV   rG   )r	   ÚrandomÚRandomStateÚrandom_sampleÚcopy)ÚrndÚarr1Úarr2Úarr3s       r   Úthree_np_arraysrm   €   sV   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜XÓ&€DØ�9‰9‹;€DØ�9‰9‹;€DØˆƒGˆq�LƒGØ�tÐÐr   c                 óþ   • U u  pn[         R                  " U SS9 H;  u  pE[        U5      [        U5      :H  n[        R                  " XE:H  5      nXg:X  a  M;   e   [        U5      [        UR
                  5      :w  d   eg )NrH   )Úrepeat)Ú	itertoolsÚproductr   r	   ÚallÚT)rm   rj   rk   rl   rO   rP   rR   Úare_arrays_equals           r   Útest_hash_numpy_arraysru   ‹   sr   € Ø&Ñ€D�ä×'Ò'¨ÀÔB‰
ˆÜ ›:¬¨d«Ñ3ÐÜŸ6š6 $¡,Ó/ÐØÕ3Ð3Ð3ñ Cô
 �‹:œ˜dŸf™f›Ó%Ð%Ñ%r   c                 óŽ   • U u  pnXS.nX!S.nX#S.n[        U5      [        U5      :X  d   e[        U5      [        U5      :w  d   eg )N)rG   rH   r   )rm   rj   rk   rl   Úd1Úd2Úd3s          r   Útest_hash_numpy_dict_of_arraysrz   –   sP   € Ø&Ñ€D�àÑ	€BØÑ	€BØÑ	€Bä�‹8”t˜B“xÓÐÐÜ�‹8”t˜B“xÓÐÑr   Údtypezdatetime64[s]ztimedelta64[D]c                 ó�   • [        [        R                  " S5      5      n[        R                  " SSU S9n[        U5      U:w  d   eg )NrV   r   ©r{   )r   r	   Úarange)r{   Úa_hashÚarrays      r   Útest_numpy_datetime_arrayr�   ¡   s:   € ô
 ”"—)’)˜B“-Ó €FÜ�IŠI�a˜ 5Ñ)€EÜ�‹;˜&Ó Ð Ñ r   c                  óL  • [         R                  " [         R                  " S5      R                  S5      SS9S S 2S S2S S 24   n [         R                  " U 5      n[        U 5      [        U5      :w  d   e[         R                  " U 5      n[        U 5      [        U5      :w  d   eg )Nip  )éè  rH   r   ÚF)ÚorderrG   )r	   Úasarrayr~   ÚreshapeÚascontiguousarrayr   Úasfortranarray)rJ   rK   Úcs      r   Útest_hash_numpy_noncontiguousr‹   «   s€   € ä
�
Š
”2—9’9˜T“?×*Ñ*¨<Ó8ÀÑDÂQÈÈÈÊAÀXÑN€AÜ
×Ò˜QÓ€AÜ�‹7”d˜1“gÓÐÐä
×Ò˜!Ó€AÜ�‹7”d˜1“gÓÐÑr   Úcoerce_mmapTFc                 óh  • U R                  S5      R                  n [        R                  " USSS9n[        R                  " U5      n[        XAS9[        X1S9:H  nXQ:X  d   e S[        5       ;   a  A[        R                  " 5         gg! S[        5       ;   a  A[        R                  " 5         f f = f)zECheck that memmap and arrays hash identically if coerce_mmap is True.Úmemmap_temprd   zw+)ÚshapeÚmode)rŒ   ÚmN)	ÚjoinÚstrpathr	   Úmemmapr†   r   ÚlocalsÚgcÚcollect)ÚtmpdirrŒ   Úfilenamer‘   rJ   rR   s         r   Útest_hash_memmaprš   µ   sž   € ð �{‰{˜=Ó)×1Ñ1€HðÜ�IŠI�h h°TÑ:ˆÜ�JŠJ�q‹MˆÜ Ñ;¼tØñ@
ñ 
Ðð  Ó.Ð.Ñ.à”&“(‹?Øô �JŠJ�Lð øˆ3”&“(‹?Øô �JŠJ�Lð ús   �AB
 Â
'B1Úwin32z5This test is not stable under windows for some reason)Úreasonc                  ó  • [         R                  R                  S5      n U R                  S5      nS n[	        U[
        U5      nUS:  d   eS[        X!5      -  n[        [
        XU45      nS[        XT-
  5      XT-   -  -  nUS:  d   eg)aÆ  Check the performance of hashing numpy arrays:

In [22]: a = np.random.random(1000000)

In [23]: %timeit hashlib.md5(a).hexdigest()
100 loops, best of 3: 20.7 ms per loop

In [24]: %timeit hashlib.md5(pickle.dumps(a, protocol=2)).hexdigest()
1 loops, best of 3: 73.1 ms per loop

In [25]: %timeit hashlib.md5(cPickle.dumps(a, protocol=2)).hexdigest()
10 loops, best of 3: 53.9 ms per loop

In [26]: %timeit hash(a)
100 loops, best of 3: 20.8 ms per loop
r   i@B c                 ó\   • [         R                  " [        U 5      5      R                  5       $ r   )ÚhashlibÚmd5Ú
memoryviewÚ	hexdigest)r2   s    r   Úmd5_hashÚ-test_hash_numpy_performance.<locals>.md5_hashã   s   € Ü�{Š{œ: a›=Ó)×3Ñ3Ó5Ð5r   g333333Ó?r   r$   N)r	   re   rf   rg   r+   r   r"   r%   )ri   rJ   r£   r*   Útime_hashlibÚ	time_hashs         r   Útest_hash_numpy_performancer§   Ê   s”   € ô, �)‰)×
Ñ
 Ó
"€CØ×Ñ˜'Ó"€Aò6ô " (¬D°!Ó4€MØ˜3ÓÐÐð ”y Ó-Ñ-€LÜœ$  q 	Ó*€IØœ3˜yÑ7Ó8¸IÑ<TÑUÑV€MØ˜3ÓÐÑr   c                  ó´   • [        5       n [        5       n[        [        U R                  / S5      5      [        [        UR                  / S5      5      :X  d   eg)zuMake sure that calling the same method on two different instances
of the same class does resolve to the same hashes.
rL   N)r-   r   r   r3   ©rJ   rK   s     r   Útest_bound_methods_hashrª   ñ   sD   € ô 	‹€AÜ‹€AÜ”˜AŸC™C  TÓ*Ó+¬t´KÀÇÁÀRÈÓ4NÓ/OÓOÐOÑOr   c                 ó  • [        U R                  5      n[        U R                  5      n[        [        UR                  R
                  / S5      5      [        [        UR                  R
                  / S5      5      :X  d   eg)z~Make sure that calling the same _cached_ method on two different
instances of the same class does resolve to the same hashes.
rL   N)r<   r“   r   r   r3   r   )r˜   rJ   rK   s      r   Útest_bound_cached_methods_hashr¬   ú   sc   € ô 	˜fŸn™nÓ-€AÜ˜fŸn™nÓ-€AÜ”˜AŸC™CŸH™H b¨$Ó/Ó0´DÜ�A—C‘C—H‘H˜b $Ó'ó5ó ð ñ r   c                  óh  • [         R                  " [        S5       V s/ s H  n [         R                  " U 5      PM     sn [        S9n[         R                  " [        S5       V s/ s H  n [         R                  " U 5      PM     sn [        S9n[        U5      [        U5      :X  d   egs  sn f s  sn f )z;Make sure that ndarrays with dtype `object' hash correctly.é   r}   N)r	   r€   r   r~   Úobjectr   )ÚirJ   rK   s      r   Útest_hash_object_dtyper±     sx   € ô 	�Š¬¨a¬Ó1ª 1”"—)’)˜A–,©Ñ1¼Ñ@€AÜ
�Š¬¨a¬Ó1ª 1”"—)’)˜A–,©Ñ1¼Ñ@€Aä�‹7”d˜1“gÓÐÑùò 2ùÚ1s   ž B*Á% B/c                  ó�   • [         R                  " S5      n [         R                  " S5      n[        U 5      [        U5      :w  d   eg )NrI   g      @)r	   Úfloat64r   r©   s     r   Útest_numpy_scalarr´     s4   € ô 	�
Š
�3‹€AÜ
�
Š
�3‹€AÜ�‹7”d˜1“gÓÐÑr   c                 óà   • [        U R                  5      nS/S/S/S/S/S/S/S/S/S/S/S/S/S.nUR                  U5      nUR                  U5      n[        U5      [        U5      :X  d   eg )Né!   ©z#s12069__c_maps.nii.gzz#s12158__c_maps.nii.gzz#s12258__c_maps.nii.gzz#s12277__c_maps.nii.gzz#s12300__c_maps.nii.gzz#s12401__c_maps.nii.gzz#s12430__c_maps.nii.gzz#s13817__c_maps.nii.gzz#s13903__c_maps.nii.gzz#s13916__c_maps.nii.gzz#s13981__c_maps.nii.gzz#s13982__c_maps.nii.gzz#s13983__c_maps.nii.gz)r<   r“   r3   r   )r˜   ÚkrN   rJ   rK   s        r   Útest_dict_hashr¹     sŽ   € ô 	˜fŸn™nÓ-€Að $& $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $ñ	€Að  	
�‰ˆA‹€AØ	�‰ˆA‹€Aä�‹7”d˜1“gÓÐÑr   c                 óÀ   • [        U R                  5      n[        / SQ5      nUR                  U5      nUR                  U5      n[	        U5      [	        U5      :X  d   eg )Nr·   )r<   r“   Úsetr3   r   )r˜   r¸   r   rJ   rK   s        r   Útest_set_hashr¼   3  sS   € ô 	˜fŸn™nÓ-€Aäò	
ó	€Að$ 	
�‰ˆA‹€AØ	�‰ˆA‹€Aä�‹7”d˜1“gÓÐÑr   c            	      ó¬   • [        [        [        S5      [        S5      /5      5      [        [        [        S5      [        S5      /5      5      :X  d   eg )Nr   ÚNaN)r   r»   r   r   r   r   Útest_set_decimal_hashr¿   P  sI   € ô ””W˜Q“Z¤¨£Ð0Ó1Ó2´dÜŒW�U‹^œW Q›ZÐ(Ó)ó7ó ð ñ r   c                  ó¤   • Sn U S0nU S0n[         R                  " [         R                  " U5      5      n[        X/5      [        X/5      :X  d   eg )NÚfooÚbar)ÚpickleÚloadsÚdumpsr   )ÚstringrJ   rK   rŠ   s       r   Útest_stringrÇ   X  sK   € ð €FØ	�ˆ€AØ	�ˆ€AÜ�Š”V—\’\ !“_Ó%€AÜ��‹<œ4  ›<Ó'Ð'Ñ'r   c                  óÀ  • [         R                  " S5      n [         R                  " S5      nXL d   e[        U 5      [        U5      :X  d   e[        R                  " [        R
                  " U 5      5      nXLd   e[        U 5      [        U5      :X  d   e[        X /5      [        X"/5      :X  d   e[        X /5      [        X/5      :X  d   e[         R                  " S[         R                  S4S[         R                  S4/5      n[         R                  " S[         R                  S4S[         R                  S4/5      n[        U5      [        U5      :X  d   e[        R                  " [        R
                  " U5      5      nXSLd   e[        U5      [        U5      :X  d   e[        X3/5      [        XU/5      :X  d   e[        X3/5      [        XS/5      :X  d   eg )NÚf4Únameé   Úgrades)rH   )r	   r{   r   rÃ   rÄ   rÅ   Ústr_r³   )Údt1Údt2Údt1_roundtrippedÚcomplex_dt1Úcomplex_dt2Úcomplex_dt1_roundtrippeds         r   Útest_numpy_dtype_picklingrÔ   b  s°  € ô �(Š(�4‹.€CÜ
�(Š(�4‹.€Cð Š:Ðˆ:Ü�‹9œ˜S›	Ó!Ð!Ð!ä—|’|¤F§L¢L°Ó$5Ó6ÐØÒ&Ð&Ð&Ü�‹9œÐ-Ó.Ó.Ð.Ð.ä��
ÓœtÐ%5Ð$HÓIÓIÐIÐIÜ��
Óœt SÐ$;Ó<Ó<Ð<Ð<ä—(’(˜V¤R§W¡W¨bÐ1°H¼b¿j¹jÈ$Ð3OÐPÓQ€KÜ—(’(˜V¤R§W¡W¨bÐ1°H¼b¿j¹jÈ$Ð3OÐPÓQ€Kô �Ó¤ [Ó 1Ó1Ð1Ð1ä%Ÿ|š|¬F¯LªL¸Ó,EÓFÐØ#Ò6Ð6Ð6Ü�Ó¤Ð%=Ó >Ó>Ð>Ð>ä�Ð*Ó+¬tØ	!Ð<ó0ó ð ð ô �Ð*Ó+¬tØ	!Ð/ó0ó ð ñ r   zto_hash,expected)zThis is a string to hashÚ 71b3f47df22cb19431d85d92d0b230b2)u   C'est lÃ©tÃ©Ú 2d8d189e9b2b0b2e384d93c868c0e576))i@â i1Ô  i3~þÿÚ e205227dd82250871fa25aa0ec690aa3é   é*   Ú a11ffad81f9682a7d901e6edc3d16c84é{   )iñØÿÿrH   r   )ÚabcdeÚsadfasÚ aeda150553d4bb5c69f0e69d51b0e2efc                 ó&   • [        U 5      U:X  d   eg r   r   )Úto_hashÚexpecteds     r   Útest_hashes_stay_the_samerâ   ‹  s   € ô& �‹=˜HÓ$Ð$Ñ$r   c                  óÄ   • [         R                  R                  S5      n U R                  S5      n[         R                  " U5      n[        U5      [        U5      :w  d   eg )Nr   rd   )r	   re   rf   rg   r‰   r   )ÚrngÚarr_cÚarr_fs      r   ÚAtest_hashes_are_different_between_c_and_fortran_contiguous_arraysrç   ¡  sN   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜hÓ'€EÜ×Ò˜eÓ$€EÜ�‹;œ$˜u›+Ó%Ð%Ñ%r   c                  óB   • [        [        R                  " S5      5        g ©Nr   ©r   r	   r€   r   r   r   Útest_0d_arrayrë   «  s   € äŒ�Š�!‹Õr   c                  óŠ   • [        [        R                  " S5      5      [        [        R                  " S/5      5      :w  d   eg ré   rê   r   r   r   Ú)test_0d_and_1d_array_hashing_is_differentrí   °  s,   € ä”—’˜“Ó¤¤R§X¢X¨q¨c£]Ó 3Ó3Ð3Ñ3r   c                  óò  • S n U " 5       nU " 5       n[        SS9n[        SS9n [        X5       H  u  pVUR                  [        U5      R	                  5       nUR                  [        U5      R	                  5       nXx:X  d   eUR                  [        U5      R	                  5       n	Xy:X  a  M   e   UR                  5         UR                  5         g ! UR                  5         UR                  5         f = f)Nc                  ó
  ^• [         R                  R                  S5      mTR                  SSSS9R	                  S5      [        U4S j[        S5       5       5      [        S5       V s/ s H#  n TR                  S	5      R	                  S
5      PM%     sn TR                  S	S5      R	                  S
5      TR                  SSS9R	                  S5      TR                  S5      R	                  S
5      /S.[         R                  " SSS9R                  S5      [         R                  " [         R                  " SSS9R                  S5      5      [         R                  " SSS9R                  S5      S S 2S S24   /nU$ s  sn f )NrÙ   iüÿÿrƒ   é2   )ÚhighÚsizez<i8c              3   ód   >#   • U  H%  nTR                  S 5      R                  S5      v •  M'     g7f)r   ú<f4N)ÚrandnÚastype)Ú.0r    rä   s     €r   Ú	<genexpr>Ú_test_hashes_stay_the_same_with_numpy_objects.<locals>.create_objects_to_hash.<locals>.<genexpr>Ï  s'   øé € Ð?²h°�#—)‘)˜A“,×%Ñ% e×,Ð,²hùs   ƒ-0rØ   r   rô   rV   é   )rò   )iûòÿÿr   éd   r}   rd   rH   )r	   re   rf   Úrandintrö   Útupler   rõ   r~   r‡   r‰   )r    Úto_hash_listrä   s     @r   Úcreate_objects_to_hashÚLtest_hashes_stay_the_same_with_numpy_objects.<locals>.create_objects_to_hashÆ  s=  ø€ Ü�i‰i×#Ñ# BÓ'ˆð �K‰K˜ D¨rˆKÐ2×9Ñ9¸%Ó@ÜÔ?´e¸A´hÓ?Ó?Ü16°q´Ó:²¨AˆS�Y‰Y�q‹\× Ñ  Ö'±Ñ:à—y‘y  A“×-Ñ-¨eÓ4à—K‘K ¨�KÐ,×3Ñ3°EÓ:Ø—I‘I˜b“M×(Ñ(¨Ó/ðñô �IŠI�c Ñ'×/Ñ/°Ó9ä×ÒœbŸiši¨°5Ñ9×AÑAÀ(ÓKÓLä�IŠI�c Ñ'×/Ñ/°Ó9º!¸R¸a¸R¸%Ñ@ð#
ˆð& Ðùò! ;s   Á**F rG   )Úmax_workers)r   ÚzipÚsubmitr   ÚresultÚshutdown)
rÿ   Úto_hash_list_oneÚto_hash_list_twoÚe1Úe2Úobj_1Úobj_2Úhash_1Úhash_2Úhash_3s
             r   Ú,test_hashes_stay_the_same_with_numpy_objectsr  µ  sÖ   € ò"ñ> .Ó/ÐÙ-Ó/Ðä	¨Ñ	+€BÜ	¨Ñ	+€BðÜÐ 0ÖC‰LˆEà—Y‘Yœt UÓ+×2Ñ2Ó4ˆFØ—Y‘Yœt UÓ+×2Ñ2Ó4ˆFØÓ#Ð#Ð#ð —Y‘Yœt UÓ+×2Ñ2Ó4ˆFØÕ#Ð#Ð#ñ Dð 	�‰ŒØ
�‰�øð 	�‰ŒØ
�‰�ús   ¥BC Â/C Ã"C6c                  ó¨   • S n [        [        R                  5       n[        U 5        S S S 5        WR	                  S5        g ! , (       d  f       N = f)Nc                  ó   • g)NrÙ   r   r   r   r   Únon_picklableÚ2test_hashing_pickling_error.<locals>.non_picklableü  s   € Ør   zPicklingError while hashing)r   rÃ   ÚPicklingErrorr   Úmatch)r  Úexcinfos     r   Útest_hashing_pickling_errorr  û  s<   € òô 
”×$Ñ$Ô	%¨Üˆ]Ô÷ 
&à‡M�MÐ/Õ0÷ 
&Õ	%ús   �AÁ
Ac                  ót   • Sn [        [        U S9   SS0n[        USS9  S S S 5        g ! , (       d  f       g = f)Nz!Valid options for 'hash_name' are)r  rÁ   rÂ   Úinvalid)Ú	hash_name)r   Ú
ValueErrorr   )ÚmsgÚdatas     r   Útest_wrong_hash_namer    s0   € Ø
-€CÜ	”
 #Ó	&Ø�uˆ~ˆÜˆT˜YÒ'÷ 
'×	&Ö	&ús   ‘)©
7)BÚ__doc__r[   r–   rŸ   rX   rp   rÃ   re   Úsysr   Úconcurrent.futuresr   Údecimalr   Újoblib.func_inspectr   Újoblib.hashingr   Újoblib.memoryr   Újoblib.test.commonr	   r
   Újoblib.testingr   r   r   r   r   r"   r+   r¯   r-   r<   r—   r   r»   Ú
input_listrT   r`   rm   ru   rz   r�   r‹   rš   Úplatformr§   rª   r¬   r±   r´   r¹   r¼   r¿   rÇ   rÔ   r   ÚRandomrâ   rç   rë   rí   r  r  r  )r    s   0r   Ú<module>r+     s  ðñó Û 	Û Û 	Û Û Û Û 
Û Ý 2Ý å +Ý Ý  ß -ß ?Ó ?òòòôˆFô ô
˜Fô ð ØØØØ
ØØØØðð
 	
ðð 	
Ø	ðð ˆ€FØˆ€FØˆ€FØØ‡J�Jà	ðç�fáˆƒMÙÐÓà
��NØ
�˜˜a˜Ñ!ðE#€
ñL ˆV�ZÓ ÙˆV�ZÓ ñ2ó !ó !ð2ò.ñ 	ˆzÑØñó ó ðò&ò ð ÙˆW�Ð(8Ð9Ó:ñ!ó ;ó ð!ð ñó ðð Ùˆ]˜T 5˜MÓ*ñó +ó ðð& ÙØ‡L�L�GÑØBññó	ó ð
òDPòð ñó ðð ñó ðòò6ò:ò(ð ñ%ó ð%ñP ØàHØ@ØEá16°q´Ó:²¨AˆV�]‰]˜2Ó×%Ñ%Ö'±Ñ:Ø.ð	
ð ¢-Ñ	0Ð2TÐUð	óñ%óð%ð ñ&ó ð&ð ñó ðð ñ4ó ð4ð ñBó ðBòJ1ó(ùòe ;s   Æ)G-