
    bMh!6                        d dl Zd dlZd dlZd dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZ  ej         eg ddz  d           eg d	dz  d
           eg ddz  d           eg ddz             eg ddz             e ej        dd                     e ej        ddd                     e e
dd                    g          d             Z ej        ddg          d             Zd Zd Zej                            ddeg          d             Zej                            dd d! ej        d          g          d"             Zd# Zd$ Z ej                            dd d! ej        d          g          d%             Z!d& Z"d' Z#ej                            d( eg d           eg d)           ed*d+ej$        g           eg d)g d,-           eg d           ed.ej$        d/g           eg d0           eg d           ee           eg dg dd1           e             e ej%        d2ej$                             eg d3g d4 eg d5e           ej        dd           d6           e e&d            ej        d7d           -           e e&d            ej        d7d           -           e e	d7d8d9:                     e ej        ddd                    g          d;             Z'ej                            d( eg d           eg d)           ed*d+ej$        g           eg d)g d,-           eg d           ed.ej$        d/g           eg d0           eg d           eg dg dd1           e ej%        d2ej$                             eg d3g d4 eg d5e           ej        dd           d6           e e&d            ej        d7d           -           e e&d            ej        d7d           -           e e	d7d8d9:                     e ej        ddd                    g          d<             Z(ej                            d( eg d           eg d           e
d=d>           e	d7d9d>?           ej)         e&d           g d@ ej        dd>          g           ej)         ej*         e+dA                     e&d          g          g          dB             Z,dC Z-dD Z.ej                            d( eg dE           eg dF           eg           g          dG             Z/ej                            dH eg dI           eg dJ           e ej        d dK                    g          ej                            dLddg          dM                         Z0dN Z1dO Z2dP Z3dQ Z4dR Z5dS Z6dT Z7dU Z8ej                            dV e&dW                    ej                            dXd dYg          dZ                         Z9d[ Z:ej                            d\ e;d]           e;d^          gd_d`ggdadbgdcddggg          de             Z<df Z=dg Z>dS )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                     | j         S Nparamrequests    ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/util/test_hashing.pyseriesr(      s     =    TFc                     | j         S r"   r#   r%   s    r'   indexr+   %   s
    =r)   c                      t          t          g d                    } t          t          j        g dd          g d          }t          j        | |           d S )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:   *   sz      &;&;&; < <==F
JJJ	
 	
 	
 $##  H 68,,,,,r)   c                 r    | j         }t          j        t          |          t          |                     d S r"   )valuesr5   assert_numpy_array_equalr
   )r(   arrs     r'   test_hash_arrayr?   8   s.    
-C
3CAAAAAr)   r   Uc                     t          t          j        g d                    }t          t          j        g d|                     }t          j        ||           d S )N)34All)r      rD   r   )r
   r3   r4   r5   r=   )r   result1result2s      r'   test_hash_array_mixedrH   =   sY    "3"3"34455G---u===>>G11111r)   val   r.   c                     d}t          j        t          |          5  t          |            d d d            d S # 1 swxY w Y   d S )Nzmust pass a ndarray-likematch)pytestraises	TypeErrorr
   rI   msgs     r'   test_hash_array_errorsrS   E   s    
$C	y	,	,	,  3                    ;??c                      t          j        dgd          } d}t          j        t          |          5  t          |            d d d            d S # 1 swxY w Y   d S )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
G
G
GC
*C	y	,	,	,  3                 s   AAAc                  b   g d} t          |           }t          t          j        |                     j        }t          j        ||           d                    ddg          }t          j	        t          |          5  t          | d                    d d d            d S # 1 swxY w Y   d S )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   s    111F  F!*"8"@"@AAHH111 ((,.VW
X
XC	y	,	,	,  F1I                 s   B$$B(+B(c                     d}t          j        t          |          5  t          |            d d d            d S # 1 swxY w Y   d S )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                  |    t          j        g d          } | j        du sJ t          |           }|j        du sJ d S )N))v   i  )   re   )3      )f   rg   T)r   r^   	is_uniquer   )mir8   s     r'   test_multiindex_uniquerl   i   sS    		 N N N	O	OB<4##Ft######r)   c                     t          g dg dgg dg dgddg          } |                                 }|                     |          sJ t          | j                                      t          |j                            sJ d S )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   s    	+||\\\*v
 
 
B
 &&((F 99V""5#7#7888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    t          | |          }t          | |          }t          j        ||           d S Nr2   r   r5   r6   rX   r+   r   r   s       r'   test_hash_pandas_objectr   ~   sA    < 	3e,,,A3e,,,A1a     r)   c                 ~    t          | d          }t          | d          }||k                                    rJ d S NTr2   Fr   allrX   r   r   s      r'   ,test_hash_pandas_object_diff_index_non_emptyr      sF    8 	3d+++A3e,,,AQ||~~r)   z1 dayr   )r   r   r-   aabcc                 t    t          | |          }t          | |          }t          j        ||           d S r   r   r   s       r'   test_hash_pandas_indexr      sA     	3e,,,A3e,,,A1a     r)   c                 t    t          | |          }t          | |          }t          j        ||           d S r   r   )r(   r+   r   r   s       r'   test_hash_pandas_seriesr      s?    6///A6///A1a     r)   c                 ~    t          | d          }t          | d          }||k                                    rJ d S r   r   )r(   r   r   s      r'   "test_hash_pandas_series_diff_indexr      sD    6...A6///AQ||~~r)   float64objectc                 t    t          | |          }t          | |          }t          j        ||           d S r   r   r   s       r'   test_hash_pandas_empty_objectr      sA     	3e,,,A3e,,,A1a     r)   s1)r   r   r   r   )i  i  i  i  rE   
categorizec                    |                      d          j                            |           }|j                            t          t	          |                               }t          | |          }t          ||          }t          ||          }t          j        ||           t          j        ||           d S )Nr   r   )astypecatset_categorieslistreversedr   r5   r6   )r   r   s2s3h1h2h3s          r'   test_categorical_consistencyr      s     
:			"	1	1"	5	5B			tHRLL11	2	2B 
B:	6	6	6B	B:	6	6	6B	B:	6	6	6B2r"""2r"""""r)   c                  V   t           j                            g dt          j        ddd                    } t	          | d          }t           j                            d	d
gt          j        d          g          } t	          | d          }|d
         |v sJ |d         |v sJ d S )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(X(X 	" 	 	A !...H
!!2q'r|L7Q7Q6R!SSAe,,,F!9    !9      r)   c                      d} t          j        t          |           5  t          t	          j        d                     d d d            d S # 1 swxY w Y   d S )NzUnexpected type for hashingrL   r   )rN   rO   rP   r   rV   r   rR   s    r'   test_pandas_errorsr     s    
'C	y	,	,	, 5 52<
334445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   "AAAc                      t          t          d                    } t          | d          }t          | d          }||k                                    sJ d S )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                      t          t          j        d          t          d          d          } t	          | d          }t	          | d          }||k                                    sJ d S )Nr   r   ry   r   r   r   )r   r3   aranger   r   r   r   s      r'   test_df_hash_keysr   &  sk     ")A,,T%[[99
:
:C3);<<<A3);<<<AF<<>>r)   c                  $   t          t          j        d          t          d          d          } t	          | d          }t	          | d          }|d         |d         k    sJ |d         |d         k    sJ |d	         |d	         k    sJ d S )
Nr   za+cry   utf8)encodingutf7r   r   r   )r   r3   r   r   r   r   s      r'   test_df_encodingr   1  s     ")A,,T%[[99
:
:C3000A3000A Q41Q4<<<<Q41Q4<<<<Q41Q4<<<<<<r)   c                      d} t          j        t          |           5  t          t	          t          d                    d           d d d            d S # 1 swxY w Y   d S )Nz&key should be a 16-byte string encodedrL   r   r.   r   )rN   rO   
ValueErrorr   r   r   r   s    r'   test_invalid_keyr   @  s    
2C	z	-	-	- @ @6$u++..????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   ,AAAc                     t          t          d                    j                            d          }t	          ||           }t	          ||           }t          j        ||           d S )Nr   r   r2   )r   r   strencoder   r5   r6   r+   rX   r   r   s       r'   test_already_encodedr   H  sc    
e


!
(
(
0
0C3e,,,A3e,,,A1a     r)   c                     t          t          d                    }t          ||           }t          ||           }t          j        ||           d S )Nr   r2   )r   r   r   r5   r6   r   s       r'   test_alternate_encodingr   P  sR    
e

C3e,,,A3e,,,A1a     r)   l_exp   l_addr   c                     d| dz   z  |z   }t          j        d t          |          D             t                    }t	          |d          }|d         |d         k    rJ d S )Nr   r   c                 ,    g | ]}t          |          S  )r   ).0is     r'   
<listcomp>z1test_same_len_hash_collisions.<locals>.<listcomp>[  s    222qCFF222r)   r   r   r   r   )r3   r4   ranger   r
   )r   r   lengthidxr8   s        r'   test_same_len_hash_collisionsr   W  sn     519%F
(22E&MM222&
A
A
ACV$$FayF1I%%%%%%r)   c                  R   ddg} t          t          j        | dd         t                    d          }t          j        dgt          j                  }t          j        ||           t          t          j        | dd         t                    d          }t          j        d	gt          j                  }t          j        ||           t          t          j        | t                    d          }t          j        |t          j        ||gd
                     d S )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 F1Q3Kv>>>GGG./ryAAAI333F1Q3Kv>>>GGG./ryAAAI333
6888&AAF	97MTU(V(V(VWWWWWr)   zdata, result_data12l   .C7j| l   93B
 )r   )r   l   pH-\h+ l   1"Rk c                     t          d| i          }t          |          }t          |t          j                  }t          j        ||           d S )Ndatar   )r   r   r   r3   r1   r5   r6   )r   result_datadfr8   r9   s        r'   test_hash_with_tupler   w  sO     
FD>	"	"B##Fk333H68,,,,,r)   c                      t          ddg fdi fgi          } t          j        t          d          5  t	          |            d d d            d S # 1 swxY w Y   d S )Nr   r   r   zunhashable type: 'list'rL   )r   rN   rO   rP   r   )df3s    r'   test_hashable_tuple_argsr     s     
 		
 C 
y(A	B	B	B    3                                   s   AAAc                      t           j                            t          ddg          d           } t          ddgd          }t	          j        | |           d S )Nr   r   r   l   A!M| l   Z4^	 r1   r   )rV   utilr   r   r5   r6   r7   s     r'   test_hash_object_none_keyr     sZ    W''Sz(:(:T'JJF*,@ARRRH68,,,,,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)   r'   <module>r     s
                                 0 0 0 0 0 0        yyy1}G,,,!#9555"*555"##"""Q&''}r}Z33344}r}Z|DDDEEvq11122	     e}%%%  &%- - -B B B
 3-002 2 102 E<2<
+C+C DEE  FE  
 
 
 E<2<
+C+C DEE  FE$ $ $
9 
9 
9 	yyyS"&!""ooo666RVS!""  """##V	iii8899		'"''26**++	......UCCC6RRR"R]:q999	 	
 	
 		%%((-"-a"H"H"HIIIuuQxx}r}\1EEEFFF||L"3???@@}r}Z|DDDEE1 :! !; :! 	yyyS"&!""ooo666RVS!""  """##	iii8899	'"''26**++	......UCCC6RRR"R]:q999	 	
 	
 		%%((-"-a"H"H"HIIIuuQxx}r}\1EEEFFF||L"3???@@}r}Z|DDDEE- 6 7 6 	iii!!!""+++\Q777
U1XX,,,mbmJPQ.R.R.RS	
 	
 	 
!4!4TT&\\!B!BEE!HH MNN	 ! ! !! ! !   	FF2Y'''()C)C)CUU2YYO ! ! ! ###$$'''((}r}Q***++  e}55# # 65 #"
! 
! 
!5 5 5
 
 
    @ @ @! ! !! ! ! %%((++1a&))& & *) ,+&X X X, 
%**eeCjj	!$8:M#NO
+-@AB - - -     *- - - - -r)   