o
    ·¶ßd–  ã                   @   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d„ ZdS )é    N)ÚIndexÚ
MultiIndexc                 C   s´   |   t| d d… ƒ¡\}}t|tƒsJ ‚|jddgksJ ‚dd„ |jD ƒddgks+J ‚|   t| ƒ¡\}}t|tƒs;J ‚|d u sAJ ‚|jddgksJJ ‚dd„ |jD ƒddgksXJ ‚d S )Né   ÚfirstÚsecondc                 S   ó   g | ]}|j ‘qS © ©Úname©Ú.0Úlevelr   r   ú[/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/indexes/multi/test_reindex.pyÚ
<listcomp>   ó    z test_reindex.<locals>.<listcomp>c                 S   r   r   r	   r   r   r   r   r      r   )ÚreindexÚlistÚ
isinstancer   Ú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.J ‚t g d¢¡}tj||dd	 | |¡sDJ ‚t g d
¢¡}	tj||	dd	 tj	t
dd | j| ddd W d   ƒ d S 1 snw   Y  d S )NÚoner   ©r   Úright)r   ÚhowÚleft)r   é   r   F)Zcheck_dtype)r   éÿÿÿÿr   r    r   r    zFill method not supported©ÚmatchÚpad)Úmethodr   )r   r   ÚjoinÚequalsÚ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   
"ÿr0   c                 C   s¸  |   ¡ } |   ¡ }d d g | _|_t ddgddgg¡}|  g ¡d jd d gks)J ‚|  t g ¡¡d jd d gks:J ‚|  | ¡ ¡d jd d gksJJ ‚|  |j¡d jd d gksYJ ‚|  | ¡ ¡d jd d gksiJ ‚|  |j¡d jd d gksxJ ‚ddg| _|  g ¡d jddgks‹J ‚|  t g ¡¡d jddgksœJ ‚|  | ¡ ¡d jddgks¬J ‚|  |j¡d jddgks»J ‚|  | ¡ ¡d jddgksËJ ‚|  |j¡d jddgksÚJ ‚d S )Né   r   é   r   r   ÚfooÚbar)	Úcopyr   r   Úfrom_productr   r'   r(   ÚtolistÚvalues)r   r/   Zother_dtyper   r   r   Ú;test_reindex_preserves_names_when_target_is_list_or_ndarray.   s"   "  
"  "r9   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J ‚| jg ddd jddgks/J ‚d S )	Nr   r1   ÚaÚbr3   r4   )r   r   )r   r6   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J ‚| jg ddd jd jjtjks1J ‚t	 
ddg¡}t	jdd	d
d}t  ||g¡}|jg ddd jd j|jksYJ ‚|jg ddd jd j|jkskJ ‚d S )Nr   r1   r:   r;   r   r3   r4   z
2016-01-01r   z
US/Pacific)ZperiodsÚtz)r   r6   r   r   ÚdtypeÚtyper'   Zint64Zobject_ÚpdZCategoricalZ
date_range)r   ÚcatZdtiÚmir   r   r   Ú@test_reindex_lvl_preserves_type_if_target_is_empty_list_or_arrayN   s   &&$(rC   c                 C   sj   t j| jt jd}|  | ¡}t ||¡ tjt	dd | j| dd W d   ƒ d S 1 s.w   Y  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   
"ÿrL   c                  C   sr   t  g d¢¡} tjt d¡| d}t  g d¢¡}d}tjt|d | 	|¡ W d   ƒ d S 1 s2w   Y  d S )N)©r   r   ©r1   r1   rN   ©r   r   r   ©r.   )rM   rN   rO   z'cannot handle a non-unique multi-index!r!   )
r   Úfrom_tuplesr@   ÚSeriesr'   rF   r+   r,   rI   r   )r   r:   Únew_idxÚmsgr   r   r   Útest_reindex_non_uniquef   s   "ÿrU   r8   r:   Ú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 )Nr;   r   r   r1   )r   ÚcodesrD   )	r   Zfrom_arraysr   r'   r(   r>   r)   Úassert_index_equalr*   )r8   r   r   Zresult_indexerrJ   Zexpected_indexerr   r   r   Útest_reindex_empty_with_levelp   s   
rY   c                  C   s`   g d¢} t  | d d… ¡}t| ƒ}| |¡\}}t ||¡ tjg d¢tjd}t 	||¡ d S )N))ÚirZ   )rZ   Új)r[   rZ   r[   r    )r   r1   r   r    rD   )
r   rQ   r   r   r)   rX   r'   r(   rH   r*   )ÚkeysrB   r   Úresr   rJ   r   r   r   Útest_reindex_not_all_tuples{   s   r^   c                  C   sr   t  g d¢¡} tjg d¢| d}t  g d¢¡}tjtdd |j|ddd	 W d   ƒ d S 1 s2w   Y  d S )
N)©r2   ÚA©r   r`   ©r   ÚB)g{®Gáz”?g{®Gáz„?gú~j¼t“ˆ?rP   )	r_   )r2   rc   ra   rb   )r   ÚC)é   rc   )re   rd   )é   rc   )rf   rd   zFlimit argument only valid if doing pad, backfill or nearest reindexingr!   r   r1   )Z
fill_valueÚlimit)r   rQ   r@   rR   r+   r,   rI   r   )r   ZdfrS   r   r   r   Ú&test_reindex_limit_arg_with_multiindex†   s   ÿþ"ürh   c                  C   s^   t  ddg¡} t  ddg¡}tjddg| d}tjddg|d}| |¡}|}t ||¡ d S )N))r:   Nr1   ))r;   Nr   r1   r   rP   )r   rQ   r@   Z	DataFrameZreindex_liker)   Zassert_frame_equal)r.   Úindex2Z	df1_dtypeZ	df2_dtyper   rJ   r   r   r   Ú+test_reindex_with_none_in_nested_multiindex¢   s   
rj   )Únumpyr'   r+   Zpandasr@   r   r   Zpandas._testingZ_testingr)   r   r0   r9   r<   rC   rL   rU   ÚmarkZparametrizerY   r^   rh   rj   r   r   r   r   Ú<module>   s"    



