o
    d5                  	   @   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 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-dS )?    N)NACategoricalFloat64DtypeIndex
MultiIndexNaTPeriodPeriodIndexSeries	Timedelta	Timestamp
date_rangeisnac                 C   s@  | |j}zt|j|jsJ W n	 ty   Y nw |j|js%J |j|js.J |jdd }| |}| D ]\}}||| ksJJ q>| jdd }|  |}| D ]\}}|| | ksgJ q[|  |}	t|		 svJ | jd d d }
|  |
}| D ]\}}|| | ksJ q|   }|| usJ d S )N
         )
reindexindexnpZmay_share_memoryAttributeErroris_Z	identicalitemsisnanall)datetime_seriesZstring_seriesidentityZsubIndexZ	subSeriesidxvalZ	subIndex2ZsubTSZstuffSeriesZnonContigIndexZsubNonContigresult r   \/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/series/methods/test_reindex.pytest_reindex   s0   



r!   c                  C   s   t g dddtjdgd} tjdtjddtjgg d}}t| || j|  | jd| _tj| || j| dd	 d S )
N)r                     r   )r   r   r   r"   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
     r1   c                  C   sp   t dddd} t| }|td}t|jtdsJ | }|dd   s,J |d d 	 r6J d S )Nz1/1/2000 00:00:00r   Z10speriodsfreq   zM8[ns])
r   r
   r   ranger   Z
issubdtypedtyper   r   any)rngZseriesr   maskr   r   r    test_reindex_series_add_natI   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   r3   r(   r#   r   )r   r
   r   randomZrandnr   listr   
_with_freqr+   r,   )r:   r.   r   expectedr   r   r    test_reindex_with_datetimesU   s   rB   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 d    d S 1 sNw   Y  d S )Nr(   padmethodr   zVInvalid fill method\. Expecting pad \(ffill\), backfill \(bfill\) or nearest\. Got foomatchfoo)
r
   r   r   r?   r@   r+   r,   pytestraises
ValueError)r   empty	reindexedr.   msgr   r   r    test_reindex_cornerb   s   
"rO   c                  C   s  t tddd} | d d d }|j| jdd}|j| jdd}t|| t g d}t|| t g d	g d
d} g d}t g d|d}| | }t||d | |jdd}t|| t g d|d}| j|dd}t|| t g dt	dd} d}| t	| }t g dt	|d}t|| t dt
ddd} | djdd}t dt
ddd}t|| d S )Nr   int64r8   r   rC   rD   ffill)
r   r   r   r   r&   r&      rS   r'   r'   r%   r   r"   r&   r#   )abcder(   )rU   grW   f)r%   r%   r"   r"   Zfloat64Zinfer)Zdowncast)r%   r#   r"   r#   )TFFTabcdZagc)TTFFr   r#   r%   Zbfill)r
   r   aranger   r   r+   r,   rR   r-   r?   r7   shiftZfillna)ss2rM   Z
reindexed2rA   	new_indexr   r   r   r    test_reindex_pady   s4   rb   c                  C   s   t tjddd} g d}| j|dd}t t|d|}t|| | j|ddd}t d	d
tjdg|}t|| | j|dg dd}t d	tjtjdg|}t|| d S )Nr   rP   rQ   )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   rA   r   r   r    test_reindex_nearest   s   re   c                 C   p   | d d d }t tjt|td|jd}|| j}|jtjks#J ||jd d d }|jtj	ks6J d S Nr   rQ   r(   )
r
   r   zeroslenintr   r   r8   Zfloat_int_)r   r.   Zint_tsZreindexed_intr   r   r    test_reindex_int   s   rl   c                 C   rf   rg   )
r
   r   rh   ri   boolr   r   r8   Zobject_Zbool_)r   r.   bool_tsZreindexed_boolr   r   r    test_reindex_bool   s   ro   c                 C   sT   | dd  }t tjt|td|jd}|j| jdd}t|d d  s(J d S )Nr#   rQ   r(   rC   rD   )	r
   r   rh   ri   rm   r   r   r   r   )r   r.   rn   Zfilled_boolr   r   r    test_reindex_bool_pad   s   rp   c                  C   s   t ddd} tg ddd}|| }tttjtjtjgg dd}| |_t|| ttdd	gg dd}d
dg|_|d
dg}t|| ttd	tjgg dd}ddg|_|ddg}t|| d S )NZ20000101r"   r=   )rU   rV   rW   categoryrQ   )values
categoriesrV   rW   r%   r   )	r   r
   r   r   r   r*   r   r+   r,   )r   r_   r   rA   r   r   r    test_reindex_categorical   s    


rt   c                  C   s`   t g dg dd} g d}d}t}| |||}| |||}t|| d S )Nr%   r   r"   )r   r   r%   r(   )r   r%   r   rq   )r
   strr   r-   r+   r,   )serra   Z
temp_dtypeZ	new_dtyper   rA   r   r   r    %test_reindex_astype_order_consistency   s   rx   c                  C   s  t g d} | g d}t ddtjgg dd}t|| | jg ddd}t g dg dd}t|| t g d}|g d}t ddtjgg dd}t|| |jg ddd}t g d	g dd}t|jjtj	stJ t|| t g dt
d
}|g d}t ddtjgg dt
d}t|| |jg ddd}t g dg dt
d}t|| t g d}|g d}t ddtjgg dt
d}t|| |jg ddd}t g dg dd}t|| d S )N)      ?rc         @ru   rc   rz   r(   r   
fill_value)rc   rz   r   )r   r"   r   rQ   r   r"   r   r8   rH   )r   r"   rH   )TFTFT)FTF)r
   r   r   r*   r+   r,   
issubclassr8   typeintegerr)   )Zfloatsr   rA   ZintsobjectsZboolsr   r   r    test_reindex_fill_value   s:   r   r8   zdatetime64[ns]timedelta64[ns]r|   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   rQ   r%   r{   r}   )
rI   skipr   r   r
   r   r   r)   r+   r,   )r8   r|   Zusing_array_managerrw   r   rA   r   r   r    +test_reindex_fill_value_datetimelike_upcast/  s   
r   c                  C   sr   t dddd} t dddd}ttd| d	}d
}tjt|d |j|dd W d    d S 1 s2w   Y  d S )NZ20131101zAmerica/Chicagor$   )tzr3   Z20131103r   Hr2   r(   zLCannot compare dtypes datetime64\[ns, America/Chicago\] and datetime64\[ns\]rF   rR   rD   )r   r
   r7   rI   rJ   	TypeErrorr   )r   Znewidxr_   rN   r   r   r    /test_reindex_datetimeindexes_tz_naive_and_awareA  s   "r   c                  C   s6   t ddddg} t tgd dd}t| | d S )Nzdatetime64[ns, UTC]rQ   r   r%   r   )r
   r   r   r+   Zassert_equal)r   rA   r   r   r    "test_reindex_empty_series_tz_dtypeN  s   r   z+p_values, o_values, values, expected_valuesZ2019Q1zQ-DECZ2019Q2ZAllry   c           	      C   sB   t | }t|}t||d}||}t||d}t|| d S )Nr(   )r	   r   r
   r   r+   r,   )	Zp_valuesZo_valuesrr   Zexpected_valuesZperiod_indexZobject_indexrw   r   rA   r   r   r    $test_reindex_periodindex_with_objectU  s   
r   c                  C   sT   t ddg} d}tjt|d | ddgd W d    d S 1 s#w   Y  d S )Nr%   r   zCreindex\(\) takes from 1 to 2 positional arguments but 3 were givenrF   r"   Fr
   rI   rJ   r   r   rw   rN   r   r   r    test_reindex_too_many_argsq  s
   "r   c                  C   sZ   t ddg} d}tjt|d | jddgddgd W d    d S 1 s&w   Y  d S )Nr%   r   z4reindex\(\) got multiple values for argument 'index'rF   r"   r&   r(   r   r   r   r   r    test_reindex_double_indexy  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,   )rw   r   rA   r   r   r    test_reindex_no_posargs  s   r   rr   rU   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)   r}   rV   )levelr%   )Zlevelscodes)
r
   r7   ri   r   Zfrom_arraysr   r   arrayr+   r,   )rr   rw   r   rA   r   r   r    test_reindex_empty_with_level  s   r   c                  C   sZ   t g ddd} d}tjt|d | jg ddd W d    d S 1 s&w   Y  d S )	N)r%   r   r"   r%   rq   rQ   z:Cannot setitem on a Categorical with a new category \(-1\)rF   rT   r{   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   t|}t dtj	tj	gt d}t
|| W d    d S 1 sLw   Y  d S )Nry   rQ   r"   r%   r   )r
   r   r   r   r7   rr   _datar   r   NaNr+   Zassert_numpy_array_equalZassert_produces_warninglogr,   )r_   Z	s_reindexr   rA   Z
result_logZexpected_logr   r   r    #test_reindexing_with_float64_NA_log  s   
"r   ).numpyr   rI   Zpandasr   r   r   r   r   r   r   r	   r
   r   r   r   r   Zpandas._testingZ_testingr+   r!   r1   r<   rB   rO   rb   re   rl   ro   rp   rt   rx   r   markZparametrizer   r   r   r*   r   r   r   r   r   r   r   r   r   r   r    <module>   sX    <')3


