Ë
    èÿæiK  ã                   ó~  — d 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	Z
ddlmZmZmZmZ ddlmZmZ ddlZddlmZmZmZ ddlmZ dd	lmZ dd
lmZ d„ Z G d„ de«      Z G d„ de«      Z G d„ de«      Z  G d„ de «      Z! G d„ de «      Z" G d„ de «      Z# G d„ de«      Z$e%dk(  r ejL                  «        yy)z*
Test hashing of various supported types.
é    N)Údefaultdict)Údedent)ÚjitÚconfigÚtypedÚtypeof)ÚtypesÚutils)ÚTestCaseÚskip_unless_py10_or_laterÚrun_in_subprocess)Úcompile_time_get_string_data)Úhashing)Únumpy_versionc                 ó   — t        | «      S ©N©Úhash©Úxs    úm/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/numba/tests/test_hashing.pyÚhash_usecaser      s   € Ü�‹7€Nó    c                   ó   — e Zd Zd„ Zy)ÚTestHashingSetupc                 óf   — d}t        j                  t        j                  dt	        |«      g«       y )Na±  
        import sys
        import warnings
        from collections import namedtuple

        # hash_info is a StructSequence, mock as a named tuple
        fields = ["width", "modulus", "inf", "nan", "imag", "algorithm",
                  "hash_bits", "seed_bits", "cutoff"]

        hinfo = sys.hash_info
        FAKE_HASHINFO = namedtuple('FAKE_HASHINFO', fields)

        fd = dict()
        for f in fields:
            fd[f] = getattr(hinfo, f)

        fd['algorithm'] = 'fnv'

        fake_hashinfo = FAKE_HASHINFO(**fd)

        # replace the hashinfo with the fnv version
        sys.hash_info = fake_hashinfo
        with warnings.catch_warnings(record=True) as warns:
            # Cause all warnings to always be triggered.
            warnings.simplefilter("always")
            from numba import njit
            @njit
            def foo():
                hash(1)
            foo()
            assert len(warns) > 0
            expect = "FNV hashing is not implemented in Numba. See PEP 456"
            for w in warns:
                if expect in str(w.message):
                    break
            else:
                raise RuntimeError("Expected warning not found")
        z-c)Ú
subprocessÚ
check_callÚsysÚ
executabler   )ÚselfÚworks     r   Útest_warn_on_fnvz!TestHashingSetup.test_warn_on_fnv!   s)   € ð%ˆôL 	×ÑœsŸ~™~¨t´V¸D³\ÐBÕCr   N)Ú__name__Ú
__module__Ú__qualname__r#   © r   r   r   r      s   „ ó(Dr   r   c                   óz   — e Zd Zg d¢g d¢gg d¢g d¢g d¢g d¢g d¢gg d¢g d	¢g d
¢g d¢g d¢gdœZd„ Zd„ Zdd„Zd„ Zy)ÚTestHashAlgs)éˆ\ˆr*   r*   r*   )iLÌ‡×l   LL//+³?iTSÏlûÿÿÿqU:~Œ@[ )éò0&ìûÿÿÿO³wq!~ r+   r,   )ééuÖÅì   éu¬Cœ- r-   r.   )é|#|Üì   |#ø8ÿ
^ r/   r0   )i=½Õ¾lûÿÿÿÃBT='8 i\eîÁl   \eÜ+=Ë" )i[Ýlûÿÿÿò$ÛEü,ß; iwmHÏlûÿÿÿ‰oað_gv )éÞîpGì   ÞnáYD~ r1   r2   )é–SìûÿÿÿjxY_oWÇs r3   r4   )é¯ ú—ì   ¯ ô/Ö“l r5   r6   )iöJkl   öJÖ:ø8`~ iÖÄlûÿÿÿü)øwJµ )iàQ	œlûÿÿÿ .íG¥UJG iO{‘lûÿÿÿ±Á]±D] )Údjba33xÚ	siphash13Ú	siphash24c                 ó,  — |t         j                  j                  k  rd}nt         j                  j                  }t        j
                   }t         j                  dk(  r|rdnd}nt         j                  dk(  sJ ‚|rdnd}| j                  |   |   |   S )Nr7   Úlittleé   r   Úbigé   é   )r   Ú	hash_infoÚcutoffÚ	algorithmr   Ú	IS_32BITSÚ	byteorderÚknown_hashes)r!   ÚpositionÚlengthrB   ÚIS_64BITÚplatforms         r   Úget_expected_hashzTestHashAlgs.get_expected_hashx   s�   € Ø”C—M‘M×(Ñ(Ò(Ø!‰IäŸ™×/Ñ/ˆIÜ×'Ñ'Ð'ˆÜ�=‰=˜HÒ$Ù$‘q¨!‰Hä—=‘= EÒ)Ð*Ð)Ù$‘q¨!ˆHØ× Ñ  Ñ+¨HÑ5°hÑ?Ð?r   c                 ó   — d|z  S )Nzprint(hash(eval(%a)))r'   )r!   Úrepr_s     r   Úget_hash_commandzTestHashAlgs.get_hash_command…   s   € Ø&¨Ñ.Ð.r   Nc                 ó  — t         j                  j                  «       }|�t        |«      |d<   n|j	                  dd «       t        | j                  |«      |¬«      \  }}|j                  «       j                  «       }t        |«      S )NÚPYTHONHASHSEED)ÚcodeÚenv)
ÚosÚenvironÚcopyÚstrÚpopr   rM   ÚdecodeÚstripÚint)r!   rL   ÚseedrQ   ÚoutÚ_Ústdouts          r   Úget_hashzTestHashAlgs.get_hashˆ   sr   € Ü�j‰j�o‰oÓˆØÐÜ$'¨£IˆCÐ Ò!à�G‰GÐ$ dÔ+Ü"¨×(=Ñ(=¸eÓ(DØ'*ô,‰ˆˆQà—‘“×#Ñ#Ó%ˆÜ�6‹{Ðr   c                 ó   — d}|D ]k  \  }}}| j                  ||¬«      5  | j                  t        |«      |¬«      }| j                  |t	        |«      «      }| j                  ||«       d d d «       Œm y # 1 sw Y   ŒxxY w)N))Úabcr   r   )r`   é*   r<   )Úabcdefghijkra   r?   )õ
   Ã¤Ãºâˆ‘â„‡r   r>   )rc   ra   é   )Ú	input_strrZ   )rZ   )ÚsubTestr^   ÚreprrJ   ÚlenÚassertEqual)r!   Úargsre   rZ   rF   ÚgotÚexpecteds          r   Útest_against_cpython_goldz&TestHashAlgs.test_against_cpython_gold“   sw   € ð>ˆó *.Ñ%ˆI�t˜XØ—‘¨	¸�Õ=Ø—m‘m¤D¨£O¸$�mÓ?�Ø×1Ñ1°(¼CÀ	»NÓK�Ø× Ñ   hÔ/÷ >Ð=ñ *.ß=Ð=ús   ŸA
A4Á4A=	r   )r$   r%   r&   rE   rJ   rM   r^   rm   r'   r   r   r)   r)   L   sZ   „ ò :âNð	ò MâNâNâQâPð
ò  OâNâPâOâRð
ñ)!€LòF@ò/ó	ó	0r   r)   c                   óH   — e Zd Zd„ Zd„ Zej                  fd„Zd„ Zd„ Z	d„ Z
y)ÚBaseTestc                 ó:   —  t        d¬«      t        «      | _        y )NT©Únopython)r   r   Úcfunc©r!   s    r   ÚsetUpzBaseTest.setUp¡   s   € Ø'”S $Ô'¬Ó5ˆ�
r   c           	      óz  — | j                   }t        |«      D ]<  } ||«      }| j                  |t        «       	 | j	                  |t        |«      «       Œ> y # t        $ rY}t        d«       t        ||t        |«      «       t        d«       t        t        |«      t        j                  dz
  «       |‚d }~ww xY w)Nzval, nb_hash, hash(val)z%abs(val), hashing._PyHASH_MODULUS - 1r<   )rs   ÚlistÚassertIsInstancerY   ri   r   ÚAssertionErrorÚprintÚabsr   Ú_PyHASH_MODULUS)r!   Úvaluesrs   ÚvalÚnb_hashÚes         r   Úcheck_hash_valueszBaseTest.check_hash_values¤   s�   € Ø—
‘
ˆÜ˜–<ˆCÙ˜C“jˆGØ×!Ñ! '¬3Ô/ðØ× Ñ  ¬$¨s«)Õ4ñ	  øô
 "ò ÜÐ/Ô0Ü�c˜7¤D¨£IÔ.ÜÐ=Ô>Ü”c˜#“h¤× 7Ñ 7¸!Ñ ;Ô<Ø�ûðús   ºAÁ	B:Á!AB5Â5B:c              #   ó  K  — dD ]{  }t        j                  |«      }|j                  |cxk  r|j                  k  sn Œ:d}t	        |||z   «      –— t	        ||d|z  z   d«      –— t	        ||d|z  z   d«      –— dg–— Œ} y ­w)N)r   iÎÿÿÿi`ê  l        éd   é€   éÿÿÿÿ)ÚnpÚiinfoÚminÚmaxÚrange)r!   ÚtypÚstartÚinfoÚns        r   Úint_sampleszBaseTest.int_samples²   s€   è ø€ Û-ˆEÜ—8‘8˜C“=ˆDØ—8‘8˜uÔ0¨¯©Ô0ØØˆAÜ˜˜u q™yÓ)Ò)Ü˜˜u s¨Q¡w™°Ó4Ò4Ü˜˜u s¨Q¡w™°Ó4Ò4Ø�$‹Jñ .ùs   ‚BBc           
      óž   —  t        t        dt        t        j                  |«      j                  «      z   «      |«      j                  |«      S )NrY   )Úgetattrr†   rU   r‡   ÚbitsÚview)r!   r‹   Úvalues      r   Úsafe_constructzBaseTest.safe_construct½   s9   € Ø;Œw”r˜5¤3¤r§x¡x°£}×'9Ñ'9Ó#:Ñ:Ó;¸EÓB×GÑGÈÓLÐLr   c              #   óÒ  K  — t        j                  |«      }dd|j                  dz  |j                  dz  fD ]†  }d}t        |j                  ||j                  z  «      }d|dz  |fD ]T  }||k  rŒ	t        j
                  ||||z  z   |«      }|j                  |«      }|–— | –— ||j                  «       z   –— ŒV Œˆ dddd	t        d
«      t        d
«       g} ||«      –— y ­w)Nr   é
   ç      à?g     @�@rƒ   g333333ó?g        g       €g      ð¿Úinf)	r†   Úfinfor‰   ÚtinyÚ
resolutionÚlinspaceÚastypeÚmeanÚfloat)r!   r‹   r�   rŒ   rŽ   Úmin_stepÚstepÚas           r   Úfloat_sampleszBaseTest.float_samplesÀ   sâ   è ø€ Ü�x‰x˜‹}ˆà˜˜TŸX™X¨™_¨d¯h©h¸Ñ.?Ó@ˆEØˆAÜ˜4Ÿ9™9 e¨d¯o©oÑ&=Ó>ˆHØ˜h¨#™o¨xÓ8�Ø˜(’?ØÜ—K‘K  u¨q°4©xÑ'7¸Ó;�Ø—H‘H˜S“M�Ø’Ø�b’Ø˜!Ÿ&™&›(‘lÓ"ñ 9ð Að �#�t˜T¤5¨£<´%¸³,°Ð@ˆñ
 �!‹f‹ùs   ‚C%C'c              #   ó  K  — | j                  |«      D ]o  }| j                  |«      D ]Y  }|d t        |«       }|d t        |«       }| |d«      |z  z   }t        j                  t        j                  |«      «      rŒV|–— Œ[ Œq y ­w)Ny              ð?)r¤   rh   r†   ÚanyÚisnan)r!   r‹   Úfloat_tyÚrealÚimagr£   s         r   Úcomplex_sampleszBaseTest.complex_samples×   s}   è ø€ Ø×&Ñ& xÖ0ˆDØ×*Ñ*¨8Ö4�à˜JœS ›YÐ'�Ø˜JœS ›YÐ'�Ø™3˜r›7 T™>Ñ)�ô —v‘vœbŸh™h q›kÕ*Ø“Gñ 5ñ 1ùs   ‚A;BÁ>	BN)r$   r%   r&   ru   r�   r†   Úint64r�   r•   r¤   r«   r'   r   r   ro   ro   Ÿ   s*   „ ò6òð !Ÿh™hó 	òMòó.
r   ro   c                   ób   ‡ — e Zd ZdZˆ fd„Zdˆ fd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zed
„ «       Zˆ xZS )ÚTestNumberHashingz'
    Test hashing of number types.
    c                 ó    •— t         dk\  r7t         dk  r.t        j                  «       | _        t        j                  d«       t
        ‰| �  «       S ©N©r?   r   ©r?   r<   Úlegacy©r   r†   Ú_get_promotion_stateÚinitial_stateÚ_set_promotion_stateÚsuperru   ©r!   Ú	__class__s    €r   ru   zTestNumberHashing.setUpé   ó?   ø€ Ü˜FÒ"¤}¸Ò'>ô "$×!8Ñ!8Ó!:ˆDÔÜ×#Ñ# HÔ-ä‰w‰}‹Ðr   c                 ó‚   •— t         dk\  r(t         dk  rt        j                  | j                  «       t        ‰| �  «       S ©Nr±   r²   ©r   r†   r·   r¶   r¸   ÚtearDownr¹   s    €r   r¿   zTestNumberHashing.tearDownò   ó6   ø€ Ü˜FÒ"¤}¸Ò'>ô ×#Ñ# D×$6Ñ$6Ô7ä‰wÑÓ!Ð!r   c                 ó°   — | j                  |«      D ]B  }| j                  |j                  t        j                  |«      «       | j	                  |«       ŒD y r   )r¤   ri   Údtyper†   r�   )r!   r‹   r£   s      r   Úcheck_floatszTestNumberHashing.check_floatsú   sA   € Ø×#Ñ# CÖ(ˆAØ×Ñ˜QŸW™W¤b§h¡h¨s£mÔ4Ø×"Ñ" 1Õ%ñ )r   c                 ó²   — | j                  ||«      D ]B  }| j                  |j                  t        j                  |«      «       | j	                  |«       ŒD y r   )r«   ri   rÂ   r†   r�   )r!   r‹   r¨   r£   s       r   Úcheck_complexzTestNumberHashing.check_complexÿ   sC   € Ø×%Ñ% c¨8Ö4ˆAØ×Ñ˜QŸW™W¤b§h¡h¨s£mÔ4Ø×"Ñ" 1Õ%ñ 5r   c                 ó€   — | j                  t        j                  «       | j                  t        j                  «       y r   )rÃ   r†   Úfloat32Úfloat64rt   s    r   Útest_floatszTestNumberHashing.test_floats  s&   € Ø×Ñœ"Ÿ*™*Ô%Ø×Ñœ"Ÿ*™*Õ%r   c                 ó¼   — | j                  t        j                  t        j                  «       | j                  t        j                  t        j
                  «       y r   )rÅ   r†   Ú	complex64rÇ   Ú
complex128rÈ   rt   s    r   Útest_complexzTestNumberHashing.test_complex  s2   € Ø×Ñœ2Ÿ<™<¬¯©Ô4Ø×Ñœ2Ÿ=™=¬"¯*©*Õ5r   c                 ó*   — | j                  ddg«       y )NFT©r�   rt   s    r   Ú	test_boolzTestNumberHashing.test_bool  s   € Ø×Ñ  t˜}Õ-r   c           	      óº  — g }t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  fD �]i  }| j                  |«      D ]  }| j                  |«       Œ t        j                  |«      }| j                  | j                  |d«      g«       | j                   |d«      g«       dt        |«      v} |«       j                  }|j                  |j                   fD ]·  }d|z  }|}	t#        |«      D ]   }
d}d}|	g}||fD ],  }|	|z  }|t$        j&                  k  sŒ|j)                  |«       Œ. |D ]  }| j                   ||«      g«       Œ |r0|D ]+  }||j                  k7  sŒ| j                   || «      g«       Œ- |dk(  r	|	dz  dz  }	Œœ|	dz	  }	Œ¢ Œ¹ �Œl | j                  t        j                  d«      g«       | j                  t        j                  d	«      g«       | j                  t        j                  d«      g«       | j                  t        j                  d	«      g«       | j                  t        j                  d
«      g«       | j                  t        j                  d«      g«       | j                  t        j                  d«      g«       | j                  t        j
                  d«      g«       | j                  t        j
                  d«      g«       | j                  t        j
                  d«      g«       y )Nr…   r   Úuinté   ì   ª*UUª*UU
 ì   UUª*UUª* r<   l   þÿÿÿ l   ÿÿÿÿ lûÿÿÿÿÿÿÿ lûÿÿÿöÿÿÿ lûÿÿÿœÿÿÿ i  €i
  €id  €)r†   Úint8Úuint8Úint16Úuint16Úint32Úuint32r¬   Úuint64r�   r�   r‡   r•   rU   Úitemsizerˆ   r‰   rŠ   r   ÚmaxsizeÚappend)r!   ÚminmaxÚtyr£   r�   ÚsignedÚszr   ÚshiftsÚyÚiÚtwiddle1Útwiddle2ÚvalsÚtwr~   Úvs                    r   Ú	test_intszTestNumberHashing.test_ints  sµ  € Øˆä—7‘7œBŸH™H¤b§h¡h´·	±	Ü—8‘8œRŸY™Y¬¯©´"·)±)ô=ˆBà×%Ñ% bÖ)�Ø×&Ñ& qÕ)ð *ä—8‘8˜B“<ˆDð ×"Ñ" D×$7Ñ$7¸¸BÓ$?Ð#@ÔAØ×"Ñ"¡B q£E 7Ô+Ø¤3 r£7Ð*ˆFá“—‘ˆBØ—h‘h §¡Ó)�Ø˜R™�ð �Ü˜vž�AØ1�HØ1�HØ˜3�DØ'¨Ó2˜Ø (™l˜Ø¤§¡Ó,Ø ŸK™K¨Õ,ð 3ó "˜Ø×.Ñ.±°1³¨wÕ7ð "áã!%˜AØ  D§H¡H›}Ø $× 6Ñ 6¹¸A¸2»°xÕ @ð "&ð ˜A’vØ ™U q™L™à ™F™ñ% 'ò *ð=ðN 	×Ñ¤§¡Ð);Ó <Ð=Ô>Ø×Ñ¤§¡Ð);Ó <Ð=Ô>Ø×Ñ¤§	¡	Ð*<Ó =Ð>Ô?Ø×Ñ¤§	¡	Ð*<Ó =Ð>Ô?ð 	×Ñ¤§¡Ð)<Ó =Ð>Ô?Ø×Ñ¤§¡Ð)<Ó =Ð>Ô?Ø×Ñ¤§¡Ð)<Ó =Ð>Ô?Ø×Ñ¤§¡¨Ó 5Ð6Ô7Ø×Ñ¤§¡¨Ó 5Ð6Ô7Ø×Ñ¤§¡¨Ó 5Ð6Õ7r   c                 óà   — t        d«      D �cg c]  }t        d«      ‘Œ }}t        |D �cg c]  }| j                  |«      ‘Œ c}«      }| j	                  t        |«      d«       y c c}w c c}w )Nr—   Únanr<   )rŠ   r    Úsetrs   ÚassertGreaterrh   )r!   ræ   r   Úzr[   s        r   Útest_py310_nan_hashz%TestNumberHashing.test_py310_nan_hashF  s]   € ô $)¨¤9Ó-¡9˜aŒU�5�\ 9ˆÐ-Ü©!Ó,©! Q�4—:‘:˜a•=¨!Ñ,Ó-ˆØ×Ñœ3˜s›8 QÕ'ùò .ùÚ,s
   ŽA&«A+©ÚreturnN)r$   r%   r&   Ú__doc__ru   r¿   rÃ   rÅ   rÉ   rÍ   rÐ   rì   r   rò   Ú__classcell__©rº   s   @r   r®   r®   ä   sE   ø„ ñôõ"ò&ò
&ò
&ò6ò.ò58ðn ñ
(ó ô
(r   r®   c                   ó@   ‡ — e Zd ZdZˆ fd„Zdˆ fd„Zd„ Zd„ Zd„ Zˆ xZ	S )ÚTestTupleHashingz!
    Test hashing of tuples.
    c                 ó    •— t         dk\  r7t         dk  r.t        j                  «       | _        t        j                  d«       t
        ‰| �  «       S r°   r´   r¹   s    €r   ru   zTestTupleHashing.setUpY  r»   r   c                 ó‚   •— t         dk\  r(t         dk  rt        j                  | j                  «       t        ‰| �  «       S r½   r¾   r¹   s    €r   r¿   zTestTupleHashing.tearDownb  rÀ   r   c                 óh   — |D ](  }|D �cg c]
  } ||«      ‘Œ }}| j                  |«       Œ* y c c}w r   rÏ   )r!   Úvalue_generatorÚsplitr}   r£   Útupless         r   Úcheck_tupleszTestTupleHashing.check_tuplesj  s5   € Û%ˆFÙ(.Ó/© 1‘e˜A•h¨ˆFÐ/Ø×"Ñ" 6Õ*ñ &ùÚ/s   Š/c                 óæ   ‡ ‡— t         j                  Šˆ ˆfd„}ˆ ˆfd„}‰ j                  ‰ j                  «       |«       ‰ j                  ‰ j                  «       |«       ‰ j	                  g d¢«       y )Nc                 óT   •— ‰j                  ‰| «      } |  ‰d«      z  |  ‰d«      z  fS )z9
            Split i's bits into 2 integers.
            rÕ   rÔ   ©r•   ©ræ   r!   r‹   s    €€r   Úsplit2z8TestTupleHashing.test_homogeneous_tuples.<locals>.split2r  s=   ø€ ð ×#Ñ# C¨Ó+ˆAØ™Ð.Ó/Ñ/Ø™Ð.Ó/Ñ/ðð r   c                 óh   •— ‰j                  ‰| «      } |  ‰d«      z  |  ‰d«      z  |  ‰d«      z  fS )z9
            Split i's bits into 3 integers.
            l   ’$’$’$’$ l   $I$I$I$I l   IIII	 r  r  s    €€r   Úsplit3z8TestTupleHashing.test_homogeneous_tuples.<locals>.split3{  sK   ø€ ð ×#Ñ# C¨Ó+ˆAØ™Ð.Ó/Ñ/Ø™Ð.Ó/Ñ/Ø™Ð.Ó/Ñ/ðð r   )©é   )r   )r   r   )r˜   )r˜   r  )éþÿÿÿr>   )rd   é   )r†   rÜ   r   r�   r�   )r!   r  r  r‹   s   `  @r   Útest_homogeneous_tuplesz(TestTupleHashing.test_homogeneous_tupleso  s_   ù€ Ü�i‰iˆõ	õ	ð 	×Ñ˜$×*Ñ*Ó,¨fÔ5Ø×Ñ˜$×*Ñ*Ó,¨fÔ5ð
 	×Ñò  >õ 	?r   c                 óN   — d}d„ }| j                  | j                  «       |«       y )Nl            c                 ó‚   — | dz  }| dz  | dz	  dz  z  }t        j                  |«      t        j                  |dz  «      fS )NrÕ   l   ª*UU é    g-Cëâ6?)r†   r¬   rÈ   )ræ   r£   Úbs      r   rþ   z9TestTupleHashing.test_heterogeneous_tuples.<locals>.split‘  sD   € ØÐ&Ñ&ˆAØ�Z‘ Q¨"¡W°
Ñ$:Ñ;ˆAÜ—8‘8˜A“;¤§
¡
¨1¨v©:Ó 6Ð6Ð6r   )r   r�   )r!   Úmodulorþ   s      r   Útest_heterogeneous_tuplesz*TestTupleHashing.test_heterogeneous_tuplesŽ  s'   € Øˆò	7ð
 	×Ñ˜$×*Ñ*Ó,¨eÕ4r   ró   )
r$   r%   r&   rõ   ru   r¿   r   r  r  rö   r÷   s   @r   rù   rù   T  s!   ø„ ñôõ"ò+ò
?ö>5r   rù   c                   óT   — e Zd Zd„ Zd„ Zd„ Z ej                  d«      d„ «       Zd„ Z	y)ÚTestUnicodeHashingc                 ó²  — d}t        t        |«      «      D ]  }| j                  |d | g«       Œ d}|j                  t	        |«      «      }t        t        |«      «      D ]  }| j                  |d | g«       Œ d}|j                  t	        |«      «      }t        t        |«      «      D ]  }| j                  |d | g«       Œ d}| j                  |«       y )NÚabcdefghijklmnopqrstuvwxyzu   çœ¼u   ðŸ��âš¡Ú )rŠ   rh   r�   Újoinrw   )r!   Úkind1_stringræ   ÚsepÚkind2_stringÚkind4_stringÚempty_strings          r   Útest_basic_unicodez%TestUnicodeHashing.test_basic_unicode›  sÔ   € Ø3ˆÜ”s˜<Ó(Ö)ˆAØ×"Ñ" L°°!Ð$4Ð#5Õ6ð *ð ˆØ—x‘x¤ \Ó 2Ó3ˆÜ”s˜<Ó(Ö)ˆAØ×"Ñ" L°°!Ð$4Ð#5Õ6ð *ð ˆØ—x‘x¤ \Ó 2Ó3ˆÜ”s˜<Ó(Ö)ˆAØ×"Ñ" L°°!Ð$4Ð#5Õ6ð *ð ˆØ×Ñ˜|Õ,r   c                 ó    — d}t        d¬«      d„ «       }t        |«      d   }| j                  |dk7  «       | j                   ||«      |«       y )Nr  Trq   c                 ó   — | j                   S r   )Ú_hashr   s    r   Úfnz4TestUnicodeHashing.test_hash_passthrough.<locals>.fn²  s   € à—7‘7ˆNr   r…   ©r   r   Ú
assertTrueri   ©r!   r  r"  Ú
hash_values       r   Útest_hash_passthroughz(TestUnicodeHashing.test_hash_passthrough­  sW   € ð 4ˆä	�dÔ	ñ	ó 
ð	ô 2°,Ó?ÀÑCˆ
Ø�‰˜
 bÑ(Ô)Ø×Ñ™˜LÓ)¨:Õ6r   c                 ó¤   — d}t        d¬«      d„ «       }t        |«      d   }| j                  |dk7  «       | j                   ||«      ||f«       y )Nr  Trq   c                 ó0   — | j                   t        | «      fS r   )r!  r   r   s    r   r"  z9TestUnicodeHashing.test_hash_passthrough_call.<locals>.fn¾  s   € à—7‘7œD ›GÐ#Ð#r   r…   r#  r%  s       r   Útest_hash_passthrough_callz-TestUnicodeHashing.test_hash_passthrough_callº  sZ   € à3ˆä	�dÔ	ñ	$ó 
ð	$ô 2°,Ó?ÀÑCˆ
Ø�‰˜
 bÑ(Ô)Ø×Ñ™˜LÓ)¨J¸
Ð+CÕDr   z/Needs hash computation at const unpickling timec                 óˆ   — t        d¬«      d„ «       } |«       }t        d«      }| j                  |t        |«      d   «       y )NTrq   c                  ó
   — d} | S )Nr  r'   r   s    r   r"  z0TestUnicodeHashing.test_hash_literal.<locals>.fnÊ  s   € à,ˆAØˆHr   r  r…   )r   r   ri   r   )r!   r"  r~   Útmps       r   Útest_hash_literalz$TestUnicodeHashing.test_hash_literalÆ  sJ   € ô 
�dÔ	ñ	ó 
ð	ñ ‹dˆÜÐ/Ó0ˆØ×Ñ˜Ô;¸CÓ@ÀÑDÕFr   c                 óV  — d„ } t        d¬«      |«      }d} ||«      } ||«      }t        |«      }t        |«      }| j                  |d d |d d «       | j                  |d   |d   k7  «       d} ||«      } ||«      }t        |«      }t        |«      }| j                  ||«       y )Nc                 ó2   — d}d}||z   }| rt        |«       |S )NÚaaaau   çœ¼çœ¼çœ¼çœ¼r   )Údo_hashÚconst1Úconst2Únews       r   Úimplz:TestUnicodeHashing.test_hash_on_str_creation.<locals>.implÕ  s$   € ØˆFØ#ˆFØ˜6‘/ˆCÙÜ�S”	ØˆJr   Trq   Fr…   )r   r   ri   r$  )r!   r6  ÚjittedÚcompute_hashrl   rk   r£   r  s           r   Útest_hash_on_str_creationz,TestUnicodeHashing.test_hash_on_str_creationÒ  s¼   € ò	ð $”˜dÔ# DÓ)ˆð ˆÙ˜Ó%ˆÙ�\Ó"ˆÜ)¨(Ó3ˆÜ)¨#Ó.ˆØ×Ñ˜˜3˜B˜  3 B Ô(Ø�‰˜˜"™  2¡™Ô'ð ˆÙ˜Ó%ˆÙ�\Ó"ˆÜ)¨(Ó3ˆÜ)¨#Ó.ˆØ×Ñ˜˜AÕr   N)
r$   r%   r&   r  r'  r*  ÚunittestÚskipr.  r9  r'   r   r   r  r  ™  s:   „ ò-ò$7ò
Eð €X‡]�]ÐDÓEñ	Gó Fð	Gór   r  c                   ó   — e Zd Zd„ Zd„ Zy)ÚTestUnhashablec                 ó&  — t        j                  «       j                  t        j                  t        j                  «      t        j
                  «       j                  t        j                  «      t        j                  d«      f} t        d¬«      t        «      }|D ]e  }| j                  t        «      5 } ||«       d d d «       dt        t        |«      «      › d�}| j                  |t        j                   «      «       Œg y # 1 sw Y   ŒIxY w)Nrd   Trq   zunhashable type: 'Ú')r   ÚDictÚemptyr	   r¬   ÚListÚ
empty_listr†   Úonesr   r   ÚassertRaisesÚ	TypeErrorrU   r   ÚassertInÚ	exception)r!   Úunhashablesrs   rá   Úraisesrl   s         r   Útest_hash_unhashablez#TestUnhashable.test_hash_unhashable÷  sº   € Ü—z‘z“|×)Ñ)¬%¯+©+´u·{±{ÓCÜ—z‘z“|×.Ñ.¬u¯{©{Ó;Ü—w‘w˜q“zð#ˆð #”˜TÔ"¤<Ó0ˆÛˆBØ×"Ñ"¤9Ô-°Ù�b”	÷ .à+¬C´°r³
«OÐ+<¸AÐ>ˆHØ�M‰M˜(¤C¨×(8Ñ(8Ó$9Õ:ñ	 ß-Ð-ús   Â6	DÄD	c                 óØ   — t        d¬«      d„ «       }| j                  t        «      5 } |«        d d d «       d}| j                  |t	        j
                  «      «       y # 1 sw Y   Œ1xY w)NTrq   c                  ó6   — t        t        j                  «       y r   )r   r†   Úcosr'   r   r   Úfooz0TestUnhashable.test_no_generic_hash.<locals>.foo  s   € ä”—‘�Lr   z"No __hash__ is defined for object )r   rE  rF  rG  rU   rH  )r!   rO  rJ  rl   s       r   Útest_no_generic_hashz#TestUnhashable.test_no_generic_hash  s`   € ô 
�dÔ	ñ	ó 
ð	ð ×ÑœyÔ)¨VÙŒE÷ *ð 9ˆØ�‰�h¤ F×$4Ñ$4Ó 5Õ6÷	 *Ð)ús   ¨A Á A)N)r$   r%   r&   rK  rP  r'   r   r   r=  r=  ó  s   „ ò	;ó7r   r=  Ú__main__)'rõ   r:  rR   r   r   Úcollectionsr   Útextwrapr   Únumpyr†   Únumbar   r   r   r   Ú
numba.corer	   r
   Únumba.tests.supportr   r   r   Únumba.cpython.unicoder   Únumba.cpythonr   Únumba.np.numpy_supportr   r   r   r)   ro   r®   rù   r  r=  r$   Úmainr'   r   r   Ú<module>r\     sÈ   ðñó ã 	Û 
Û Ý #Ý ã ç ,Ó ,ß #Û ÷4ñ 4õ ?Ý !Ý 0òô*D�xô *DôZP0�8ô P0ôfBˆxô BôJm(˜ô m(ô`B5�xô B5ôJW˜ô Wôt7�Xô 7ð@ ˆzÒØ€H‡M�M…Oð r   