Ë
    ÷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
mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZmZ dd	lmZmZmZmZ d
„ Zd„ Zd„ Z G d„ de«      Z  G d„ de«      Z!dddddddddddgddgddiddiddidejD                  dgjF                   e$d«       e$d«      dddœddddidœgZ% ede%«       ede%«      d „ «       «       Z&d!„ Z' ed"¬#«      ed$„ «       «       Z(d%„ Z)d&„ Z*e ed'd(d)g«      d*„ «       «       Z+ed+„ «       Z,e ed,d-d.g«      d/„ «       «       Z-e eej\                  d0k(  d1¬2«      d3„ «       «       Z/d4„ Z0d5„ Z1ed6„ «       Z2ed7„ «       Z3d8„ Z4d9„ Z5d:„ Z6d;„ Z7ed<„ «       Z8 ed=d>d?d@ e9dA«      D � cg c]"  }  ejt                  dB«      j                  «       ‘Œ$ c} dCfdDg dE¢dFœdGfg«      dH„ «       Z;edI„ «       Z<edJ„ «       Z=edK„ «       Z>edL„ «       Z?dM„ Z@dN„ ZAyc c} w )Oz
Test the hashing module.
é    N)ÚProcessPoolExecutor)ÚDecimal)Úfilter_args©Úhash)ÚMemory)ÚnpÚ
with_numpy)ÚfixtureÚparametrizeÚraisesÚskipifc                 ó   — | S ©N© )Úss    úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/joblib/test/test_hashing.pyÚunicoder      s   € Ø€Hó    c                 óÊ   — t        «       }t        d«      D ]A  }t        j                  «       } | |Ž  |j                  t        j                  «       |z
  «       ŒC t	        |«      S )zTime function func on *args.é   )ÚlistÚrangeÚtimeÚappendÚmin)ÚfuncÚargsÚtimesÚ_Út1s        r   Ú	time_funcr"   "   sQ   € ä‹F€EÜ�1‹Xò 'ˆÜ�Y‰Y‹[ˆÙˆd‰Ø�‰”T—Y‘Y“[ 2Ñ%Õ&ð'ô ˆu‹:Ðr   c                 ód   — t        | g|¢­Ž }t        |g|¢­Ž }dt        ||z
  «      ||z   z  z  }|S )zKReturn the relative time between func1 and func2 applied on
    *args.
    ç      à?)r"   Úabs)Úfunc1Úfunc2r   Ú
time_func1Ú
time_func2Úrelative_diffs         r   Úrelative_timer+   ,   sF   € ô ˜5Ð( 4Ò(€JÜ˜5Ð( 4Ò(€JØœ3˜z¨JÑ6Ó7¸:È
Ñ;RÑSÑT€MØÐr   c                   ó   — e Zd Zd„ Zy)ÚKlassc                 ó   — |S r   r   ©ÚselfÚxs     r   ÚfzKlass.f7   ó   € Øˆr   N)Ú__name__Ú
__module__Ú__qualname__r2   r   r   r   r-   r-   6   s   „ ór   r-   c                   ó   — e Zd Zd„ Zd„ Zy)ÚKlassWithCachedMethodc                 ó\   — t        |¬«      }|j                  | j                  «      | _        y )N)Úlocation)r   Úcacher2   )r0   ÚcachedirÚmems      r   Ú__init__zKlassWithCachedMethod.__init__<   s    € Ü˜hÔ'ˆØ—‘˜4Ÿ6™6Ó"ˆ�r   c                 ó   — |S r   r   r/   s     r   r2   zKlassWithCachedMethod.f@   r3   r   N)r4   r5   r6   r>   r2   r   r   r   r8   r8   ;   s   „ ò#ór   r8   é   é   g      ð?ç       @y      ð?      ð?y       @      ð?ÚaÚb©r@   )r@   r@   ©rC   r@   )rC   r@   rF   )rC   r@   ÚdÚobj1Úobj2c                 óH   — t        | «      t        |«      k(  }| |u }||k(  sJ ‚y)z!Smoke test hash on various types.Nr   )rH   rI   Úare_hashes_equalÚare_objs_identicals       r   Útest_trivial_hashrM   m   s0   € ô
 ˜D“z¤T¨$£ZÑ/ÐØ ˜ÐØÐ1Ò1Ð1Ñ1r   c                  ól  — t        j                  t        d«      «      } t        | j                  «      t        | j                  «      k(  sJ ‚t        j                  t        d«      «      }t        j                  t        d«      «      }t        |j                  «      t        |j                  «      k7  sJ ‚y )NrC   é
   é	   )	ÚioÚStringIOr   r   ÚflushÚcollectionsÚdequer   Úextend)rC   Ú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                  óÆ   — t         j                  j                  d«      } | j                  d«      }|j	                  «       }|j	                  «       }|dxx   dz  cc<   |||fS )Nr   ©rO   rO   r@   )r	   ÚrandomÚRandomStateÚrandom_sampleÚcopy)ÚrndÚarr1Úarr2Úarr3s       r   Úthree_np_arraysrf   €   sX   € ô �)‰)×
Ñ
 Ó
"€CØ×Ñ˜XÓ&€DØ�9‰9‹;€DØ�9‰9‹;€DØˆƒGˆq�LƒGØ��tÐÐr   c                 ó   — | \  }}}t        j                  | d¬«      D ];  \  }}t        |«      t        |«      k(  }t        j                  ||k(  «      }||k(  rŒ;J ‚ t        |«      t        |j
                  «      k7  sJ ‚y )NrA   )Úrepeat)Ú	itertoolsÚproductr   r	   ÚallÚT)rf   rc   rd   re   rH   rI   rK   Úare_arrays_equals           r   Útest_hash_numpy_arraysrn   ‹   s   € Ø&Ñ€Dˆ$�ä×'Ñ'¨ÀÔBò 4‰
ˆˆdÜ ›:¬¨d«Ñ3ÐÜŸ6™6 $¨$¡,Ó/ÐØÐ#3Ó3Ð3Ð3ð4ô
 �‹:œ˜dŸf™f›Ò%Ð%Ñ%r   c                 ó’   — | \  }}}||dœ}||dœ}||dœ}t        |«      t        |«      k(  sJ ‚t        |«      t        |«      k7  sJ ‚y )N)r@   rA   r   )rf   rc   rd   re   Úd1Úd2Úd3s          r   Útest_hash_numpy_dict_of_arraysrs   –   sX   € Ø&Ñ€Dˆ$�à�dÑ	€BØ�dÑ	€BØ�dÑ	€Bä�‹8”t˜B“xÒÐÐÜ�‹8”t˜B“xÒÐÑr   Údtypezdatetime64[s]ztimedelta64[D]c                 ó�   — t        t        j                  d«      «      }t        j                  dd| ¬«      }t        |«      |k7  sJ ‚y )NrO   r   ©rt   )r   r	   Úarange)rt   Úa_hashÚarrays      r   Útest_numpy_datetime_arrayrz   ¡   s:   € ô
 ”"—)‘)˜B“-Ó €FÜ�I‰I�a˜ 5Ô)€EÜ�‹;˜&Ò Ð Ñ r   c                  óF  — t        j                  t        j                  d«      j                  d«      d¬«      d d …d d…d d …f   } t        j                  | «      }t        | «      t        |«      k7  sJ ‚t        j                  | «      }t        | «      t        |«      k7  sJ ‚y )Nip  )éè  rA   r   ÚF)Úorderr@   )r	   Úasarrayrw   ÚreshapeÚascontiguousarrayr   Úasfortranarray)rC   rD   Ú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                 ón  — | j                  d«      j                  }	 t        j                  |dd¬«      }t        j                  |«      }t        ||¬«      t        ||¬«      k(  }||k(  sJ ‚	 dt        «       v r~t        j                  «        yy# dt        «       v r~t        j                  «        w w xY w)zECheck that memmap and arrays hash identically if coerce_mmap is True.Úmemmap_tempr]   zw+)ÚshapeÚmode)r…   ÚmN)	ÚjoinÚstrpathr	   Úmemmapr   r   ÚlocalsÚgcÚcollect)Útmpdirr…   ÚfilenamerŠ   rC   rK   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 Â$B4Úwin32z5This test is not stable under windows for some reason)Úreasonc                  ó  — t         j                  j                  d«      } | j                  d«      }d„ }t	        |t
        |«      }|dk  sJ ‚dt        ||«      z  }t        t
        |||f«      }dt        ||z
  «      ||z   z  z  }|dk  sJ ‚y)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                 óZ   — t        j                  t        | «      «      j                  «       S r   )ÚhashlibÚmd5Ú
memoryviewÚ	hexdigest)r1   s    r   Úmd5_hashz-test_hash_numpy_performance.<locals>.md5_hashã   s   € Ü�{‰{œ: a›=Ó)×3Ñ3Ó5Ð5r   g333333Ó?r   r$   N)r	   r^   r_   r`   r+   r   r"   r%   )rb   rC   rœ   r*   Útime_hashlibÚ	time_hashs         r   Útest_hash_numpy_performancerŸ   Ê   sœ   € ô, �)‰)×
Ñ
 Ó
"€CØ×Ñ˜'Ó"€Aò6ô " (¬D°!Ó4€MØ˜3ÒÐÐð ”y ¨1Ó-Ñ-€LÜœ$  A q 	Ó*€IØœ3˜y¨<Ñ7Ó8¸IÈÑ<TÑUÑV€MØ˜3ÒÐÑr   c                  ó²   — t        «       } t        «       }t        t        | j                  g d«      «      t        t        |j                  g d«      «      k(  sJ ‚y)z}Make sure that calling the same method on two different instances
    of the same class does resolve to the same hashes.
    rE   N)r-   r   r   r2   ©rC   rD   s     r   Útest_bound_methods_hashr¢   ñ   sD   € ô 	‹€AÜ‹€AÜ”˜AŸC™C  TÓ*Ó+¬t´KÀÇÁÀRÈÓ4NÓ/OÒOÐOÑOr   c                 ó  — t        | j                  «      }t        | j                  «      }t        t        |j                  j
                  g d«      «      t        t        |j                  j
                  g d«      «      k(  sJ ‚y)z†Make sure that calling the same _cached_ method on two different
    instances of the same class does resolve to the same hashes.
    rE   N)r8   rŒ   r   r   r2   r   )r‘   rC   rD   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        j                  t        d«      D � cg c]  } t        j                  | «      ‘Œ c} t        ¬«      }t        j                  t        d«      D � cg c]  } t        j                  | «      ‘Œ c} t        ¬«      }t        |«      t        |«      k(  sJ ‚yc c} w c c} w )z;Make sure that ndarrays with dtype `object' hash correctly.é   rv   N)r	   ry   r   rw   Úobjectr   )ÚirC   rD   s      r   Útest_hash_object_dtyper©     sp   € ô 	�‰¬¨a«Ö1 1”"—)‘)˜A•,Ò1¼Ô@€AÜ
�‰¬¨a«Ö1 1”"—)‘)˜A•,Ò1¼Ô@€Aä�‹7”d˜1“gÒÐÑùò 2ùÚ1s   �B%Á"B*c                  óŠ   — t        j                  d«      } t        j                  d«      }t        | «      t        |«      k7  sJ ‚y )NrB   g      @)r	   Úfloat64r   r¡   s     r   Útest_numpy_scalarr¬     s4   € ô 	�
‰
�3‹€AÜ
�
‰
�3‹€AÜ�‹7”d˜1“gÒÐÑr   c                 óÞ   — t        | j                  «      }dgdgdgdgdgdgdgdgdgdgdgdgdgdœ}|j                  |«      }|j                  |«      }t        |«      t        |«      k(  sJ ‚y )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)r8   rŒ   r2   r   )r‘   ÚkrG   rC   rD   s        r   Útest_dict_hashr±     sŽ   € ô 	˜fŸn™nÓ-€Að $& $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $ñ	€Að  	
�‰ˆA‹€AØ	�‰ˆA‹€Aä�‹7”d˜1“gÒÐÑr   c                 ó¾   — t        | j                  «      }t        g d¢«      }|j                  |«      }|j                  |«      }t	        |«      t	        |«      k(  sJ ‚y )Nr¯   )r8   rŒ   Úsetr2   r   )r‘   r°   r   rC   rD   s        r   Útest_set_hashr´   3  sS   € ô 	˜fŸn™nÓ-€Aäò	
ó	€Að$ 	
�‰ˆA‹€AØ	�‰ˆA‹€Aä�‹7”d˜1“gÒÐÑr   c            	      óª   — t        t        t        d«      t        d«      g«      «      t        t        t        d«      t        d«      g«      «      k(  sJ ‚y )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                  ó¢   — d} | di}| di}t        j                  t        j                  |«      «      }t        ||g«      t        ||g«      k(  sJ ‚y )NÚfooÚbar)ÚpickleÚloadsÚdumpsr   )ÚstringrC   rD   rƒ   s       r   Útest_stringr¿   X  sO   € ð €FØ	�ˆ€AØ	�ˆ€AÜ�‰”V—\‘\ !“_Ó%€AÜ��A�‹<œ4  A ›<Ò'Ð'Ñ'r   c                  ó°  — t        j                  d«      } t        j                  d«      }| |u sJ ‚t        | «      t        |«      k(  sJ ‚t        j                  t        j
                  | «      «      }| |usJ ‚t        | «      t        |«      k(  sJ ‚t        | | g«      t        ||g«      k(  sJ ‚t        | | g«      t        | |g«      k(  sJ ‚t        j                  dt         j                  dfdt         j                  dfg«      }t        j                  dt         j                  dfdt         j                  dfg«      }t        |«      t        |«      k(  sJ ‚t        j                  t        j
                  |«      «      }||usJ ‚t        |«      t        |«      k(  sJ ‚t        ||g«      t        ||g«      k(  sJ ‚t        ||g«      t        ||g«      k(  sJ ‚y )NÚf4Únameé   Úgrades)rA   )r	   rt   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œÐ-Ó.Ò.Ð.Ð.ä��c�
ÓœtÐ%5Ð7GÐ$HÓIÒIÐIÐIÜ��c�
Óœ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Ü�Ó¤Ð%=Ó >Ò>Ð>Ð>ä�˜kÐ*Ó+¬tØ	!Ð#;Ð<ó0ò ð ð ô �˜kÐ*Ó+¬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ñØÿÿrA   r   )ÚabcdeÚsadfasÚ aeda150553d4bb5c69f0e69d51b0e2efc                 ó$   — t        | «      |k(  sJ ‚y r   r   )Úto_hashÚexpecteds     r   Útest_hashes_stay_the_samerÚ   ‹  s   € ô& �‹=˜HÒ$Ð$Ñ$r   c                  óÀ   — t         j                  j                  d«      } | j                  d«      }t        j                  |«      }t        |«      t        |«      k7  sJ ‚y )Nr   r]   )r	   r^   r_   r`   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                  ó@   — t        t        j                  d«      «       y ©Nr   ©r   r	   ry   r   r   r   Útest_0d_arrayrã   «  s   € äŒ�‰�!‹Õr   c                  ó„   — t        t        j                  d«      «      t        t        j                  dg«      «      k7  sJ ‚y rá   râ   r   r   r   Ú)test_0d_and_1d_array_hashing_is_differentrå   °  s,   € ä”—‘˜“Ó¤¤R§X¡X¨q¨c£]Ó 3Ò3Ð3Ñ3r   c                  ó   — d„ }  | «       } | «       }t        d¬«      }t        d¬«      }	 t        ||«      D ]  \  }}|j                  t        |«      j	                  «       }|j                  t        |«      j	                  «       }||k(  sJ ‚|j                  t        |«      j	                  «       }	||	k(  rŒJ ‚ 	 |j                  «        |j                  «        y # |j                  «        |j                  «        w xY w)Nc                  ó  ‡— t         j                  j                  d«      Š‰j                  ddd¬«      j	                  d«      t        ˆfd„t        d«      D «       «      t        d«      D � cg c]"  } ‰j                  d	«      j	                  d
«      ‘Œ$ c} ‰j                  d	d«      j	                  d
«      ‰j                  dd¬«      j	                  d«      ‰j                  d«      j	                  d
«      gdœt        j                  dd¬«      j                  d«      t        j                  t        j                  dd¬«      j                  d«      «      t        j                  dd¬«      j                  d«      d d …d d…f   g}|S c c} w )NrÑ   iüÿÿr|   é2   )ÚhighÚsizez<i8c              3   ó^   •K  — | ]$  }‰j                  d «      j                  d«      –— Œ& y­w)r   ú<f4N)ÚrandnÚastype)Ú.0r    rÜ   s     €r   ú	<genexpr>z_test_hashes_stay_the_same_with_numpy_objects.<locals>.create_objects_to_hash.<locals>.<genexpr>Ï  s$   øè ø€ Ò?°�#—)‘)˜A“,×%Ñ% e×,Ñ?ùs   ƒ*-rÐ   r   rì   rO   é   )rê   )iûòÿÿr   éd   rv   r]   rA   )r	   r^   r_   Úrandintrî   Útupler   rí   rw   r€   r‚   )r    Úto_hash_listrÜ   s     @r   Úcreate_objects_to_hashzLtest_hashes_stay_the_same_with_numpy_objects.<locals>.create_objects_to_hashÆ  s9  ø€ Ü�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r@   )Ú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Ð2BÓCò 	$‰LˆE�5à—Y‘Yœt UÓ+×2Ñ2Ó4ˆFØ—Y‘Yœt UÓ+×2Ñ2Ó4ˆFØ˜VÒ#Ð#Ð#ð —Y‘Yœt UÓ+×2Ñ2Ó4ˆFØ˜VÓ#Ð#Ð#ñ	$ð 	�‰ŒØ
�‰�øð 	�‰ŒØ
�‰�ús   «B
C Â6C Ã"C=c                  óž   — d„ } t        t        j                  «      5 }t        | «       d d d «       j	                  d«       y # 1 sw Y   ŒxY w)Nc                   ó   — y)NrÑ   r   r   r   r   Únon_picklablez2test_hashing_pickling_error.<locals>.non_picklableü  s   € Ør   zPicklingError while hashing)r   r»   ÚPicklingErrorr   Úmatch)r  Úexcinfos     r   Útest_hashing_pickling_errorr  û  sC   € òô 
”×$Ñ$Ó	%ð ¨Üˆ]Ô÷à‡M�MÐ/Õ0÷ð ús   �AÁAc                  óv   — d} t        t        | ¬«      5  ddi}t        |d¬«       d d d «       y # 1 sw Y   y xY w)Nz!Valid options for 'hash_name' are)r
  r¹   rº   Úinvalid)Ú	hash_name)r   Ú
ValueErrorr   )ÚmsgÚdatas     r   Útest_wrong_hash_namer    s9   € Ø
-€CÜ	”
 #Ô	&ñ (Ø�uˆ~ˆÜˆT˜YÕ'÷(÷ (ñ (ús   ”/¯8)BÚ__doc__rT   r�   r˜   rQ   ri   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-   r8   r�   r   r³   Ú
input_listrM   rY   rf   rn   rs   rz   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   Æ'G1