U
    f/eͻ                     @  s  d dl m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  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0d#d$ffej1d%d&d	d'j-effgd(d) d*d+d, Z2ej+j,d-ed!d"d#gj-e0d#d$ej3ffej/d%d&d	d'j-e.d#d$ej3ffej1d%d&d	d'j-e0d#d$e.d#d$ej3ffgd.d) d*d/d0 Z4ej+,d1ej/d2d3d4j5ej6d2d3d4j5gd5d6 Z7ej+,d7d8d9gej+,d:e8d;d<ged=d>gd	d?ed;d<gd	d@gej+,dAe9ej5ej5ej:ej;ej<ej=gdBdC Z>ej+,d:e8d;d<ged=d>gd	d?ed;d<gd	d@gej+,dDd=d>gdEdFge	d;dGdHgd> gdIdJ Z?ej+,dAe9e@ej5ej:gdKdL ZAej+,dMdNdOgdPdQ ZBej"dRdSejCdTeDdUdVejCdWeDdWdVgddXdY ZEej+,dMdNdOgdZd[ ZFdS )\    )annotationsN)NaTOutOfBoundsDatetime	Timestamp)np_version_under1p18)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 N)param)request r   I/tmp/pip-unpacked-wheel-tiezk1ph/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_index6   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_indexD   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 jg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/d0gd1d2 Zd3d4 Zej	d5d6d7d8gd9d: Zd;d< Zd=d> Z d?d@ Z!dAdB Z"dCdD Z#ej	d5e
j$e
j%e&j'e(e)gdEdF Z*dGdH Z+ej	dddgdIdJ Z,dKdL Z-ej	d5e(e&j'e
j$e
j%gdMdN Z.dOdP Z/dQdR Z0dSdT Z1dUdV Z2d6S )WSharedTestsz2type[DatetimeIndex | PeriodIndex | TimedeltaIndex]	index_clsc                 C  s,   t jdddd d d }| j|dd}|S )	N
   i8dtype      ʚ;r   r#   )nparange	array_clsselfdataarrr   r   r   arr1dS   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_raisesY   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 r   )r$   CategoricalallAssertionErrorany)r<   rH   expectedr   r   r   test_compare_with_Categoricalf   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)orderedr2   )	r$   rO   CategoricalIndexr8   onesshapebooltmassert_numpy_array_equal)r<   r?   rV   rU   rW   otherleftrightrY   zerosrH   r   r   r   test_compare_categorical_dtypet   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   r1   r2   r4   r5   r6   r   r7   rB      ^   )r8   r9   randomshuffler:   r   r/   _simple_newtaker\   assert_index_equalarray)r<   r=   r#   r>   rF   ZtakersrH   rS   r   r   r   	test_take   s    




zSharedTests.test_take
fill_value   g       @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 )Nr0   r1   r2   r4   r5   r6   r   r7   value should be a '' or 'NaT'. Gotr@   r   rB   TZ
allow_fillrl   )	r8   r9   r:   _scalar_type__name__rC   rD   	TypeErrorrh   )r<   rl   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 )Nr0   r1   r2   r4   r5   r6   r   r7   rB   Trp   r   )r8   r9   r:   rh   r   rQ   nanr<   r=   r>   rH   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 )	Nrv   rB   Trp   rn   ro   r@   foo)	rh   strr\   assert_equalrq   rr   rC   rD   rs   )r<   r?   rH   rS   rt   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   rv   rB   )r/   insertr   r:   _concat_same_typeastypeobjectr8   Zconcatenater\   ri   )r<   r?   r>   rF   rH   arr2rS   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 )Nr0   r1   r2   r4   r5   r6   r   r7   r   z'value' should be a .r@   rz   )r8   r9   r:   Z_unbox_scalar_datar3   type
isinstancerQ   r   scalar_typerr   rC   rD   rE   )r<   r=   r>   rH   rS   rt   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 )Nr0   r1   r2   r4   r5   r6   r   r7   r   rB   )r8   r9   r:   Z_check_compatible_withr   r;   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 )
Nr0   r1   r2   r4   r5   r6   r   r7   r   )r8   r9   r:   Z_scalar_from_stringr{   rQ   rx   r   r   r   test_scalar_from_string   s    z#SharedTests.test_scalar_from_stringc              	   C  sb   t jdddd d d }| j|dd}d	t|j d
}tjt|d |d W 5 Q R X d S )Nr0   r1   r2   r4   r5   r6   r   r7   'z-' does not implement reduction 'not a method'r@   znot a method)	r8   r9   r:   r   rr   rC   rD   rs   Z_reduce)r<   r=   r>   rt   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 )Nr0   r1   r2   r4   r5   r6   r   r7   rc   r   rI      )r   )r8   r9   r:   r   ZfillnarQ   )r<   r   r=   r>   rl   rH   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	}t
r|dkstn|dkstd S )Nr0   r1   r2   r4   r5   r6   r   r7   rB   rm   r`   ZsiderI   r   )r8   r9   r:   searchsortedrQ   rj   intpr\   r]   r   r   )r<   r=   r>   rH   rS   r   r   r   test_searchsorted  s     
zSharedTests.test_searchsortedboxNindexZseriesc              
   C  s  t |tr\|j}|dd \}}|d k	r\|j||j|kr\tjjtdd}|j	| |}	|d krjn|dkr~| 
|	}	n
t|	}	|	t|	d }
|
dkst|	jt|	d dd}
|
dkst|	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rHd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 )NrB   rI   !timezone comparisons inconsistentrD   reasonr   rm   r`   r   c                 S  s   g | ]}t |qS r   r{   .0xr   r   r   
<listcomp>I  s     zBSharedTests.test_searchsorted_castable_strings.<locals>.<listcomp>r2   rn   z/', 'NaT', or array of those. Got 'str' instead.r@   rz   pythonZStringArrayZArrowStringArraystring_storagez"', 'NaT', or array of those. Got 'z
' instead.Zbaz)r   r   rL   tznamerC   markxfailrs   node
add_markerr/   r$   Seriesr   r{   rQ   r8   rj   r   r\   r]   rD   reescaperq   rr   Zoption_context)r<   r?   r   r   r   rL   ts1ts2r   r>   rH   rS   Zarr_typer   r   r   "test_searchsorted_castable_strings*  sL    
  
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   e  s     zGSharedTests.test_getitem_near_implementation_bounds.<locals>.<listcomp>rB   r   r1   r2   nsr7   r   )r8   asarrayranger:   r$   Indexr   )r<   Zi8valsr>   r   Zserr   r   r   'test_getitem_near_implementation_boundsb  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 )Nr2   rI   r   )rv   r   rv   )r   r   r8   newaxisr3   r\   r|   rQ   )r<   r?   rS   rH   arr2dr   r   r   test_getitem_2do  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 )NrI   r2   rB   )r   r8   r   r   rg   r3   listlenrQ   r   ndim)r<   r?   data2dr   rH   r   r   r   r   test_iter_2d  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 )
NrI   r2   <z>
[
['r   z'],
['rB   rm   z']
]
Shape: (3, 1), dtype: )r   r8   r   r   rg   r3   reprr   r   rr   Z
_repr_baserQ   )r<   r?   r   r   rH   rS   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 )Nr0   r1   r2   r4   r5   r6   r   r7   rB   r   rm   )r8   r9   r:   r\   r]   asi8r<   r=   r>   rS   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 )Nrv   )mr   r2   )copyr3   kind
_with_freqr   r8   rj   r   r   r   r   r\   r|   )r<   r   r?   rS   valsr   r   r   test_setitem_object_dtype  s    


z%SharedTests.test_setitem_object_dtypec           	      C  s   t |tr\|j}|dd  \}}|d k	r\|j||j|kr\tjjtdd}|j	| |
 }|dd  |ddg< |
 }dd |dd  D |d d< t|| |
 }|d	 |d< |
 }t|d	 |d< t|| d S )
Nr   r   r   r   rB   c                 S  s   g | ]}t |qS r   r   r   r   r   r   r     s     z1SharedTests.test_setitem_strs.<locals>.<listcomp>rm   rv   )r   r   rL   r   rC   r   r   rs   r   r   r   r\   r|   r{   )	r<   r?   r   rL   r   r   r   rS   rH   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 )Nrv   )	r   r   r   r   r$   rO   rX   r\   r|   )r<   r?   rV   rS   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 )Nr0   r1   r2   r4   r5   r6   r   r7   r   zindex 12 is out of boundsr@      zvalue should be a.* 'object'z<cannot set using a list-like indexer with a different lengthrB   z=cannot set using a slice indexer with a different length thanrI   )	r8   r9   r:   rC   rD   
IndexErrorrs   r   rE   )r<   r=   r>   valrt   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 )	Nrn   z ', 'NaT', or array of those. Gotr@   r   rB   rm   g        g      ?)rq   rr   rC   rD   rs   )r<   r?   r   rt   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 )Nr0   r1   r2   r4   r5   r6   r   r7   rB   days)r8   r9   r:   r$   	Timedeltar\   r|   r   r   r   r   test_inplace_arithmetic#  s    z#SharedTests.test_inplace_arithmeticc              	   C  s   t jdddd d d }| j|dd}d	}tjt|d
 |jddd}W 5 Q R X | }| jtkrztj	j
d|jd}n
|	d}||d< |d d |dd < t|| d S )Nr0   r1   r2   r4   r5   r6   r   r7   zPassing <class 'int'> to shiftr@   rB   )rl   r   rv   )r8   r9   r:   r\   assert_produces_warningFutureWarningshiftr   r   rq   Z_from_ordinalr#   r|   )r<   r=   r>   rt   rH   rS   Zfill_valr   r   r   test_shift_fill_int_deprecated0  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 )
Nrm   r   rv   rB   F)skipna)axis)r   r   r2   )r   Zmedianr   rQ   r   r   r   Zmeanreshape_from_sequencer3   r\   r|   )r<   r?   r>   rS   rH   r   Z	expected2r   r   r   test_medianB  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 )NrB   rm   rI   r2   ZInt64)r8   rj   int64r:   example_dtyper$   r\   assert_extension_array_equal)r<   r>   rS   r=   rH   r   r   r   test_from_integer_arrayr  s
    z#SharedTests.test_from_integer_array)3rr   
__module____qualname____annotations__rC   fixturer?   rG   r   parametrizer$   r(   timedelta_ranger%   rT   rb   rk   r   nowtimeru   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   P   sp   

	
!
	


7




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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 )Nz2016-01-01 01:01:00r   r"   r#   rL   )r$   r(   r   )r<   Ztz_naive_fixturer   rL   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2Tr7   rB   )minutes)	r/   roundr$   r   r   r\   ri   r   assert_datetime_array_equal)r<   r?   r)   rH   rS   r   r   r   r   
test_round  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]r2   r3   r   r   float64)r   r8   r   r   rQ   r\   r]   rj   r   r   r   may_share_memoryr   r{   r   )r<   r*   r>   rH   rS   r3   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 Nr2   )r/   r8   rj   r   r   r\   r]   r<   r?   r>   r)   rS   rH   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   r2   r   Fr   )	r/   r   viewr8   rj   r\   r]   baserQ   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 )Nr1   r2   Fr   )	r/   r   r8   rj   r\   r]   r   r   rQ   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   r2   r   )r8   rj   r   r   rQ   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 r   )r/   r   rQ   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   r8   ndarrayrQ   r3   r   )r<   r?   r>   r)   asobjr   r   r   test_astype_object  s    

z$TestDatetimeArray.test_astype_objectc              	   C  s   |}t |}d}tjt|d |j|d}W 5 Q R X tjt|dd |j|d}W 5 Q R X t|tslttt	
|t	
| d S )Nz0to_perioddelta is deprecated and will be removedr@   r7   F)rA   Zcheck_stacklevel)r   r\   r   r   Zto_perioddeltar   r   rQ   ri   r$   r   )r<   r*   r   r)   r>   rt   rS   rH   r   r   r   test_to_perioddelta  s      z%TestDatetimeArray.test_to_perioddeltac                 C  sN   |}t |}|j|d}|j|d}t|ts2ttt|t| d S )Nr7   )	r   	to_periodr   r   rQ   r\   ri   r$   r   )r<   r*   r   r)   r>   rS   rH   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 )NrB   rv   r   )r   rL   UserWarningr\   r   r  Zassert_period_array_equal)r<   r?   r   warnrH   rS   r   r   r   test_to_period_2d0  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#   rQ   getattrr8   rj   r3   r\   r]   r<   r?   r  r)   r>   rH   rS   r   r   r   test_bool_properties9  s    

z&TestDatetimeArray.test_bool_propertiesc                 C  sJ   |dkrd S |  |}|}t||}tjt|||jd}t|| d S )N)weekZ
weekofyearr2   )r/   r  r8   rj   r3   r\   r]   r  r   r   r   test_int_propertiesE  s    

z%TestDatetimeArray.test_int_propertiesc           	   	   C  s  |}|  |}t |j}|jddgd|d}|d |ksBt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
}t |}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	rt d}d}t	j
t|d |jddgd|d W 5 Q R X d S )Nrv   rB   Trp   r   rn   ro   r@   Z2014Q1z
US/Easternz:Cannot compare tz-naive and tz-aware datetime-like objectsr   r   zAustralia/Melbournez2Timezones don't match. .* != 'Australia/Melbourne')r/   r   r   tz_localizerL   rh   rQ   rq   rr   rC   rD   rs   r   r   r   r8   timedelta64rE   )	r<   r?   r>   r)   r   rH   rt   rL   r   r   r   r   test_take_fill_validR  s6    
""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 )NrK   zto_concat must have the samer@   )rL   r  rC   rD   rE   r   )r<   r?   r>   r^   r   r   r   test_concat_same_type_invalid~  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2000rm   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brH   rS   r   r   r   $test_concat_same_type_different_freq  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     s     z3TestDatetimeArray.test_strftime.<locals>.<listcomp>r2   r  r8   rj   r   r\   r]   r<   r?   r>   rH   rS   r   r   r   test_strftime  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-%dr2   )
r   r   r   r  r8   rj   rw   r   r\   r]   r<   r>   rH   rS   r   r   r   test_strftime_nat  s    
z#TestDatetimeArray.test_strftime_natN)#rr   r   r   r   r/   r   r:   r   r   r   rC   r   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   |  s4   
*	
		

,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   rQ   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   r8   r  rQ   r3   r   )r<   r,  r>   r  r   r   r   r    s    
z%TestTimedeltaArray.test_astype_objectc                 C  s,   |}t |}| }| }t|| d S r   )r   Zto_pytimedeltar\   r]   r<   r-   r,  r>   rS   rH   r   r   r   test_to_pytimedelta  s
    z&TestTimedeltaArray.test_to_pytimedeltac                 C  s.   |}t |}| }| }t||j d S r   )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  r8   rj   r3   r\   r]   )r<   r-   r  r,  r>   rH   rS   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]r2   r   r   r   )r   r8   r   r   rQ   r\   r]   rj   r   r   r   r   r   r{   r   )r<   r-   r>   rH   rS   r3   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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 )NrB   r   rv   Trp   r   rn   ro   r@   r   r   r   )r   r$   r   rh   rQ   r   r   rq   rr   rC   rD   rs   r  r8   
datetime64)	r<   r-   r,  r>   Ztd1rH   r   r   rt   r   r   r   r  
  s     
z'TestTimedeltaArray.test_take_fill_validN)rr   r   r   r
   r/   r   r:   r$   r   r   r   r-  r  r/  r2  rC   r   r   r)  r  r   r  r   r   r   r   r*    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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   r7   c                 C  s   |j S r   )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 r   )r/   r   rQ   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  8  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 )
Nrn   ro   r@   rv   rB   Trp   r   r   )
r   r   rq   rr   rC   rD   rs   rh   r8   r  )r<   r?   r>   r   rt   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)r6  )	r/   r   to_timestampr   rQ   r\   ri   r$   r   )r<   r6  r?   r&   r>   rS   rH   r   r   r   test_to_timestampN  s    
z!TestPeriodArray.test_to_timestampc              	   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   rI   )r#   r"   z7Out of bounds nanosecond timestamp: 1500-01-01 00:00:00r@   )r$   r%   rC   rD   r   r9  r   )r<   r&   rt   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 r   r/   r  r8   rj   r\   r]   r<   r?   r  r&   r>   rH   rS   r   r   r   r  e  s
    

z$TestPeriodArray.test_bool_propertiesc                 C  s8   |  |}|}t||}tt||}t|| d S r   r<  r=  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 )Nr2   r   zEfloat\(\) argument must be a string or a( real)? number, not 'Period'r@   r   ZS20)r8   r   rj   r   r   r\   r]   r   rC   rD   rs   r   )r<   r?   r>   rH   rS   rt   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 )r>  r  )r   Zperr   r   r   r     s     z1TestPeriodArray.test_strftime.<locals>.<listcomp>r2   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]r2   r%  )
r   r	   r   r  r8   rj   rw   r   r\   r]   r&  r   r   r   r'    s    
z!TestPeriodArray.test_strftime_natN)rr   r   r   r	   r/   r   r:   r   r   r3   r   rC   r   r?   r5  r  r  r   r   r:  r;  r(  r  r)  r  r   r#  r'  r   r   r   r   r4  $  s&   






	r4  zarr,casting_natsr+   r,   r   r   r   rI   rN   c                 C  s
   t | jS r   r   rr   r   r   r   r   <lambda>      rA  )idsc                 C  sF   t | t| d | d g}|D ] }|  } || d< t| | q d S )NrB   rm   r   )r   r   r   r   r\   r|   )r>   Zcasting_natsrS   natr   r   r   test_casting_nat_setitem_array  s
    rE  zarr,non_casting_natsc                 C  s
   t | jS r   r?  r@  r   r   r   rA    rB  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   )rC   rD   rs   )r>   Znon_casting_natsrt   rD  r   r   r   test_invalid_nat_setitem_array  s
    rF  r>   r  rc   rJ   c                 C  s   t rtj}ntj}t| d< |  }|  }||d s:t| jdd}|d dksVt| jddd}|d dkstt| j| d  d}|d |d kst| j| d jdd	d}|d |d kstt	
| | d S )
Nr   r   r2   l         )r3   na_valuerB   )rG  Fr   )r   r$   Zisnar8   isnanr   r   Zto_numpyrQ   r\   r|   )r>   rH  originalrH   r   r   r   test_to_numpy_extra  s     rJ  rV   TFr1  z
2020-01-01z
2020-02-01rB   rm   )unitr7   klassc                 C  s<   |s
| j } | || }tjddg|jd}t|| d S )Nr   rB   r2   )r   r   r8   rj   r3   r\   r]   )r1  rL  rV   rH   rS   r   r   r   ,test_searchsorted_datetimelike_with_listlike  s
    rM  argr  r  zEurope/London)rL   c              	   C  s,   d}t jt|d | | W 5 Q R X d S )Nz [Unexpected type|Cannot compare]r@   )rC   rD   rs   r   )r1  rN  rt   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 )NrM   Z2020Q2rm   r   r7   c                 S  s   g | ]}t |qS r   )r   )r   sr   r   r   r   2  s     z?test_period_index_construction_from_strings.<locals>.<listcomp>)r	   r\   ri   )rL  stringsr=   rH   rS   r   r   r   +test_period_index_construction_from_strings,  s
    rR  r3   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 )NrB   rm   rI   r2   r   r+  r   )r8   rj   r   r   r   r\   r   r   r   r   r|   r$   r  Zto_timedeltar   r
   ri   )r3   r=   r>   clsrH   rS   funcidx_clsr   r   r   test_from_pandas_array6  s*    



rW  
memoryviewrj   daskz
dask.array)Zmarksxarrayc                 C  s   t jdddgt jd}| j}|dkr.t|}nV|dkrLdd l}|d|}n8|d	krjdd l}|j|}n|d
krdd l}||}||fS )NrB   rm   rI   r2   rX  rj   r   irY  rZ  )r8   rj   r   r   rX  Z
dask.arrayrZ  Z	DataArray)r   r>   namer=   rj   rY  Zxrr   r   r   array_likesW  s    


r]  c           	      C  s   |\}}t td|  }||}||}t|| ttd|  }||d }||d }t|| tt	d|  }||}||}t
|| d S )NrS  r   )r   r   r   r\   r   r   r   r|   r   r
   ri   )	r3   r]  r>   r=   rT  rS   rH   rU  rV  r   r   r   test_from_obscure_arrayw  s    
	r^  )G
__future__r   r   Znumpyr8   rC   Zpandas._libsr   r   r   Zpandas.compatr   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*  r4  r   r   r   r  r(   r3  r%   rE  r   rF  rj   r   rJ  r  r   r   r   rO   rX   rM  rO  tuplerR  rW  r   Z
skip_if_nor]  r^  r   r   r   r   <module>   s   



    0  2x~
	

 
	
 
