a
    Pf!6                     @   s  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 ddeg d	d d
deg dd ddeg dd eg dd eejdddeejddddee
dddgddd Zejddgddd Zdd Zdd Zejd d!egd"d# Zejd$d%d&edgd'd( Zd)d* Zd+d, Z ejd$d%d&edgd-d. Z!d/d0 Z"d1d2 Z#ejd3eg deg d4ed5d6ej$geg d4g d7d8eg ded9ej$d:geg d;eg deedeg dg dd<e ee%d=ej$eg d>g d?eg d@edejdd%ddAee&d%ejdBd%dd8ee&d%ejdBd%dd8ee	dBdCdDdEeejddddgdFdG Z'ejd3eg deg d4ed5d6ej$geg d4g d7d8eg ded9ej$d:geg d;eg deg dg dd<ee%d=ej$eg d>g d?eg d@edejdd%ddAee&d%ejdBd%dd8ee&d%ejdBd%dd8ee	dBdCdDdEeejddddgdHdI Z(ejd3eg deg de
dJdKde	dBdDdKdLe)e&d%g dMejddKdge)e*e+dNe&dggdOdP Z,dQdR Z-dSdT Z.ejd3eg dUdeg dVdeg gdWdX Z/ejdYeg dZeg d[eejd d\dgejd]ddgd^d_ Z0d`da Z1dbdc Z2ddde Z3dfdg Z4dhdi Z5djdk Z6dldm Z7dndo Z8ejdpe&dqejdrd dsgdtdu Z9dvdw Z:ejdxe;dye;dzgd{d|ggd}d~gddgggdd Z<dd Z=dd Z>dS )    N)	DataFrameIndex
MultiIndexSeriesperiod_rangetimedelta_range)hash_tuples)
hash_arrayhash_pandas_object         r   Zint32dtype)Ng      @g      @Zfloat32)abccategory)def)TFT20130101	   )periodsz
US/Eastern)r   tz2000)paramsc                 C   s   | j S Nparamrequest r#   W/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/util/test_hashing.pyseries   s    r%   TFc                 C   s   | j S r   r   r!   r#   r#   r$   index%   s    r&   c                  C   s>   t tg d} ttjg dddg dd}t| | d S )NfoobarZbaz)l   7*  l   6jzd l   n*5uint64r   r&   )r
   r   r   nparraytmassert_series_equalresultexpectedr#   r#   r$   test_consistency*   s    r3   c                 C   s   | j }tt|t| d S r   )valuesr.   assert_numpy_array_equalr	   )r%   Zarrr#   r#   r$   test_hash_array8   s    r6   r   Uc                 C   s8   t tg d}t tjg d| d}t|| d S )N)34All)r      r:   r   )r	   r,   r-   r.   r5   )r   result1result2r#   r#   r$   test_hash_array_mixed=   s    r>   val   r(   c                 C   s>   d}t jt|d t|  W d    n1 s00    Y  d S )Nzmust pass a ndarray-likematch)pytestraises	TypeErrorr	   r?   msgr#   r#   r$   test_hash_array_errorsE   s    rH   c                  C   sN   t jdgdd} d}tjt|d t|  W d    n1 s@0    Y  d S )Nz2018-10-28 01:20:00zEurope/Berlin)r   zUse hash_pandas_object insteadrA   )pdZDatetimeIndexrC   rD   rE   r	   )objrG   r#   r#   r$   test_hash_array_index_exceptionL   s    rK   c                  C   sx   g d} t | }tt| j}t|| dddg}tj	t
|d t | d  W d    n1 sj0    Y  d S )N))r   one)r   two)r   rL   |zobject is not iterablez&zip argument #1 must support iterationrA   r   )r   r
   r   from_tuplesr4   r.   r5   joinrC   rD   rE   )Ztuplesr1   r2   rG   r#   r#   r$   test_hash_tuplesU   s    rQ   c                 C   s>   d}t jt|d t|  W d    n1 s00    Y  d S )Nz'must be convertible to a list-of-tuplesrA   )rC   rD   rE   r   rF   r#   r#   r$   test_hash_tuples_errb   s    rR   c                  C   s6   t g d} | jdu sJ t| }|jdu s2J d S )N))v   i  )   rS   )3      )f   rU   T)r   rO   Z	is_uniquer
   )mir1   r#   r#   r$   test_multiindex_uniquei   s    rY   c                  C   s^   t g dg dgg dg dgddgd} |  }| |s@J t| jt|jsZJ d S )N)r   r   r   r   )r   r   r   r   )r   r   r   r   Zcol1Zcol2)Zlevelscodesnames)r   Z_sort_levels_monotonicequalsr   r4   )rX   Zreconsr#   r#   r$   test_multiindex_objectsq   s    r]   rJ   )      ?      ?g	@r^   r_   )r_   g?gffffff
@r+   r   r   )r   Nr   xy)
   r;   )        r^   g       @g      @g      @)rd   r^   rd   r^   rd   )Zfoo1Zfoo2Zfoo3Zfoo4Zfoo5)ABCDz
2020-01-01rc   rh   )r   freqc                 C   s(   t | |d}t | |d}t|| d S Nr+   r
   r.   r/   rJ   r&   r   r   r#   r#   r$   test_hash_pandas_object~   s    rm   c                 C   s,   t | dd}t | dd}||k r(J d S NTr+   Fr
   allrJ   r   r   r#   r#   r$   ,test_hash_pandas_object_diff_index_non_empty   s    rr   z1 dayr   )ri   r   r'   Zaabcc                 C   s(   t | |d}t | |d}t|| d S rj   rk   rl   r#   r#   r$   test_hash_pandas_index   s    rs   c                 C   s(   t | |d}t | |d}t|| d S rj   rk   )r%   r&   r   r   r#   r#   r$   test_hash_pandas_series   s    rt   c                 C   s,   t | dd}t | dd}||k r(J d S rn   ro   )r%   r   r   r#   r#   r$   "test_hash_pandas_series_diff_index   s    ru   Zfloat64objectc                 C   s(   t | |d}t | |d}t|| d S rj   rk   rl   r#   r#   r$   test_hash_pandas_empty_object   s    rw   s1)r   r   r   r   )i  i  i  i  r;   
categorizec                 C   sf   |  dj| }|jtt| }t| |d}t||d}t||d}t|| t|| d S )Nr   ry   )ZastypecatZset_categorieslistreversedr
   r.   r/   )rx   ry   s2Zs3Zh1Zh2Zh3r#   r#   r$   test_categorical_consistency   s    r   c                  C   sx   t jjg dt jddddd} t| dd}t jjd	d
gt dgd} t| dd}|d
 |v sdJ |d |v stJ d S )N)r   r   r   r   r;   z
2012-01-01r@   rf   )r   name)
categoriesFrz   r   r   r   )rI   ZCategoricalZ
from_codes
date_ranger	   	Timestamp)r   r2   r1   r#   r#   r$   %test_categorical_with_nan_consistency  s    r   c                  C   sD   d} t jt| d ttd W d    n1 s60    Y  d S )NzUnexpected type for hashingrA   r   )rC   rD   rE   r
   rI   r   rG   r#   r#   r$   test_pandas_errors  s    r   c                  C   s8   t td} t| dd}t| dd}||k s4J d S )Nabc9876543210123456Zhash_key9876543210123465)r   r|   r
   rp   rq   r#   r#   r$   test_hash_keys  s    r   c                  C   sD   t tdtdd} t| dd}t| dd}||k s@J d S )Nr   r   r`   r   r   r   )r   r,   aranger|   r
   rp   rq   r#   r#   r$   test_df_hash_keys&  s    r   c                  C   sp   t tdtdd} t| dd}t| dd}|d |d ksDJ |d |d ksXJ |d	 |d	 kslJ d S )
Nr   za+cr`   utf8)encodingutf7r   r   r   )r   r,   r   r|   r
   rq   r#   r#   r$   test_df_encoding1  s    r   c                  C   sJ   d} t jt| d$ tttddd W d    n1 s<0    Y  d S )Nz&key should be a 16-byte string encodedrA   r   r(   r   )rC   rD   
ValueErrorr
   r   r|   r   r#   r#   r$   test_invalid_key@  s    r   c                 C   s<   t tdjd}t|| d}t|| d}t|| d S )Nr   r   r+   )r   r|   strencoder
   r.   r/   r&   rJ   r   r   r#   r#   r$   test_already_encodedH  s    r   c                 C   s4   t td}t|| d}t|| d}t|| d S )Nr   r+   )r   r|   r
   r.   r/   r   r#   r#   r$   test_alternate_encodingP  s    r   l_exp   l_addr   c                 C   sN   d| d  | }t jdd t|D td}t|d}|d |d krJJ d S )	Nr   r   c                 S   s   g | ]}t |qS r#   )r   ).0ir#   r#   r$   
<listcomp>[      z1test_same_len_hash_collisions.<locals>.<listcomp>r   r   r   r   )r,   r-   rangerv   r	   )r   r   lengthidxr1   r#   r#   r$   test_same_len_hash_collisionsW  s    
r   c                  C   s   ddg} t tj| dd tdd}tjdgtjd}t|| t tj| dd tdd}tjd	gtjd}t|| t tj| tdd}t|tj||gdd
 d S )Na   Ingrid-9Z9fKIZmkO7i7Cn51Li34pJm44fgX6DYGBNj3VPlOH50m7HnBlPxfIwFMrcNJNMP6PSgLmwWnInciMWrCSAlLEvt7JkJl4IxiMrVbXSa8ZQoVaq5xoQPjltuJEfwdNlO6jo8qRRHvD8sBEBMQASrRa6TsdaPTPCBo3nwIBpE7YzzmyH0vMBhjQZLx1aCT7faSEx7PgFxQhHdKFWROcysamgy9iVj8DO2Fmwg1NNl93rIAqC3mdqfrCxrzfvIY8aJdzin2cHVzy3QUJxZgHvtUtOLxoqnUHsYbNTeq0xcLXpTZEZCxD4PGubIuCNf32c33M7HFsnjWSEjE2yVdWKhmSVodyF8hFYVmhYnMCztQnJrt3O8ZvVRXd5IKwlLexiSp4h888w7SzAIcKgc3g5XQJf6MlSMftDXm9lIsE1mJNiJEv6uY6pgvC3fUPhatlR5JPpVAHNSbSEE73MBzJrhCAbOLXQumyOXigZuPoME7QgJcBalliQol7YZ9a   Tim-b9MddTxOWW2AT1Py6vtVbZwGAmYCjbp89p8mxsiFoVX4FyDOF3wFiAkyQTUgwg9sVqVYOZo09Dh1AzhFHbgij52ylF0SEwgzjzHH8TGY8Lypart4p4onnDoDvVMBa0kdthVGKl6K0BDVGzyOXPXKpmnMF1H6rJzqHJ0HywfwS4XYpVwlAkoeNsiicHkJUFdUAhG229INzvIAiJuAHeJDUoyO4DCBqtoZ5TDend6TK7Y914yHlfH3g1WZu5LksKv68VQHJriWFYusW5e6ZZ6dKaMjTwEGuRgdT66iU5nqWTHRH8WSzpXoCFwGcTOwyuqPSe0fTe21DVtJn1FKj9F9nEnR9xOvJUO7E0piCIF4Ad9yAIDY4DBimpsTfKXCu1vdHpKYerzbndfuFe5AhfMduLYZJi5iAw8qKSwR5h86ttXV0Mc0QmXz8dsRvDgxjXSmupPxBggdlqUlC828hXiTPD7am0yETBV0F3bEtvPiNJfremszcV8NcqAoARMer   r   r   r   l   rIU} r   l   pX^ )Zaxis)	r	   r,   Zasarrayrv   r-   r*   r.   r5   Zconcatenate)hashesr<   Z	expected1r=   Z	expected2r1   r#   r#   r$   test_hash_collisionsa  s    r   zdata, result_data12l   .C7j| l   93B
 )r   )r   l   pH-\h+ l   1"Rk c                 C   s2   t d| i}t|}t|tjd}t|| d S )Ndatar   )r   r
   r   r,   r*   r.   r/   )r   Zresult_dataZdfr1   r2   r#   r#   r$   test_hash_with_tuplew  s    r   c                  C   sR   t ddg fdi fgi} tjtdd t|  W d    n1 sD0    Y  d S )Nr   r   r   zunhashable type: 'list'rA   )r   rC   rD   rE   r
   )Zdf3r#   r#   r$   test_hashable_tuple_args  s    r   c                  C   s8   t jjtddgd d} tddgdd}t| | d S )Nr   r   r   l   A!M| l   Z4^	 r*   r   )rI   utilr
   r   r.   r/   r0   r#   r#   r$   test_hash_object_none_key  s    r   )?numpyr,   rC   ZpandasrI   r   r   r   r   r   r   Zpandas._testingZ_testingr.   Zpandas.core.util.hashingr   Zpandas.utilr	   r
   Zfixturer   r%   r&   r3   r6   markZparametrizerv   r>   r   rH   rK   rQ   rR   rY   r]   nanfullr   rm   rr   Zfrom_productZCategoricalIndexr|   rs   rt   ru   rw   r   r   r   r   r   r   r   r   r   r   r   tupler   r   r   r#   r#   r#   r$   <module>   s   



	





















