§
    dŠtjÌ=  ã                   ó>  — 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j"        dgj#         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@dA„  e9dB¦  «        D ¦   «         dCfdDg dE¢dFœdGfg¦  «        dH„ ¦   «         Z:edI„ ¦   «         Z;edJ„ ¦   «         Z<edK„ ¦   «         Z=edL„ ¦   «         Z>dM„ Z?dN„ Z@dS )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/html/CA-Chatbot/venv/lib/python3.11/site-packages/joblib/test/test_hashing.pyÚunicoder      s   € Ø€Hó    c                 óâ   — t          ¦   «         }t          d¦  «        D ]C}t          j        ¦   «         } | |Ž  |                     t          j        ¦   «         |z
  ¦  «         ŒDt	          |¦  «        S )zTime function func on *args.é   )ÚlistÚrangeÚtimeÚappendÚmin)ÚfuncÚargsÚtimesÚ_Út1s        r   Ú	time_funcr"   "   sb   € å‰FŒF€EÝ�1‰XŒXð 'ð 'ˆÝŒY‰[Œ[ˆØˆˆdˆˆØ�Š•T”Y‘[”[ 2Ñ%Ñ&Ô&Ð&Ð&Ýˆu‰:Œ:Ðr   c                 óp   — t          | g|¢R Ž }t          |g|¢R Ž }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+   ,   sU   € õ ˜5Ð( 4Ð(Ð(Ð(€JÝ˜5Ð( 4Ð(Ð(Ð(€JØ�3˜z¨JÑ6Ñ7Ô7¸:È
Ñ;RÑSÑT€MØÐr   c                   ó   — e Zd Zd„ ZdS )Ú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dS )ÚKlassWithCachedMethodc                 ód   — t          |¬¦  «        }|                     | j        ¦  «        | _        d S )N)Úlocation)r   Úcacher2   )r0   ÚcachedirÚmems      r   Ú__init__zKlassWithCachedMethod.__init__<   s+   € Ý˜hÐ'Ñ'Ô'ˆØ—’˜4œ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   ;   s2   € € € € € ð#ð #ð #ðð ð ð ð r   r8   é   é   g      ð?ç       @y      ð?      ð?y       @      ð?ÚaÚb©r@   )r@   r@   ©rC   r@   )rC   r@   rF   )rC   r@   ÚdÚobj1Úobj2c                 ó^   — t          | ¦  «        t          |¦  «        k    }| |u }||k    sJ ‚dS )z!Smoke test hash on various types.Nr   )rH   rI   Úare_hashes_equalÚare_objs_identicals       r   Útest_trivial_hashrM   m   s=   € õ
 ˜D‘z”z¥T¨$¡Z¤ZÒ/ÐØ ˜ÐØÐ1Ò1Ð1Ð1Ð1Ð1Ð1r   c                  ó|  — t          j        t          d¦  «        ¦  «        } t          | j        ¦  «        t          | j        ¦  «        k    sJ ‚t          j        t          d¦  «        ¦  «        }t          j        t          d¦  «        ¦  «        }t          |j        ¦  «        t          |j        ¦  «        k    sJ ‚d S )NrC   é
   é	   )	ÚioÚStringIOr   r   ÚflushÚcollectionsÚdequer   Úextend)rC   Úa1Úa2s      r   Útest_hash_methodsrY   w   s‹   € å
Œ•G˜C‘L”LÑ!Ô!€AÝ�”‰=Œ=�D ¤™MœMÒ)Ð)Ð)Ð)Ý	Ô	�5 ™9œ9Ñ	%Ô	%€BÝ	Ô	�5 ™8œ8Ñ	$Ô	$€BÝ�”	‰?Œ?�d 2¤9™oœoÒ-Ð-Ð-Ð-Ð-Ð-r   Úfunction)Úscopec                  óä   — t           j                             d¦  «        } |                      d¦  «        }|                     ¦   «         }|                     ¦   «         }|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   €   sh   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜XÑ&Ô&€DØ�9Š9‰;Œ;€DØ�9Š9‰;Œ;€DØˆ€G€G„Gˆq�L€G€G�GØ��tÐÐr   c                 ó  — | \  }}}t          j        | d¬¦  «        D ]E\  }}t          |¦  «        t          |¦  «        k    }t          j        ||k    ¦  «        }||k    sJ ‚ŒFt          |¦  «        t          |j        ¦  «        k    sJ ‚d S )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ÑBÔBð 4ð 4‰
ˆˆdÝ ™:œ:­¨d©¬Ò3ÐÝœ6 $¨$¢,Ñ/Ô/ÐØÐ#3Ò3Ð3Ð3Ð3Ð3å�‰:Œ:�˜dœf™œÒ%Ð%Ð%Ð%Ð%Ð%r   c                 ó¸   — | \  }}}||dœ}||dœ}||dœ}t          |¦  «        t          |¦  «        k    sJ ‚t          |¦  «        t          |¦  «        k    sJ ‚d S )N)r@   rA   r   )rf   rc   rd   re   Úd1Úd2Úd3s          r   Útest_hash_numpy_dict_of_arraysrs   –   su   € Ø&Ñ€Dˆ$�à�dÐ	Ð	€BØ�dÐ	Ð	€BØ�dÐ	Ð	€Bå�‰8Œ8•t˜B‘x”xÒÐÐÐÝ�‰8Œ8•t˜B‘x”xÒÐÐÐÐÐr   Údtypezdatetime64[s]ztimedelta64[D]c                 ó    — t          t          j        d¦  «        ¦  «        }t          j        dd| ¬¦  «        }t          |¦  «        |k    sJ ‚d S )NrO   r   ©rt   )r   r	   Úarange)rt   Úa_hashÚarrays      r   Útest_numpy_datetime_arrayrz   ¡   sL   € õ
 •"”)˜B‘-”-Ñ Ô €FÝŒI�a˜ 5Ð)Ñ)Ô)€EÝ�‰;Œ;˜&Ò Ð Ð Ð Ð Ð r   c                  ór  — t          j        t          j        d¦  «                             d¦  «        d¬¦  «        d d …d d…d d …f         } t          j        | ¦  «        }t          | ¦  «        t          |¦  «        k    sJ ‚t          j        | ¦  «        }t          | ¦  «        t          |¦  «        k    sJ ‚d S )Nip  )éè  rA   r   ÚF)Úorderr@   )r	   Úasarrayrw   ÚreshapeÚascontiguousarrayr   Úasfortranarray)rC   rD   Úcs      r   Útest_hash_numpy_noncontiguousr„   «   s£   € å
Œ
•2”9˜T‘?”?×*Ò*¨<Ñ8Ô8ÀÐDÑDÔDÀQÀQÀQÈÈÈÈAÈAÈAÀXÔN€AÝ
Ô˜QÑÔ€AÝ�‰7Œ7•d˜1‘g”gÒÐÐÐå
Ô˜!ÑÔ€AÝ�‰7Œ7•d˜1‘g”gÒÐÐÐÐÐr   Úcoerce_mmapTFc                 óŒ  — |                       d¦  «        j        }	 t          j        |dd¬¦  «        }t          j        |¦  «        }t          ||¬¦  «        t          ||¬¦  «        k    }||k    sJ ‚	 dt          ¦   «         v r~t          j        ¦   «          dS dS # 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€HðÝŒI�h h°TÐ:Ñ:Ô:ˆÝŒJ�q‰MŒMˆÝ ¨{Ð;Ñ;Ô;½tØ˜;ð@
ñ @
ô @
ò 
Ðð   ;Ò.Ð.Ð.Ð.Ð.à•&‘(”(ˆ?ˆ?Øõ ŒJ‰LŒLˆLˆLˆLð ˆ?øˆ3•&‘(”(ˆ?ˆ?Øõ ŒJ‰LŒLˆLˆLð øøøs   œAB Â'CÚwin32z5This test is not stable under windows for some reason)Úreasonc                  óL  — t           j                             d¦  «        } |                      d¦  «        }d„ }t	          |t
          |¦  «        }|dk     sJ ‚dt          ||¦  «        z  }t          t
          |||f¦  «        }dt          ||z
  ¦  «        ||z   z  z  }|dk     sJ ‚dS )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                 óh   — t          j        t          | ¦  «        ¦  «                             ¦   «         S r   )ÚhashlibÚmd5Ú
memoryviewÚ	hexdigest)r1   s    r   Úmd5_hashz-test_hash_numpy_performance.<locals>.md5_hashã   s$   € ÝŒ{�: a™=œ=Ñ)Ô)×3Ò3Ñ5Ô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ð 6ð 6õ " (­D°!Ñ4Ô4€MØ˜3ÒÐÐÐð •y ¨1Ñ-Ô-Ñ-€LÝ�$  A q 	Ñ*Ô*€IØ�3˜y¨<Ñ7Ñ8Ô8¸IÈÑ<TÑUÑV€MØ˜3ÒÐÐÐÐÐr   c                  óÒ   — t          ¦   «         } t          ¦   «         }t          t          | j        g d¦  «        ¦  «        t          t          |j        g d¦  «        ¦  «        k    sJ ‚dS )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¢   ñ   sY   € õ 	‰Œ€AÝ‰Œ€AÝ•˜AœC  TÑ*Ô*Ñ+Ô+­tµKÀÄÀRÈÑ4NÔ4NÑ/OÔ/OÒOÐOÐOÐOÐOÐOr   c                 óþ   — t          | j        ¦  «        }t          | j        ¦  «        }t          t          |j        j        g d¦  «        ¦  «        t          t          |j        j        g d¦  «        ¦  «        k    sJ ‚dS )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¤   ú   sz   € õ 	˜fœnÑ-Ô-€AÝ˜fœnÑ-Ô-€AÝ•˜AœCœH b¨$Ñ/Ô/Ñ0Ô0µDÝ�A”C”H˜b $Ñ'Ô'ñ5ô 5ò ð ð ð ð ð r   c                  ó  — t          j        d„ t          d¦  «        D ¦   «         t          ¬¦  «        } t          j        d„ t          d¦  «        D ¦   «         t          ¬¦  «        }t	          | ¦  «        t	          |¦  «        k    sJ ‚dS )z;Make sure that ndarrays with dtype `object' hash correctly.c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r   ©r	   rw   ©Ú.0Úis     r   ú
<listcomp>z*test_hash_object_dtype.<locals>.<listcomp>	  ó    € Ð1Ð1Ð1 1•"”)˜A‘,”,Ð1Ð1Ð1r   é   rv   c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r   r§   r¨   s     r   r«   z*test_hash_object_dtype.<locals>.<listcomp>
  r¬   r   N)r	   ry   r   Úobjectr   r¡   s     r   Útest_hash_object_dtyper°     sy   € õ 	ŒÐ1Ð1­¨a©¬Ð1Ñ1Ô1½Ð@Ñ@Ô@€AÝ
ŒÐ1Ð1­¨a©¬Ð1Ñ1Ô1½Ð@Ñ@Ô@€Aå�‰7Œ7•d˜1‘g”gÒÐÐÐÐÐr   c                  óš   — t          j        d¦  «        } t          j        d¦  «        }t          | ¦  «        t          |¦  «        k    sJ ‚d S )NrB   g      @)r	   Úfloat64r   r¡   s     r   Útest_numpy_scalarr³     sA   € õ 	Œ
�3‰Œ€AÝ
Œ
�3‰Œ€AÝ�‰7Œ7•d˜1‘g”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œ}|                     |¦  «        }|                     |¦  «        }t          |¦  «        t          |¦  «        k    sJ ‚d S )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Ñ-Ô-€Að $& $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $Ø#% $ð	ð 	€Að  	
�ŠˆA‰Œ€AØ	�ŠˆA‰Œ€Aå�‰7Œ7•d˜1‘g”gÒÐÐÐÐÐr   c                 óè   — t          | j        ¦  «        }t          g d¢¦  «        }|                     |¦  «        }|                     |¦  «        }t	          |¦  «        t	          |¦  «        k    sJ ‚d S )Nr¶   )r8   rŒ   Úsetr2   r   )r‘   r·   r   rC   rD   s        r   Útest_set_hashr»   3  st   € õ 	˜fœnÑ-Ô-€Aåð	
ð 	
ð 	
ñ	ô 	€Að$ 	
�ŠˆA‰Œ€AØ	�ŠˆA‰Œ€Aå�‰7Œ7•d˜1‘g”gÒÐÐÐÐÐr   c            	      óî   — t          t          t          d¦  «        t          d¦  «        g¦  «        ¦  «        t          t          t          d¦  «        t          d¦  «        g¦  «        ¦  «        k    sJ ‚d S )Nr   ÚNaN)r   rº   r   r   r   r   Útest_set_decimal_hashr¾   P  sn   € õ ••W˜Q‘Z”Z¥¨¡¤Ð0Ñ1Ô1Ñ2Ô2µdÝ�W�U‰^Œ^�W Q™ZœZÐ(Ñ)Ô)ñ7ô 7ò ð ð ð ð ð r   c                  ó²   — d} | di}| di}t          j        t          j        |¦  «        ¦  «        }t          ||g¦  «        t          ||g¦  «        k    sJ ‚d S )NÚfooÚbar)ÚpickleÚloadsÚdumpsr   )ÚstringrC   rD   rƒ   s       r   Útest_stringrÆ   X  s]   € ð €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 ‚d S )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Œ9�˜S™	œ	Ò!Ð!Ð!Ð!å”|¥F¤L°Ñ$5Ô$5Ñ6Ô6ÐØÐ&Ð&Ð&Ð&Ð&Ý�‰9Œ9�Ð-Ñ.Ô.Ò.Ð.Ð.Ð.å��c�
ÑÔ�tÐ%5Ð7GÐ$HÑIÔIÒIÐIÐIÐIÝ��c�
ÑÔ�t SÐ*:Ð$;Ñ<Ô<Ò<Ð<Ð<Ð<å”(˜V¥R¤W¨bÐ1°H½b¼jÈ$Ð3OÐPÑQÔQ€KÝ”(˜V¥R¤W¨bÐ1°H½b¼jÈ$Ð3OÐPÑQÔQ€Kõ �ÑÔ¥ [Ñ 1Ô 1Ò1Ð1Ð1Ð1å%œ|­F¬L¸Ñ,EÔ,EÑFÔFÐØ#¨;Ð6Ð6Ð6Ð6Ý�ÑÔ¥Ð%=Ñ >Ô >Ò>Ð>Ð>Ð>å�˜kÐ*Ñ+Ô+­tØ	!Ð#;Ð<ñ0ô 0ò ð ð ð õ �˜kÐ*Ñ+Ô+­tØ	! ;Ð/ñ0ô 0ò ð ð ð ð ð r   zto_hash,expected)zThis is a string to hashÚ 71b3f47df22cb19431d85d92d0b230b2)u   C'est lÃ©tÃ©Ú 2d8d189e9b2b0b2e384d93c868c0e576))i@â i1Ô  i3~þÿÚ e205227dd82250871fa25aa0ec690aa3c                 óZ   — g | ](}t          j        d ¦  «                              ¦   «         ‘Œ)S )é*   )r^   ÚRandom)r©   r    s     r   r«   r«   ’  s.   € Ð:Ð:Ð:¨A�VŒ]˜2ÑÔ×%Ò%Ñ'Ô'Ð:Ð:Ð:r   é   Ú a11ffad81f9682a7d901e6edc3d16c84é{   )iñØÿÿrA   r   )ÚabcdeÚsadfasÚ aeda150553d4bb5c69f0e69d51b0e2efc                 ó0   — t          | ¦  «        |k    sJ ‚d S r   r   )Úto_hashÚexpecteds     r   Útest_hashes_stay_the_samerã   ‹  s!   € õ& �‰=Œ=˜HÒ$Ð$Ð$Ð$Ð$Ð$r   c                  óÚ   — t           j                             d¦  «        } |                      d¦  «        }t          j        |¦  «        }t          |¦  «        t          |¦  «        k    sJ ‚d S )Nr   r]   )r	   r^   r_   r`   r‚   r   )ÚrngÚarr_cÚarr_fs      r   ÚAtest_hashes_are_different_between_c_and_fortran_contiguous_arraysrè   ¡  s_   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜hÑ'Ô'€EÝÔ˜eÑ$Ô$€EÝ�‰;Œ;�$˜u™+œ+Ò%Ð%Ð%Ð%Ð%Ð%r   c                  óH   — t          t          j        d¦  «        ¦  «         d S ©Nr   ©r   r	   ry   r   r   r   Útest_0d_arrayrì   «  s   € å�Œ�!‰ŒÑÔÐÐÐr   c                  ó”   — t          t          j        d¦  «        ¦  «        t          t          j        dg¦  «        ¦  «        k    sJ ‚d S rê   rë   r   r   r   Ú)test_0d_and_1d_array_hashing_is_differentrî   °  s;   € å•”˜‘”ÑÔ¥¥R¤X¨q¨c¡]¤]Ñ 3Ô 3Ò3Ð3Ð3Ð3Ð3Ð3r   c                  ó|  — d„ }  | ¦   «         } | ¦   «         }t          d¬¦  «        }t          d¬¦  «        }	 t          ||¦  «        D ]œ\  }}|                     t          |¦  «                             ¦   «         }|                     t          |¦  «                             ¦   «         }||k    sJ ‚|                     t          |¦  «                             ¦   «         }	||	k    sJ ‚Œ�	 |                     ¦   «          |                     ¦   «          d S # |                     ¦   «          |                     ¦   «          w xY w)Nc                  óB  ‡— t           j                             d¦  «        Š‰                     ddd¬¦  «                             d¦  «        t          ˆfd„t          d¦  «        D ¦   «         ¦  «        ˆfd	„t          d¦  «        D ¦   «         ‰                     d
d¦  «                             d¦  «        ‰                     dd¬¦  «                             d¦  «        ‰                     d¦  «                             d¦  «        gdœt          j        dd¬¦  «         	                    d¦  «        t          j
        t          j        dd¬¦  «         	                    d¦  «        ¦  «        t          j        dd¬¦  «         	                    d¦  «        d d …d d…f         g} | S )NrØ   iüÿÿr|   é2   )ÚhighÚsizez<i8c              3   óh   •K  — | ],}‰                      d ¦  «                             d¦  «        V — Œ-dS )r   ú<f4N©ÚrandnÚastype©r©   r    rå   s     €r   ú	<genexpr>z_test_hashes_stay_the_same_with_numpy_objects.<locals>.create_objects_to_hash.<locals>.<genexpr>Ï  s;   øè è € Ð?Ð?°�#—)’)˜A‘,”,×%Ò% eÑ,Ô,Ð?Ð?Ð?Ð?Ð?Ð?r   rÚ   c                 ó`   •— g | ]*}‰                      d ¦  «                             d¦  «        ‘Œ+S )r   rõ   rö   rù   s     €r   r«   z`test_hashes_stay_the_same_with_numpy_objects.<locals>.create_objects_to_hash.<locals>.<listcomp>Ð  s1   ø€ Ð:Ð:Ð:¨AˆS�YŠY�q‰\Œ\× Ò  Ñ'Ô'Ð:Ð:Ð:r   r   rõ   rO   é   )ró   )iûòÿÿr   éd   rv   r]   rA   )r	   r^   r_   Úrandintrø   Útupler   r÷   rw   r€   r‚   )Úto_hash_listrå   s    @r   Úcreate_objects_to_hashzLtest_hashes_stay_the_same_with_numpy_objects.<locals>.create_objects_to_hashÆ  su  ø€ ÝŒi×#Ò# BÑ'Ô'ˆð �KŠK˜ D¨rˆKÑ2Ô2×9Ò9¸%Ñ@Ô@ÝÐ?Ð?Ð?Ð?µe¸A±h´hÐ?Ñ?Ô?Ñ?Ô?Ø:Ð:Ð:Ð:µ°q±´Ð:Ñ:Ô:à—y’y  A‘”×-Ò-¨eÑ4Ô4à—K’K ¨�KÑ,Ô,×3Ò3°EÑ:Ô:Ø—I’I˜b‘M”M×(Ò(¨Ñ/Ô/ððð õ ŒI�c Ð'Ñ'Ô'×/Ò/°Ñ9Ô9åÔ�bœi¨°5Ð9Ñ9Ô9×AÒAÀ(ÑKÔKÑLÔLåŒI�c Ð'Ñ'Ô'×/Ò/°Ñ9Ô9¸!¸!¸!¸R¸a¸R¸%Ô@ð#
ˆð& Ðr   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ÔCð 	$ð 	$‰LˆE�5à—Y’Y�t UÑ+Ô+×2Ò2Ñ4Ô4ˆFØ—Y’Y�t UÑ+Ô+×2Ò2Ñ4Ô4ˆFØ˜VÒ#Ð#Ð#Ð#ð —Y’Y�t UÑ+Ô+×2Ò2Ñ4Ô4ˆFØ˜VÒ#Ð#Ð#Ð#Ð#ð	$ð 	�Š‰ŒˆØ
�Š‰Œˆˆˆøð 	�Š‰ŒˆØ
�Š‰Œˆˆøøøs   ¹B-D Ä*D;c                  ó¶   — d„ } t          t          j        ¦  «        5 }t          | ¦  «         d d d ¦  «         n# 1 swxY w Y   |                     d¦  «         d S )Nc                  ó   — dS )NrØ   r   r   r   r   Únon_picklablez2test_hashing_pickling_error.<locals>.non_picklableü  s   € Øˆrr   zPicklingError while hashing)r   rÂ   ÚPicklingErrorr   Úmatch)r  Úexcinfos     r   Útest_hashing_pickling_errorr  û  s�   € ðð ð õ 
•Ô$Ñ	%Ô	%ð ¨Ýˆ]ÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à‡M‚MÐ/Ñ0Ô0Ð0Ð0Ð0s   �9¹=Á =c                  ó’   — d} t          t          | ¬¦  «        5  ddi}t          |d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz!Valid options for 'hash_name' are)r  rÀ   rÁ   Úinvalid)Ú	hash_name)r   Ú
ValueErrorr   )ÚmsgÚdatas     r   Útest_wrong_hash_namer    sš   € Ø
-€CÝ	•
 #Ð	&Ñ	&Ô	&ð (ð (Ø�uˆ~ˆÝˆT˜YÐ'Ñ'Ô'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   ™<¼A ÁA )AÚ__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   rã   rè   rì   rî   r  r  r  r   r   r   ú<module>r*     sG  ððð ð Ð Ð Ð Ø 	€	€	€	Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð à +Ð +Ð +Ð +Ð +Ð +Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ðð ð ðð ð ðð ð ð ð ˆFñ ô ð ð
ð ð ð ð ˜Fñ ô ð ð ØØØØ
ØØØØðð
 	
ðð 	
Ø	ðð ˆ€FØˆ€FØˆ€FØØ„Jà	ðäà€Cˆ�M„MØ€CÐÑÔà
�€N€NØ
�˜˜a˜Ð!Ð!ðE#€
ðL €ˆV�ZÑ Ô Ø€ˆV�ZÑ Ô ð2ð 2ñ !Ô ñ !Ô ð2ð.ð .ð .ð 	€ˆzÐÑÔØðð ñ „ñ Ôðð&ð &ð &ð ð  ð  ð Ø€ˆW�Ð(8Ð9Ñ:Ô:ð!ð !ñ ;Ô:ñ „ð!ð ðð ñ „ðð Ø€ˆ]˜T 5˜MÑ*Ô*ðð ñ +Ô*ñ „ðð& Ø€Ø„L�GÒØBðñ ô ðð ñ	ô ñ „ð
ðDPð Pð Pðð ð ð ðð ñ „ðð ðð ñ „ððð ð ð6ð ð ð:ð ð ð(ð (ð (ð ð%ð %ñ „ð%ðP €ØàHØ@ØEà:Ð:°°°q±´Ð:Ñ:Ô:Ø.ð	
ð  - - -Ð	0Ð	0Ð2TÐUð	ñô ð%ð %ñô ð%ð ð&ð &ñ „ð&ð ðð ñ „ðð ð4ð 4ñ „ð4ð ðBð Bñ „ðBðJ1ð 1ð 1ð(ð (ð (ð (ð (r   