U
    >vf+7                  	   @   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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=d> Z.ej"#dd?d@gdAdB Z/dS )C    N)NACategoricalFloat64DtypeIndex
MultiIndexNaTPeriodPeriodIndex
RangeIndex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!   L/tmp/pip-unpacked-wheel-vdrwu74i/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
    (r3   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_natJ   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   r5   r*   r%   r   )r   r   r   randomZrandnr   listr   
_with_freqr-   r.   )r<   r0   r    expectedr!   r!   r"   test_reindex_with_datetimesV   s    rD   c              	   C   s   t g 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 )Nr*   padmethodr   zVInvalid fill method\. Expecting pad \(ffill\), backfill \(bfill\) or nearest\. Got foomatchfoo)
r   r   r   rA   rB   r-   r.   pytestraises
ValueError)r   empty	reindexedr0   msgr!   r!   r"   test_reindex_cornerc   s    
rQ   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|| 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   int64r:   r   rE   rF   ffillr   r(      r)   r'   r$   r%   abcder*   gfZfloat64Zinfer)ZdowncastTFZabcdZagcZbfill)r   r   aranger   r   r-   r.   rT   r/   rA   r9   shiftZfillna)ss2rO   Z
reindexed2rC   	new_indexr    r!   r!   r"   test_reindex_padz   s4     rb   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   rR   rS   g?g?g      ?       @ZnearestrF   g?)rG   Z	tolerancer   r'   r   g333333?g{Gz?g?r$   )	r   r   r]   r   Zaroundr/   r-   r.   r,   )r_   targetr    rC   r!   r!   r"   test_reindex_nearest   s    re   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   rS   r*   )r   r   zeroslenintr   r   r:   Zfloat_r   int_)r   r0   Zint_tsZreindexed_intr!   r!   r"   test_reindex_int   s    rk   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 rf   )r   r   rg   rh   boolr   r   r:   Zobject_r   Zbool_)r   r0   bool_tsZreindexed_boolr!   r!   r"   test_reindex_bool   s    rn   c                 C   sT   | dd  }t tjt|td|jd}|j| jdd}t|d d  sPt	d S )Nr%   rS   r*   rE   rF   )
r   r   rg   rh   rl   r   r   r   r   r   )r   r0   rm   Zfilled_boolr!   r!   r"   test_reindex_bool_pad   s    ro   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?   rV   rW   rX   categoryrS   )values
categoriesr'   r   )	r   r   r   r   r   r,   r   r-   r.   )r   r_   r    rC   r!   r!   r"   test_reindex_categorical   s     


rs   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*   rp   )r   strr   r/   r-   r.   )serra   Z
temp_dtypeZ	new_dtyper    rC   r!   r!   r"   %test_reindex_astype_order_consistency   s    
rv   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      ?rc   g      @r'   r   r$   r*   r   
fill_valuerS   r   r:   rJ   TF)r   r   r   r,   r-   r.   
issubclassr:   typeintegerr   r+   )Zfloatsr    rC   ZintsZobjectsZboolsr!   r!   r"   test_reindex_fill_value   s:    r~   r:   zdatetime64[ns]timedelta64[ns]ry   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   rS   r'   rx   rz   )
rK   skipr   r   r   r   r   r+   r-   r.   )r:   ry   Zusing_array_managerru   r    rC   r!   r!   r"   +test_reindex_fill_value_datetimelike_upcast0  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&   )tzr5   Z20131103r   Hr4   r*   zLCannot compare dtypes datetime64\[ns, America/Chicago\] and datetime64\[ns\]rH   rT   rF   )r   r   r9   rK   rL   	TypeErrorr   )r   Znewidxr_   rP   r!   r!   r"   /test_reindex_datetimeindexes_tz_naive_and_awareB  s    r   c                  C   s6   t ddddg} t tgd dd}t| | d S )Nzdatetime64[ns, UTC]rS   r   r'   r   )r   r   r   r-   Zassert_equal)r    rC   r!   r!   r"   "test_reindex_empty_series_tz_dtypeO  s    r   z+p_values, o_values, values, expected_valuesZ2019Q1zQ-DECZ2019Q2ZAllrw   c           	      C   sB   t | }t|}t||d}||}t||d}t|| d S )Nr*   )r	   r   r   r   r-   r.   )	Zp_valuesZo_valuesrq   Zexpected_valuesZperiod_indexZobject_indexru   r    rC   r!   r!   r"   $test_reindex_periodindex_with_objectV  s    
r   c               	   C   s>   t ddg} d}tjt|d | ddgd W 5 Q R X d S )Nr'   r   zCreindex\(\) takes from 1 to 2 positional arguments but 3 were givenrH   r$   Fr   rK   rL   r   r   ru   rP   r!   r!   r"   test_reindex_too_many_argsr  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   z4reindex\(\) got multiple values for argument 'index'rH   r$   r(   r*   r   r   r!   r!   r"   test_reindex_double_indexz  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.   )ru   r    rC   r!   r!   r"   test_reindex_no_posargs  s    r   rq   rV   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+   rz   rW   )levelr'   )levelscodes)
r   r9   rh   r   Zfrom_arraysr   r   arrayr-   r.   )rq   ru   r    rC   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$   rp   rS   z:Cannot setitem on a Categorical with a new category \(-1\)rH   r(   r%   rx   r   r   r!   r!   r"   test_reindex_missing_category  s    r   c               	   C   s   t dtgt d} | td}|jj}tdtj	tj	g}t
|| t
d 4 t|}t dtj	tj	gt d}t
|| W 5 Q R X d S )Nrw   rS   r$   r'   r   )r   r   r   r   r9   rq   _datar   r   NaNr-   Zassert_numpy_array_equalZassert_produces_warninglogr.   )r_   Z	s_reindexr    rC   Z
result_logZexpected_logr!   r!   r"   #test_reindexing_with_float64_NA_log  s    
r   Ztimedelta64Z
datetime64c                 C   s`   t tjdg|  dd}|td}t tjdtt| ddg|  dd}t|| d S )Nr'   z[s]rS   r   Znatr_   )r   r   r   r   r
   getattrr-   r.   )r:   ru   r    rC   r!   r!   r"   test_reindex_expand_nonnano_nat  s    "r   )0Znumpyr   rK   Zpandasr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   Zpandas._testingZ_testingr-   r#   r3   r>   rD   rQ   rb   re   rk   rn   ro   rs   rv   r~   markZparametrizer   r   r   r,   r   r   r   r   r   r   r   r   r!   r!   r!   r"   <module>   sZ   @')3


