a
    oÝEb³1  ã                   @   sÔ  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 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j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ej d$d%d&e d¡g¡d+d,„ ƒZd-d.„ Z d/d0„ Z!ej d1eg d¢ƒeg d2¢ƒed3d4ej"gƒeg d2¢g d5¢d6�eg d¢ƒed7ej"d8gƒeg d9¢ƒeg d¢ƒeed�eg d¢g d¢d:œƒeƒ e #¡ e $¡ e %¡ e &¡ ee '¡ ƒeejdddd�ƒg¡d;d<„ ƒZ(ej d1eg d¢ƒeg d2¢ƒed3d4ej"gƒeg d2¢g d5¢d6�eg d¢ƒed7ej"d8gƒeg d9¢ƒeg d¢ƒeg d¢g d¢d:œƒe #¡ e $¡ e %¡ e &¡ ee '¡ ƒeejdddd�ƒg¡d=d>„ ƒZ)ej d1eg d¢ƒeg d¢ƒe *¡ e '¡ e +e,d%ƒg d?¢ejdd@d�g¡e +e -e.dAƒ¡e,dƒg¡g¡dBdC„ ƒZ/dDdE„ Z0dFdG„ Z1ej d1eg dHd�eg dId�eg ƒg¡dJdK„ ƒZ2ej dLeg dM¢ƒeg dN¢ƒeejd dOd�ƒg¡ej dPddg¡dQdR„ ƒƒZ3dSdT„ Z4dUdV„ Z5dWdX„ Z6dYdZ„ Z7d[d\„ Z8d]d^„ Z9d_d`„ Z:dadb„ Z;ej dce,ddƒ¡ej ded dfg¡dgdh„ ƒƒZ<didj„ Z=ej dke>dlƒe>dmƒgdndoggdpdqgdrdsggg¡dtdu„ ƒZ?dvdw„ Z@dxdy„ ZAdS )zé    N)Ú	DataFrameÚIndexÚ
MultiIndexÚSeries)Ú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!   ú^/home/ja/django-apps/lartica_env/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    þûr1   c                 C   s   | j }t t|ƒt|ƒ¡ d S r   )Úvaluesr,   Úassert_numpy_array_equalr   )r#   Zarrr!   r!   r"   Útest_hash_array6   s    r4   r   ÚUc                 C   s8   t t g d¢¡ƒ}t tjg d¢| d�ƒ}t ||¡ d S )N)Ú3Ú4ÚAll)r   é   r8   r   )r   r*   r+   r,   r3   )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_errorsC   s    rF   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   rG   ú|zobject is not iterablez&zip argument #1 must support iterationr?   r   )r   r   r   Úfrom_tuplesr2   r,   r3   ÚjoinrA   rB   rC   )Ztuplesr/   r0   rE   r!   r!   r"   Útest_hash_tuplesJ   s    rL   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-tuplesr?   )rA   rB   rC   r   rD   r!   r!   r"   Útest_hash_tuples_errW   s    rM   c                  C   s6   t  g d¢¡} | jdu sJ ‚t| ƒ}|jdu s2J ‚d S )N))év   iØ  )éì   rN   )é3   éÌ   )éf   rP   T)r   rJ   Z	is_uniquer   )Úmir/   r!   r!   r"   Útest_multiindex_unique^   s    rT   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   r2   )rS   Zreconsr!   r!   r"   Útest_multiindex_objectsf   s    ýrX   Úobj)ç      ð?ç      ø?gš™™™™™	@rZ   r[   )r[   gš™™™™™ñ?gffffff
@r)   r   r   )r   Nr   ©ÚxÚyc                 C   s(   t | |d�}t | |d�}t ||¡ d S ©Nr)   ©r   r,   r-   ©rY   r$   r   r   r!   r!   r"   Útest_hash_pandas_objects   s    rb   c                 C   s,   t | dd�}t | dd�}||k ¡ r(J ‚d S ©NTr)   F©r   Úall©rY   r   r   r!   r!   r"   Ú,test_hash_pandas_object_diff_index_non_empty�   s    rg   r%   r   Zaabcc                 C   s(   t | |d�}t | |d�}t ||¡ d S r_   r`   ra   r!   r!   r"   Útest_hash_pandas_index©   s    rh   c                 C   s(   t | |d�}t | |d�}t ||¡ d S r_   r`   )r#   r$   r   r   r!   r!   r"   Útest_hash_pandas_series¼   s    ri   c                 C   s,   t | dd�}t | dd�}||k ¡ r(J ‚d S rc   rd   )r#   r   r   r!   r!   r"   Ú"test_hash_pandas_series_diff_indexÂ   s    rj   Zfloat64Úobjectc                 C   s(   t | |d�}t | |d�}t ||¡ d S r_   r`   ra   r!   r!   r"   Útest_hash_pandas_empty_objectÈ   s    rl   Ús1)r   r   r   r   )iè  iÐ  i¸  i   r9   Ú
categorizec                 C   sf   |   d¡j | ¡}|j tt| ƒƒ¡}t| |d�}t||d�}t||d�}t ||¡ t ||¡ d S )Nr   ©rn   )ZastypeÚcatZset_categoriesÚlistÚreversedr   r,   r-   )rm   rn   Ús2Zs3Úh1Úh2Úh3r!   r!   r"   Útest_categorical_consistencyÓ   s    rw   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   r9   z
2012-01-01r>   ÚB)r   Úname)Ú
categoriesFro   rx   r   r
   )ÚpdZCategoricalZ
from_codesÚ
date_ranger   Ú	Timestamp)r   r0   r/   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 hashingr?   r   )rA   rB   rC   r   r|   r~   ©rE   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   rq   r   re   rf   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*   Úarangerq   r   re   rf   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‡   rq   r   rf   r!   r!   r"   Útest_df_encoding  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 encodedr?   r‚   r&   r„   )rA   rB   Ú
ValueErrorr   r   rq   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   rq   ÚstrÚencoder   r,   r-   ©r$   rY   r   r   r!   r!   r"   Útest_already_encoded/  s    r’   c                 C   s4   t tdƒƒ}t|| d�}t|| d�}t ||¡ d S )Nr‚   r)   )r   rq   r   r,   r-   r‘   r!   r!   r"   Útest_alternate_encoding7  s    r“   Úl_expé   Úl_addr
   c                 C   s>   d| d  | }t  |d¡}t|dƒ}|d |d kr:J ‚d S )Nr   r•   r‰   r   r
   )r,   Zrands_arrayr   )r”   r–   ÚlengthÚsr/   r!   r!   r"   Útest_same_len_hash_collisions>  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asarrayrk   r+   r(   r,   r3   Zconcatenate)Úhashesr:   Z	expected1r;   Z	expected2r/   r!   r!   r"   Útest_hash_collisionsH  s    þr›   zdata, result_dataÚ1Ú2l   Ã.C7Œj”| l   93™B
ï )r
   )r   l   pH-\h+š l   Æ1Ù"ÍRõk 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dfr/   r0   r!   r!   r"   Útest_hash_with_tuple^  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'r?   )r   rA   rB   rC   r   )Zdf3r!   r!   r"   Útest_hashable_tuple_argso  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   )r|   Úutilr   r   r,   r-   r.   r!   r!   r"   Útest_hash_object_none_key„  s    r¢   )BÚnumpyr*   rA   Zpandasr|   r   r   r   r   Zpandas._testingZ_testingr,   Zpandas.core.util.hashingr   Zpandas.utilr   r   Zfixturer}   Ztimedelta_ranger#   r$   r1   r4   ÚmarkZparametrizerk   r<   r~   rF   rL   rM   rT   rX   ÚnanZmakeMissingDataframeZmakeMixedDataFrameZmakeTimeDataFrameZmakeTimeSeriesZmakePeriodIndexrb   rg   ZmakeTimedeltaIndexZfrom_productÚrangeZCategoricalIndexrq   rh   ri   rj   rl   rw   r   r�   r†   rˆ   rŒ   rŽ   r’   r“   r™   r›   ÚtuplerŸ   r    r¢   r!   r!   r!   r"   Ú<module>   sô   øÿ










ïþ






ñþ


ÿøþ
ÿ


ýþþþ

