
    Mh!6                        S SK rS SKrS SKrS SKJrJrJrJrJ	r	J
r
  S SKJr  S SKJr  S SKJrJr  \R&                  " \" / SQS-  SS9\" / S	QS-  S
S9\" / SQS-  SS9\" / SQS-  5      \" / SQS-  5      \" \R(                  " SSS95      \" \R(                  " SSSS95      \" \
" SSS95      /S9S 5       r\R&                  " SS/S9S 5       rS rS r\R2                  R5                  SS\/5      S 5       r\R2                  R5                  SS S!\R:                  " S5      /5      S" 5       rS# rS$ r \R2                  R5                  SS S!\R:                  " S5      /5      S% 5       r!S& r"S' r#\R2                  R5                  S(\" / SQ5      \" / S)Q5      \" S*S+\RH                  /5      \" / S)Q/ S,QS-9\" / SQ5      \" S.\RH                  S//5      \" / S0Q5      \" / SQ5      \" \S9\" / SQ/ SQS1.5      \" 5       \" \RJ                  " S2\RH                  5      5      \" / S3Q/ S4Q\" / S5Q\S9\R(                  " SS S9S6.5      \" \&" S 5      \R(                  " S7S S9S-9\" \&" S 5      \R(                  " S7S S9S-9\" \	" S7S8S9S:95      \" \R(                  " SSSS95      /5      S; 5       r'\R2                  R5                  S(\" / SQ5      \" / S)Q5      \" S*S+\RH                  /5      \" / S)Q/ S,QS-9\" / SQ5      \" S.\RH                  S//5      \" / S0Q5      \" / SQ5      \" / SQ/ SQS1.5      \" \RJ                  " S2\RH                  5      5      \" / S3Q/ S4Q\" / S5Q\S9\R(                  " SS S9S6.5      \" \&" S 5      \R(                  " S7S S9S-9\" \&" S 5      \R(                  " S7S S9S-9\" \	" S7S8S9S:95      \" \R(                  " SSSS95      /5      S< 5       r(\R2                  R5                  S(\" / SQ5      \" / SQ5      \
" S=S>S9\	" S7S9S>S?9\RR                  " \&" S 5      / S@Q\R(                  " SS>S9/5      \RR                  " \RT                  " \+" SA5      5      \&" S5      /5      /5      SB 5       r,SC r-SD r.\R2                  R5                  S(\" / SES9\" / SFS9\" / 5      /5      SG 5       r/\R2                  R5                  SH\" / SIQ5      \" / SJQ5      \" \R(                  " S SKS95      /5      \R2                  R5                  SLSS/5      SM 5       5       r0SN r1SO r2SP r3SQ r4SR r5SS r6ST r7SU r8\R2                  R5                  SV\&" SW5      5      \R2                  R5                  SXS SY/5      SZ 5       5       r9S[ r:\R2                  R5                  S\\;" S]5      \;" S^5      /S_S`//SaSb/ScSd///5      Se 5       r<Sf r=Sg r>g)h    N)	DataFrameIndex
MultiIndexSeriesperiod_rangetimedelta_range)hash_tuples)
hash_arrayhash_pandas_object         r   int32dtype)Ng      @g      @float32)abccategory)def)TFT20130101	   )periodsz
US/Eastern)r   tz2000)paramsc                     U R                   $ Nparamrequests    P/var/www/html/env/lib/python3.13/site-packages/pandas/tests/util/test_hashing.pyseriesr(      s     ==    TFc                     U R                   $ r"   r#   r%   s    r'   indexr+   %   s    ==r)   c                      [        [        / SQ5      5      n [        [        R                  " / SQSS9/ SQS9n[
        R                  " X5        g )Nfoobarbaz)l   7*  l   6jzd l   n*5uint64r   r+   )r   r   r   nparraytmassert_series_equalresultexpecteds     r'   test_consistencyr:   *   sE      &; <=F
J	
 $H 6,r)   c                 n    U R                   n[        R                  " [        U5      [        U5      5        g r"   )valuesr5   assert_numpy_array_equalr
   )r(   arrs     r'   test_hash_arrayr?   8   s#    
--C
3CAr)   r   Uc                     [        [        R                  " / SQ5      5      n[        [        R                  " / SQU S95      n[        R                  " X5        g )N)34All)r      rD   r   )r
   r3   r4   r5   r=   )r   result1result2s      r'   test_hash_array_mixedrH   =   s9    "345G-u=>G1r)   val   r.   c                     Sn[         R                  " [        US9   [        U 5        S S S 5        g ! , (       d  f       g = f)Nzmust pass a ndarray-likematch)pytestraises	TypeErrorr
   rI   msgs     r'   test_hash_array_errorsrS   E   s(    
$C	y	,3 
-	,	,   1
?c                      [         R                  " S/SS9n Sn[        R                  " [        US9   [        U 5        S S S 5        g ! , (       d  f       g = f)Nz2018-10-28 01:20:00zEurope/Berlin)r   zUse hash_pandas_object insteadrL   )pdDatetimeIndexrN   rO   rP   r
   )objrR   s     r'   test_hash_array_index_exceptionrY   L   s>    


12
GC
*C	y	,3 
-	,	,s   A
Ac                  H   / SQn [        U 5      n[        [        R                  " U 5      5      R                  n[
        R                  " X5        SR                  SS/5      n[        R                  " [        US9   [        U S   5        S S S 5        g ! , (       d  f       g = f)N))r   one)r   two)r   r[   |zobject is not iterablez&zip argument #1 must support iterationrL   r   )r	   r   r   from_tuplesr<   r5   r=   joinrN   rO   rP   )tuplesr8   r9   rR   s       r'   test_hash_tuplesra   U   sw    1F F!*"8"8"@AHHH1 ((,.VW
XC	y	,F1I 
-	,	,s   ;B
B!c                     Sn[         R                  " [        US9   [        U 5        S S S 5        g ! , (       d  f       g = f)Nz'must be convertible to a list-of-tuplesrL   )rN   rO   rP   r	   rQ   s     r'   test_hash_tuples_errrc   b   s)    
3C	y	,C 
-	,	,rT   c                      [         R                  " / SQ5      n U R                  SL d   e[        U 5      nUR                  SL d   eg )N))v   i  )   re   )3      )f   rg   T)r   r^   	is_uniquer   )mir8   s     r'   test_multiindex_uniquerl   i   sC    			 N	OB<<4#Ft###r)   c                     [        / SQ/ SQ// SQ/ SQ/SS/S9n U R                  5       nU R                  U5      (       d   e[        U R                  5      R                  [        UR                  5      5      (       d   eg )N)r   r   r   r   )r   r   r   r   )r   r   r   r   col1col2)levelscodesnames)r   _sort_levels_monotonicequalsr   r<   )rk   reconss     r'   test_multiindex_objectsrv   q   st    	+\*v
B
 &&(F 99V""5#78888r)   rX   )      ?      ?g	@rw   rx   )rx   g?gffffff
@r2   r   r   )r   Nr   xy)
   rE   )        rw   g       @g      @g      @)r}   rw   r}   rw   r}   )foo1foo2foo3foo4foo5)ABCDz
2020-01-01r|   r   )r   freqc                 T    [        XS9n[        XS9n[        R                  " X#5        g Nr2   r   r5   r6   rX   r+   r   r   s       r'   test_hash_pandas_objectr   ~   s&    < 	3,A3,A1 r)   c                 ^    [        U SS9n[        U SS9nX:H  R                  5       (       a   eg NTr2   Fr   allrX   r   r   s      r'   ,test_hash_pandas_object_diff_index_non_emptyr      s1    8 	3d+A3e,A||~~~r)   z1 dayr   )r   r   r-   aabcc                 T    [        XS9n[        XS9n[        R                  " X#5        g r   r   r   s       r'   test_hash_pandas_indexr      s&     	3,A3,A1 r)   c                 T    [        XS9n[        XS9n[        R                  " X#5        g r   r   )r(   r+   r   r   s       r'   test_hash_pandas_seriesr      s$    6/A6/A1 r)   c                 ^    [        U SS9n[        U SS9nX:H  R                  5       (       a   eg r   r   )r(   r   r   s      r'   "test_hash_pandas_series_diff_indexr      s/    6.A6/A||~~~r)   float64objectc                 T    [        XS9n[        XS9n[        R                  " X#5        g r   r   r   s       r'   test_hash_pandas_empty_objectr      s&     	3,A3,A1 r)   s1)r   r   r   r   )i  i  i  i  rE   
categorizec                 @   U R                  S5      R                  R                  U 5      nUR                  R                  [        [	        U 5      5      5      n[        XS9n[        X!S9n[        X1S9n[        R                  " XE5        [        R                  " XF5        g )Nr   r   )astypecatset_categorieslistreversedr   r5   r6   )r   r   s2s3h1h2h3s          r'   test_categorical_consistencyr      s|     
:		"	"	1	1"	5B			tHRL1	2B 
B	6B	B	6B	B	6B2"2"r)   c            	      *   [         R                  R                  / SQ[         R                  " SSSS9S9n [	        U SS9n[         R                  R                  S	S
/[         R
                  " S5      /S9n [	        U SS9nUS
   U;   d   eUS   U;   d   eg )N)r   r   r   r   rE   z
2012-01-01rJ   r   )r   name)
categoriesFr   r   r   r   )rV   Categorical
from_codes
date_ranger
   	Timestamp)r   r9   r8   s      r'   %test_categorical_with_nan_consistencyr     s    
!!lATW(X 	" 	A !.H
!!2q'r||L7Q6R!SAe,F!9   !9   r)   c                      Sn [         R                  " [        U S9   [        [        R
                  " S5      5        S S S 5        g ! , (       d  f       g = f)NzUnexpected type for hashingrL   r   )rN   rO   rP   r   rV   r   rR   s    r'   test_pandas_errorsr     s2    
'C	y	,2<<
34 
-	,	,s    A
Ac                      [        [        S5      5      n [        U SS9n[        U SS9nX:g  R                  5       (       d   eg )Nabc9876543210123456hash_key9876543210123465)r   r   r   r   r   s      r'   test_hash_keysr     s>    
 e
C3);<A3);<AF<<>>>r)   c                      [        [        R                  " S5      [        S5      S.5      n [	        U SS9n[	        U SS9nX:g  R                  5       (       d   eg )Nr   r   ry   r   r   r   )r   r3   aranger   r   r   r   s      r'   test_df_hash_keysr   &  sK     "))A,T%[9
:C3);<A3);<AF<<>>>r)   c                      [        [        R                  " S5      [        S5      S.5      n [	        U SS9n[	        U SS9nUS   US   :X  d   eUS   US   :w  d   eUS	   US	   :X  d   eg )
Nr   za+cry   utf8)encodingutf7r   r   r   )r   r3   r   r   r   r   s      r'   test_df_encodingr   1  su     "))A,T%[9
:C30A30A Q41Q4<<Q41Q4<<Q41Q4<<r)   c                      Sn [         R                  " [        U S9   [        [	        [        S5      5      SS9  S S S 5        g ! , (       d  f       g = f)Nz&key should be a 16-byte string encodedrL   r   r.   r   )rN   rO   
ValueErrorr   r   r   r   s    r'   test_invalid_keyr   @  s4    
2C	z	-6$u+.? 
.	-	-s   A
Ac                     [        [        S5      5      R                  R                  S5      n[	        XS9n[	        XS9n[
        R                  " X#5        g )Nr   r   r2   )r   r   strencoder   r5   r6   r+   rX   r   r   s       r'   test_already_encodedr   H  sC    
e

!
!
(
(
0C3,A3,A1 r)   c                 |    [        [        S5      5      n[        XS9n[        XS9n[        R                  " X#5        g )Nr   r2   )r   r   r   r5   r6   r   s       r'   test_alternate_encodingr   P  s2    
e
C3,A3,A1 r)   l_exp   l_addr   c                     SU S-   -  U-   n[         R                  " [        U5       Vs/ s H  n[        U5      PM     sn[        S9n[        US5      nUS   US   :X  a   eg s  snf )Nr   r   r   r   r   r   )r3   r4   ranger   r   r
   )r   r   lengthiidxr8   s         r'   test_same_len_hash_collisionsr   W  sh     519%F
((E&M2MqCFM2&
ACV$FayF1I%%%% 3s   A#c                  (   SS/n [        [        R                  " U SS [        S9S5      n[        R                  " S/[        R
                  S9n[        R                  " X5        [        [        R                  " U SS [        S9S5      n[        R                  " S	/[        R
                  S9n[        R                  " X45        [        [        R                  " U [        S9S5      n[        R                  " U[        R                  " X$/SS
95        g )Na   Ingrid-9Z9fKIZmkO7i7Cn51Li34pJm44fgX6DYGBNj3VPlOH50m7HnBlPxfIwFMrcNJNMP6PSgLmwWnInciMWrCSAlLEvt7JkJl4IxiMrVbXSa8ZQoVaq5xoQPjltuJEfwdNlO6jo8qRRHvD8sBEBMQASrRa6TsdaPTPCBo3nwIBpE7YzzmyH0vMBhjQZLx1aCT7faSEx7PgFxQhHdKFWROcysamgy9iVj8DO2Fmwg1NNl93rIAqC3mdqfrCxrzfvIY8aJdzin2cHVzy3QUJxZgHvtUtOLxoqnUHsYbNTeq0xcLXpTZEZCxD4PGubIuCNf32c33M7HFsnjWSEjE2yVdWKhmSVodyF8hFYVmhYnMCztQnJrt3O8ZvVRXd5IKwlLexiSp4h888w7SzAIcKgc3g5XQJf6MlSMftDXm9lIsE1mJNiJEv6uY6pgvC3fUPhatlR5JPpVAHNSbSEE73MBzJrhCAbOLXQumyOXigZuPoME7QgJcBalliQol7YZ9a   Tim-b9MddTxOWW2AT1Py6vtVbZwGAmYCjbp89p8mxsiFoVX4FyDOF3wFiAkyQTUgwg9sVqVYOZo09Dh1AzhFHbgij52ylF0SEwgzjzHH8TGY8Lypart4p4onnDoDvVMBa0kdthVGKl6K0BDVGzyOXPXKpmnMF1H6rJzqHJ0HywfwS4XYpVwlAkoeNsiicHkJUFdUAhG229INzvIAiJuAHeJDUoyO4DCBqtoZ5TDend6TK7Y914yHlfH3g1WZu5LksKv68VQHJriWFYusW5e6ZZ6dKaMjTwEGuRgdT66iU5nqWTHRH8WSzpXoCFwGcTOwyuqPSe0fTe21DVtJn1FKj9F9nEnR9xOvJUO7E0piCIF4Ad9yAIDY4DBimpsTfKXCu1vdHpKYerzbndfuFe5AhfMduLYZJi5iAw8qKSwR5h86ttXV0Mc0QmXz8dsRvDgxjXSmupPxBggdlqUlC828hXiTPD7am0yETBV0F3bEtvPiNJfremszcV8NcqAoARMer   r   r   r   l   rIU} r   l   pX^ )axis)	r
   r3   asarrayr   r4   r1   r5   r=   concatenate)hashesrF   	expected1rG   	expected2r8   s         r'   test_hash_collisionsr   a  s    
 	K 	KF F1QKv>GG./ryyAI3F1QKv>GG./ryyAI3

68&AF	7MTU(VWr)   zdata, result_data12l   .C7j| l   93B
 )r   )r   l   pH-\h+ l   1"Rk c                     [        SU 05      n[        U5      n[        U[        R                  S9n[
        R                  " X45        g )Ndatar   )r   r   r   r3   r1   r5   r6   )r   result_datadfr8   r9   s        r'   test_hash_with_tupler   w  s:     
FD>	"B#Fk3H6,r)   c                      [        SS/ 4S0 4/05      n [        R                  " [        SS9   [	        U 5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   zunhashable type: 'list'rL   )r   rN   rO   rP   r   )df3s    r'   test_hashable_tuple_argsr     sY     
 		
C 
y(A	B3 
C	B	Bs   A
Ac                      [         R                  R                  [        SS/5      S S9n [        SS/SS9n[        R
                  " X5        g )Nr   r   r   l   A!M| l   Z4^	 r1   r   )rV   utilr   r   r5   r6   r7   s     r'   test_hash_object_none_keyr     sE    WW''Sz(:T'JF*,@ARH6,r)   )?numpyr3   rN   pandasrV   r   r   r   r   r   r   pandas._testing_testingr5   pandas.core.util.hashingr	   pandas.utilr
   r   fixturer   r(   r+   r:   r?   markparametrizer   rH   r   rS   rY   ra   rc   rl   rv   nanfullr   r   r   from_productCategoricalIndexr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   tupler   r   r    r)   r'   <module>r      s<        0 y1}G,!#95"*5"#"Q&'r}}Z34r}}Z|DEvq12	 e}% &-B
 3-02 12 E2<<
+C DE F
 E2<<
+C DE F$
9 	yS"&&!"o6RVVS!" "#Vi89"'''266*+..C6R]]:q9		
 	%("--a"HIuQxr}}\1EF|L"3?@r}}Z|DE1:!;:! 	yS"&&!"o6RVVS!" "#i89"'''266*+..C6R]]:q9		
 	%("--a"HIuQxr}}\1EF|L"3?@r}}Z|DE-676 	i!"+\Q71X,bmmJPQ.RS	
 	!4!4T&\!BE!H MN	!!! 	F2Y'()CU2YO!! #$'(r}}Q*+ e}5# 6#"
!5
@!! %(+1a&)& * ,&X, 
*eCj	!$8:M#NO
+-@AB-- *-r)   