U
    _{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  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 d dlmZ d dlm Z  ej!dd	d
dddg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(G dd de&Z)ej*j+ded d!d"gj,ee-d"d#ffej.d$d%dd&j,ee/d"d#ffej0d$d%dd&j,effgd'd( d)d*d+ Z1ej*j+d,ed d!d"gj,e/d"d#ej2ffej.d$d%dd&j,e-d"d#ej2ffej0d$d%dd&j,e/d"d#e-d"d#ej2ffgd-d( d)d.d/ Z3ej*+d0ej.d1d2d3jej4d1d2d3jgd4d5 Z5ej*+d6d7d8gej*+d9e6d:d;ged<d=gdd>ed:d;gdd?gej*+d@e7ejejej8ej9ej:ej;gdAdB Z<ej*+d9e6d:d;ged<d=gdd>ed:d;gdd?gej*+dCd<d=gdDdEge
d:dFdGgd= gdHdI Z=ej*+d@e7e>ejej8gdJdK Z?ej*+dLdMdNgdOdP Z@ej!dQdRejAdSeBdTdUejAdVeBdVdUgddWdX ZCej*+dLdMdNgdYdZ ZDdS )[    )annotationsN)NaTOutOfBoundsDatetime	Timestamp)DatetimeIndexPeriodPeriodIndexTimedeltaIndex)DatetimeArrayPandasArrayPeriodArrayTimedeltaArray)_sequence_to_dt64ns)sequence_to_td64nsDBWMQY)paramsc                 C  s   | j S )z:Fixture returning parametrized frequency in string format.)param)request r   d/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/pandas/tests/arrays/test_datetimelike.pyfreqstr#   s    r   c                 C  s   t jtdd| d}|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.
    
2000-01-01d   startperiodsfreq)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_index7   s    
r(   c                   C  s   t dddg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_indexE   s    	r+   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d%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zej	d1d2d3gd4d5 Zd6d7 Zej	d8d9d:d;gd<d= Zd>d? Zd@dA ZdBdC Z dDdE Z!dFdG Z"ej	d8e
j#e
j$e%j&e'e(gdHdI Z)dJdK Z*ej	dddgdLdM Z+dNdO Z,ej	d8e'e%j&e
j#e
j$gdPdQ Z-dRdS Z.dTdU Z/dVdW Z0dXdY Z1d9S )ZSharedTestsz2type[DatetimeIndex | PeriodIndex | TimedeltaIndex]	index_clsc                 C  s,   t jdddd d d }| j|dd}|S )	z5Fixture returning DatetimeArray with daily frequency.
   i8dtype      ʚ;r   r!   )nparange	array_clsselfdataarrr   r   r   arr1dT   s    zSharedTests.arr1dc              	   C  sd   |}|  |}tjtdd ||d d k W 5 Q R X tjtdd ||dg k W 5 Q R X d S )NzLengths must matchmatch   r   )r-   pytestraises
ValueError)r:   r=   r<   idxr   r   r   test_compare_len1_raises[   s    
z$SharedTests.test_compare_len1_raisesresultZ2020   r    UTC)r    tzz0 days2020Q1r   r    r!   c                 C  s.   t |}t||kstt||kr*td S N)r"   CategoricalallAssertionErrorany)r:   rF   expectedr   r   r   test_compare_with_Categoricalh   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)orderedr0   )	r"   rN   CategoricalIndexr6   onesshapebooltmassert_numpy_array_equal)r:   r=   rU   rT   rV   otherleftrightrX   ZzerosrF   r   r   r   test_compare_categorical_dtypev   s*    


z*SharedTests.test_compare_categorical_dtypec                 C  s   t jdddd d d }t j| | jtk	r4d nd}| j||d}| j|}d	d
dg}||}||}t	
| || t d	d
dg}||}||}t	
| || d S )Nr   r/   r0   r2   r3   r4   r   r5   r@      ^   )r6   r7   randomshuffler8   r   r-   _simple_newtaker[   assert_index_equalarray)r:   r;   r!   r<   rD   ZtakersrF   rR   r   r   r   	test_take   s    




zSharedTests.test_take
fill_value   g       @i  r@      c              	   C  sj   t jdddd d d }| j|dd}d	|jj d
}tjt|d |jddgd|d W 5 Q R X d S )Nr.   r/   r0   r2   r3   r4   r   r5   value should be a '' or 'NaT'. Gotr>   r   r@   TZ
allow_fillrj   )	r6   r7   r8   _scalar_type__name__rA   rB   	TypeErrorrf   )r:   rj   r;   r<   msgr   r   r   test_take_fill_raises   s
    z!SharedTests.test_take_fill_raisesc                 C  s   t jdddd d d }| j|dd}|jd	d
gdd d}|d tksLt|jd	d
gdt jd}|d tksrt|jd	d
gdtd}|d tkstd S )Nr.   r/   r0   r2   r3   r4   r   r5   r@   Tro   r   )r6   r7   r8   rf   r   rP   nanr:   r;   r<   rF   r   r   r   test_take_fill   s    zSharedTests.test_take_fillc              	   C  sv   |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 5 Q R X d S )	Nru   r@   Tro   rm   rn   r>   foo)	rf   strr[   assert_equalrp   rq   rA   rB   rr   )r:   r=   rF   rR   rs   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d }t	
|  || d S )Nr   ru   r@   )r-   insertr   r8   _concat_same_typeastypeobjectr6   Zconcatenater[   rg   )r:   r=   r<   rD   rF   arr2rR   r   r   r   test_concat_same_type   s    

 
(z!SharedTests.test_concat_same_typec              	   C  s   t jdddd d d }| j|dd}||d	 }|jjj}t||sNt|t	}t||sftd
| j
j d}tjt|d |d W 5 Q R X d S )Nr.   r/   r0   r2   r3   r4   r   r5   r   z'value' should be a .r>   ry   )r6   r7   r8   Z_unbox_scalar_ndarrayr1   type
isinstancerP   r   scalar_typerq   rA   rB   rC   )r:   r;   r<   rF   rR   rs   r   r   r   test_unbox_scalar   s    

zSharedTests.test_unbox_scalarc                 C  sV   t jdddd d d }| j|dd}||d	  ||d d
  |t d S )Nr.   r/   r0   r2   r3   r4   r   r5   r   r@   )r6   r7   r8   Z_check_compatible_withr   r9   r   r   r   test_check_compatible_with   s
    z&SharedTests.test_check_compatible_withc                 C  sN   t jdddd d d }| j|dd}|t|d	 }||d	 ksJtd S )
Nr.   r/   r0   r2   r3   r4   r   r5   r   )r6   r7   r8   Z_scalar_from_stringrz   rP   rw   r   r   r   test_scalar_from_string   s    z#SharedTests.test_scalar_from_stringc              	   C  sT   t jdddd d d }| j|dd}d	}tjt|d
 |d W 5 Q R X d S )Nr.   r/   r0   r2   r3   r4   r   r5   z)does not support reduction 'not a method'r>   znot a method)r6   r7   r8   rA   rB   rr   Z_reduce)r:   r;   r<   rs   r   r   r   test_reduce_invalid   s
    zSharedTests.test_reduce_invalidmethodpadZbackfillc                 C  sx   t jdddd d d }| j|dd}t|d	< |d
kr@|d n|d }|j|d}|d	 |ksdt|d	 tksttd S )Nr.   r/   r0   r2   r3   r4   r   r5   ra   r   rG      )r   )r6   r7   r8   r   ZfillnarP   )r:   r   r;   r<   rj   rF   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|dd}||d	 }|d	ksBt|j|d
 dd}|dks`t||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std S )Nr.   r/   r0   r2   r3   r4   r   r5   r@   rk   r_   ZsiderG   )
r6   r7   r8   searchsortedrP   rh   intpr[   r\   r   )r:   r;   r<   rF   rR   r   r   r   test_searchsorted  s    
zSharedTests.test_searchsortedboxNindexZseriesc              
   C  sR  |}|d krn|dkr"|  |}n
t|}|t|d }|dksJt|jt|d dd}|dkslt|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 5 Q R X |dkrdnd}td|N tjttd
|jj d| dd |t|d dg W 5 Q R X W 5 Q R X d S )Nr   r@   rk   r_   r   rG   c                 S  s   g | ]}t |qS r   rz   .0xr   r   r   
<listcomp>:  s     zBSharedTests.test_searchsorted_castable_strings.<locals>.<listcomp>r0   rm   z/', 'NaT', or array of those. Got 'str' instead.r>   ry   pythonZStringArrayZArrowStringArraystring_storagez"', 'NaT', or array of those. Got 'z
' instead.Zbaz)r-   r"   Seriesr   rz   rP   r6   rh   r   r[   r\   rA   rB   rr   reescaperp   rq   Zoption_context)r:   r=   r   r   r<   rF   rR   Zarr_typer   r   r   "test_searchsorted_castable_strings'  s:    
z.SharedTests.test_searchsorted_castable_stringsc                 C  s\   t jdd tddD dd}| j|dd}|d	  t|}|d	  t|}|d	  d S )
Nc                 S  s   g | ]}t j| qS r   )r   _value)r   nr   r   r   r   V  s     zGSharedTests.test_getitem_near_implementation_bounds.<locals>.<listcomp>r@   r   r/   r0   nsr5   r   )r6   asarrayranger8   r"   Indexr   )r:   Zi8valsr<   r   Zserr   r   r   'test_getitem_near_implementation_boundsS  s    

z3SharedTests.test_getitem_near_implementation_boundsc                 C  s   t ||jd d tjf |jd}|d d tjf }t|| |}t ||jd ddf |jd}|d ddf }t|| |d }|d }||kstd S )Nr0   rG   r   )ru   r   ru   )r   r   r6   newaxisr1   r[   r{   rP   )r:   r=   rR   rF   arr2dr   r   r   test_getitem_2d`  s    " zSharedTests.test_getitem_2dc                 C  s~   |j d dtjf }t|j||jd}t|}t|dks@t|D ]4}t	|t|sZt|j
dksht|j|jksDtqDd S )NrG   r0   r@   )r   r6   r   r   re   r1   listlenrP   r   ndim)r:   r=   data2dr   rF   r   r   r   r   test_iter_2dq  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std S )
NrG   r0   <z>
[
['r   z'],
['r@   rk   z']
]
Shape: (3, 1), dtype: )r   r6   r   r   re   r1   reprr   r   rq   Z
_repr_baserP   )r:   r=   r   r   rF   rR   r   r   r   test_repr_2d{  s    
@4
zSharedTests.test_repr_2dc                 C  s   t jdddd d d }| j|dd}|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 )Nr.   r/   r0   r2   r3   r4   r   r5   r@   r   rk   )r6   r7   r8   r[   r\   asi8r:   r;   r<   rR   r   r   r   test_setitem  s    zSharedTests.test_setitemc                 C  s   |  d d d }|jjdkr(|d }|}|tkr>t|}nF|tjkrZt|t}n*|t	krv|tj
|td}n||t}||d d < t|| d S )Nru   )mr   r0   )copyr1   kind
_with_freqr   r6   rh   r   r   r   r   r[   r{   )r:   r   r=   rR   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     s     z1SharedTests.test_setitem_strs.<locals>.<listcomp>rk   ru   )r   r[   r{   rz   )r:   r=   rR   rF   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 )Nru   )	r   r   r   r   r"   rN   rW   r[   r{   )r:   r=   rU   rR   catr   r   r   test_setitem_categorical  s    



z$SharedTests.test_setitem_categoricalc              	   C  s   t jdddd d d }| j|dd}|d	 }tjtd
d ||d< W 5 Q R X tjtdd t |d	< W 5 Q R X d}tjt|d |d g|g < W 5 Q R X d}tjt|d |d d |dd< W 5 Q R X d S )Nr.   r/   r0   r2   r3   r4   r   r5   r   zindex 12 is out of boundsr>   rl   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 thanrG   )	r6   r7   r8   rA   rB   
IndexErrorrr   r   rC   )r:   r;   r<   valrs   r   r   r   test_setitem_raises  s    zSharedTests.test_setitem_raisesc              	   C  sp   d|j j d}tjt|d |ddg|d d< W 5 Q R X tjt|d |ddg|d d< W 5 Q R X d S )	Nrm   z ', 'NaT', or array of those. Gotr>   r   r@   rk   g        g      ?)rp   rq   rA   rB   rr   )r:   r=   r   rs   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|dd}|tjd	d
 }|tjd	d
7 }t|| |tjd	d
 }|tjd	d
8 }t|| d S )Nr.   r/   r0   r2   r3   r4   r   r5   r@   days)r6   r7   r8   r"   	Timedeltar[   r{   r   r   r   r   test_inplace_arithmetic  s    z#SharedTests.test_inplace_arithmeticc              	   C  sT   t jdddd d d }| j|dd}tjtd	d
 |jddd W 5 Q R X d S )Nr.   r/   r0   r2   r3   r4   r   r5   zvalue should be ar>   r@   )rj   )r6   r7   r8   rA   rB   rr   shiftr9   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|ksLt||ksXtt|t |d < t|ts|t |d d t |d d   }|jddtkst| }t|t|kst||kst|d d  tkst|d d jddtkst|dd}|jd d}t|t|ks:t||ksHt|jd ddtks`t|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 )
Nrk   r   ru   r@   F)skipna)axis)r   r   r0   )r   Zmedianr   rP   r   r   r   Zmeanreshape_from_sequencer1   r[   r{   )r:   r=   r<   rR   rF   r   Z	expected2r   r   r   test_median  s>    
(zSharedTests.test_medianc                 C  sT   t jdddgt jd}| j|| jd}tj|dd}| j|| jd}t|| d S )Nr@   rk   rG   r0   ZInt64)r6   rh   int64r8   example_dtyper"   r[   assert_extension_array_equal)r:   r<   rR   r;   rF   r   r   r   test_from_integer_arrayM  s
    z#SharedTests.test_from_integer_array)2rq   
__module____qualname____annotations__rA   fixturer=   rE   markparametrizer"   r&   timedelta_ranger#   rS   r`   ri   r   timert   rx   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r6   rh   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,   Q   sp   

	
!
	


+




0r,   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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!   rJ   )r"   r&   _data)r:   Ztz_naive_fixturer   rJ   r'   dtar   r   r   r=   ]  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2Tr5   r@   )minutes)	r-   roundr"   r   r   r[   rg   r   assert_datetime_array_equal)r:   r=   r'   rF   rR   r   r   r   r   
test_roundh  s    

zTestDatetimeArray.test_roundc                 C  s  t |}t|}|j}||ks$tt|| tj|dd}||ksJtt|| tj|dd}|j}||ksvtt|| tj|ddd}||kstt|| tj|dd}||k	stt|| tj|td}tjt	|td}t|| tj|dd}||j
k	stt||r,t|j
 }t|| dtfD ]0}tj||d}t||}t|| qJd S )NFr   datetime64[ns]r0   r1   r   r   float64)r
   r6   r   r   rP   r[   r\   rh   r   r   r   may_share_memoryr   rz   r   )r:   r(   r<   rF   rR   r1   r   r   r   test_array_interfacev  s<    

z&TestDatetimeArray.test_array_interfacec                 C  sT   |}|  |}tt|}tj|td}t|| tj|td}t|| d S Nr0   )r-   r6   rh   r   r   r[   r\   r:   r=   r<   r'   rR   rF   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ksnt|jd k	s|ttj|ddd}|j|jkst|jd k	std S )Nr   r0   r   Fr   )	r-   r   viewr6   rh   r[   r\   baserP   r   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k	sjt|jd ksxtd S )Nr/   r0   Fr   )	r-   r   r6   rh   r[   r\   r   r   rP   r   r   r   r   test_array_i8_dtype  s    
z%TestDatetimeArray.test_array_i8_dtypec                 C  sL   t jddgdd}t|}|j|ks(tt|d d }|jj|ksHtd S )Nr   z
2000-01-02r   r0   r   )r6   rh   r
   r   rP   r   )r:   r<   r   r   r   r   test_from_array_keeps_base  s
    z,TestDatetimeArray.test_from_array_keeps_basec                 C  sR   |}|  |}t|t|ks"tt|}t|ts:tt|t|ksNtd S rM   )r-   r   rP   r"   r   r   r   )r:   r=   r<   r'   Zdti2r   r   r   test_from_dti  s    

zTestDatetimeArray.test_from_dtic                 C  sN   |}|  |}|d}t|tjs(t|jdks6tt|t|ksJtd S NOr-   r   r   r6   ndarrayrP   r1   r   )r:   r=   r<   r'   asobjr   r   r   test_astype_object  s    

z$TestDatetimeArray.test_astype_objectc                 C  sN   |}t |}|j|d}|j|d}t|ts2ttt|t| d S )Nr5   )	r
   	to_periodr   r   rP   r[   rg   r"   r   )r:   r(   r   r'   r<   rR   rF   r   r   r   test_to_period  s    z TestDatetimeArray.test_to_periodc              	   C  s`   | dd}|jd krd nt}t|" |d}|d dd}W 5 Q R X t|| d S )Nr@   ru   r   )r   rJ   UserWarningr[   Zassert_produces_warningr   Zassert_period_array_equal)r:   r=   r   warnrF   rR   r   r   r   test_to_period_2d  s    
z#TestDatetimeArray.test_to_period_2dpropnamec                 C  sN   |  |}|}|j|jkstt||}tjt|||jd}t|| d S r   )	r-   r!   rP   getattrr6   rh   r1   r[   r\   r:   r=   r   r'   r<   rF   rR   r   r   r   test_bool_properties  s    

z&TestDatetimeArray.test_bool_propertiesc                 C  s>   |  |}|}t||}tjt|||jd}t|| d S r   )r-   r   r6   rh   r1   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>td|jj d}tjt	|d |jddgd|| d W 5 Q R X tjt	|d |jddgdt
d	d W 5 Q R X |jd k	rd nd
}||}d}tjt	|d |jddgd|d W 5 Q R X tj}	d|jj d}tjt	|d |jddgd|	d W 5 Q R X tdd}	tjt	|d |jddgd|	d W 5 Q R X |jd k	r|d}	|jddgd|	d}|jddgd|	|jjd}
t||
 d S )Nru   r@   Tro   r   rm   rn   r>   Z2014Q1z
US/Easternz:Cannot compare tz-naive and tz-aware datetime-like objectsr   r   zAustralia/Melbourne)r-   tz_localizerJ   rf   rP   rp   rq   rA   rB   rr   r   r   r   r6   timedelta64Z
tz_convertr1   r[   r{   )r:   r=   fixed_now_tsr<   r'   nowrF   rs   rJ   valuerR   r   r   r   test_take_fill_valid  s>    
""

z&TestDatetimeArray.test_take_fill_validc              	   C  sP   |}|j d kr|d}n
|d }tjtdd |||g W 5 Q R X d S )NrI   zto_concat must have the samer>   )rJ   r  rA   rB   rC   r~   )r:   r=   r<   r]   r   r   r   test_concat_same_type_invalidI  s    

z/TestDatetimeArray.test_concat_same_type_invalidc                 C  sf   t tjddddd}t tjddddd}t ||g}t tdddd	gd}t|| d S )
N2000rk   r   z
US/Centralr   Hz2000-01-01 00:00:00z2000-01-02 00:00:00z2000-01-01 01:00:00)r
   r"   r&   r~   to_datetimer  r[   r   )r:   abrF   rR   r   r   r   $test_concat_same_type_different_freqU  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   k  s     z3TestDatetimeArray.test_strftime.<locals>.<listcomp>r0   r  r6   rh   r   r[   r\   r:   r=   r<   rF   rR   r   r   r   test_strftimeg  s    
zTestDatetimeArray.test_strftimec                 C  s>   t tdtg}|d}tjdtjgtd}t	|| d S )N
2019-01-01%Y-%m-%dr0   )
r
   r   r   r  r6   rh   rv   r   r[   r\   r:   r<   rF   rR   r   r   r   test_strftime_natn  s    
z#TestDatetimeArray.test_strftime_natN)"rq   r   r   r   r-   r
   r8   r   r   r   rA   r   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   W  s2   

*	
		

	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  sX   t ddg}t|}t|t|ks(tt|}t|t s@tt|t|ksTtd S )Nr)   r*   )r	   r   r   rP   r"   r   r   )r:   tdir<   Ztdi2r   r   r   test_from_tdi}  s    
z TestTimedeltaArray.test_from_tdic                 C  sT   t ddg}t|}|d}t|tjs.t|jdks<tt|t|ksPtd S )Nr)   r*   r   )	r	   r   r   r   r6   r   rP   r1   r   )r:   r  r<   r   r   r   r   r     s    
z%TestTimedeltaArray.test_astype_objectc                 C  s,   |}t |}| }| }t|| d S rM   )r   Zto_pytimedeltar[   r\   r:   r+   r  r<   rR   rF   r   r   r   test_to_pytimedelta  s
    z&TestTimedeltaArray.test_to_pytimedeltac                 C  s.   |}t |}| }| }t||j d S rM   )r   total_secondsr[   r\   valuesr!  r   r   r   test_total_seconds  s
    z%TestTimedeltaArray.test_total_secondsr   c                 C  s<   |}t |}t||}tjt|||jd}t|| d S r   )r   r   r6   rh   r1   r[   r\   )r:   r+   r   r  r<   rF   rR   r   r   r   r    s
    
z&TestTimedeltaArray.test_int_propertiesc                 C  s  t |}t|}|j}||ks$tt|| tj|dd}||ksJtt|| tj|dd}|j}||ksvtt|| tj|ddd}||kstt|| tj|dd}||k	stt|| tj|td}tjt	|td}t|| tj|dd}||j
k	stt||r,t|j
 }t|| dtfD ]0}tj||d}t||}t|| qJd S )NFr   ztimedelta64[ns]r0   r   r   r   )r   r6   r   r   rP   r[   r\   rh   r   r   r   r   r   rz   r   )r:   r+   r<   rF   rR   r1   r   r   r   r     s<    

z'TestTimedeltaArray.test_array_interfacec           	   	   C  s   |}t |}tjdd}|jddgd|d}|d |ks<t|}d|jj d}tjt	|d	 |jddgd|d W 5 Q R X |
d
}tjt	|d	 |jddgd|d W 5 Q R X tdd}tjt	|d	 |jddgd|d W 5 Q R X d S )Nr@   r   ru   Tro   r   rm   rn   r>   r   r   r   )r   r"   r   rf   rP   rp   rq   rA   rB   rr   r   r6   
datetime64)	r:   r+   r  r  r<   Ztd1rF   r  rs   r   r   r   r    s    
z'TestTimedeltaArray.test_take_fill_validN)rq   r   r   r	   r-   r   r8   r"   r   r   r   r   r   r"  r%  rA   r   r   r  r  r   r  r   r   r   r   r  w  s   
		
	*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   r5   c                 C  s   |j S )zW
        Fixture returning DatetimeArray from parametrized PeriodIndex objects
        )r   )r:   r%   r   r   r   r=     s    zTestPeriodArray.arr1dc                 C  sR   |  |}|}t|t|ks"tt|}t|ts:tt|t|ksNtd S rM   )r-   r   rP   r"   r   r   r   )r:   r=   r$   r<   Zpi2r   r   r   test_from_pi  s    

zTestPeriodArray.test_from_pic                 C  sN   |  |}|}|d}t|tjs(t|jdks6tt|t|ksJtd S r   r   )r:   r=   r$   r<   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 5 Q R X t	dd	}tjt|d |jddgd|d W 5 Q R X d S )
Nrm   rn   r>   ru   r@   Tro   r   r   )
r   r   rp   rq   rA   rB   rr   rf   r6   r  )r:   r=   r<   r  rs   r   r   r   r    s    z$TestPeriodArray.test_take_fill_validhowSEc                 C  sT   |  |}|}t|j|d}|j|d}t|ts8ttt|t| d S )N)r)  )	r-   r
   to_timestampr   rP   r[   rg   r"   r   )r:   r)  r=   r$   r<   rR   rF   r   r   r   test_to_timestamp  s    
z!TestPeriodArray.test_to_timestampc           	      C  s   t jddddj}| }| }|jdks0tt|| |d d d }| }| }|jdkshtt|| |d}| }|jdkstt|| d S )Nz
2021-10-18rG   r   rL   rk   Z2B)	r"   r&   r   r   r,  r!   rP   r[   r   )	r:   r   ZparrrF   Zdta2Zparr2Zresult2Zparr3Zresult3r   r   r    test_to_timestamp_roundtrip_bday(  s    
z0TestPeriodArray.test_to_timestamp_roundtrip_bdayc              	   C  s^   t jdddd}d}tjt|d |  W 5 Q R X tjt|d |j  W 5 Q R X d S )NZ1500r   rG   )r!   r    z7Out of bounds nanosecond timestamp: 1500-01-01 00:00:00r>   )r"   r#   rA   rB   r   r,  r   )r:   r$   rs   r   r   r   test_to_timestamp_out_of_bounds;  s    z/TestPeriodArray.test_to_timestamp_out_of_boundsr   c                 C  s8   |  |}|}t||}tt||}t|| d S rM   r-   r   r6   rh   r[   r\   r:   r=   r   r$   r<   rF   rR   r   r   r   r  E  s
    

z$TestPeriodArray.test_bool_propertiesc                 C  s8   |  |}|}t||}tt||}t|| d S rM   r0  r1  r   r   r   r  P  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 5 Q R X t j|dd}t |d}t|| d S )Nr0   r   zEfloat\(\) argument must be a string or a( real)? number, not 'Period'r>   r   ZS20)r6   r   rh   r   r   r[   r\   r   rA   rB   rr   r   )r:   r=   r<   rF   rR   rs   r   r   r   r   Z  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 )r2  r  )r   Zperr   r   r   r   v  s     z1TestPeriodArray.test_strftime.<locals>.<listcomp>r0   r  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  z	period[D]r0   r  )
r   r   r   r  r6   rh   rv   r   r[   r\   r  r   r   r   r  y  s    
z!TestPeriodArray.test_strftime_natN)rq   r   r   r   r-   r   r8   r   r   r1   r   rA   r   r=   r(  r   r  r   r   r-  r.  r/  r  r  r  r  r   r  r  r   r   r   r   r'    s(   






	r'  zarr,casting_natsr)   r*   r   r   r   rG   rL   c                 C  s
   t | jS rM   r   rq   r   r   r   r   <lambda>      r5  )Zidsc                 C  sF   t | t| d | d g}|D ] }|  } || d< t| | q d S )Nr@   rk   r   )r   r   r   r   r[   r{   )r<   Zcasting_natsrR   natr   r   r   test_casting_nat_setitem_array  s
    r8  zarr,non_casting_natsc                 C  s
   t | jS rM   r3  r4  r   r   r   r5    r6  c              
   C  s4   d}|D ]&}t jt|d || d< W 5 Q R X qd S )Nzwvalue should be a '(Timestamp|Timedelta|Period)', 'NaT', or array of those. Got '(timedelta64|datetime64|int)' instead.r>   r   )rA   rB   rr   )r<   Znon_casting_natsrs   r7  r   r   r   test_invalid_nat_setitem_array  s
    r9  r<   r
  ra   rH   c                 C  s   t | d< |  }|  }t|d s*t| jdd}|d dksFt| jddd}|d dksdt| j| d  d}|d |d kst| j| d jdd	d}|d |d kstt| | d S )
Nr   r   r0   l         )r1   na_valuer@   )r:  Fr   )r   r   Zto_numpyr6   isnanrP   r[   r{   )r<   originalrF   r   r   r   test_to_numpy_extra  s    r=  rU   TFr$  z
2020-01-01z
2020-02-01r@   rk   )unitr5   klassc                 C  s<   |s
| j } | || }tjddg|jd}t|| d S )Nr   r@   r0   )r   r   r6   rh   r1   r[   r\   )r$  r?  rU   rF   rR   r   r   r   ,test_searchsorted_datetimelike_with_listlike  s
    r@  argr  r  zEurope/London)rJ   c              	   C  s,   d}t jt|d | | W 5 Q R X d S )Nz [Unexpected type|Cannot compare]r>   )rA   rB   rr   r   )r$  rA  rs   r   r   r   :test_searchsorted_datetimelike_with_listlike_invalid_dtype  s    rB  c                 C  sB   ddgd }| |}t |dd}t dd |D }t|| d S )NrK   Z2020Q2rk   r   r5   c                 S  s   g | ]}t |qS r   )r   )r   sr   r   r   r     s     z?test_period_index_construction_from_strings.<locals>.<listcomp>)r   r[   rg   )r?  stringsr;   rF   rR   r   r   r   +test_period_index_construction_from_strings  s
    rE  r1   r   r  c                 C  s   t jdddg| d}t|}ttd|  }||}||}t|| ||}||}t|| tt	d|  }||d }||d }t
|| tjtjd|  }||j}||j}t
|| ttd|  }||}||}t|| d S )Nr@   rk   rG   r0   r   r  r   )r6   rh   r   r
   r   r[   r   r   r   r   r{   r"   r  to_timedeltar   r	   rg   )r1   r;   r<   clsrF   rR   funcidx_clsr   r   r   test_from_pandas_array  s*    



rK  
memoryviewrh   daskz
dask.array)Zmarksxarrayc                 C  s   t jdddgt jd}| j}|dkr.t|}nN|dkrDtd|}n8|dkrbd	d
l}|j|}n|dkr|d	d
l}||}||fS )z
    Fixture giving a numpy array and a parametrized 'data' object, which can
    be a memoryview, array, dask or xarray object created from the numpy array.
    r@   rk   rG   r0   rL  rh   irM  r   NrN  )r6   rh   r   r   rL  Z
dask.arrayrN  Z	DataArray)r   r<   namer;   rM  Zxrr   r   r   array_likes1  s    

rQ  c           	      C  s   |\}}t td|  }||}||}t|| ttd|  }||d }||d }t|| t|t	st
jt
jd|  }||j}||j}t|| ttd|  }||}||}t|| d S )NrF  r   )r
   r   r   r[   r   r   r   r{   r   rL  r"   r  rG  rh   r   r	   rg   )	r1   rQ  r<   r;   rH  rR   rF   rI  rJ  r   r   r   test_from_obscure_arrayR  s$    



rR  )E
__future__r   rh   r   numpyr6   rA   Zpandas._libsr   r   r   Zpandas.util._test_decoratorsutilZ_test_decoratorstdZpandasr"   r   r   r   r	   Zpandas._testingZ_testingr[   Zpandas.core.arraysr
   r   r   r   Zpandas.core.arrays.datetimesr   Zpandas.core.arrays.timedeltasr   r   r   r%   r(   r+   r,   r   r  r'  r   r   r   r  r&   r&  r#   r8  r   r9  r   r=  r  r   r   r   rN   rW   r@  rB  tuplerE  rK  r   Z
skip_if_norQ  rR  r   r   r   r   <module>   s   



    
  "w 
	

 
	
 
