+
    €",iÌ=  ã                   óø  € R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
Ht ^ RIHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHt ^ RIHtHtHtHt R	 tR
 tR t ! R R]4      t  ! R R]4      t!^^RRR@RARRRBRC^.^^.^^/^^/^^/R]PD                  ^.PF                  ]$! RD4      ]$! RE4      R^^^/R^^^RR^//.t%]! R]%4      ]! R]%4      R 4       4       t&R t']! RR7      ]R 4       4       t(R t)R t*]]! RRR .4      R! 4       4       t+]R" 4       t,]]! R#R$R%.4      R& 4       4       t-]]! ]P\                  R'8H  R(R)7      R* 4       4       t/R+ t0R, t1]R- 4       t2]R. 4       t3R/ t4R0 t5R1 t6R2 t7]R3 4       t8]! R4RFRGRH]9! ^4       U u. uF"  p ]Pu                  ^*4      P                  4       NK$  	  up R53R6^{R7. RIO/R83.4      R9 4       t;]R: 4       t<]R; 4       t=]R< 4       t>]R= 4       t?R> t@R? tAR# u up i )Jz
Test the hashing module.
N)ÚProcessPoolExecutor)ÚDecimal)Úfilter_args©Úhash)ÚMemory)ÚnpÚ
with_numpy)ÚfixtureÚparametrizeÚraisesÚskipifc                 ó   € V # ©N© )Úss   &Ú:/usr/lib/python3/dist-packages/joblib/test/test_hashing.pyÚunicoder      s   € Ø€Hó    c                óÜ   € \        4       p\        ^4       FI  p\        P                  ! 4       pV ! V!   VP                  \        P                  ! 4       V,
          4       KK  	  \	        V4      # )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                ó„   € \        V .VO5!  p\        V.VO5!  pR\        W4,
          4      W4,           ,          ,          pV# )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                   ó&   a € ] tR t^6t o R tRtV tR# )ÚKlassc                ó   € V# r   r   ©ÚselfÚxs   &&r   ÚfÚKlass.f7   ó   € Øˆr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r0   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r+   r+   6   s   ø‡ € ÷ð r   r+   c                   ó,   a € ] tR t^;t o R tR tRtV tR# )ÚKlassWithCachedMethodc                ó^   € \        VR 7      pVP                  V P                  4      V n        R# ))ÚlocationN)r   Úcacher0   )r.   ÚcachedirÚmems   && r   Ú__init__ÚKlassWithCachedMethod.__init__<   s    € Ü˜hÔ'ˆØ—‘˜4Ÿ6™6Ó"ˆŽr   c                ó   € V# r   r   r-   s   &&r   r0   ÚKlassWithCachedMethod.f@   r2   r   )r0   N)r3   r4   r5   r6   rB   r0   r7   r8   r9   s   @r   r<   r<   ;   s   ø‡ € ò#÷ð r   r<   g      ð?ç       @ÚaÚbÚdÚobj1Úobj2c                óJ   € \        V 4      \        V4      8H  pWJ pW#8X  g   Q hR# )z!Smoke test hash on various types.Nr   )rJ   rK   Úare_hashes_equalÚare_objs_identicals   &&  r   Útest_trivial_hashrO   m   s+   € ô
 ˜D“z¤T¨$£ZÑ/ÐØ˜ÐØÔ1Ð1Ò1r   c                  ó|  € \         P                  ! \        R 4      4      p \        V P                  4      \        V P                  4      8X  g   Q h\
        P                  ! \        ^
4      4      p\
        P                  ! \        ^	4      4      p\        VP                  4      \        VP                  4      8w  g   Q hR# )rG   N)	ÚioÚStringIOr   r   ÚflushÚcollectionsÚdequer   Úextend)rG   Úa1Úa2s      r   Útest_hash_methodsrY   w   sx   € ä
�Š”G˜C“LÓ!€AÜ�—‘‹=œD §¡›MÔ)Ð)Ð)Ü	×	Ò	œ5 ›9Ó	%€BÜ	×	Ò	œ5 ›8Ó	$€BÜ�—	‘	‹?œd 2§9¡9›oÔ-Ð-Ò-r   Úfunction)Úscopec                  óÔ   € \         P                  P                  ^ 4      p V P                  R4      pVP	                  4       pVP	                  4       pV^ ;;,          ^,          uu&   WV3# )é    ©é
   r_   )r   ÚrandomÚRandomStateÚrandom_sampleÚcopy)ÚrndÚarr1Úarr2Úarr3s       r   Úthree_np_arraysrh   €   sV   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜XÓ&€DØ�9‰9‹;€DØ�9‰9‹;€DØˆ‡Gˆq…LƒGØ�tÐÐr   c                 ó
  € V w  rp\         P                  ! V ^R7       F<  w  rE\        V4      \        V4      8H  p\        P                  ! WE8H  4      pWg8X  d   K<  Q h	  \        V4      \        VP
                  4      8w  g   Q hR# )é   )ÚrepeatN)Ú	itertoolsÚproductr   r   ÚallÚT)rh   re   rf   rg   rJ   rK   rM   Úare_arrays_equals   &       r   Útest_hash_numpy_arraysrq   ‹   sr   € Ø&Ñ€D�ä×'Ò'¨À×B‰
ˆÜ ›:¬¨d«Ñ3ÐÜŸ6š6 $¡,Ó/ÐØÖ3Ð3Ð3ñ Cô
 �‹:œ˜dŸf™f›Ô%Ð%Ò%r   c                 ó    € V w  rp^V^V/p^V^V/p^V^V/p\        V4      \        V4      8X  g   Q h\        V4      \        V4      8w  g   Q hR# )é   Nr   )rh   re   rf   rg   Úd1Úd2Úd3s   &      r   Útest_hash_numpy_dict_of_arraysrw   –   sb   € Ø&Ñ€D�à
ˆT�1�dÐ	€BØ
ˆT�1�dÐ	€BØ
ˆT�1�dÐ	€Bä�‹8”t˜B“xÔÐÐÜ�‹8”t˜B“xÔÐÒr   Údtypezdatetime64[s]ztimedelta64[D]c                 óš   € \        \        P                  ! ^
4      4      p\        P                  ! ^ ^
V R7      p\        V4      V8w  g   Q hR# )r_   ©rx   N)r   r   Úarange)rx   Úa_hashÚarrays   &  r   Útest_numpy_datetime_arrayr~   ¡   s:   € ô
 ”"—)’)˜B“-Ó €FÜ�IŠI�a˜ 5Ô)€EÜ�‹;˜&Ô Ð Ò r   c                  óN  € \         P                  ! \         P                  ! R 4      P                  R4      RR7      R,          p \         P                  ! V 4      p\        V 4      \        V4      8w  g   Q h\         P                  ! V 4      p\        V 4      \        V4      8w  g   Q hR# )ip  ÚF)ÚorderN)éè  rj   é   )ºNNN:Nrs   Nr„   )r   Úasarrayr{   ÚreshapeÚascontiguousarrayr   Úasfortranarray)rG   rH   Úcs      r   Útest_hash_numpy_noncontiguousrŠ   «   sv   € ä
�
Š
”2—9’9˜T“?×*Ñ*¨<Ó8ÀÔDÀXÕN€AÜ
×Ò˜QÓ€AÜ�‹7”d˜1“gÔÐÐä
×Ò˜!Ó€AÜ�‹7”d˜1“gÔÐÒr   Úcoerce_mmapTFc                ó„  € V P                  R4      P                  p \        P                  ! VRRR7      p\        P                  ! V4      p\        WAR7      \        W1R7      8H  pWQ8X  g   Q h R\        4       9   d   ?\        P                  ! 4        R# R#   R\        4       9   d   ?\        P                  ! 4        i i ; i)zECheck that memmap and arrays hash identically if coerce_mmap is True.Úmemmap_tempzw+)ÚshapeÚmode)r‹   ÚmNr^   )	ÚjoinÚstrpathr   Úmemmapr…   r   ÚlocalsÚgcÚcollect)Útmpdirr‹   Úfilenamer�   rG   rM   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 Â(B?Úwin32z5This test is not stable under windows for some reason)Úreasonc                 óD  € \         P                  P                  ^ 4      p V P                  R4      pR p\	        V\
        V4      pVR8  g   Q h^\        W!4      ,          p\        \
        WV34      pR\        WT,
          4      WT,           ,          ,          pVR8  g   Q hR# )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
i@B c                 ó\   € \         P                  ! \        V 4      4      P                  4       # r   )ÚhashlibÚmd5Ú
memoryviewÚ	hexdigest)r/   s   &r   Úmd5_hashÚ-test_hash_numpy_performance.<locals>.md5_hashã   s   € Ü�{Š{œ: a›=Ó)×3Ñ3Ó5Ð5r   g333333Ó?r"   N)r   r`   ra   rb   r)   r   r    r#   )rd   rG   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                 ó¸   € \        4       p \        4       p\        \        V P                  . R4      4      \        \        VP                  . R4      4      8X  g   Q hR# )zuMake sure that calling the same method on two different instances
of the same class does resolve to the same hashes.
N©rs   )r+   r   r   r0   ©rG   rH   s     r   Útest_bound_methods_hashrª   ñ   sD   € ô 	‹€AÜ‹€AÜ”˜AŸC™C  TÓ*Ó+¬t´KÀÇÁÀRÈÓ4NÓ/OÔOÐOÒOr   c                ó  € \        V P                  4      p\        V P                  4      p\        \        VP                  P
                  . R4      4      \        \        VP                  P
                  . R4      4      8X  g   Q hR# )z~Make sure that calling the same _cached_ method on two different
instances of the same class does resolve to the same hashes.
Nr¨   )r<   r’   r   r   r0   r   )r—   rG   rH   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                 ót  € \         P                  ! \        ^4       U u. uF  p \         P                  ! V 4      NK  	  up \        R7      p\         P                  ! \        ^4       U u. uF  p \         P                  ! V 4      NK  	  up \        R7      p\        V4      \        V4      8X  g   Q hR# u up i u up i )z;Make sure that ndarrays with dtype `object' hash correctly.rz   N)r   r}   r   r{   Úobjectr   )ÚirG   rH   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   žB0Á'B5c                  ó”   € \         P                  ! R 4      p \         P                  ! R4      p\        V 4      \        V4      8w  g   Q hR# )rF   g      @N)r   Úfloat64r   r©   s     r   Útest_numpy_scalarr³     s4   € ô 	�
Š
�3‹€AÜ
�
Š
�3‹€AÜ�‹7”d˜1“gÔÐÒr   c                 óü   € \        V P                  4      pR ^!.R^!.R^!.R^!.R^!.R^!.R^!.R^!.R^!.R	^!.R
^!.R^!.R^!./pVP                  V4      pVP                  V4      p\        V4      \        V4      8X  g   Q hR# )ú#s12069__c_maps.nii.gzú#s12158__c_maps.nii.gzú#s12258__c_maps.nii.gzú#s12277__c_maps.nii.gzú#s12300__c_maps.nii.gzú#s12401__c_maps.nii.gzú#s12430__c_maps.nii.gzú#s13817__c_maps.nii.gzú#s13903__c_maps.nii.gzú#s13916__c_maps.nii.gzú#s13981__c_maps.nii.gzú#s13982__c_maps.nii.gzú#s13983__c_maps.nii.gzN)r<   r’   r0   r   )r—   ÚkrI   rG   rH   s   &    r   Útest_dict_hashrÃ     s¨   € ô 	˜fŸn™nÓ-€Að 	! 2 $Ø  2 $Ø  2 $Ø  2 $Ø  2 $Ø  2 $Ø  2 $Ø  2 $Ø  2 $Ø  2 $Ø  2 $Ø  2 $Ø  2 $ð	€Að  	
�‰ˆA‹€AØ	�‰ˆA‹€Aä�‹7”d˜1“gÔÐÒr   c                 óÄ   € \        V P                  4      p\        . RO4      pVP                  V4      pVP                  V4      p\	        V4      \	        V4      8X  g   Q hR# )rµ   N)rµ   r¶   r·   r¸   r¹   rº   r»   r¼   r½   r¾   r¿   rÀ   rÁ   )r<   r’   Úsetr0   r   )r—   rÂ   r   rG   rH   s   &    r   Útest_set_hashrÆ   3  sS   € ô 	˜fŸn™nÓ-€Aäò	
ó	€Að$ 	
�‰ˆA‹€AØ	�‰ˆA‹€Aä�‹7”d˜1“gÔÐÒr   c            	      ó°   € \        \        \        ^ 4      \        R4      .4      4      \        \        \        R4      \        ^ 4      .4      4      8X  g   Q hR# )r]   ÚNaNN)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                  ó¨   € R p V R/pV R/p\         P                  ! \         P                  ! V4      4      p\        W.4      \        W.4      8X  g   Q hR# )ÚfooÚbarN)ÚpickleÚloadsÚdumpsr   )ÚstringrG   rH   r‰   s       r   Útest_stringrÑ   X  sK   € ð €FØ	�ˆ€AØ	�ˆ€AÜ�Š”V—\’\ !“_Ó%€AÜ��‹<œ4  ›<Ô'Ð'Ò'r   c                  óØ  € \         P                  ! R 4      p \         P                  ! R 4      pWJ g   Q h\        V 4      \        V4      8X  g   Q h\        P                  ! \        P
                  ! V 4      4      pWJg   Q h\        V 4      \        V4      8X  g   Q h\        W .4      \        W".4      8X  g   Q h\        W .4      \        W.4      8X  g   Q h\         P                  ! R\         P                  ^3R\         P                  R3.4      p\         P                  ! R\         P                  ^3R\         P                  R3.4      p\        V4      \        V4      8X  g   Q h\        P                  ! \        P
                  ! V4      4      pWSJg   Q h\        V4      \        V4      8X  g   Q h\        W3.4      \        WU.4      8X  g   Q h\        W3.4      \        WS.4      8X  g   Q hR# )Úf4ÚnameÚgradesN)rj   )r   rx   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Ú a11ffad81f9682a7d901e6edc3d16c84ÚabcdeÚsadfasÚ aeda150553d4bb5c69f0e69d51b0e2efc                 ó*   € \        V 4      V8X  g   Q hR # r   r   )Úto_hashÚexpecteds   &&r   Útest_hashes_stay_the_samerå   ‹  s   € ô& �‹=˜HÔ$Ð$Ò$r   c                  óÈ   € \         P                  P                  ^ 4      p V P                  R4      p\         P                  ! V4      p\        V4      \        V4      8w  g   Q hR# )r]   Nr^   )r   r`   ra   rb   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                  óD   € \        \        P                  ! ^ 4      4       R# ©r]   N©r   r   r}   r   r   r   Útest_0d_arrayrî   «  s   € äŒ�Š�!‹Ör   c                  óŽ   € \        \        P                  ! ^ 4      4      \        \        P                  ! ^ .4      4      8w  g   Q hR# rì   rí   r   r   r   Ú)test_0d_and_1d_array_hashing_is_differentrð   °  s,   € ä”—’˜“Ó¤¤R§X¢X¨q¨c£]Ó 3Ô3Ð3Ò3r   c                  ó  € R  p V ! 4       pV ! 4       p\        ^R7      p\        ^R7      p \        W4       F�  w  rVVP                  \        V4      P	                  4       pVP                  \        V4      P	                  4       pWx8X  g   Q hVP                  \        V4      P	                  4       p	Wy8X  d   K�  Q h	  VP                  4        VP                  4        R#   TP                  4        TP                  4        i ; i)c                  óp  a€ \         P                  P                  ^*4      oSP                  RR^2R7      P	                  R4      \
        ;QJ d     . V3R l\        ^4       4       F  NK  	  5M! V3R l\        ^4       4       4      \        ^4       U u. uF#  p SP                  ^4      P	                  R4      NK%  	  up R	SP                  ^^4      P	                  R4      ^ SP                  ^
^R7      P	                  R4      SP                  ^
4      P	                  R4      ./\         P                  ! ^dRR7      P                  R
4      \         P                  ! \         P                  ! ^dRR7      P                  R
4      4      \         P                  ! ^dRR7      P                  R
4      R,          .pV# u up i )é*   r‚   )ÚhighÚsizez<i8c              3   ód   <"  € T F%  pSP                  ^4      P                  R4      x € K'  	  R# 5i)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õ   rz   iüÿÿiûòÿÿr^   )r„   :Nrj   N)r   r`   ra   Ú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Æ  sL  ø€ Ü�i‰i×#Ñ# BÓ'ˆð �K‰K˜ D¨rˆKÓ2×9Ñ9¸%Ó@ßŒEÔ?´e¸A´hÓ?�E‰EÔ?´e¸A´hÓ?Ó?Ü16°q´Ó:±¨AˆS�Y‰Y�q‹\× Ñ  Ö'±Ñ:à�s—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¸%Õ@ð#
ˆð& Ðùò! ;s   Â)F3)Úmax_workersN)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 Â7C Ã"C?c                  ó¾   € R  p \        \        P                  4      ;_uu_ 4       p\        V 4       RRR4       XP	                  R4       R#   + '       g   i     L#; i)c                  ó   € ^*# )ró   r   r   r   r   Únon_picklableÚ2test_hashing_pickling_error.<locals>.non_picklableü  s   € Ùr   NzPicklingError while hashing)r   rÍ   ÚPicklingErrorr   Úmatch)r  Úexcinfos     r   Útest_hashing_pickling_errorr  û  s?   € òô 
”×$Ñ$×	%Ô	%¨Üˆ]Ô÷ 
&à‡M�MÐ/Ö0÷ 
&×	%ús   ¥AÁA	c                  ó˜   € R p \        \        V R7      ;_uu_ 4        RR/p\        VRR7       RRR4       R#   + '       g   i     R# ; i)z!Valid options for 'hash_name' are)r  rË   rÌ   Úinvalid)Ú	hash_nameN)r   Ú
ValueErrorr   )ÚmsgÚdatas     r   Útest_wrong_hash_namer    s6   € Ø
-€CÜ	”
 #×	&Ö	&Ø�uˆ~ˆÜˆT˜YÕ'÷ 
'×	&×	&Ò	&ús	   œ8¸A		y      ð?      ð?y       @      ð?r¨   )rs   rs   ©rG   rs   )rG   rs   r   )zThis is a string to hashÚ 71b3f47df22cb19431d85d92d0b230b2)u   C'est lÃ©tÃ©Ú 2d8d189e9b2b0b2e384d93c868c0e576))i@â i1Ô  i3~þÿÚ e205227dd82250871fa25aa0ec690aa3)iñØÿÿrj   rƒ   )BÚ__doc__rT   r•   rž   rQ   rl   rÍ   r`   Ú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_listrO   rY   rh   rq   rw   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>r0     s!  ðñó Û 	Û Û 	Û Û Û Û 
Û Ý 2Ý å +Ý Ý  ß -ß ?Ó ?òòòôˆFô ô
˜Fô ð ØØØØ
ØØØØðð
 	
ðð 	
Ø	ðð ˆ€FØˆ€FØˆ€FØØ‡J�Jà	ðç�fáˆƒMÙÐÓàˆ!ˆQ�€NØˆ!ˆQ��3˜˜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Ó×%Ñ%Ö'±Ñ:Ø.ð	
ð �3˜¢-Ð	0Ð2TÐUð	óñ%óð%ð ñ&ó ð&ð ñó ðð ñ4ó ð4ð ñBó ðBòJ1ô(ùòe ;s   Æ(G7