3
Udl*                 @   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	j
Zd dlmZ d dlmZmZ ejedddgd dd	edd
dgd dd	edddgd dd	edddgd edddg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d%d& Zd'd( Zejjd)ejdd*d+gejdd*d+ged	gd,d- Zejjd.d/d0ejdgd1d2 Z d3d4 Z!ejjd.d/d0ejdgd5d6 Z"d7d8 Z#d9d: Z$ejjd;edddged<d=d>ged<d=ej%ged<d=d>gd=d?d@gdAedddgedej%dgedddgedddgeed	edddgedddgedddgdddgdBe ej& ej' ej( ej) ej* ej+ eej+ eejddddej,e-d/d0dCdDgejdddgej,ej.e/dEe-dggdFdG Z0dHdI Z1ejjd;eg dJd	eg dKd	eg gdLdM Z2ejjdNeddddgedOdPdQdRgeejd d*dgejjdSddgdTdU Z3dVdW Z4ejjd;ejdgdXdY Z5dZd[ Z6d\d] Z7d^d_ Z8d`da Z9ejjdbe-dcejjddd dgdedf Z:dgdh Z;didj Z<dkdl Z=dS )m    N)	DataFrameIndex
MultiIndexSeries)hash_tuples)
hash_arrayhash_pandas_object         Zint32)dtypeg      @g      @Zfloat32abccategorydefTFZ20130101	   )periodsz
US/Eastern)r   tz2000)paramsc             C   s   | j S )N)param)request r   R/var/www/html/virt/lib64/python3.6/site-packages/pandas/tests/util/test_hashing.pyseries   s    r   c             C   s   | j S )N)r   )r   r   r   r   index   s    r   c             K   s(   t | f|}t | f|}tj|| dS )z
    Check that hashing an objects produces the same value each time.

    Parameters
    ----------
    obj : object
        The object to hash.
    kwargs : kwargs
        Keyword arguments to pass to the hashing function.
    N)r   tmassert_series_equal)objkwargsr   r   r   r   r   _check_equal    s    r#   c             C   s@   t | ts<t| dd}t| dd}t| r<||kj  s<tdS )z
    Check the hash of an object with and without its index is not the same.

    Parameters
    ----------
    obj : object
        The object to hash.
    T)r   FN)
isinstancer   r   lenallAssertionError)r!   r   r   r   r   r   _check_not_equal_with_index0   s
    	
r(   c              C   sD   t tdddg} ttjdddgdddddgd	}tj| | d S )
Nfoobarbazl   7*  l   6jzd l   n*5uint64)r   )r   )r   r   r   nparrayr   r    )resultexpectedr   r   r   test_consistencyA   s    r1   c             C   s   | j }tjt|t| d S )N)valuesr   assert_numpy_array_equalr   )r   Zarrr   r   r   test_hash_arrayO   s    r4   arr2   Allc             C   s,   t tjdddg}t | }tj|| d S )N34r7   )r   r-   r.   r   r3   )r5   result1result2r   r   r   test_hash_array_mixedT   s    r<   val   r)   c          	   C   s*   d}t jt|d t|  W d Q R X d S )Nzmust pass a ndarray-like)match)pytestraises	TypeErrorr   )r=   msgr   r   r   test_hash_array_errors^   s    rD   c              C   sN   dddg} t | }ttj| j}tj|| t | d }||d ksJtd S )	Nr	   onetwor
   r   )r	   rE   )r	   rF   )r
   rE   )r   r   r   from_tuplesr2   r   r3   r'   )Ztuplesr/   r0   r   r   r   test_hash_tuplese   s    
rH   c          	   C   s*   d}t jt|d t|  W d Q R X d S )Nz'must be convertible to a list-of-tuples)r?   )r@   rA   rB   r   )r=   rC   r   r   r   test_hash_tuples_errp   s    rI   c              C   s:   t jdd	d
dg} | jdks tt| }|jdks6td S )Nv        3      f   T)rJ   rK   )rL   rJ   )rM   rN   )rO   rM   )r   rG   Z	is_uniquer'   r   )mir/   r   r   r   test_multiindex_uniquew   s    rQ   c              C   sj   t dddgdddggddddgddddggdd	gd
} | j }| j|sLtt| jjt|jsftd S )Nr   r   r   r	   r
   r   r   Zcol1Zcol2)Zlevelscodesnames)r   Z_sort_levels_monotonicequalsr'   r   r2   )rP   Zreconsr   r   r   test_multiindex_objects   s    rU   r!   g      ?g      ?g	@g?gffffff
@)r   )xyr*   r+   Zaabcc             C   s   t | |d t|  d S )N)r   )r#   r(   )r!   r   r   r   r   test_hash_pandas_object   s    rX   c             C   s   t | |d t|  d S )N)r   )r#   r(   )r   r   r   r   r   test_hash_pandas_object2   s    rY   Zfloat64objectc             C   s   t | |d d S )N)r   )r#   )r!   r   r   r   r   test_hash_pandas_empty_object   s    r[   s1i  i  i  i  
categorizec             C   sf   | j djj| }|jjtt| }t| |d}t||d}t||d}tj|| tj|| d S )Nr   )r]   )ZastypecatZset_categorieslistreversedr   r   r    )r\   r]   s2Zs3h1h2h3r   r   r   test_categorical_consistency   s    re   c              C   s   t jjddddddgt jdddd	d
} t| dd}t jjddgt jdgd
} t| dd}|d |kslt|d |ks|td S )Nr	   r   r
   r   r6   z
2012-01-01r>   B)r   name)
categoriesF)r]   ri   )pdZCategoricalZ
from_codes
date_ranger   	Timestampr'   )r   r0   r/   r   r   r   %test_categorical_with_nan_consistency   s    "rm   c          	   C   s*   d}t jt|d t|  W d Q R X d S )NzUnexpected type for hashing)r?   )r@   rA   rB   r   )r!   rC   r   r   r   test_pandas_errors   s    rn   c              C   s8   t td} t| dd}t| dd}||kj s4td S )NabcZ9876543210123456)hash_keyZ9876543210123465)r   r_   r   r&   r'   )r!   r   r   r   r   r   test_hash_keys   s    rq   c              C   s6   d} t jt| d tttddd W d Q R X d S )Nz&key should be a 16-byte string encoded)r?   ro   r)   )rp   )r@   rA   
ValueErrorr   r   r_   )rC   r   r   r   test_invalid_key   s    rs   c             C   s$   t tdjjd}t|| d d S )Nro   utf8)r   )r   r_   strencoder#   )r   r!   r   r   r   test_already_encoded   s    rw   c             C   s   t td}t|| dd d S )Nro   ascii)r   encoding)r   r_   r#   )r   r!   r   r   r   test_alternate_encoding  s    rz   l_exp   l_addc             C   s@   d| d  | }t j|d}t|d}|d |d k s<td S )Nr
   r|   rt   r   r	   )r   Zrands_arrayr   r'   )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j|| t tj| dd tdd}tjd	gtjd}tj|| t tj| tdd}tj|tj||gdd
 d S )Na   Ingrid-9Z9fKIZmkO7i7Cn51Li34pJm44fgX6DYGBNj3VPlOH50m7HnBlPxfIwFMrcNJNMP6PSgLmwWnInciMWrCSAlLEvt7JkJl4IxiMrVbXSa8ZQoVaq5xoQPjltuJEfwdNlO6jo8qRRHvD8sBEBMQASrRa6TsdaPTPCBo3nwIBpE7YzzmyH0vMBhjQZLx1aCT7faSEx7PgFxQhHdKFWROcysamgy9iVj8DO2Fmwg1NNl93rIAqC3mdqfrCxrzfvIY8aJdzin2cHVzy3QUJxZgHvtUtOLxoqnUHsYbNTeq0xcLXpTZEZCxD4PGubIuCNf32c33M7HFsnjWSEjE2yVdWKhmSVodyF8hFYVmhYnMCztQnJrt3O8ZvVRXd5IKwlLexiSp4h888w7SzAIcKgc3g5XQJf6MlSMftDXm9lIsE1mJNiJEv6uY6pgvC3fUPhatlR5JPpVAHNSbSEE73MBzJrhCAbOLXQumyOXigZuPoME7QgJcBalliQol7YZ9a   Tim-b9MddTxOWW2AT1Py6vtVbZwGAmYCjbp89p8mxsiFoVX4FyDOF3wFiAkyQTUgwg9sVqVYOZo09Dh1AzhFHbgij52ylF0SEwgzjzHH8TGY8Lypart4p4onnDoDvVMBa0kdthVGKl6K0BDVGzyOXPXKpmnMF1H6rJzqHJ0HywfwS4XYpVwlAkoeNsiicHkJUFdUAhG229INzvIAiJuAHeJDUoyO4DCBqtoZ5TDend6TK7Y914yHlfH3g1WZu5LksKv68VQHJriWFYusW5e6ZZ6dKaMjTwEGuRgdT66iU5nqWTHRH8WSzpXoCFwGcTOwyuqPSe0fTe21DVtJn1FKj9F9nEnR9xOvJUO7E0piCIF4Ad9yAIDY4DBimpsTfKXCu1vdHpKYerzbndfuFe5AhfMduLYZJi5iAw8qKSwR5h86ttXV0Mc0QmXz8dsRvDgxjXSmupPxBggdlqUlC828hXiTPD7am0yETBV0F3bEtvPiNJfremszcV8NcqAoARMer   r	   )r   rt   l   rIU} r
   l   pX^ )Zaxis)	r   r-   ZasarrayrZ   r.   r,   r   r3   Zconcatenate)hashesr:   Z	expected1r;   Z	expected2r/   r   r   r   test_hash_collisions  s    r   c           	   C   s   t jdtdtdgi} t| }t jddgtjd}tj|| t jdtdgtdggi}t|}t jd	d
gtjd}tj|| t jdtdg gtdi ggi}t	j
tdd t| W d Q R X d S )Ndata12l   .C7j| l   93B
 )r   r	   r
   l   pH-\h+ l   1"Rk zunhashable type: 'list')r?   )rj   r   tupler   r   r-   r,   r   r    r@   rA   rB   )dfr/   r0   Zdf2Zdf3r   r   r   test_hash_with_tuple+  s    "r   c              C   s<   t jjt jddgd d} t jddgdd}tj| | d S )Nr   r   )rp   l   A!M| l   Z4^	 r,   )r   )rj   utilr   r   r   r    )r/   r0   r   r   r   test_hash_object_none_key@  s    r   )>Znumpyr-   r@   Zpandasrj   r   r   r   r   Zpandas._testingZ_testingr   Zpandas.core.util.hashingr   Zpandas.utilr   r   Zfixturerk   Ztimedelta_ranger   r   r#   r(   r1   r4   markZparametrizer.   rZ   r<   rl   rD   rH   rI   rQ   rU   nanZmakeMissingDataframeZmakeMixedDataFrameZmakeTimeDataFrameZmakeTimeSeriesZmakeTimedeltaIndexZmakePeriodIndexZfrom_productrangeZCategoricalIndexr_   rX   rY   r[   re   rm   rn   rq   rs   rw   rz   r   r   r   r   r   r   r   r   <module>   s   
 0	""
(*	