a
    Pf                     @  s  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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, Z0ej%(d-ej+d.d/d0j1ej2d.d/d0j1gd1d2 Z3ej%(d3d4d5gej%(d6e4d7d8gej5d9d:gd"d;ed7d8gd"d<gej%(d=e6ej1ej1ej7ej8ej9ej:gd>d? Z;ej%(d6e4d7d8gej5d9d:gd"d;ed7d8gd"d<gej%(d@d9d:gdAdBge
d7dCdDgd: gdEdF Z<ej%(d=e6e=ej1ej7gdGdH Z>ej%(dIdJdKgdLdM Z?dS )N    )annotationsN)NaTOutOfBoundsDatetime	Timestamp)freq_to_period_freqstr)np_version_gt2)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/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/arrays/test_datetimelike.pyfreqstr"   s    r   c                 C  sZ   t  > t jddtd td| } tjtdd| d}W d   n1 sL0    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    


2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_indexJ   s    	r1   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  sH   t jdddd d d }| jtu r4| j|dd}n| j|ddj}|S )	z5Fixture returning DatetimeArray with daily frequency.
   i8dtype      ʚ;r   r"   )nparange	array_clsr   r3   _data)selfdataarrr   r   r   arr1dY   s
    
zSharedTests.arr1dc                 C  s   |}|  |}tjtdd  ||d d k W d    n1 sB0    Y  tjtdd ||dg k W d    n1 s~0    Y  d S )NzLengths must matchmatchr   r   )r3   pytestraises
ValueError)r@   rC   rB   idxr   r   r   test_compare_len1_raisesc   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@   rK   expectedr   r   r   test_compare_with_Categoricalp   s    

z)SharedTests.test_compare_with_CategoricalreverseTFas_indexc                 C  s   t j||d}|rt |}|| }}|r4|| }}tj|jtd}| }	||k}
t|
| ||k}
t|
|	 |s|s||k }
t|
|	 ||k}
t|
| ||k}
t|
|	 ||k}
t|
| d S )N)orderedr6   )	r'   rT   CategoricalIndexr<   onesshapebooltmassert_numpy_array_equal)r@   rC   rZ   rY   r[   otherleftrightr]   ZzerosrK   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 rDt|dd}n| |j}| j	|}g d	}|
|}|
|}t| || t g d	}|
|}|
|}t| || d S )
Nr   r5   r6   r8   r9   r:      	period[D])r      ^   )r<   r=   randomZdefault_rngshuffler>   r   r3   r?   _simple_newtaker`   assert_index_equalarray)r@   rA   rB   rI   ZtakersrK   rW   r   r   r   	test_take   s    




zSharedTests.test_take
fill_valuerf   g       @i  r      c                 C  sV   d|j j d}tjt|d$ |jddgd|d W d    n1 sH0    Y  d S )Nvalue should be a '' or 'NaT'. GotrD   r   r   TZ
allow_fillrq   )_scalar_type__name__rF   rG   	TypeErrorrm   )r@   rq   rC   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 sNJ |j ddgdtd}|d tu srJ d S )Nr   Tru   r   )rm   r   r<   nan)r@   rC   rB   rK   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    n1 s|0    Y  d S )	Nr{   r   Tru   rs   rt   rD   foo)	rm   strr`   assert_equalrv   rw   rF   rG   rx   r@   rC   rK   rW   ry   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   r{   r   )
r3   insertr   _concat_same_typeastypeobjectr<   Zconcatenater`   rn   )r@   rC   rB   rI   rK   arr2rW   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    n1 s|0    Y  d S )Nr   z'value' should be a .rD   r   )Z_unbox_scalar_ndarrayr7   type
isinstancer   scalar_typerw   rF   rG   rH   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@   rC   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@   rC   rK   r   r   r   test_scalar_from_string   s    z#SharedTests.test_scalar_from_stringc                 C  s@   d}t jt|d |d W d    n1 s20    Y  d S )Nz)does not support reduction 'not a method'rD   znot a method)rF   rG   rx   Z_reduce)r@   rC   ry   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 r4| j|dd}n| j|}t|d< |d	krX|d
 n|d }|j|d}|d |ks|J |d tu sJ d S )Nr4   r5   r6   r8   r9   r:   rg   rh   r   rL      )r   )r<   r=   r>   r   _from_sequencer   Z_pad_or_backfill)r@   r   rA   rB   rq   rK   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 r4| j|dd}n| j|}||d }|dksZJ |j|d	 d
d}|dksxJ ||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sJ d S )Nr4   r5   r6   r8   r9   r:   rg   r   rf   rd   ZsiderL   )r<   r=   r>   r   r   searchsortedro   intpr`   ra   r   )r@   rA   rB   rK   rW   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sJJ |jt|d dd}|dkslJ |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 s0    Y  td|h t
jttd
|jj dd& |t|d dg W d    n1 sN0    Y  W d    n1 sn0    Y  d S )Nr   r   rf   rd   r   rL   c                 S  s   g | ]}t |qS r   r   .0xr   r   r   
<listcomp><      zBSharedTests.test_searchsorted_castable_strings.<locals>.<listcomp>r6   rs   z/', 'NaT', or array of those. Got 'str' instead.rD   r   string_storagez6', 'NaT', or array of those. Got string array instead.Zbaz)r3   r'   Seriesr   r   r<   ro   r   r`   ra   rF   rG   rx   reescaperv   rw   Zoption_context)r@   rC   r   r   rB   rK   rW   r   r   r   "test_searchsorted_castable_strings)  s8    
(z.SharedTests.test_searchsorted_castable_stringsc                 C  sx   t jdd tddD dd}| jtu r8| 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   V  r   zGSharedTests.test_getitem_near_implementation_bounds.<locals>.<listcomp>r   r   r5   r6   z
period[ns]nsr;   r   )
r<   asarrayranger>   r   r3   r?   r'   Indexr   )r@   Zi8valsrB   r   Zserr   r   r   'test_getitem_near_implementation_boundsS  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sJ d S )Nr6   rL   r   )r{   r   r{   )r   rl   r   r<   newaxisr7   r`   r   )r@   rC   rW   rK   arr2dr   r   r   test_getitem_2dc  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 ]4}t|t|sZJ |j	dkshJ |j|jksDJ qDd S )NrL   r6   r   )
r   r<   r   r   rl   r7   listlenr   ndim)r@   rC   data2dr   rK   r   r   r   r   test_iter_2dv  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 
}n6dt|j	 d|d  d|d  d|d  d	|j 
}||ksJ d S )
NrL   r6   <z>
[
['r   z'],
['r   rf   z']
]
Shape: (3, 1), dtype: )r   r<   r   r   rl   r7   reprr   r   rw   Z
_repr_base)r@   rC   r   r   rK   rW   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 r4| 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 )Nr4   r5   r6   r8   r9   r:   rg   r   r;   r   r   rf   )	r<   r=   r>   r   r3   r?   r`   ra   asi8r@   rA   rB   rW   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|}nF|tju rZt|t}n*|t	u rv|tj
|td}n||t}||d d < t|| d S )Nr{   )mMr6   )copyr7   kind
_with_freqr   r<   ro   r   r   r   r   r`   r   )r@   r   rC   rW   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  s   g | ]}t |qS r   r   r   r   r   r   r     r   z1SharedTests.test_setitem_strs.<locals>.<listcomp>rf   r{   )r   r`   r   r   )r@   rC   rW   rK   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 )Nr{   )	r   r   r   r   r'   rT   r\   r`   r   )r@   rC   rZ   rW   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@0    Y  t jtdd t |d< W d    n1 sx0    Y  d}t jt|d |d g|g < W d    n1 s0    Y  d	}t jt|d$ |d d
 |dd< W d    n1 s0    Y  d S )Nr4   r   zindex 12 is out of boundsrD   rr   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 thanrL   )rF   rG   
IndexErrorrx   r   rH   )r@   rC   rB   valry   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 sH0    Y  tjt|d$ |ddg|d d< W d    n1 s0    Y  d S )	Nrs   z ', 'NaT', or array of those. GotrD   r   r   rf   g        g      ?)rv   rw   rF   rG   rx   )r@   rC   r   ry   r   r   r   test_setitem_numeric_raises  s    2z'SharedTests.test_setitem_numeric_raisesc                 C  s   t jdddd d d }| jtu r4| 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 )Nr4   r5   r6   r8   r9   r:   rg   r   r;   r   days)
r<   r=   r>   r   r3   r?   r'   	Timedeltar`   r   r   r   r   r   test_inplace_arithmetic  s    
z#SharedTests.test_inplace_arithmeticc                 C  s@   t jtdd |jddd W d    n1 s20    Y  d S )Nzvalue should be arD   r   )rq   )rF   rG   rx   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 sLJ ||ksXJ t|t |d < t|ts|t |d d t |d d   }|jddtu sJ | }t|t|u sJ ||ksJ |d d  tu sJ |d d jddtu sJ |dd}|jd d}t|t|u s:J ||ksHJ |jd ddtu s`J |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 )
Nrf   r   r{   r   F)skipna)axis)r   r   r6   )r   Zmedianr   r   r   r	   meanreshaper   r7   r`   r   )r@   rC   rB   rW   rK   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 rN| j|| jd}| j|| jd}n$| jj|| jd}| jj|| jd}t	|| d S )Nr   rf   rL   r6   ZInt64)
r<   ro   int64r'   r>   r   example_dtyper   r`   assert_extension_array_equal)r@   rB   rA   rW   rK   r   r   r   test_from_integer_arrayT  s    
z#SharedTests.test_from_integer_arrayN)3rw   
__module____qualname____annotations__rF   fixturerC   rJ   markparametrizer'   r+   timedelta_ranger(   rX   re   rp   r   timerz   r}   r%   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r2   V   sv   

		
!




)




0r2   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"   rO   )r'   r+   r?   )r@   Ztz_naive_fixturer   rO   r,   dtar   r   r   rC   g  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)	r3   roundr'   r   r   r`   rn   r?   assert_datetime_array_equal)r@   rC   r,   rK   rW   r   r   r   r   
test_roundr  s    

zTestDatetimeArray.test_roundc                 C  s  |j }trd nd}t|}|j}||u s.J t|| tj||d}||u sTJ t|| tj|dd}|j}||u sJ t|| tj|d|d}||u sJ t|| tj|dd}||usJ t|| tj|td}tjt	|td}t|| tj|dd}||j
us$J t||r6J |j
 }t|| dtfD ]0}tj||d}t||}t|| qTd S )NFr   datetime64[ns]r6   r7   r   r   float64r?   r   r<   r   r   r`   ra   ro   r   r   r   Zmay_share_memoryr   r   r   )r@   r-   rB   
copy_falserK   rW   r7   r   r   r   test_array_interface  s>    

z&TestDatetimeArray.test_array_interfacec                 C  sT   |}|  |}tt|}tj|td}t|| tj|td}t|| d S Nr6   )r3   r<   ro   r   r   r`   ra   )r@   rC   rB   r,   rW   rK   r   r   r   test_array_object_dtype  s    
z)TestDatetimeArray.test_array_object_dtypec                 C  s   |}|  |}trd nd}|jd}tj|dd}t|| tj|dd}t|| tj|d|d}|j|ju szJ |jd usJ tj|d|d}|j|ju sJ |jd usJ d S )NFr   r6   r   r   )	r3   r   r   viewr<   ro   r`   ra   baser@   rC   rB   r,   r   rW   rK   r   r   r   test_array_tz  s    
zTestDatetimeArray.test_array_tzc                 C  s   |}|  |}trd nd}|j}tj|dd}t|| tj|tjd}t|| tj|d|d}|j|jusvJ |jd u sJ d S )NFr5   r6   r   )	r3   r   r   r<   ro   r`   ra   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 sLJ d S )Nr   z
2000-01-02r   r6   r   )r<   ro   r   r   r   r   )r@   rB   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sNJ d S rS   )r3   r   r'   r   r   r   )r@   rC   rB   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s6J t|t|ksJJ d S NOr3   r   r   r<   ndarrayr7   r   )r@   rC   rB   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,   rB   rW   rK   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 sZ0    Y  t|| d S )Nr   r{   r   )r   rO   UserWarningr`   assert_produces_warningr  Zassert_period_array_equal)r@   rC   r   warnrK   rW   r   r   r   test_to_period_2d  s    
0z#TestDatetimeArray.test_to_period_2dpropnamec                 C  sN   |  |}|}|j|jksJ t||}tjt|||jd}t|| d S r   )r3   r"   getattrr<   ro   r7   r`   ra   r@   rC   r
  r,   rB   rK   rW   r   r   r   test_bool_properties  s    

z&TestDatetimeArray.test_bool_propertiesc                 C  s>   |  |}|}t||}tjt|||jd}t|| d S r   )r3   r  r<   ro   r7   r`   ra   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 s0    Y  tjt|d( |jddgdt	d	d W d    n1 s0    Y  |jd urd nd
}||}d}tjt|d$ |jddgd|d W d    n1 s40    Y  t
j}	d|jj d}tjt|d$ |jddgd|	d W d    n1 s0    Y  tdd}	tjt|d$ |jddgd|	d W d    n1 s0    Y  |jd ur<|d}	|jddgd|	d}|jddgd|	|jjd}
t||
 d S )Nr{   r   Tru   r   rs   rt   rD   Z2014Q1z
US/Easternz:Cannot compare tz-naive and tz-aware datetime-like objectsr   r   zAustralia/Melbourne)r3   tz_localizerO   rm   rv   rw   rF   rG   rx   r	   r   r   r<   timedelta64Z
tz_convertr7   r`   r   )r@   rC   fixed_now_tsrB   r,   nowrK   ry   rO   valuerW   r   r   r   test_take_fill_valid&  s>    
66
444
z&TestDatetimeArray.test_take_fill_validc                 C  sd   |}|j d u r|d}n
|d }tjtdd |||g W d    n1 sV0    Y  d S )NrN   zto_concat must have the samerD   )rO   r  rF   rG   rH   r   )r@   rC   rB   rb   r   r   r   test_concat_same_type_invalidV  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2000rf   r   z
US/Central)r!   r"   rO   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brK   rW   r   r   r   $test_concat_same_type_different_freqb  s    	z6TestDatetimeArray.test_concat_same_type_different_freqc                 C  s6   |}| d}tjdd |D td}t|| d S )N%Y %bc                 S  s   g | ]}| d qS )r  strftime)r   tsr   r   r   r   {  r   z3TestDatetimeArray.test_strftime.<locals>.<listcomp>r6   r   r<   ro   r   r`   ra   r@   rC   rB   rK   rW   r   r   r   test_strftimew  s    
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-%dr6   )
r   r   r?   r   r<   ro   r|   r   r`   ra   r@   rB   rK   rW   r   r   r   test_strftime_nat~  s    
z#TestDatetimeArray.test_strftime_natN)#rw   r   r   r   r3   r   r>   r   r   r   rF   r   rC   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   a  s4   

+	
	

	

	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sRJ d S )Nr/   r0   )r   r?   r   r'   r   r   )r@   tdirB   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sNJ d S )Nr/   r0   r   )r   r?   r   r   r<   r   r7   r   )r@   r-  rB   r  r   r   r   r    s    
z%TestTimedeltaArray.test_astype_objectc                 C  s*   |}|j }| }| }t|| d S rS   )r?   Zto_pytimedeltar`   ra   r@   r1   r-  rB   rW   rK   r   r   r   test_to_pytimedelta  s
    z&TestTimedeltaArray.test_to_pytimedeltac                 C  s,   |}|j }| }| }t||j d S rS   )r?   total_secondsr`   ra   valuesr/  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<   ro   r7   r`   ra   )r@   r1   r
  r-  rB   rK   rW   r   r   r   r    s
    
z&TestTimedeltaArray.test_int_propertiesc                 C  s  |j }trd nd}t|}|j}||u s.J t|| tj||d}||u sTJ t|| tj|dd}|j}||u sJ t|| tj|d|d}||u sJ t|| tj|dd}||usJ t|| tj|td}tjt	|td}t|| tj|dd}||j
us$J t||r6J |j
 }t|| dtfD ]0}tj||d}t||}t|| qTd S )NFr   ztimedelta64[ns]r6   r   r   r   r   )r@   r1   rB   r   rK   rW   r7   r   r   r   r     s>    

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 s0    Y  |	d
}tjt|d	$ |jddgd|d W d    n1 s0    Y  t
dd}tjt|d	$ |jddgd|d W d    n1 s"0    Y  d S )Nr   r   r{   Tru   r   rs   rt   rD   r   r   r   )r?   r'   r   rm   rv   rw   rF   rG   rx   r  r<   
datetime64)	r@   r1   r  r-  rB   Ztd1rK   r  ry   r   r   r   r    s    2
2z'TestTimedeltaArray.test_take_fill_validN)rw   r   r   r   r3   r   r>   r'   r   r   r   r.  r  r0  r3  rF   r   r   r*  r  r   r  r   r   r   r   r+    s   
		
	+r+  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   rC     s    zTestPeriodArray.arr1dc                 C  sR   |  |}|}t|t|ks"J t|}t|ts:J t|t|ksNJ d S rS   )r3   r   r'   r   r   r
   )r@   rC   r)   rB   Zpi2r   r   r   test_from_pi  s    

zTestPeriodArray.test_from_pic                 C  sN   |  |}|}|d}t|tjs(J |jdks6J t|t|ksJJ d S r   r   )r@   rC   r)   rB   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 sR0    Y  t	dd	}tjt|d$ |jddgd|d W d    n1 s0    Y  d S )
Nrs   rt   rD   r{   r   Tru   r   r   )
r   r   rv   rw   rF   rG   rx   rm   r<   r  )r@   rC   rB   r  ry   r   r   r   r     s    2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)r7  )r3   r   to_timestampr?   r   r   r`   r   )r@   r7  rC   r)   rB   rW   rK   r   r   r   test_to_timestamp.  s    
z!TestPeriodArray.test_to_timestampc           	      C  s   t jddddj}| }| }|jdks0J t|| |d d d }| }| }|jdkshJ t|| |d}| }|jdksJ t|| d S )Nz
2021-10-18rL   r   rR   rf   Z2B)r'   r+   r?   r  r:  r"   r`   r   )	r@   r   ZparrrK   Zdta2Zparr2Zresult2Zparr3Zresult3r   r   r    test_to_timestamp_roundtrip_bday9  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@0    Y  tjt|d |j  W d    n1 sx0    Y  d S )NZ1500YrL   )r"   r!   z7Out of bounds nanosecond timestamp: 1500-01-01 00:00:00rD   )r'   r(   rF   rG   r   r:  r?   )r@   r)   ry   r   r   r   test_to_timestamp_out_of_boundsL  s    &z/TestPeriodArray.test_to_timestamp_out_of_boundsr
  c                 C  s8   |  |}|}t||}tt||}t|| d S rS   r3   r  r<   ro   r`   ra   r@   rC   r
  r)   rB   rK   rW   r   r   r   r  V  s
    

z$TestPeriodArray.test_bool_propertiesc                 C  s8   |  |}|}t||}tt||}t|| d S rS   r?  r@  r   r   r   r  a  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 s0    Y  t j|dd}t |d}t|| d S )Nr6   r   zEfloat\(\) argument must be a string or a( real)? number, not 'Period'rD   r   ZS20)r<   r   ro   r   r   r`   ra   r   rF   rG   rx   r   )r@   rC   rB   rK   rW   ry   r   r   r   r   k  s    
,z$TestPeriodArray.test_array_interfacec                 C  s6   |}| d}tjdd |D td}t|| d S )N%Yc                 S  s   g | ]}| d qS )rA  r  )r   Zperr   r   r   r     r   z1TestPeriodArray.test_strftime.<locals>.<listcomp>r6   r"  r#  r   r   r   r$    s    
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%  rg   r6   r&  )
r   r
   r   r   r<   ro   r|   r   r`   ra   r'  r   r   r   r(    s    
z!TestPeriodArray.test_strftime_natN)rw   r   r   r
   r3   r   r>   r	   r   r7   r   rF   r   rC   r6  r  r  r   r   r;  r<  r>  r)  r  r*  r  r   r$  r(  r   r   r   r   r5    s(   







	r5  zarr,casting_natsr.   r   r   r   rL   r   rR   c                 C  s
   t | jS rS   r   rw   r   r   r   r   <lambda>  r   rD  )Zidsc                 C  sL   t | jt| d | d g| jd}|D ] }|  } || d< t| | q&d S )Nr   rf   r6   r   )r   r   r   r7   r   r`   r   )rB   Zcasting_natsrW   natr   r   r   test_casting_nat_setitem_array  s
    "rF  zarr,non_casting_natsc                 C  s
   t | jS rS   rB  rC  r   r   r   rD    r   c              	   C  sH   d}|D ]:}t jt|d || d< W d    q1 s80    Y  qd S )Nzwvalue should be a '(Timestamp|Timedelta|Period)', 'NaT', or array of those. Got '(timedelta64|datetime64|int)' instead.rD   r   )rF   rG   rx   )rB   Znon_casting_natsry   rE  r   r   r   test_invalid_nat_setitem_array  s
    rG  rB   r  rh   rM   c                 C  s   t | d< |  }|  }t|d s*J | jdd}|d dksFJ | jddd}|d dksdJ | j| d  d}|d |d ksJ | j| d jdd	d}|d |d ksJ t| | d S )
Nr   r   r6   l         )r7   na_valuer   )rH  Fr   )r   r   Zto_numpyr<   isnanr`   r   )rB   originalrK   r   r   r   test_to_numpy_extra  s    rK  rZ   TFr2  z
2020-01-01z
2020-02-01r   rf   )r  r;   klassc                 C  s<   |s
| j } | || }tjddg|jd}t|| d S )Nr   r   r6   )r?   r   r<   ro   r7   r`   ra   )r2  rL  rZ   rK   rW   r   r   r   ,test_searchsorted_datetimelike_with_listlike  s
    rM  argr  r  zEurope/London)rO   c                 C  s@   d}t jt|d | | W d    n1 s20    Y  d S )Nz [Unexpected type|Cannot compare]rD   )rF   rG   rx   r   )r2  rN  ry   r   r   r   :test_searchsorted_datetimelike_with_listlike_invalid_dtype  s    rO  c                 C  sB   ddgd }| |}t |dd}t dd |D }t|| d S )NrP   Z2020Q2rf   rQ   r;   c                 S  s   g | ]}t |qS r   )r	   )r   sr   r   r   r     r   z?test_period_index_construction_from_strings.<locals>.<listcomp>)r
   r`   rn   )rL  stringsrA   rK   rW   r   r   r   +test_period_index_construction_from_strings  s
    rR  r7   r   r,  c           	      C  s  t jg d| d}t|}ttd|  }|j d}tjt|d  ||}||}W d    n1 sh0    Y  t	|| |j
|| d}|j
|| d}t	|| tjtjd|  }||j}||j}t|| ttd|  }||}||}t|| d S )Nr   r6   )r   r,  z.__init__ is deprecatedrD   )r<   ro   r   r   r   rw   r`   r  r&   r   r   r'   r  to_timedeltar   r   r   rn   )	r7   rA   rB   clsZdepr_msgrK   rW   funcZidx_clsr   r   r   test_from_pandas_array!  s&    &

rV  )@
__future__r   r   r#   numpyr<   rF   Zpandas._libsr   r   r   Zpandas._libs.tslibs.dtypesr   Zpandas.compat.numpyr   Zpandasr'   r   r	   r
   r   Zpandas._testingZ_testingr`   Zpandas.core.arraysr   r   r   r   r   r   r*   r-   r1   r2   r   r+  r   r%   r5  r   r?   r  r+   r4  r(   rF  r   rG  ro   r   rK  r  rS  r   r   r   rT   r\   rM  rO  tuplerR  rV  r   r   r   r   <module>   s   	



      (x

 
	

 
	