
    d2                        d dl Zd dlZd dlZd dl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j        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j$                     ej%                     ej&                     ej'                     e ej(                               e ej        ddd                    g          d2             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j$                     ej%                     ej&                     ej'                     e ej(                               e ej        ddd                    g          d3             Z*ej                            d( eg d           eg d           ej+                     ej(                     ej,         e-d           g d4 ej        dd5          g           ej,         ej.         e/d6                     e-d          g          g          d7             Z0d8 Z1d9 Z2ej                            d( eg d:           eg d;           eg           g          d<             Z3ej                            d= eg d>           eg d?           e ej        d d@                    g          ej                            dAddg          dB                         Z4dC Z5dD Z6dE Z7dF Z8dG Z9dH Z:dI Z;dJ Z<ej                            dK e-dL                    ej                            dMd dNg          dO                         Z=dP Z>ej                            dQ e?dR           e?dS          gdTdUggdVdWgdXdYggg          dZ             Z@d[ ZAd\ ZBdS )]    N)	DataFrameIndex
MultiIndexSeries)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    Z/var/www/html/t/fyr/venv311/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_consistencyr8   (   sz      &;&;&; < <==F
JJJ	
 	
 	
 $##  H 68,,,,,r'   c                 r    | j         }t          j        t          |          t          |                     d S r    )valuesr3   assert_numpy_array_equalr   )r&   arrs     r%   test_hash_arrayr=   6   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      rB   r   )r   r1   r2   r3   r;   )r   result1result2s      r%   test_hash_array_mixedrF   ;   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   rG   msgs     r%   test_hash_array_errorsrQ   C   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 insteadrJ   )pdDatetimeIndexrL   rM   rN   r   )objrP   s     r%   test_hash_array_index_exceptionrW   J   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   rY   |zobject is not iterablez&zip argument #1 must support iterationrJ   r   )r   r	   r   from_tuplesr:   r3   r;   joinrL   rM   rN   )tuplesr6   r7   rP   s       r%   test_hash_tuplesr_   S   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-tuplesrJ   )rL   rM   rN   r   rO   s     r%   test_hash_tuples_errra   `   s    
3C	y	,	,	,  C                 rR   c                  |    t          j        g d          } | j        du sJ t          |           }|j        du sJ d S )N))v   i  )   rc   )3      )f   re   T)r   r\   	is_uniquer	   )mir6   s     r%   test_multiindex_uniquerj   g   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:   )ri   reconss     r%   test_multiindex_objectsrt   o   s    	+||\\\*v
 
 
B
 &&((F 99V""5#7#78888888r'   rV   )      ?      ?g	@ru   rv   )rv   g?gffffff
@r0   r   r   )r   Nr   xyc                 t    t          | |          }t          | |          }t          j        ||           d S Nr0   r	   r3   r4   rV   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 NTr0   Fr	   allrV   r   r   s      r%   ,test_hash_pandas_object_diff_index_non_emptyr      sF    * 	3d+++A3e,,,AQ||~~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  rC   
categorizec                    |                      d          j                            |           }|j                            t          t	          |                               }t          | |          }t          ||          }t          ||          }t          j        ||           t          j        ||           d S )Nr   r   )astypecatset_categorieslistreversedr	   r3   r4   )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   rC   z
2012-01-01rH   B)r   name)
categoriesFr   r   r   r   )rT   Categorical
from_codes
date_ranger   	Timestamp)r   r7   r6   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 hashingrJ   r   )rL   rM   rN   r	   rT   r   rP   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   rw   r   r   r   )r   r1   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+crw   utf8)encodingutf7r   r   r   )r   r1   r   r   r	   r   s      r%   test_df_encodingr   !  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 encodedrJ   r   r,   r   )rL   rM   
ValueErrorr	   r   r   r   s    r%   test_invalid_keyr   0  s    
2C	z	-	-	- @ @6$u++..????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   ,AAAc                     t          t          d                    j                            d          }t	          ||           }t	          ||           }t          j        ||           d S )Nr   r   r0   )r   r   strencoder	   r3   r4   r)   rV   r   r   s       r%   test_already_encodedr   8  sc    
e


!
(
(
0
0C3e,,,A3e,,,A1a     r'   c                     t          t          d                    }t          ||           }t          ||           }t          j        ||           d S )Nr   r0   )r   r   r	   r3   r4   r   s       r%   test_alternate_encodingr   @  sR    
e

C3e,,,A3e,,,A1a     r'   l_exp   l_addr   c                     d| dz   z  |z   }t          j        |d          }t          |d          }|d         |d         k    rJ d S )Nr   r   r   r   r   )r3   rands_arrayr   )r   r   lengthsr6   s        r%   test_same_len_hash_collisionsr   G  sV     519%F
vq!!A6""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   r1   asarrayr   r2   r/   r3   r;   concatenate)hashesrD   	expected1rE   	expected2r6   s         r%   test_hash_collisionsr   Q  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   r1   r/   r3   r4   )r   result_datadfr6   r7   s        r%   test_hash_with_tupler   g  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'rJ   )r   rL   rM   rN   r	   )df3s    r%   test_hashable_tuple_argsr   x  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^	 r/   r   )rT   utilr	   r   r3   r4   r5   s     r%   test_hash_object_none_keyr     sZ    W''Sz(:(:T'JJF*,@ARRRH68,,,,,r'   )Cnumpyr1   rL   pandasrT   r   r   r   r   pandas._testing_testingr3   pandas.core.util.hashingr   pandas.utilr   r	   fixturer   timedelta_ranger&   r)   r8   r=   markparametrizer   rF   r   rQ   rW   r_   ra   rj   rt   nanmakeMissingDataframemakeMixedDataFramemakeTimeDataFramemakeTimeSeriesmakePeriodIndexr~   r   makeTimedeltaIndexfrom_productrangeCategoricalIndexr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   tupler   r   r    r'   r%   <module>r      sv	                             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!r!&!44455	     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	!!!r!##$$}r}Z|DDDEE# ,! !- ,! 	yyyS"&!""ooo666RVS!""  """##	iii8899!!!r!##$$}r}Z|DDDEE ( ) ( 	iii!!!""
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'   