o
    թZh                     @  sx  d dl mZ d dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZ d dlZd dlmZmZmZmZ d dlmZ d dlmZmZmZmZ ejg ddd	d
 Zejdd Zejdd Zejdd ZG dd dZ G dd de Z!G dd de Z"ej#$dej#$dG dd de Z%ej#j&deg dj'ee(ddffej)dd d!d"j'ee*ddffej+dd d!d"j'effgd#d$ d%d&d' Z,ej#j&d(eg dj'e*ddej-ffej)dd d!d"j'e(ddej-ffej+dd d!d"j'e*dde(ddej-ffgd)d$ d%d*d+ Z.ej#&d,ej)d-d.d/j/ej0d-d.d/j/gd0d1 Z1ej#&d2d3d4gej#&d5e2d6d7gej3d8d9gd!d:ed6d7gd!d;gej#&d<e4ej/ej/ej5ej6ej7ej8gd=d> Z9ej#&d5e2d6d7gej3d8d9gd!d:ed6d7gd!d;gej#&d?d8d9gd@dAge
d6dBdCgd9 gdDdE Z:ej#&d<e4e;ej/ej5gdFdG Z<ej#&dHdIdJgdKdL Z=dS )M    )annotationsN)NaTOutOfBoundsDatetime	Timestamp)freq_to_period_freqstr)DatetimeIndexPeriodPeriodIndexTimedeltaIndex)DatetimeArrayNumpyExtensionArrayPeriodArrayTimedeltaArray)DBWZMEZQEZYE)paramsc                 C  s   | j S )z:Fixture returning parametrized frequency in string format.)param)request r   \/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/arrays/test_datetimelike.pyfreqstr!   s   r   c                 C  s\   t    t jddtd td| } tjtdd| d}W d   |S 1 s'w   Y  |S )	z
    A fixture to provide PeriodIndex objects with different frequencies.

    Most PeriodArray behavior is already tested in PeriodIndex tests,
    so here we just test that the PeriodArray behavior matches
    the PeriodIndex behavior.
    ignorezPeriod with BDay freq)messagecategory   
2000-01-01d   startperiodsfreqN)warningscatch_warningsfilterwarningsFutureWarningr   pdperiod_ranger   )r   pir   r   r   period_index'   s   



r)   c                 C  s   t jtdd| d}|S )z
    A fixture to provide DatetimeIndex objects with different frequencies.

    Most DatetimeArray behavior is already tested in DatetimeIndex tests,
    so here we just test that the DatetimeArray behavior matches
    the DatetimeIndex behavior.
    r   r   r   )r&   
date_ranger   )r   dtir   r   r   datetime_index;   s   
r,   c                   C  s   t g dS )a  
    A fixture to provide TimedeltaIndex objects with different frequencies.
     Most TimedeltaArray behavior is already tested in TimedeltaIndex tests,
    so here we just test that the TimedeltaArray behavior matches
    the TimedeltaIndex behavior.
    1 Day3 Hoursr   )r
   r   r   r   r   timedelta_indexI   s   	r0   c                   @  s  e Zd ZU ded< ejdd Zdd Zej	de
jdd	d
e
jdd	dde
jdd	d
e
jdd	ddgdd Zej	dddgej	dddgdd Zdd Zej	dddedddd jgd!d" Zd#d$ Zejd%d&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zej	d2d3d4gd5d6 Zd7d8 Zej	d9g d:d;d< Zd=d> Zd?d@ Z dAdB Z!dCdD Z"dEdF Z#ej	d9e
j$e
j%e&j'e(e)gdGdH Z*dIdJ Z+ej	dddgdKdL Z,dMdN Z-ej	d9e(e&j'e
j$e
j%gdOdP Z.dQdR Z/dSdT Z0dUdV Z1dWdX Z2dYS )ZSharedTestsz2type[DatetimeIndex | PeriodIndex | TimedeltaIndex]	index_clsc                 C  sJ   t jdddd d d }| jtu r| j|dd}|S | j|ddj}|S )	z5Fixture returning DatetimeArray with daily frequency.
   i8dtype      ʚ;r   r!   )nparange	array_clsr   r2   _data)selfdataarrr   r   r   arr1dX   s   
zSharedTests.arr1dc                 C  s   |}|  |}tjtdd ||d d k W d    n1 s!w   Y  tjtdd ||dg k W d    d S 1 s@w   Y  d S )NzLengths must matchmatchr   r   )r2   pytestraises
ValueError)r?   rB   rA   idxr   r   r   test_compare_len1_raisesb   s   
"z$SharedTests.test_compare_len1_raisesresultZ2020   r    UTC)r    tzz0 days2020Q1Qr    r!   c                 C  s.   t |}t||ksJ t||krJ d S N)r&   Categoricalallany)r?   rJ   expectedr   r   r   test_compare_with_Categoricalo   s   

z)SharedTests.test_compare_with_CategoricalreverseTFas_indexc                 C  s   t j||d}|rt |}||}}|r||}}tj|jtd}| }	||k}
t|
| ||k}
t|
|	 |sg|si||k }
t|
|	 ||k}
t|
| ||k}
t|
|	 ||k}
t|
| d S d S d S )N)orderedr5   )	r&   rS   CategoricalIndexr;   onesshapebooltmassert_numpy_array_equal)r?   rB   rY   rX   rZ   otherleftrightr\   ZzerosrJ   r   r   r   test_compare_categorical_dtype}   s,   


z*SharedTests.test_compare_categorical_dtypec                 C  s   t jdddd d d }t jd| | jtu r"t|dd}n| |j}| j	|}g d	}|
|}|
|}t| || t g d	}|
|}|
|}t| || d S )
Nr   r4   r5   r7   r8   r9      	period[D])r      ^   )r;   r<   randomZdefault_rngshuffler=   r   r2   r>   _simple_newtaker_   assert_index_equalarray)r?   r@   rA   rH   ZtakersrJ   rV   r   r   r   	test_take   s   




zSharedTests.test_take
fill_valuere   g       @i  r      c                 C  sX   d|j j d}tjt|d |jddgd|d W d    d S 1 s%w   Y  d S )Nvalue should be a '' or 'NaT'. GotrC   r   r   TZ
allow_fillrp   )_scalar_type__name__rE   rF   	TypeErrorrl   )r?   rp   rB   msgr   r   r   test_take_fill_raises   s   "z!SharedTests.test_take_fill_raisesc                 C  sv   |}|j ddgdd d}|d tu sJ |j ddgdtjd}|d tu s'J |j ddgdtd}|d tu s9J d S )Nr   Trt   r   )rl   r   r;   nan)r?   rB   rA   rJ   r   r   r   test_take_fill   s   zSharedTests.test_take_fill8ignore:Period with BDay freq is deprecated:FutureWarningc                 C  s   |j ddgdt|d d}|ddg }t|| d|jj d}tjt|d |j ddgddd W d    d S 1 s?w   Y  d S )	Nrz   r   Trt   rr   rs   rC   foo)	rl   strr_   assert_equalru   rv   rE   rF   rw   r?   rB   rJ   rV   rx   r   r   r   test_take_fill_str   s   "zSharedTests.test_take_fill_strc                 C  s   |}|  |}|dt}|}||d d |dd  |g}|t}|  t|d d |dd  |g}t	|  || d S )Nr   rz   r   )
r2   insertr   _concat_same_typeastypeobjectr;   Zconcatenater_   rm   )r?   rB   rA   rH   rJ   arr2rV   r   r   r   test_concat_same_type   s   
 
&z!SharedTests.test_concat_same_typec                 C  s   | |d }|jjj}t||sJ | t}t||sJ d| jj d}tj	t
|d | d W d    d S 1 s?w   Y  d S )Nr   z'value' should be a .rC   r~   )Z_unbox_scalar_ndarrayr6   type
isinstancer   scalar_typerv   rE   rF   rG   r   r   r   r   test_unbox_scalar   s   

"zSharedTests.test_unbox_scalarc                 C  s.   | |d  | |d d  | t d S )Nr   r   )Z_check_compatible_withr   r?   rB   r   r   r   test_check_compatible_with   s   z&SharedTests.test_check_compatible_withc                 C  s&   | t|d }||d ksJ d S )Nr   )Z_scalar_from_stringr   )r?   rB   rJ   r   r   r   test_scalar_from_string   s   z#SharedTests.test_scalar_from_stringc                 C  sB   d}t jt|d |d W d    d S 1 sw   Y  d S )Nz)does not support reduction 'not a method'rC   znot a method)rE   rF   rw   Z_reduce)r?   rB   rx   r   r   r   test_reduce_invalid   s   "zSharedTests.test_reduce_invalidmethodpadZbackfillc                 C  s   t jdddd d d }| jtu r| j|dd}n| j|}t|d< |d	kr,|d
 n|d }|j|d}|d |ks>J |d tu sFJ d S )Nr3   r4   r5   r7   r8   r9   rf   rg   r   rK      )r   )r;   r<   r=   r   _from_sequencer   Z_pad_or_backfill)r?   r   r@   rA   rp   rJ   r   r   r   %test_fillna_method_doesnt_change_orig   s   
z1SharedTests.test_fillna_method_doesnt_change_origc                 C  s   t jdddd d d }| jtu r| j|dd}n| j|}||d }|dks-J |j|d	 d
d}|dks<J ||dd }t jdd	gt jd}t	|| |j|dd d
d}t jd	dgt jd}t	|| |t
}|dks{J d S )Nr3   r4   r5   r7   r8   r9   rf   r   re   rc   ZsiderK   )r;   r<   r=   r   r   searchsortedrn   intpr_   r`   r   )r?   r@   rA   rJ   rV   r   r   r   test_searchsorted  s    

zSharedTests.test_searchsortedbox)NindexZseriesc              	   C  s  |}|d u rn|dkr|  |}nt|}|t|d }|dks%J |jt|d dd}|dks6J |dd |dd D }tjddgtjd	}t	|| t
jttd
|jj dd |d W d    n1 stw   Y  td|< t
jttd
|jj dd |t|d dg W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r   re   rc   r   rK   c                 S     g | ]}t |qS r   r   .0xr   r   r   
<listcomp>;      zBSharedTests.test_searchsorted_castable_strings.<locals>.<listcomp>r5   rr   z/', 'NaT', or array of those. Got 'str' instead.rC   r~   string_storagez6', 'NaT', or array of those. Got string array instead.Zbaz)r2   r&   Seriesr   r   r;   rn   r   r_   r`   rE   rF   rw   reescaperu   rv   Zoption_context)r?   rB   r   r   rA   rJ   rV   r   r   r   "test_searchsorted_castable_strings(  sB   
	"z.SharedTests.test_searchsorted_castable_stringsc                 C  sx   t jdd tddD dd}| jtu r| j|dd}n| j|dd	j}|d
  t|}|d
  t	|}|d
  d S )Nc                 S  s   g | ]}t j| qS r   )r   _value)r   nr   r   r   r   U      zGSharedTests.test_getitem_near_implementation_bounds.<locals>.<listcomp>r   r   r4   r5   z
period[ns]nsr:   r   )
r;   asarrayranger=   r   r2   r>   r&   Indexr   )r?   Zi8valsrA   r   Zserr   r   r   'test_getitem_near_implementation_boundsR  s   


z3SharedTests.test_getitem_near_implementation_boundsc                 C  s   t |j|jd d tjf |jd}|d d tjf }t|| |}t |j|jd ddf |jd}|d ddf }t|| |d }|d }||ksPJ d S )Nr5   rK   r   )rz   r   rz   )r   rk   r   r;   newaxisr6   r_   r   )r?   rB   rV   rJ   arr2dr   r   r   test_getitem_2db  s   "zSharedTests.test_getitem_2dc                 C  s~   |j d dtjf }t|j||jd}t|}t|dks J |D ]}t|t|s-J |j	dks4J |j|jks<J q"d S )NrK   r5   r   )
r   r;   r   r   rk   r6   listlenr   ndim)r?   rB   data2dr   rJ   r   r   r   r   test_iter_2du  s   zSharedTests.test_iter_2dc              
   C  s   |j d dtjf }t|j||jd}t|}t|tr?dt|j	 d|d 
  d|d 
  d|d 
  d	|j 
}ndt|j	 d|d  d|d  d|d  d	|j 
}||ks`J d S )
NrK   r5   <z>
[
['r   z'],
['r   re   z']
]
Shape: (3, 1), dtype: )r   r;   r   r   rk   r6   reprr   r   rv   Z
_repr_base)r?   rB   r   r   rJ   rV   r   r   r   test_repr_2d  s2   




zSharedTests.test_repr_2dc                 C  s   t jdddd d d }| jtu r| j|dd}n| j|dd	j}|d
 |d< t jdddd d d }|d
 |d< t|j| |dd  |d d< |dd  |d d< t|j| d S )Nr3   r4   r5   r7   r8   r9   rf   r   r:   r   r   re   )	r;   r<   r=   r   r2   r>   r_   r`   asi8r?   r@   rA   rV   r   r   r   test_setitem  s   
zSharedTests.test_setitemc                 C  s   |  d d d }|jjdv r|d }|}|tu rt|}n#|tju r-t|t}n|t	u r;|tj
|td}n||t}||d d < t|| d S )Nrz   )mMr5   )copyr6   kind
_with_freqr   r;   rn   r   r   r   r   r_   r   )r?   r   rB   rV   valsr   r   r   test_setitem_object_dtype  s   


z%SharedTests.test_setitem_object_dtypec                 C  s   |  }|dd  |ddg< |  }dd |dd  D |d d< t|| |  }|d |d< |  }t|d |d< t|| d S )Nr   r   r   c                 S  r   r   r   r   r   r   r   r     r   z1SharedTests.test_setitem_strs.<locals>.<listcomp>re   rz   )r   r_   r   r   )r?   rB   rV   rJ   r   r   r   test_setitem_strs  s   zSharedTests.test_setitem_strsc                 C  sd   |  d d d }t|ts|d }t|}|rt|}|d d d |d d < t|| d S )Nrz   )	r   r   r   r   r&   rS   r[   r_   r   )r?   rB   rY   rV   catr   r   r   test_setitem_categorical  s   



z$SharedTests.test_setitem_categoricalc                 C  s  |d d }|d }t jtdd ||d< W d    n1 s w   Y  t jtdd t |d< W d    n1 s<w   Y  d}t jt|d |d g|g < W d    n1 s\w   Y  d	}t jt|d |d d
 |dd< W d    d S 1 sw   Y  d S )Nr3   r   zindex 12 is out of boundsrC   rq   zvalue should be a.* 'object'z<cannot set using a list-like indexer with a different lengthr   z=cannot set using a slice indexer with a different length thanrK   )rE   rF   
IndexErrorrw   r   rG   )r?   rB   rA   valrx   r   r   r   test_setitem_raises  s    
"zSharedTests.test_setitem_raisesc                 C  s   d|j j d}tjt|d |ddg|d d< W d    n1 s$w   Y  tjt|d |ddg|d d< W d    d S 1 sFw   Y  d S )	Nrr   z ', 'NaT', or array of those. GotrC   r   r   re   g        g      ?)ru   rv   rE   rF   rw   )r?   rB   r   rx   r   r   r   test_setitem_numeric_raises   s   "z'SharedTests.test_setitem_numeric_raisesc                 C  s   t jdddd d d }| jtu r| j|dd}n| j|dd	j}|tjd
d }|tjd
d7 }t	|| |tjd
d }|tjd
d8 }t	|| d S )Nr3   r4   r5   r7   r8   r9   rf   r   r:   r   days)
r;   r<   r=   r   r2   r>   r&   	Timedeltar_   r   r   r   r   r   test_inplace_arithmetic  s   
z#SharedTests.test_inplace_arithmeticc                 C  sB   t jtdd |jddd W d    d S 1 sw   Y  d S )Nzvalue should be arC   r   )rp   )rE   rF   rw   shiftr   r   r   r   test_shift_fill_int_deprecated  s   "z*SharedTests.test_shift_fill_int_deprecatedc                 C  s  |}t |d dkr|d d }|t |d  }| }t|t|u s&J ||ks,J t|t |d < t|tsM|t |d d t |d d   }|jddtu sWJ | }t|t|u seJ ||kskJ |d d  tu swJ |d d jddtu sJ |dd}|jd d}t|t|u sJ ||ksJ |jd ddtu sJ |jdd}t|j|g|j	d	}t
|| |jddd}t|jtg|j	d	}t
|| |jdd}t
|| |jddd}t
|| d S )
Nre   r   rz   r   F)skipna)axis)r   r   r5   )r   Zmedianr   r   r   r   meanreshaper   r6   r_   r   )r?   rB   rA   rV   rJ   r   Z	expected2r   r   r   test_median#  s>   
(zSharedTests.test_medianc                 C  s   t jg dt jd}tj|dd}| jtu r'| j|| jd}| j|| jd}n| jj|| jd}| jj|| jd}t	|| d S )Nr   re   rK   r5   ZInt64)
r;   rn   int64r&   r=   r   example_dtyper   r_   assert_extension_array_equal)r?   rA   r@   rV   rJ   r   r   r   test_from_integer_arrayS  s   
z#SharedTests.test_from_integer_arrayN)3rv   
__module____qualname____annotations__rE   fixturerB   rI   markparametrizer&   r*   timedelta_ranger'   rW   rd   ro   r   timery   r|   r$   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r;   rn   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   U   sx   
 
	
	!




)




0r1   c                   @  s   e Zd ZeZeZeZdZ	e
j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 Zdd Ze
jdejdd Ze
jdejdd Zdd Zd d! Zd"d# Z d$d% Z!d&d' Z"d(S ))TestDatetimeArrayM8[ns]c                 C  s    |}t jdd||d}|j}|S )zc
        Fixture returning DatetimeArray with parametrized frequency and
        timezones
        z2016-01-01 01:01:00r   )r    r!   rN   )r&   r*   r>   )r?   Ztz_naive_fixturer   rN   r+   dtar   r   r   rB   f  s   zTestDatetimeArray.arr1dc                 C  sj   |  |}|jdd}|tjdd }|d }t|| |j}|jdd}|jd }t|| d S )NZ2minr:   r   )minutes)	r2   roundr&   r   r   r_   rm   r>   assert_datetime_array_equal)r?   rB   r+   rJ   rV   r   r   r   r   
test_roundq  s   

zTestDatetimeArray.test_roundc                 C  x  |j }t|}|j}||u sJ t|| tj|dd}||u s$J t|| tj|dd}|j}||u s:J t|| tj|ddd}||u sNJ t|| tj|dd}||usaJ t|| tj|td}tjt|td}t|| tj|dd}||j	usJ t
||rJ |j	 }t|| dtfD ]}tj||d}t||}t|| qd S )NFr   datetime64[ns]r5   r6   r   r   float64r>   r;   r   r   r_   r`   rn   r   r   r   Zmay_share_memoryr   r   r   )r?   r,   rA   rJ   rV   r6   r   r   r   test_array_interface  >   

z&TestDatetimeArray.test_array_interfacec                 C  sT   |}|  |}tt|}tj|td}t|| tj|td}t|| d S Nr5   )r2   r;   rn   r   r   r_   r`   r?   rB   rA   r+   rV   rJ   r   r   r   test_array_object_dtype  s   
z)TestDatetimeArray.test_array_object_dtypec                 C  s   |}|  |}|jd}tj|dd}t|| tj|dd}t|| tj|ddd}|j|ju s7J |jd us>J tj|ddd}|j|ju sNJ |jd usUJ d S )Nr   r5   r   Fr   )r2   r   viewr;   rn   r_   r`   baser   r   r   r   test_array_tz  s   
zTestDatetimeArray.test_array_tzc                 C  s|   |}|  |}|j}tj|dd}t|| tj|tjd}t|| tj|ddd}|j|jus5J |jd u s<J d S )Nr4   r5   Fr   )r2   r   r;   rn   r_   r`   r   r   r   r   r   r   test_array_i8_dtype  s   
z%TestDatetimeArray.test_array_i8_dtypec                 C  sP   t jddgdd}t|}|j|u sJ t|d d }|jj|u s&J d S )Nr   z
2000-01-02r   r5   r   )r;   rn   r   r   r   r   )r?   rA   r   r   r   r   test_from_array_keeps_base  s
   
z,TestDatetimeArray.test_from_array_keeps_basec                 C  sR   |}|  |}t|t|ksJ t|}t|tsJ t|t|ks'J d S rR   )r2   r   r&   r   r   r   )r?   rB   rA   r+   Zdti2r   r   r   test_from_dti  s   

zTestDatetimeArray.test_from_dtic                 C  sN   |}|  |}|d}t|tjsJ |jdksJ t|t|ks%J d S NOr2   r   r   r;   ndarrayr6   r   )r?   rB   rA   r+   asobjr   r   r   test_astype_object  s   

z$TestDatetimeArray.test_astype_object3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 C  sL   |}|j }td|}|j|d}|j|d}t|tsJ t||j  d S )Nr   r:   )r>   r   	to_periodr   r   r_   r   )r?   r,   r   r+   rA   rV   rJ   r   r   r   test_to_period  s   
z TestDatetimeArray.test_to_periodc                 C  st   | dd}|jd u rd nt}t| |d}|d dd}W d    n1 s-w   Y  t|| d S )Nr   rz   r   )r   rN   UserWarningr_   assert_produces_warningr  Zassert_period_array_equal)r?   rB   r   warnrJ   rV   r   r   r   test_to_period_2d  s   
z#TestDatetimeArray.test_to_period_2dpropnamec                 C  sN   |  |}|}|j|jksJ t||}tjt|||jd}t|| d S r   )r2   r!   getattrr;   rn   r6   r_   r`   r?   rB   r  r+   rA   rJ   rV   r   r   r   test_bool_properties  s   

z&TestDatetimeArray.test_bool_propertiesc                 C  s>   |  |}|}t||}tjt|||jd}t|| d S r   )r2   r  r;   rn   r6   r_   r`   r  r   r   r   test_int_properties  s
   

z%TestDatetimeArray.test_int_propertiesc                 C  s>  |}|  |}||j}|jddgd|d}|d |ksJ d|jj d}tjt|d |jddgd|| d W d    n1 sEw   Y  tjt|d |jddgdt	d	d W d    n1 shw   Y  |jd urtd nd
}||}d}tjt|d |jddgd|d W d    n1 sw   Y  t
j}	d|jj d}tjt|d |jddgd|	d W d    n1 sw   Y  tdd}	tjt|d |jddgd|	d W d    n1 sw   Y  |jd ur|d}	|jddgd|	d}|jddgd|	|jjd}
t||
 d S d S )Nrz   r   Trt   r   rr   rs   rC   Z2014Q1z
US/Easternz:Cannot compare tz-naive and tz-aware datetime-like objectsr   r   zAustralia/Melbourne)r2   tz_localizerN   rl   ru   rv   rE   rF   rw   r   r   r   r;   timedelta64Z
tz_convertr6   r_   r   )r?   rB   fixed_now_tsrA   r+   nowrJ   rx   rN   valuerV   r   r   r   test_take_fill_valid"  sJ   


z&TestDatetimeArray.test_take_fill_validc                 C  sf   |}|j d u r|d}n|d }tjtdd |||g W d    d S 1 s,w   Y  d S )NrM   zto_concat must have the samerC   )rN   r  rE   rF   rG   r   )r?   rB   rA   ra   r   r   r   test_concat_same_type_invalidR  s   

"z/TestDatetimeArray.test_concat_same_type_invalidc                 C  sf   t jdddd|dj}t jdddd|dj}t||g}t g dd|j}t	|| d S )N2000re   r   z
US/Central)r    r!   rN   unith)2000-01-01 00:00:00z2000-01-02 00:00:00r  z2000-01-01 01:00:00)
r&   r*   r>   r   r   to_datetimer  Zas_unitr_   r   )r?   r  abrJ   rV   r   r   r   $test_concat_same_type_different_freq^  s   z6TestDatetimeArray.test_concat_same_type_different_freqc                 C  6   |}| d}tjdd |D td}t|| d S )N%Y %bc                 S     g | ]}| d qS )r!  strftime)r   tsr   r   r   r   w  r   z3TestDatetimeArray.test_strftime.<locals>.<listcomp>r5   r$  r;   rn   r   r_   r`   r?   rB   rA   rJ   rV   r   r   r   test_strftimes     
zTestDatetimeArray.test_strftimec                 C  s<   t dtgj}|d}tjdtjgtd}t	|| d S )N
2019-01-01%Y-%m-%dr5   )
r   r   r>   r$  r;   rn   r{   r   r_   r`   r?   rA   rJ   rV   r   r   r   test_strftime_natz  s   
z#TestDatetimeArray.test_strftime_natN)#rv   r   r   r   r2   r   r=   r   r   r   rE   r   rB   r   r   r   r   r   r   r   r  r   r$   r  r  r   	_bool_opsr  
_field_opsr  r  r  r  r(  r-  r   r   r   r   r   `  s6    

*	

	
	

	0r   c                   @  sf   e Zd ZeZeZejZ	dZ
dd Zdd Zdd Zdd	 Zejd
ejdd Zdd Zdd ZdS )TestTimedeltaArraym8[ns]c                 C  sV   t ddg}|j}t|t|ksJ t|}t|t sJ t|t|ks)J d S )Nr.   r/   )r
   r>   r   r&   r   r   )r?   tdirA   Ztdi2r   r   r   test_from_tdi  s   
z TestTimedeltaArray.test_from_tdic                 C  sR   t ddg}|j}|d}t|tjsJ |jdksJ t|t|ks'J d S )Nr.   r/   r   )r
   r>   r   r   r;   r  r6   r   )r?   r2  rA   r  r   r   r   r    s   
z%TestTimedeltaArray.test_astype_objectc                 C  s*   |}|j }| }| }t|| d S rR   )r>   Zto_pytimedeltar_   r`   r?   r0   r2  rA   rV   rJ   r   r   r   test_to_pytimedelta  s
   z&TestTimedeltaArray.test_to_pytimedeltac                 C  s,   |}|j }| }| }t||j d S rR   )r>   total_secondsr_   r`   valuesr4  r   r   r   test_total_seconds  s
   z%TestTimedeltaArray.test_total_secondsr  c                 C  s:   |}|j }t||}tjt|||jd}t|| d S r   )r>   r  r;   rn   r6   r_   r`   )r?   r0   r  r2  rA   rJ   rV   r   r   r   r    s
   
z&TestTimedeltaArray.test_int_propertiesc                 C  r   )NFr   ztimedelta64[ns]r5   r   r   r   r   )r?   r0   rA   rJ   rV   r6   r   r   r   r     r   z'TestTimedeltaArray.test_array_interfacec           	      C  s0  |}|j }tjdd}|jddgd|d}|d |ksJ |}d|jj d}tjt|d	 |jddgd|d W d    n1 sCw   Y  |	d
}tjt|d	 |jddgd|d W d    n1 siw   Y  t
dd}tjt|d	 |jddgd|d W d    d S 1 sw   Y  d S )Nr   r   rz   Trt   r   rr   rs   rC   r   r   r   )r>   r&   r   rl   ru   rv   rE   rF   rw   r  r;   
datetime64)	r?   r0   r  r2  rA   Ztd1rJ   r  rx   r   r   r   r    s$   
"z'TestTimedeltaArray.test_take_fill_validN)rv   r   r   r
   r2   r   r=   r&   r   r   r   r3  r  r5  r8  rE   r   r   r/  r  r   r  r   r   r   r   r0    s    
		
	*r0  r}   r  c                   @  s   e Zd ZeZeZeZeg ddj	Z
ejdd Zdd Zdd Zd	d
 Zejdddgdd Zdd Zdd Zejdejdd Zejdejdd Zdd Zdd Zdd ZdS ) TestPeriodArrayr   r:   c                 C  s   |j S )zW
        Fixture returning DatetimeArray from parametrized PeriodIndex objects
        )r>   )r?   r)   r   r   r   rB     s   zTestPeriodArray.arr1dc                 C  sR   |  |}|}t|t|ksJ t|}t|tsJ t|t|ks'J d S rR   )r2   r   r&   r   r   r	   )r?   rB   r(   rA   Zpi2r   r   r   test_from_pi	  s   

zTestPeriodArray.test_from_pic                 C  sN   |  |}|}|d}t|tjsJ |jdksJ t|t|ks%J d S r   r  )r?   rB   r(   rA   r  r   r   r   r    s   

z"TestPeriodArray.test_astype_objectc                 C  s   |}t j}d|jj d}tjt|d |jddgd|d W d    n1 s)w   Y  t	dd	}tjt|d |jddgd|d W d    d S 1 sQw   Y  d S )
Nrr   rs   rC   rz   r   Trt   r   r   )
r   r   ru   rv   rE   rF   rw   rl   r;   r  )r?   rB   rA   r  rx   r   r   r   r    s   "z$TestPeriodArray.test_take_fill_validhowSEc                 C  sJ   |  |}|}t|j|dj}|j|d}t|tsJ t|| d S )N)r<  )r2   r   to_timestampr>   r   r   r_   r   )r?   r<  rB   r(   rA   rV   rJ   r   r   r   test_to_timestamp)  s   
z!TestPeriodArray.test_to_timestampc           	      C  s   t jddddj}| }| }|jdksJ t|| |d d d }| }| }|jdks4J t|| |d}| }|jdksJJ t|| d S )Nz
2021-10-18rK   r   rQ   re   Z2B)r&   r*   r>   r  r?  r!   r_   r   )	r?   r   ZparrrJ   Zdta2Zparr2Zresult2Zparr3Zresult3r   r   r    test_to_timestamp_roundtrip_bday4  s   
z0TestPeriodArray.test_to_timestamp_roundtrip_bdayc                 C  s   t jdddd}d}tjt|d |  W d    n1 s w   Y  tjt|d |j  W d    d S 1 s=w   Y  d S )NZ1500YrK   )r!   r    z7Out of bounds nanosecond timestamp: 1500-01-01 00:00:00rC   )r&   r'   rE   rF   r   r?  r>   )r?   r(   rx   r   r   r   test_to_timestamp_out_of_boundsG  s   
"z/TestPeriodArray.test_to_timestamp_out_of_boundsr  c                 C  8   |  |}|}t||}tt||}t|| d S rR   r2   r  r;   rn   r_   r`   r?   rB   r  r(   rA   rJ   rV   r   r   r   r  Q  s
   

z$TestPeriodArray.test_bool_propertiesc                 C  rD  rR   rE  rF  r   r   r   r  \  s
   

z#TestPeriodArray.test_int_propertiesc                 C  s   |}t |}t jt|td}t|| t j|td}t|| t j|dd}t||j d}tj	t
|d t j|dd W d    n1 sLw   Y  t j|dd}t |d}t|| d S )Nr5   r   zEfloat\(\) argument must be a string or a( real)? number, not 'Period'rC   r   ZS20)r;   r   rn   r   r   r_   r`   r   rE   rF   rw   r   )r?   rB   rA   rJ   rV   rx   r   r   r   r   f  s   
z$TestPeriodArray.test_array_interfacec                 C  r   )N%Yc                 S  r"  )rG  r#  )r   Zperr   r   r   r     r   z1TestPeriodArray.test_strftime.<locals>.<listcomp>r5   r&  r'  r   r   r   r(  ~  r)  zTestPeriodArray.test_strftimec                 C  sB   t tdtgdd}|d}tjdtjgtd}t	|| d S )Nr*  rf   r5   r+  )
r   r	   r   r$  r;   rn   r{   r   r_   r`   r,  r   r   r   r-    s   
z!TestPeriodArray.test_strftime_natN)rv   r   r   r	   r2   r   r=   r   r   r6   r   rE   r   rB   r;  r  r  r   r   r@  rA  rC  r.  r  r/  r  r   r(  r-  r   r   r   r   r:    s*    







	r:  zarr,casting_natsr-   r   r   r   rK   r   rQ   c                 C  
   t | jS rR   r   rv   r   r   r   r   <lambda>     
 rK  )Zidsc                 C  sL   t | jt| d | d g| jd}|D ]}|  } || d< t| | qd S )Nr   re   r5   r   )r   r   r   r6   r   r_   r   )rA   Zcasting_natsrV   natr   r   r   test_casting_nat_setitem_array  s   "rN  zarr,non_casting_natsc                 C  rH  rR   rI  rJ  r   r   r   rK    rL  c              	   C  sH   d}|D ]}t jt|d || d< W d    n1 sw   Y  qd S )Nzwvalue should be a '(Timestamp|Timedelta|Period)', 'NaT', or array of those. Got '(timedelta64|datetime64|int)' instead.rC   r   )rE   rF   rw   )rA   Znon_casting_natsrx   rM  r   r   r   test_invalid_nat_setitem_array  s   
rO  rA   r  rg   rL   c                 C  s   t | d< |  }|  }t|d sJ | jdd}|d dks#J | jddd}|d dks2J | j| d  d}|d |d ksFJ | j| d jdd	d}|d |d ks\J t| | d S )
Nr   r   r5   l         )r6   na_valuer   )rP  Fr   )r   r   Zto_numpyr;   isnanr_   r   )rA   originalrJ   r   r   r   test_to_numpy_extra  s   rS  rY   TFr7  z
2020-01-01z
2020-02-01r   re   )r  r:   klassc                 C  s<   |s| j } | || }tjddg|jd}t|| d S )Nr   r   r5   )r>   r   r;   rn   r6   r_   r`   )r7  rT  rY   rJ   rV   r   r   r   ,test_searchsorted_datetimelike_with_listlike  s
   rU  argr  r  zEurope/London)rN   c                 C  sB   d}t jt|d | | W d    d S 1 sw   Y  d S )Nz [Unexpected type|Cannot compare]rC   )rE   rF   rw   r   )r7  rV  rx   r   r   r   :test_searchsorted_datetimelike_with_listlike_invalid_dtype   s   "rW  c                 C  sB   ddgd }| |}t |dd}t dd |D }t|| d S )NrO   Z2020Q2re   rP   r:   c                 S  r   r   )r   )r   sr   r   r   r     r   z?test_period_index_construction_from_strings.<locals>.<listcomp>)r	   r_   rm   )rT  stringsr@   rJ   rV   r   r   r   +test_period_index_construction_from_strings  s
   rZ  r6   r   r1  c           	      C  s  t jg d| d}t|}ttd|  }|j d}tjt|d ||}||}W d    n1 s4w   Y  t	|| |j
|| d}|j
|| d}t	|| tjtjd|  }||j}||j}t|| ttd|  }||}||}t|| d S )Nr   r5   )r   r1  z.__init__ is deprecatedrC   )r;   rn   r   r   r   rv   r_   r	  r%   r   r   r&   r  to_timedeltar   r   r
   rm   )	r6   r@   rA   clsZdepr_msgrJ   rV   funcZidx_clsr   r   r   test_from_pandas_array  s(   


r^  )>
__future__r   r   r"   numpyr;   rE   Zpandas._libsr   r   r   Zpandas._libs.tslibs.dtypesr   Zpandasr&   r   r   r	   r
   Zpandas._testingZ_testingr_   Zpandas.core.arraysr   r   r   r   r   r   r)   r,   r0   r1   r   r0  r   r$   r:  r   r>   r  r*   r9  r'   rN  r   rO  rn   r   rS  r  r[  r   r   r   rS   r[   rU  rW  tuplerZ  r^  r   r   r   r   <module>   s    	



      %
w
 
	

 
	