U
    *if3                  	   @   s  d dl Zd dlZd dlmZmZmZmZmZm	Z	m
Z
mZ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ej dddgej d d!d ed gd"d# Z!d$d% Z"d&d' Z#ej d(ed)d*ed+d*ged)d*ed+d*d,gd-d-gd-d-ej$gfed)d*ed+d*ged)d*ed+d*gd-d-gd-d-gfgd.d/ Z%d0d1 Z&d2d3 Z'd4d5 Z(ej d6d7gd8ggg g ggd9d: Z)d;d< Z*dS )=    N)CategoricalIndex
MultiIndexNaTPeriodPeriodIndexSeries	Timedelta	Timestamp
date_rangeisnac                 C   sH  | |j}zt|j|js"tW n tk
r8   Y nX |j|jsLt|j|js^t|jdd }| |}| D ]\}}||| ks~tq~| jdd }|  |}| D ]\}}|| | kstq|  |}	t	|	
 st| jd d d }
|  |
}| D ]\}}|| | kstq|   }|| k	sDtd S )N
         )reindexindexnpZmay_share_memoryAssertionErrorAttributeErroris_Z	identicalitemsisnanall)datetime_seriesZstring_seriesidentityZsubIndexZ	subSeriesidxvalZ	subIndex2ZsubTSZstuffSeriesZnonContigIndexZsubNonContigresult r   [/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/series/methods/test_reindex.pytest_reindex   s.    



r    c                  C   s   t ddddgddtjdgd} tjdtjddtjgdd	ddddg }}t| || j|  | jd
| _tj| || j| dd d S )Nr                     r   r   objectF)Zcheck_index_type)	r   r   nantmassert_series_equalr   Zilocr   astype)tsijr   r   r   test_reindex_nan;   s
    (r0   c                  C   sp   t dddd} t| }|td}t|jtds<t| }|dd  	 sXt|d d 
 rltd S )Nz1/1/2000 00:00:00r   Z10speriodsfreq   zM8[ns])r   r   r   ranger   Z
issubdtypedtyper   r   r   any)rngZseriesr   maskr   r   r   test_reindex_series_add_natG   s    r;   c                  C   s   t ddd} ttjd| d}|t|jdd }|dd }|jd |_t	
|| |t|jdd  }t	
|| d S )Nz1/1/2000r   r2   r'   r"   r   )r   r   r   randomZrandnr   listr   
_with_freqr*   r+   )r9   r-   r   expectedr   r   r   test_reindex_with_datetimesS   s    rA   c              	   C   s   t td}|j| jdd |j| jdd}| t| j}| jd | _t| | | d d d }d}tj	t
|d |j| jdd W 5 Q R X d S )Nr7   padmethodr   zVInvalid fill method\. Expecting pad \(ffill\), backfill \(bfill\) or nearest\. Got foomatchfoo)r   r(   r   r   r>   r?   r*   r+   pytestraises
ValueError)r   empty	reindexedr-   msgr   r   r   test_reindex_corner`   s    
rO   c                  C   s  t tddd} | d d d }|j| jdd}|j| jdd}t|| t ddddd	d	d
d
ddg
tdd}t|| t dddd	dgdddddgd} ddddg}t ddddg|d}| | }t||d | |jdd}t|| t ddddg|d}| j|dd}t|| t ddddgt	dd} d}| t	| }t dddgt	|d}t|| t dt
ddd} | djdd}t dt
ddd}t|| d S )Nr   int64rB   r   rC   rD   ffillr   r%      r&   r'   r$   r!   r"   abcdegfZfloat64Zinfer)ZdowncastTFabcdZagcZbfill)r   r   aranger   r   r*   r+   rQ   r,   r>   r6   shiftZfillna)ss2rM   Z
reindexed2r@   	new_indexr   r   r   r   test_reindex_padw   s4    & r`   c                  C   s   t tjddd} ddddg}| j|dd	}t t|d|}t|| | j|dd
d}t ddtjdg|}t|| | j|dddddgd}t dtjtjdg|}t|| d S )Nr   rP   rB   g?g?g      ?       @ZnearestrD   g?)rE   Z	tolerancer   r$   r   g333333?g{Gz?g?r!   )	r   r   r[   r   Zaroundr,   r*   r+   r)   )r]   targetr   r@   r   r   r   test_reindex_nearest   s    rc   c                 C   sp   | d d d }t tjt|td|jd}|| j}|jtjksFt	||jd d d }|jtj
kslt	d S Nr   rB   r'   )r   r   zeroslenintr   r   r7   Zfloat_r   int_)r   r-   Zint_tsZreindexed_intr   r   r   test_reindex_int   s    ri   c                 C   sp   | d d d }t tjt|td|jd}|| j}|jtjksFt	||jd d d }|jtj
kslt	d S rd   )r   r   re   rf   boolr   r   r7   Zobject_r   Zbool_)r   r-   bool_tsZreindexed_boolr   r   r   test_reindex_bool   s    rl   c                 C   sT   | dd  }t tjt|td|jd}|j| jdd}t|d d  sPt	d S )Nr"   rB   r'   rC   rD   )
r   r   re   rf   rj   r   r   r   r   r   )r   r-   rk   Zfilled_boolr   r   r   test_reindex_bool_pad   s    rm   c                  C   s   t ddd} tdddgdd}|| }tttjtjtjgdddgd	}| |_t|| ttddgdddgd	}d
dg|_|d
dg}t|| ttdtjgdddgd	}ddg|_|ddg}t|| d S )NZ20000101r!   r<   rS   rT   rU   categoryrB   )values
categoriesr$   r   )	r   r   r   r   r   r)   r   r*   r+   )r   r]   r   r@   r   r   r   test_reindex_categorical   s     


rq   c                  C   sf   t dddgdddgd} dddg}d}t}| |||}| |||}t|| d S )Nr$   r   r!   r   r'   rn   )r   strr   r,   r*   r+   )serr_   Z
temp_dtypeZ	new_dtyper   r@   r   r   r   %test_reindex_astype_order_consistency   s    
rt   c                  C   s  t dddg} | dddg}t ddtjgdddgd}t|| | jdddgdd	}t dddgdddgd}t|| t dddg}|dddg}t ddtjgdddgd}t|| |jdddgdd	}t dddgdddgd}t|jjtj	st
t|| t dddgtd
}|dddg}t ddtjgdddgtd}t|| |jdddgdd	}t dddgdddgtd}t|| t dddg}|dddg}t ddtjgdddgtd}t|| |jdddgdd	}t dddgdddgd}t|| d S )N      ?ra   g      @r$   r   r!   r'   r   
fill_valuerB   r   r7   rH   TF)r   r   r   r)   r*   r+   
issubclassr7   typeintegerr   r(   )Zfloatsr   r@   ZintsobjectsZboolsr   r   r   test_reindex_fill_value   s:    r}   r7   zdatetime64[ns]timedelta64[ns]rw   stringc                 C   sp   |rt d | dkr*|tdkr*td}ttg| d}|jddg|d}td |gddgtd}t	|| d S )Nz3Array manager does not promote dtype, hence we failr~   r   rB   r$   rv   rx   )
rI   skipr	   r
   r   r   r   r(   r*   r+   )r7   rw   Zusing_array_managerrs   r   r@   r   r   r   +test_reindex_fill_value_datetimelike_upcast-  s    
r   c               	   C   s\   t dddd} t dddd}ttd| d	}d
}tjt|d |j|dd W 5 Q R X d S )NZ20131101zAmerica/Chicagor#   )tzr2   Z20131103r   Hr1   r'   zLCannot compare dtypes datetime64\[ns, America/Chicago\] and datetime64\[ns\]rF   rQ   rD   )r   r   r6   rI   rJ   	TypeErrorr   )r   Znewidxr]   rN   r   r   r   /test_reindex_datetimeindexes_tz_naive_and_aware?  s    r   c                  C   s6   t ddddg} t tgd dd}t| | d S )Nzdatetime64[ns, UTC]rB   r   r$   r   )r   r   r   r*   Zassert_equal)r   r@   r   r   r   "test_reindex_empty_series_tz_dtypeL  s    r   z+p_values, o_values, values, expected_valuesZ2019Q1zQ-DECZ2019Q2ZAllru   c           	      C   sB   t | }t|}t||d}||}t||d}t|| d S )Nr'   )r   r   r   r   r*   r+   )	Zp_valuesZo_valuesro   Zexpected_valuesZperiod_indexZobject_indexrs   r   r@   r   r   r   $test_reindex_periodindex_with_objectS  s    
r   c               	   C   s:   t ddg} tjtdd | ddgd W 5 Q R X d S )Nr$   r   z3Only one positional argument \('index'\) is allowedrF   r!   Fr   rI   rJ   r   r   )rs   r   r   r   test_reindex_too_many_argso  s     r   c               	   C   sD   t ddg} d}tjt|d | jddgddgd W 5 Q R X d S )Nr$   r   z6'index' passed as both positional and keyword argumentrF   r!   r%   r'   r   rs   rN   r   r   r   test_reindex_double_indexx  s    r   c                  C   s@   t ddg} | jddgd}t ddgddgd}t|| d S )Nr$   r   r   r'   )r   r   r*   r+   )rs   r   r@   r   r   r   test_reindex_no_posargs  s    r   ro   rS   xc                 C   sh   t tt| d t| dd}|jtdgdd}t tdg| d gg g gddd}t	|| d S )Nr   r(   rx   rT   )levelr$   )Zlevelscodes)
r   r6   rf   r   Zfrom_arraysr   r   arrayr*   r+   )ro   rs   r   r@   r   r   r   test_reindex_empty_with_level  s       r   c               	   C   sN   t ddddgdd} d}tjt|d | jddddd	gd
d W 5 Q R X d S )Nr$   r   r!   rn   rB   z:Cannot setitem on a Categorical with a new category \(-1\)rF   r%   r"   rv   r   r   r   r   r   test_reindex_missing_category  s    r   )+numpyr   rI   Zpandasr   r   r   r   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingr*   r    r0   r;   rA   rO   r`   rc   ri   rl   rm   rq   rt   r}   markZparametrizer   r   r   r)   r   r   r   r   r   r   r   r   r   r   <module>   sT   4')3

	
