+
    Bit0                     f   ^ RI t ^ RIt^ RIt^ RIt^ RIHt ^ RIHt ]P                  R28  t	R3R lt
R tR t ! R R]P                  4      t]P                   t ! R	 R
]4      t^*t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]]4      t ! R R]]4      t ! R R]4      t ! R R]P                  4      t ! R R]4      t ! R R]P                  4      t ! R R4      t ! R R ]4      t ! R! R"]]P                  4      t ! R# R$]]P                  4      t  ! R% R&]]P                  4      t! ! R' R(]4      t" ! R) R*]"]P                  4      t# ! R+ R,]"]P                  4      t$ ! R- R.]"]P                  4      t% ! R/ R0]P                  4      t&]'R18X  d   ]PP                  ! 4        R# R# )4    N)assert_python_ok)Hashablec                    V ^ 8X  d   \        V4      # \        V4      p\        V4       F,  pRV ,          R,           R,          p V ^,	          ^,          W#&   K.  	  \        V4      # )zLinear congruential generatoriC iÞ& )bytes	bytearrayrange)xlengthoutis   &&  %/usr/lib/python3.14/test/test_hash.pylcgr      sZ    AvV}
F
C6]aZ'!Z/r'T!  :    c                    ^ T u;8:  d	   R8  g   Q h Q hV R8  d   V R,
          pMT pW ^ ,	          ,          R,          pVR8  d   VR,
          pW13# TpW13# )z*Convert SipHash24 output to Py_hash_t
    l    l            l    r            )uint64int64uint32int32s   &   r   	pysiphashr      sp     "'"""""'"|#z1F'" < <r   c                    \         P                  P                  R9   pRpV'       d   V # \        P                  ! V4      ! V 4      # )z8Skip decorator for tests that depend on SipHash24 or FNVz$Requires SipHash13, SipHash24 or FNV>   fnv	siphash13	siphash24)sys	hash_info	algorithmunittestskip)testokmsgs   &  r   skip_unless_internalhashr%   +   s7    		 	 $E	EB
0C438==-d33r   c                   >   a  ] tR t^2t o R tR tR tR tR tRt	V t
R# )HashEqualityTestCasec                    \        \        \        V4      4      pVR ,           F'  pW2^ ,          8w  g   K  V P                  RV: 24       K)  	  R# ):   NNzhashed values differ: N)listmaphashfail)selfobjlisthashedhs   &*  r   	same_hashHashEqualityTestCase.same_hash4   s=     c$()A1I~		AB r   c                    V P                  ^^RR4       V P                  ^ RR4       V P                  RRR4       V P                  R	R
R4       R# )r)   g      ?y                        Ny      ?        g      y              g       y               )r2   r.   s   &r   test_numeric_literals*HashEqualityTestCase.test_numeric_literals<   sD    q!S(+q#x(r4+r4+r   c           
     N   V P                  \        ^4      \        ^4      \        ^4      \        ^4      \        R4      \        R4      4       V P                  \        R4      \        R4      4       V P                  \        R4      \        R4      4       V P                  \        R4      \        R4      4       V P                  \        R4      \        R4      4       V P                  \        R	4      \        R	4      4       V P                  \        R4      \        R4      4       R# )
r)   1z1.0Nl        i   i  r   l            l         r2   intfloatcomplexr8   s   &r   test_coerced_integers*HashEqualityTestCase.test_coerced_integersB   s    s1vs1vuQx3xu	/s6{E&M2s7|U7^4s7|U7^4s5z5<0s6{E&M2s5z5<0r   c                    V P                  \        R 4      \        R 4      4       V P                  \        R4      \        RR4      4       R# )g쏈b=~g      ?r5   Nr=   r8   s   &r   test_coerced_floats(HashEqualityTestCase.test_coerced_floatsM   s1    s8}eHo6uSz73#45r   c                    R ^,          p\        ^4       FY  p\        ^4       FG  pW^V,            p\        V4      V^V,            pV P                  \        V4      \        V4      4       KI  	  K[  	  R# )s#   123456789abcdefghijklmnopqrstuvwxyzN)r	   
memoryviewassertEqualr,   )r.   br   jaligned	unaligneds   &     r   test_unaligned_buffers+HashEqualityTestCase.test_unaligned_buffersQ   sc     3S8rA2Yc!e*&qM!CE2	  gY@  r   r   N)__name__
__module____qualname____firstlineno__r2   r9   rA   rD   rM   __static_attributes____classdictcell____classdict__s   @r   r'   r'   2   s&     C,	16A Ar   r'   c                       ] tR t^]tRtR# )DefaultHashr   NrO   rP   rQ   rR   rS   r   r   r   rX   rX   ]   s    4r   rX   c                   &   a  ] tR t^`t o R tRtV tR# )	FixedHashc                    \         # N)_FIXED_HASH_VALUEr8   s   &r   __hash__FixedHash.__hash__a   s      r   r   N)rO   rP   rQ   rR   r_   rS   rT   rU   s   @r   r[   r[   `        ! !r   r[   c                   &   a  ] tR t^dt o R tRtV tR# )OnlyEqualityc                    WJ # r]   r   r.   others   &&r   __eq__OnlyEquality.__eq__e   s
    }r   r   N)rO   rP   rQ   rR   rg   rS   rT   rU   s   @r   rc   rc   d   s      r   rc   c                   &   a  ] tR t^ht o R tRtV tR# )OnlyInequalityc                    WJ# r]   r   re   s   &&r   __ne__OnlyInequality.__ne__i   s      r   r   N)rO   rP   rQ   rR   rl   rS   rT   rU   s   @r   rj   rj   h   ra   r   rj   c                       ] tR t^ltRtR# )InheritedHashWithEqualityr   NrY   r   r   r   ro   ro   l   s    $r   ro   c                       ] tR t^mtRtR# )InheritedHashWithInequalityr   NrY   r   r   r   rq   rq   m   s    dr   rq   c                       ] tR t^otRtRtR# )NoHashNr   )rO   rP   rQ   rR   r_   rS   r   r   r   rs   rs   o   s    Hr   rs   c                      a  ] tR t^rt o ]! 4       ]! 4       ]! 4       .t]! 4       ]	! 4       ]
! 4       .t]! 4       ]! 4       .tR tR tR tR tR tRtV tR# )HashInheritanceTestCasec                t    V P                    F'  pV P                  \        V4      \        V4      4       K)  	  R # r]   )default_expectedrH   r,   _default_hashr.   objs   & r   test_default_hash)HashInheritanceTestCase.test_default_hash   s+    ((CT#Yc(:; )r   c                j    V P                    F"  pV P                  \        V4      \        4       K$  	  R # r]   )fixed_expectedrH   r,   r^   ry   s   & r   test_fixed_hash'HashInheritanceTestCase.test_fixed_hash   s'    &&CT#Y(9: 'r   c                b    V P                    F  pV P                  \        \        V4       K   	  R # r]   )error_expectedassertRaises	TypeErrorr,   ry   s   & r   test_error_hash'HashInheritanceTestCase.test_error_hash   s$    &&Cis3 'r   c                ~    V P                   V P                  ,           pV F  pV P                  V\        4       K  	  R # r]   )rw   r~   assertIsInstancer   )r.   objectsrz   s   &  r   test_hashable%HashInheritanceTestCase.test_hashable   s5    ((&&'C!!#x0 r   c                X    V P                    F  pV P                  V\        4       K  	  R # r]   )r   assertNotIsInstancer   ry   s   & r   test_not_hashable)HashInheritanceTestCase.test_not_hashable   s"    &&C$$S(3 'r   r   N)rO   rP   rQ   rR   objectrX   rj   rw   r[   ro   rq   r~   rs   rc   r   r{   r   r   r   r   rS   rT   rU   s   @r   ru   ru   r   sh     #&(  k/113N h"nN<;414 4r   ru   c                   <   a  ] tR t^t o ]! ^
4      tR tR tRtV t	R# )DefaultIterSeqc                ,    \        V P                  4      # r]   )lenseqr8   s   &r   __len__DefaultIterSeq.__len__   s    488}r   c                (    V P                   V,          # r]   )r   )r.   indexs   &&r   __getitem__DefaultIterSeq.__getitem__   s    xxr   r   N)
rO   rP   rQ   rR   r	   r   r   r   rS   rT   rU   s   @r   r   r      s     
)C r   r   c                   n   a  ] tR t^t o ]! ]! ^
4      4      ]! ]! 4       4      ]! R ^ 4      .tR t	Rt
V tR# )HashBuiltinsTestCasec                     ^ # )r   r   r   r   r   <lambda>HashBuiltinsTestCase.<lambda>   s    Ar   c                    \         P                  pV P                   F$  pV P                  \	        V4      V! V4      4       K&  	  R # r]   )r   r_   hashes_to_checkrH   r,   )r.   rx   rz   s   &  r   test_hashes HashBuiltinsTestCase.test_hashes   s4    ''CT#Yc(:; (r   r   N)rO   rP   rQ   rR   	enumerater	   iterr   r   r   rS   rT   rU   s   @r   r   r      s7      r+N,-Iq)O
< <r   r   c                   6   a  ] tR t^t o R tRR ltR tRtV tR# )HashRandomizationTestsc                    R V,          # )zprint(hash(eval(%a)))r   r.   repr_s   &&r   get_hash_command'HashRandomizationTests.get_hash_command   s    &..r   Nc                   \         P                  P                  4       pR VR&   Ve   \        V4      VR&   MVP	                  RR4       \        RV P                  V4      3/ VB pV^,          P                  4       p\        V4      # )T
__cleanenvNPYTHONHASHSEEDz-c)	osenvironcopystrpopr   r   stripr>   )r.   r   seedenvr   stdouts   &&&   r   get_hashHashRandomizationTests.get_hash   s}    jjoo L$'IC !GG$d+$''. Q6{r   c                    V P                  V P                  R R7      pV P                  V P                  R R7      pV P                  W4       R# )randomr   N)r   r   assertNotEqual)r.   run1run2s   &  r   test_randomized_hash+HashRandomizationTests.test_randomized_hash   s<    }}TZZh}7}}TZZh}7D'r   r   r]   )	rO   rP   rQ   rR   r   r   r   rS   rT   rU   s   @r   r   r      s     
/( (r   r   c                      a  ] tR t^t o RtRtR. RO. RO.R. RO. RO. RO. RO. RO.R. RO. RO. RO. RO. RO.R. RO. RO. RO. RO. RO./tR tR t]	R 4       t
]	R	 4       tR
tV tR# ) StringlikeHashRandomizationTestsNdjba33xr   r   r   c                V   V\         P                  P                  8  d   R pM\         P                  P                  p\         P                  R8X  d   \
        '       d   ^M^ pM'\         P                  R8X  g   Q h\
        '       d   ^M^pV P                  V,          V,          V,          # )r   littlebig)r   r   cutoffr   	byteorderIS_64BITknown_hashes)r.   positionr   r   platforms   &&&  r   get_expected_hash2StringlikeHashRandomizationTests.get_expected_hash   sw    CMM(((!I//I==H$$Hq!H==E)*)$Hq!H  +H5h??r   c                    V P                  ^ ^4      pV P                  V P                  V P                  4      V4       V P	                  V P                  V P                  ^ R7      V4       R# )r   r   N)r   r   r   r   rH   )r.   known_hash_of_objs   & r   test_null_hash/StringlikeHashRandomizationTests.test_null_hash
  sY     221a8 	DMM$**57HI 	tzz:<MNr   c                    V P                  ^^4      pV P                  V P                  V P                  ^*R7      V4       R# )r)   r   N)r   rH   r   r   r.   r1   s   & r   r   0StringlikeHashRandomizationTests.test_fixed_hash  s7     ""1a(tzz;Q?r   c                    V P                   f   R # V P                  ^^4      pV P                  V P                  V P                   ^*R7      V4       R # )Nr   )	repr_longr   rH   r   r   s   & r   test_long_fixed_hash5StringlikeHashRandomizationTests.test_long_fixed_hash  sB    >>!""1b)t~~B?Cr   r   )\r   r   r   )iL̇l   LL//+?iTSlqU:~@[ )0&Owq!~ r   r   )u   uC- r   r   )|#|   |#8
^ r   r   )i=վlBT='8 i\el   \e+=" )i[l$E,; iwmHloa_gv )pG   nYD~ r   r   )SjxY_oWs r   r   )     /l r   r   )iJkl   J:8`~ il)wJ )iQ	l .GUJG iO{l]D] )Г   P'ABS! r   r   )ilm]]Ri ilTe] )iX0l'W=>0 iel;u )il   g,g i5$fl`bTNV)i l9\R>| iQlkT<h4 )rO   rP   rQ   rR   r   r   r   r   r   r%   r   r   rS   rT   rU   s   @r   r   r      s     EI 	9N	 	 MNNQP
 	 ONPOR
 	"##"#
C2Lh
@O @ @ D Dr   r   c                   p   a  ] tR tRt o ]! R4      t]! R4      t]! R4      t]R 4       t	]R 4       t
RtV tR# )	StrHashRandomizationTestsi#  abcabcdefghijku
   äú∑ℇc                <    V P                  \        R 4      ^ 4       R# ) NrH   r,   r8   s   &r   test_empty_string+StrHashRandomizationTests.test_empty_string)  s    b1%r   c                   V P                  ^^4      pV P                  V P                  V P                  ^ R7      V4       V P                  ^^4      pV P                  V P                  V P                  ^*R7      V4       R# )   r   N)r   rH   r   	repr_ucs2r   s   & r   test_ucs2_string*StrHashRandomizationTests.test_ucs2_string-  sh    ""1a(t~~A>B""1a(t~~B?Cr   r   N)rO   rP   rQ   rR   reprr   r   r   r%   r   r   rS   rT   rU   s   @r   r   r   #  sJ     KE]#I\"I& & D Dr   r   c                   P   a  ] tR tRt o ]! R4      t]! R4      t]R 4       tRt	V t
R# )BytesHashRandomizationTestsi4  s   abcs   abcdefghijkc                <    V P                  \        R 4      ^ 4       R# r   Nr   r8   s   &r   r   -BytesHashRandomizationTests.test_empty_string9  s    cA&r   r   N)rO   rP   rQ   rR   r   r   r   r%   r   rS   rT   rU   s   @r   r   r   4  s*     LE^$I' 'r   r   c                   8   a  ] tR tRt o RtRt]R 4       tRtV t	R# ) MemoryviewHashRandomizationTestsi=  zmemoryview(b'abc')zmemoryview(b'abcdefghijk')c                N    V P                  \        \        R 4      4      ^ 4       R# r   )rH   r,   rG   r8   s   &r   r   2MemoryviewHashRandomizationTests.test_empty_stringB  s    jo.2r   r   N)
rO   rP   rQ   rR   r   r   r%   r   rS   rT   rU   s   @r   r  r  =  s!      E,I3 3r   r  c                   &   a  ] tR tRt o R tRtV tR# )DatetimeTestsiF  c                    R V,          # )z import datetime; print(hash(%s))r   r   s   &&r   r   DatetimeTests.get_hash_commandG  s    1E99r   r   N)rO   rP   rQ   rR   r   rS   rT   rU   s   @r   r  r  F  s     : :r   r  c                   J    ] tR tRt]! ]P                  ! R^
^4      4      tRtR# )DatetimeDateTestsiJ  i*  r   N)	rO   rP   rQ   rR   r   datetimedater   rS   r   r   r   r	  r	  J  s    tR,-Er   r	  c                   R    ] tR tRt]! ]P
                  ! ^^^^^^^4      4      tRtR# )DatetimeDatetimeTestsiM  r   N)rO   rP   rQ   rR   r   r
  r   rS   r   r   r   r  r  M  s#    ""1aAq!Q78Er   r  c                   F    ] tR tRt]! ]P                  ! ^ 4      4      tRtR# )DatetimeTimeTestsiP  r   N)	rO   rP   rQ   rR   r   r
  timer   rS   r   r   r   r  r  P  s    q!"Er   r  c                   &   a  ] tR tRt o R tRtV tR# )HashDistributionTestCaseiT  c           
        R p\        ^\        V4      4       F  pVRV pV P                  VR7      ;_uu_ 4        \        4       p\        4       p\        R4       FN  p\	        V\        V4      ,           4      pVP                  V^,          4       VP                  V^,          4       KP  	  V P                  \        V4      ^V4       V P                  \        V4      ^V4       RRR4       K  	  R#   + '       g   i     K  ; i)abcdefghabcdefgN)prefix   )r	   r   subTestsetr,   chraddassertGreater)r.   baser   r  s15s255cr1   s   &       r   test_hash_distribution/HashDistributionTestCase.test_hash_distributionV  s     q#d)$A"1XFV,,eusAVc!f_-AGGAG$HHQX& $
 ""3s8Q7""3t9c6: -, %,,,s   B*C22Dr   N)rO   rP   rQ   rR   r   rS   rT   rU   s   @r   r  r  T  s     ; ;r   r  __main__r   )   ))r
  r   r   r    test.support.script_helperr   collections.abcr   maxsizer   r   r   r%   TestCaser'   r   r_   rx   rX   r^   r[   rc   rj   ro   rq   rs   ru   r   r   r   r   r   r   r  r  r	  r  r  r  rO   mainr   r   r   <module>r)     s    	 
  7 $;;$4'A8,, 'AT  &  ! !6 !V ! ?	< > B)^ BV !4h// !4JV 	<8,, 	<( (8[D'= [D|D @ ( 1 1D"'"B"*"3"3'3'G'/'8'83:* :.x'8'8 .9M8+<+< 9#x'8'8 #;x00 ;$ zMMO r   