
    Owg!6                     R   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j2                  j5                  ddeg      d        Zej2                  j5                  dd d! ej:                  d      g      d"        Zd# Zd$ Z ej2                  j5                  dd d! ej:                  d      g      d%        Z!d& Z"d' Z#ej2                  j5                  d( eg d       eg d)       ed*d+ejH                  g       eg d)g d,-       eg d       ed.ejH                  d/g       eg d0       eg d       ee       eg dg dd1       e        e ejJ                  d2ejH                               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j2                  j5                  d( eg d       eg d)       ed*d+ejH                  g       eg d)g d,-       eg d       ed.ejH                  d/g       eg d0       eg d       eg dg dd1       e ejJ                  d2ejH                               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j2                  j5                  d( eg d       eg d       e
d=d>       e	d7d9d>?       ejR                   e&d       g d@ ej(                  dd>      g       ejR                   ejT                   e+dA             e&d      g      g      dB        Z,dC Z-dD Z.ej2                  j5                  d( eg dE       eg dF       eg       g      dG        Z/ej2                  j5                  dH eg dI       eg dJ       e ej(                  d dK            g      ej2                  j5                  dLddg      dM               Z0dN Z1dO Z2dP Z3dQ Z4dR Z5dS Z6dT Z7dU Z8ej2                  j5                  dV e&dW            ej2                  j5                  dXd dYg      dZ               Z9d[ Z:ej2                  j5                  d\ e;d]       e;d^      gd_d`ggdadbgdcddggg      de        Z<df Z=dg Z>y)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    U/var/www/horilla/myenv/lib/python3.12/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                  | |       y )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:   *   sG      &; <=F
J	
 $H 68,r)   c                 l    | j                   }t        j                  t        |      t        |             y r"   )valuesr5   assert_numpy_array_equalr
   )r(   arrs     r'   test_hash_arrayr?   8   s#    
--C
3CAr)   r   Uc                     t        t        j                  g d            }t        t        j                  g d|             }t        j                  ||       y )N)34All)r      rD   r   )r
   r3   r4   r5   r=   )r   result1result2s      r'   test_hash_array_mixedrH   =   s;    "345G-u=>G1r)   val   r.   c                 ~    d}t        j                  t        |      5  t        |        d d d        y # 1 sw Y   y xY w)Nzmust pass a ndarray-likematch)pytestraises	TypeErrorr
   rI   msgs     r'   test_hash_array_errorsrS   E   s1    
$C	y	, 3     3<c                      t        j                  dgd      } d}t        j                  t        |      5  t        |        d d d        y # 1 sw Y   y xY w)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   sG    


12
GC
*C	y	, 3  s   AAc                  @   g d} t        |       }t        t        j                  |             j                  }t        j                  ||       dj                  ddg      }t        j                  t        |      5  t        | d          d d d        y # 1 sw Y   y xY w)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    1F F!*"8"8"@AHHH1 ((,.VW
XC	y	, F1I  s   <BBc                 ~    d}t        j                  t        |      5  t        |        d d d        y # 1 sw Y   y xY w)Nz'must be convertible to a list-of-tuplesrL   )rN   rO   rP   r	   rQ   s     r'   test_hash_tuples_errrc   b   s2    
3C	y	, C  rT   c                      t        j                  g d      } | j                  du sJ t        |       }|j                  du sJ y )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                      t        g dg dgg dg dgddg      } | j                         }| j                  |      sJ t        | j                        j                  t        |j                              sJ y )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   sn    	+\*v
B
 &&(F 99V""5#7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                 d    t        | |      }t        | |      }t        j                  ||       y Nr2   r   r5   r6   rX   r+   r   r   s       r'   test_hash_pandas_objectr   ~   s,    < 	3e,A3e,A1a r)   c                 b    t        | d      }t        | d      }||k(  j                         rJ y NTr2   Fr   allrX   r   r   s      r'   ,test_hash_pandas_object_diff_index_non_emptyr      s1    8 	3d+A3e,AQ||~~r)   z1 dayr   )r   r   r-   aabcc                 d    t        | |      }t        | |      }t        j                  ||       y r   r   r   s       r'   test_hash_pandas_indexr      s,     	3e,A3e,A1a r)   c                 d    t        | |      }t        | |      }t        j                  ||       y r   r   )r(   r+   r   r   s       r'   test_hash_pandas_seriesr      s*    6/A6/A1a r)   c                 b    t        | d      }t        | d      }||k(  j                         rJ y r   r   )r(   r   r   s      r'   "test_hash_pandas_series_diff_indexr      s/    6.A6/AQ||~~r)   float64objectc                 d    t        | |      }t        | |      }t        j                  ||       y r   r   r   s       r'   test_hash_pandas_empty_objectr      s,     	3e,A3e,A1a r)   s1)r   r   r   r   )i  i  i  i  rE   
categorizec                 X   | j                  d      j                  j                  |       }|j                  j                  t        t	        |                   }t        | |      }t        ||      }t        ||      }t        j                  ||       t        j                  ||       y )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2r"2r"r)   c                  <   t         j                  j                  g dt        j                  ddd            } t	        | d      }t         j                  j                  d	d
gt        j
                  d      g      } t	        | d      }|d
   |v sJ |d   |v sJ y )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                      d} t        j                  t        |       5  t        t	        j
                  d             d d d        y # 1 sw Y   y xY w)NzUnexpected type for hashingrL   r   )rN   rO   rP   r   rV   r   rR   s    r'   test_pandas_errorsr     s;    
'C	y	, 52<<
345 5 5s   AAc                      t        t        d            } t        | d      }t        | d      }||k7  j                         sJ y )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      }||k7  j                         sJ y )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                      t        t        j                  d      t        d      d      } t	        | d      }t	        | d      }|d   |d   k(  sJ |d   |d   k7  sJ |d	   |d	   k(  sJ y )
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                      d} t        j                  t        |       5  t        t	        t        d            d       d d d        y # 1 sw Y   y xY w)Nz&key should be a 16-byte string encodedrL   r   r.   r   )rN   rO   
ValueErrorr   r   r   r   s    r'   test_invalid_keyr   @  sA    
2C	z	- @6$u+.?@ @ @s    AAc                     t        t        d            j                  j                  d      }t	        ||       }t	        ||       }t        j                  ||       y )Nr   r   r2   )r   r   strencoder   r5   r6   r+   rX   r   r   s       r'   test_already_encodedr   H  sI    
e

!
!
(
(
0C3e,A3e,A1a r)   c                     t        t        d            }t        ||       }t        ||       }t        j                  ||       y )Nr   r2   )r   r   r   r5   r6   r   s       r'   test_alternate_encodingr   P  s8    
e
C3e,A3e,A1a r)   l_exp   l_addr   c                     d| dz   z  |z   }t        j                  t        |      D cg c]  }t        |       c}t              }t        |d      }|d   |d   k(  rJ y c c}w )Nr   r   r   r   r   r   )r3   r4   ranger   r   r
   )r   r   lengthiidxr8   s         r'   test_same_len_hash_collisionsr   W  sd     519%F
((E&M2qCF2&
ACV$FayF1I%%%% 3s   A!c                  @   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
             y )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	97MTU(V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                  ||       y )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68,r)   c                      t        ddg fdi fgi      } t        j                  t        d      5  t	        |        d d d        y # 1 sw Y   y xY w)Nr   r   r   zunhashable type: 'list'rL   )r   rN   rO   rP   r   )df3s    r'   test_hashable_tuple_argsr     sa     
 		
C 
y(A	B  3     s   AAc                      t         j                  j                  t        ddg      d       } t        ddgd      }t	        j
                  | |       y )Nr   r   r   l   A!M| l   Z4^	 r1   r   )rV   utilr   r   r5   r6   r7   s     r'   test_hash_object_none_keyr     sG    WW''Sz(:T'JF*,@A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'   <module>r      sg        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 E<2<<
+C DE F
 E<2<<
+C DE F$
9 	yS"&&!"o6RVVS!" "#Vi89'"'''266*+..C6R"R]]:q9		
 	%(-"--a"HIuQx}r}}\1EF|L"3?@}r}}Z|DE1:!;:! 	yS"&&!"o6RVVS!" "#i89'"'''266*+..C6R"R]]:q9		
 	%(-"--a"HIuQx}r}}\1EF|L"3?@}r}}Z|DE-676 	i!"+\Q7
1X,mbmmJPQ.RS	
 	 
!4!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)   