U
    sVc#                     @   s   d dl Zd dlZd dlZd dlmZmZmZ d dlm	Z
 dd Zdd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )    N)Index
MultiIndexSeriesc                 C   s   |  | st|  |  s t|  | ts4t|  |  sFt|  |  ds^t|  t| rpt|  t| rtt	| td}|  |st| | st| j
dkr|  t| rtd S )NcategoryZdtype   )equalsAssertionErrorcopyZastypeobjectZto_flat_indexlistnparrayr   Znlevelsr   )idxZsame_values r   O/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/indexes/multi/test_equivalence.pytest_equals   s    
r   c              	   C   s  | }t |}|dd }|dd |dd }|dd }tjtdd ||k W 5 Q R X tdg| }tdg|d  dg }t||k| t||k| t|}t|dd }	t|dd |dd }
t|dd }tjtdd ||	k W 5 Q R X t||k| t||
k| t	|}t	|	}t	|
}t	|}tjtdd ||k W 5 Q R X t||k| t||k| tjtdd ||k W 5 Q R X tjtdd ||k W 5 Q R X tjtdd ||k W 5 Q R X d	}tjt|d ||k W 5 Q R X tjtdd ||k W 5 Q R X t
|tstdgt |d
  ddg }|d }t||k| t||kt	| d S )Nr   r   zLengths must matchmatchTFz3Can only compare identically-labeled Series objects   )lenappendpytestraises
ValueErrorr   r   tmassert_numpy_array_equalr   
isinstancer   assert_series_equal)r   Zindex_anZindex_bZindex_cZindex_dZ	expected1Z	expected2Zarray_aZarray_bZarray_cZarray_dZseries_aZseries_bZseries_cZseries_dmsgZ	expected3itemr   r   r   test_equals_op    sV    
  r$   c                  C   s   t ddggd } tddddg}| | d k}tddddg}t|| | | d k}t||  | | d k }t|| | | d k}t|| | | d k}t||  | | d k}t||  d S )Nr   r   Fr   T)r   from_productr   r   r   r   )miZ	all_falseresultexpectedr   r   r   test_compare_tuple]   s    r)   c                  C   s\   t dddg} | dk}tdddg}t|| | dk}tdddg}t|| d S )N)ab)r+   c)r,   r*   FT)r,   )r   from_tuplesr   r   r   r   )r&   r'   r(   r   r   r   test_compare_tuple_strsw   s    r.   c                 C   s  |  | st|  | jrt|  t| js2t| | s@t|  | d d rVt|  | d rhtttttdtttdtttdgt	ddddddddgt	ddddddddgt	ddddddddggd}t|j
d d |jd d d}| |rt||r&ttttd}tttd}t	ddddddg}t	ddddddg}t||g||gd}|  |rt| |rttdd	d
dg}tddg}t	ddddddg}t	ddddddg}t||g||gd}|  |rtd S )Nr      r   r   r      )levelscodesZfoobarZbazZquxZoneZtwo)r   r	   valuesr   Zequal_levelsr   r   ranger   r   r1   r2   )r   indexindex2Z
major_axisZ
minor_axisZmajor_codesZminor_codesr   r   r   test_equals_multi   sF    ,	   r8   c              
   C   s  |   }|   }||st|ddg}||s:t||rHt|ddg}||sdttt t|	 |j
d}W 5 Q R X d}tjt|d0 tt t|	 |j
dd W 5 Q R X W 5 Q R X t|	 dd}||st||rt||std S )	NZnew1Znew2)namesz&Unexpected keyword arguments {'names'}r   F)r9   tupleize_cols)r:   )r
   Z	identicalr	   	set_namesr   r   assert_produces_warningFutureWarningr   tolistr9   r   r   	TypeError)r   r&   mi2mi3r"   mi4r   r   r   test_identical   s$    (rC   c                 C   s   | | k  std S N)allr	   r   r   r   r   test_equals_operator   s    rG   c                  C   s^   t dtjfdtdfg} | dd | d }|r<t| dd | d }|rZtd S )Nr   Z20130101r   r   )r   r-   pdZNaTZ	Timestampr   r	   )ir'   r   r   r   test_equals_missing_values   s
    rJ   c                  C   st   t dtjftjtjfg} t tjtjfdtjfg}| |rFtt dtjftjtjfg}| |sptd S )Ng     @T@)r   r-   r   nanr   r	   Zmi1r@   r   r   r   -test_equals_missing_values_differently_sorted   s
    rM   c               	   C   s  t ttdtd} | | s&t| |  s8t| |     sVt|  }ddg|_|| svt| |st| | ddgrt|  }|jddgdd	 | |st|	t
tdt
tdg}||rt|| st| }tt( |j	t
tdt
tdgdd	 W 5 Q R X ||rNt|  }tt |j	|jdd	 W 5 Q R X || rtd S )
N
   ABCDEFT)Zinplace)r   r-   zipr5   is_r	   viewr9   r;   Z
set_levelsr   r   r<   r=   r1   )r&   r@   rA   rB   Zmi5r   r   r   test_is_   s.    
,rX   c                 C   s   | j r
td S rD   )Z_is_all_datesr	   rF   r   r   r   test_is_all_dates
  s    rY   c                 C   s   |   rtd S rD   )Z
is_numericr	   rF   r   r   r   test_is_numeric  s    rZ   c                  C   s\   t ddgg} tddg}t| | k}t|| tddg}t| | k}t|| d S )Nr   r   TF)r   r%   r   r   r    )Zmidxr(   r'   r   r   r   test_multiindex_compare  s    r[   c                  C   sT   t tddgddddgg} t ddgddgg}| |rBt|| rPtd S )Nr   r   ZInt64r   r0   r/   )r   Zfrom_arraysr   r   r	   rL   r   r   r   test_equals_ea_int_regular_int%  s    r\   )Znumpyr   r   ZpandasrH   r   r   r   Zpandas._testingZ_testingr   r   r$   r)   r.   r8   rC   rG   rJ   rM   rX   rY   rZ   r[   r\   r   r   r   r   <module>   s$   =1	
 