U
    sVcD                     @   s   d dl Zd dlZd dlZd dl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ejddgdggg g ggdd Zdd Zdd ZdS )    N)Index
MultiIndexc                 C   s   |  t| d d \}}t|ts(t|jddgks:tdd |jD ddgksVt|  t| \}}t|tsvt|d kst|jddgkstdd |jD ddgkstd S )N   firstsecondc                 S   s   g | ]
}|j qS  name.0levelr   r   K/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/indexes/multi/test_reindex.py
<listcomp>   s     z test_reindex.<locals>.<listcomp>c                 S   s   g | ]
}|j qS r   r   r
   r   r   r   r      s     )reindexlist
isinstancer   AssertionErrornameslevels)idxresultindexerr   r   r   test_reindex   s    r   c           
   	   C   s   t dg}| j|dd\}}|j| dd\}}| j|ddd}| j|ddd}||s\ttddd	g}tj||d
d ||sttddddddg}	tj||	d
d t	j
tdd | j| ddd W 5 Q R X d S )NZoner   r   right)r   howleftr      r   F)Zcheck_dtypezFill method not supportedmatchpad)methodr   )r   r   joinequalsr   nparraytmassert_numpy_array_equalpytestraises	TypeError)
r   indextargetr   Ztarget2Zindexer2Z	exp_indexZ
exp_index2Zexp_indexerZexp_indexer2r   r   r   test_reindex_level   s    
r.   c                 C   s  |   } |   }d d g | _|_tddgddgg}| g d jd d gksRt| tg d jd d gkstt| | d jd d gkst| |j	d jd d gkst| | d jd d gkst| |j	d jd d gkstddg| _| g d jddgkst| tg d jddgks<t| | d jddgks^t| |j	d jddgks~t| | d jddgkst| |j	d jddgkstd S )N   r      r   r   foobar)
copyr   r   from_productr   r   r%   r&   tolistvalues)r   r-   Zother_dtyper   r   r   ;test_reindex_preserves_names_when_target_is_list_or_ndarray.   s"    "  
$" "r7   c                  C   sb   t jddgddggddgd} | jg ddd jddgks>t| jg ddd jddgks^td S )	Nr   r/   abr1   r2   )r   r   )r   r4   r   r   r   )r   r   r   r   =test_reindex_lvl_preserves_names_when_target_is_list_or_arrayG   s     r:   c                  C   s   t ddgddgg} | jg ddd jd jjtjks<t| jg ddd jd jjtj	ksbtt
ddg}t
jdd	d
d}t ||g}|jg ddd jd j|jkst|jg ddd jd j|jkstd S )Nr   r/   r8   r9   r   r1   r2   z
2016-01-01r   z
US/Pacific)Zperiodstz)r   r4   r   r   dtypetyper%   Zint64r   Zobject_pdZCategoricalZ
date_range)r   catZdtimir   r   r   @test_reindex_lvl_preserves_type_if_target_is_empty_list_or_arrayN   s    &&$rA   c              	   C   sX   | } t j| jt jd}| | }t|| tjt	dd | j| dd W 5 Q R X d S )Nr<   zInvalid fill methodr   invalid)r"   )
r%   arangesizeintpZget_indexerr'   r(   r)   r*   
ValueError)r   expectedactualr   r   r   test_reindex_base\   s    
rJ   c               
   C   s|   t ddddg} tjtd| d}t dddg}d}tjt|d* t	j
tdd || W 5 Q R X W 5 Q R X d S )	N)r   r   )r/   r/   )r   r   r   r,   z'cannot handle a non-unique multi-index!r   z
non-unique)r   from_tuplesr>   Seriesr%   rD   r)   r*   rG   r'   Zassert_produces_warningFutureWarningr   )r   r8   new_idxmsgr   r   r   test_reindex_non_uniqueg   s    rQ   r6   r8   xc                 C   sj   t | }|jtdgdd\}}t dg| d gg g gd}tjg |jd}t|| t|| d S )Nr9   r   r   r/   )r   codesrB   )	r   Zfrom_arraysr   r%   r&   r<   r'   assert_index_equalr(   )r6   r   r   Zresult_indexerrH   Zexpected_indexerr   r   r   test_reindex_empty_with_levelr   s    
rU   c                  C   sh   ddddg} t | d d }t| }||\}}t|| tjddddgtjd	}t	|| d S )
N)irV   )rV   j)rW   rV   rW   r   r   r/   r   rB   )
r   rL   r   r   r'   rT   r%   r&   rF   r(   )keysr@   r   resr   rH   r   r   r   test_reindex_not_all_tuples}   s    rZ   c                  C   sn   t dddg} tjdddg| d}t ddddd	d
dddg	}tjtdd |j|ddd W 5 Q R X d S )N)r0   A)r   r[   )r   Bg{Gz?g{Gz?g~jt?rK   )r0   r\   )r   C)   r\   )r^   r]   )   r\   )r_   r]   zFlimit argument only valid if doing pad, backfill or nearest reindexingr   r   r/   )Z
fill_valuelimit)r   rL   r>   rM   r)   r*   rG   r   )r   ZdfrO   r   r   r   &test_reindex_limit_arg_with_multiindex   s&    ra   )Znumpyr%   r)   Zpandasr>   r   r   Zpandas._testingZ_testingr'   r   r.   r7   r:   rA   rJ   rQ   markZparametrizerU   rZ   ra   r   r   r   r   <module>   s   

