o
    gͻ                     @  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"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)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0ddffej1dd d!d"j-effgd#d$ d%d&d' Z2ej+j,d(eg d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*d+ Z4ej+,d,ej/d-d.d/j5ej6d-d.d/j5gd0d1 Z7ej+,d2d3d4gej+,d5e8d6d7ged8d9gd!d:ed6d7gd!d;gej+,d<e9ej5ej5ej:ej;ej<ej=gd=d> Z>ej+,d5e8d6d7ged8d9gd!d:ed6d7gd!d;gej+,d?d8d9gd@dAge	d6dBdCgd9 gdDdE Z?ej+,d<e9e@ej5ej:gdFdG ZAej+,dHdIdJgdKdL ZBej"dMdNejCdOeDdPdQejCdReDdRdQgd
dSdT ZEej+,dHdIdJgdUdV ZFdS )W    )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   c/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/arrays/test_datetimelike.pyfreqstr#      r   c                 C     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(      
r)   c                 C  r   )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   r*   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_indexD   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 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	d5g d6d7d8 Zd9d: Zd;d< Z d=d> Z!d?d@ Z"dAdB Z#ej	d5e
j$e
j%e&j'e(e)gdCdD Z*dEdF Z+ej	dddgdGdH Z,dIdJ Z-ej	d5e(e&j'e
j$e
j%gdKdL Z.dMdN Z/dOdP Z0dQdR Z1dSdT Z2dUS )V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  s   |}|  |}tjtdd ||d d k W d    n1 s!w   Y  tjtdd ||dg k W d    d S 1 s@w   Y  d S )NzLengths must matchmatch   r   )r3   pytestraises
ValueError)r@   rC   rB   idxr   r   r   test_compare_len1_raisesY   s   
"z$SharedTests.test_compare_len1_raisesresult2020   r$   UTC)r$   tzz0 days2020Q1r   r$   r%   c                 C  s.   t |}t||ksJ t||krJ d S r   )r&   Categoricalallany)r@   rL   expectedr   r   r   test_compare_with_Categoricalf   s   

z)SharedTests.test_compare_with_CategoricalreverseTFas_indexc                 C  s   t j||d}|rt |}||}}|r||}}tj|jtd}| }	||k}
t|
| ||k}
t|
|	 |sg|si||k }
t|
|	 ||k}
t|
| ||k}
t|
|	 ||k}
t|
| d S d S d S )N)orderedr6   )	r&   rT   CategoricalIndexr<   onesshapebooltmassert_numpy_array_equal)r@   rC   rZ   rY   r[   otherleftrightr]   zerosrL   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urd nd}| j||d}| j|}g d	}||}||}t	
| || t g d	}||}||}t	
| || d S )
Nr!   r5   r6   r8   r9   r:   r   r;   )rF      ^   )r<   r=   randomshuffler>   r   r3   _simple_newtaker`   assert_index_equalarray)r@   rA   r%   rB   rJ   takersrL   rW   r   r   r   	test_take   s   



zSharedTests.test_take
fill_value   g       @c                 C  s   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 d    d S 1 s9w   Y  d S )Nr4   r5   r6   r8   r9   r:   r   r;   value should be a '' or 'NaT'. GotrD   r   rF   T
allow_fillrq   )	r<   r=   r>   _scalar_type__name__rG   rH   	TypeErrorrl   )r@   rq   rA   rB   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u s&J |jd	d
gdt jd}|d tu s9J |jd	d
gdtd}|d tu sKJ d S )Nr4   r5   r6   r8   r9   r:   r   r;   rF   Tru   r   )r<   r=   r>   rl   r   nanr@   rA   rB   rL   r   r   r   test_take_fill   s   zSharedTests.test_take_fillc                 C  s   |j ddgdt|d d}|ddg }t|| d|jj d}tjt|d |j ddgddd W d    d S 1 s?w   Y  d S )	Nr|   rF   Tru   rs   rt   rD   foo)	rl   strr`   assert_equalrw   rx   rG   rH   ry   )r@   rC   rL   rW   rz   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   r|   rF   )r3   insertr   r>   _concat_same_typeastypeobjectr<   concatenater`   rm   )r@   rC   rB   rJ   rL   arr2rW   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||s'J |t}t||s3J d
| j	j
 d}tjt|d |d W d    d S 1 sSw   Y  d S )Nr4   r5   r6   r8   r9   r:   r   r;   r   z'value' should be a .rD   r   )r<   r=   r>   _unbox_scalar_datar7   type
isinstancer   scalar_typerx   rG   rH   rI   )r@   rA   rB   rL   rW   rz   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 )Nr4   r5   r6   r8   r9   r:   r   r;   r   rF   )r<   r=   r>   _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s%J d S )
Nr4   r5   r6   r8   r9   r:   r   r;   r   )r<   r=   r>   _scalar_from_stringr   r~   r   r   r   test_scalar_from_string   s   z#SharedTests.test_scalar_from_stringc                 C  sx   t jdddd d d }| j|dd}d	t|j d
}tjt|d |d W d    d S 1 s5w   Y  d S )Nr4   r5   r6   r8   r9   r:   r   r;   'z-' does not implement reduction 'not a method'rD   znot a method)	r<   r=   r>   r   rx   rG   rH   ry   _reduce)r@   rA   rB   rz   r   r   r   test_reduce_invalid   s   "zSharedTests.test_reduce_invalidmethodpad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s2J |d	 tu s:J d S )Nr4   r5   r6   r8   r9   r:   r   r;   rg   r   rN      )r   )r<   r=   r>   r   fillna)r@   r   rA   rB   rq   rL   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s!J |j|d
 dd}|dks0J ||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	rs|dksqJ d S |dksyJ d S )Nr4   r5   r6   r8   r9   r:   r   r;   rF   rr   rd   siderN   r   )
r<   r=   r>   searchsortedrn   intpr`   ra   r   r   )r@   rA   rB   rL   rW   r   r   r   test_searchsorted  s    
zSharedTests.test_searchsortedbox)Nindexseriesc              
   C  s  t |tr.|j}|dd \}}|d ur.|j||j|kr.tjjtdd}|j	| |}	|d u r5n|dkr?| 
|	}	nt|	}	|	t|	d }
|
dksSJ |	jt|	d dd}
|
dksdJ |	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 sw   Y  |dkrdnd}td|? tjttd|jj d| dd |	t|	d dg W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )NrF   rN   !timezone comparisons inconsistentrH   reasonr   rr   rd   r   c                 S     g | ]}t |qS r   r   .0xr   r   r   
<listcomp>I      zBSharedTests.test_searchsorted_castable_strings.<locals>.<listcomp>r6   rs   z/', 'NaT', or array of those. Got 'str' instead.rD   r   pythonStringArrayArrowStringArraystring_storagez"', 'NaT', or array of those. Got 'z
' instead.baz)r   r   rQ   tznamerG   markxfailry   node
add_markerr3   r&   Seriesr   r   r<   rn   r   r`   ra   rH   reescaperw   rx   option_context)r@   rC   r   r   r   rQ   ts1ts2r   rB   rL   rW   arr_typer   r   r   "test_searchsorted_castable_strings*  sX   
 
	"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      zGSharedTests.test_getitem_near_implementation_bounds.<locals>.<listcomp>rF   r   r5   r6   nsr;   r   )r<   asarrayranger>   r&   Indexr   )r@   i8valsrB   r   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sNJ d S )Nr6   rN   r   )r|   r   r|   )r   r   r<   newaxisr7   r`   r   )r@   rC   rW   rL   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 J |D ]}t|t|s-J |j	dks4J |j|jks<J q"d S )NrN   r6   rF   )
r   r<   r   r   rk   r7   listlenr   ndim)r@   rC   data2dr   rL   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 
}ndt|j	 d|d  d|d  d|d  d	|j 
}||ks`J d S )
NrN   r6   <z>
[
['r   z'],
['rF   rr   z']
]
Shape: (3, 1), dtype: )r   r<   r   r   rk   r7   reprr   r   rx   
_repr_base)r@   rC   r   r   rL   rW   r   r   r   test_repr_2d  s2   




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 )Nr4   r5   r6   r8   r9   r:   r   r;   rF   r   rr   )r<   r=   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|}n#|tju r-t|t}n|t	u r;|tj
|td}n||t}||d d < t|| d S )Nr|   )mr   r6   )copyr7   kind
_with_freqr   r<   rn   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   t |tr.|j}|dd  \}}|d u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   rF   c                 S  r   r   r   r   r   r   r   r     r   z1SharedTests.test_setitem_strs.<locals>.<listcomp>rr   r|   )r   r   rQ   r   rG   r   r   ry   r   r   r   r`   r   r   )	r@   rC   r   rQ   r   r   r   rW   rL   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*  t jdddd d d }| j|dd}|d	 }tjtd
d ||d< W d    n1 s.w   Y  tjtdd t |d	< W d    n1 sJw   Y  d}tjt|d |d g|g < W d    n1 sjw   Y  d}tjt|d |d d |dd< W d    d S 1 sw   Y  d S )Nr4   r5   r6   r8   r9   r:   r   r;   r   zindex 12 is out of boundsrD      zvalue should be a.* 'object'z<cannot set using a list-like indexer with a different lengthrF   z=cannot set using a slice indexer with a different length thanrN   )	r<   r=   r>   rG   rH   
IndexErrorry   r   rI   )r@   rA   rB   valrz   r   r   r   test_setitem_raises   s"   
"zSharedTests.test_setitem_raisesc                 C  s   d|j j d}tjt|d |ddg|d d< W d    n1 s$w   Y  tjt|d |ddg|d d< W d    d S 1 sFw   Y  d S )	Nrs   z ', 'NaT', or array of those. GotrD   r   rF   rr   g        g      ?)rw   rx   rG   rH   ry   )r@   rC   r   rz   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 )Nr4   r5   r6   r8   r9   r:   r   r;   rF   days)r<   r=   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 d    n1 s/w   Y  | }| jtu rGtj	j
d|jd}n|	d}||d< |d d |dd < t|| d S )Nr4   r5   r6   r8   r9   r:   r   r;   zPassing <class 'int'> to shiftrD   rF   )rq   r   r|   )r<   r=   r>   r`   assert_produces_warningFutureWarningshiftr   r   rw   _from_ordinalr%   r   )r@   rA   rB   rz   rL   rW   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|u s&J ||ks,J t|t |d < t|tsM|t |d d t |d d   }|jddtu sWJ | }t|t|u seJ ||kskJ |d d  tu swJ |d d jddtu sJ |dd}|jd d}t|t|u sJ ||ksJ |jd ddtu sJ |jdd}t|j|g|j	d	}t
|| |jddd}t|jtg|j	d	}t
|| |jdd}t
|| |jddd}t
|| d S )
Nrr   r   r|   rF   F)skipna)axis)r   r   r6   )r   medianr   r   r   r   meanreshape_from_sequencer7   r`   r   )r@   rC   rB   rW   rL   r   	expected2r   r   r   test_medianB  s>   
(zSharedTests.test_medianc                 C  sR   t jg dt jd}| j|| jd}tj|dd}| j|| jd}t|| d S )NrF   rr   rN   r6   Int64)r<   rn   int64r>   example_dtyper&   r`   assert_extension_array_equal)r@   rB   rW   rA   rL   r   r   r   test_from_integer_arrayr  s
   z#SharedTests.test_from_integer_arrayN)3rx   
__module____qualname____annotations__rG   fixturerC   rK   r   parametrizer&   r+   timedelta_ranger'   rX   rf   rp   r   nowtimer{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r<   rn   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r2   P   sr   
 

	!
	


7




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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%   rQ   )r&   r+   r   )r@   tz_naive_fixturer   rQ   r,   dtar   r   r   rC     s   zTestDatetimeArray.arr1dc                 C  sj   |  |}|jdd}|tjdd }|d }t|| |j}|jdd}|jd }t|| d S )N2Tr;   rF   )minutes)	r3   roundr&   r   r   r`   rm   r   assert_datetime_array_equal)r@   rC   r,   rL   rW   r  r   r   r   
test_round  s   

zTestDatetimeArray.test_roundc                 C  z  t |}t|}|j}||u sJ t|| tj|dd}||u s%J t|| tj|dd}|j}||u s;J t|| tj|ddd}||u sOJ t|| tj|dd}||usbJ t|| tj|td}tjt|td}t|| tj|dd}||j	usJ t
||rJ |j	 }t|| dtfD ]}tj||d}t||}t|| qd S )NFr   datetime64[ns]r6   r7   r   r   float64)r   r<   r   r   r`   ra   rn   r   r   r   may_share_memoryr   r   r   )r@   r-   rB   rL   rW   r7   r   r   r   test_array_interface  >   

z&TestDatetimeArray.test_array_interfacec                 C  sT   |}|  |}tt|}tj|td}t|| tj|td}t|| d S Nr6   )r3   r<   rn   r   r   r`   ra   r@   rC   rB   r,   rW   rL   r   r   r   test_array_object_dtype  s   
z)TestDatetimeArray.test_array_object_dtypec                 C  s   |}|  |}|jd}tj|dd}t|| tj|dd}t|| tj|ddd}|j|ju s7J |jd us>J tj|ddd}|j|ju sNJ |jd usUJ d S )Nr  r6   r  Fr  )r3   r   viewr<   rn   r`   ra   baser  r   r   r   test_array_tz  s   
zTestDatetimeArray.test_array_tzc                 C  s|   |}|  |}|j}tj|dd}t|| tj|tjd}t|| tj|ddd}|j|jus5J |jd u s<J d S )Nr5   r6   Fr  )r3   r   r<   rn   r`   ra   r   r!  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|u sJ t|d d }|jj|u s$J d S )Nr    z
2000-01-02r  r6   r   )r<   rn   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s'J d S r   )r3   r   r&   r   r   r   )r@   rC   rB   r,   dti2r   r   r   test_from_dti  s   

zTestDatetimeArray.test_from_dtic                 C  sN   |}|  |}|d}t|tjsJ |jdksJ t|t|ks%J d S NOr3   r   r   r<   ndarrayr7   r   )r@   rC   rB   r,   asobjr   r   r   test_astype_object  s   

z$TestDatetimeArray.test_astype_objectc                 C  s   |}t |}d}tjt|d |j|d}W d    n1 s w   Y  tjt|dd |j|d}W d    n1 s>w   Y  t|tsJJ tt	|t	| d S )Nz0to_perioddelta is deprecated and will be removedrD   r;   F)rE   check_stacklevel)
r   r`   r   r   to_perioddeltar   r   rm   r&   r   )r@   r-   r   r,   rB   rz   rW   rL   r   r   r   test_to_perioddelta  s   z%TestDatetimeArray.test_to_perioddeltac                 C  sN   |}t |}|j|d}|j|d}t|tsJ tt|t| d S )Nr;   )r   	to_periodr   r   r`   rm   r&   r   )r@   r-   r   r,   rB   rW   rL   r   r   r   test_to_period$  s   z TestDatetimeArray.test_to_periodc                 C  st   | dd}|jd u rd nt}t| |d}|d dd}W d    n1 s-w   Y  t|| d S )NrF   r|   r   )r   rQ   UserWarningr`   r   r0  assert_period_array_equal)r@   rC   r   warnrL   rW   r   r   r   test_to_period_2d0  s   
z#TestDatetimeArray.test_to_period_2dpropnamec                 C  sN   |  |}|}|j|jksJ t||}tjt|||jd}t|| d S r  )r3   r%   getattrr<   rn   r7   r`   ra   r@   rC   r6  r,   rB   rL   rW   r   r   r   test_bool_properties9  s   

z&TestDatetimeArray.test_bool_propertiesc                 C  sJ   |dv rd S |  |}|}t||}tjt|||jd}t|| d S )N)week
weekofyearr6   )r3   r7  r<   rn   r7   r`   ra   r8  r   r   r   test_int_propertiesE  s   

z%TestDatetimeArray.test_int_propertiesc           	      C  sV  |}|  |}t |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 sGw   Y  tj	t
|d |jddgdtd	d W d    n1 sjw   Y  |jd urvd nd
}t |}d}tj	t
|d |jddgd|d W d    n1 sw   Y  tj}d|jj d}tj	t
|d |jddgd|d W d    n1 sw   Y  tdd}tj	t
|d |jddgd|d W d    n1 sw   Y  |jd ur)t d}d}tj	t|d |jddgd|d W d    d S 1 s"w   Y  d S d S )Nr|   rF   Tru   r   rs   rt   rD   2014Q1z
US/Easternz:Cannot compare tz-naive and tz-aware datetime-like objectsr   r   zAustralia/Melbournez2Timezones don't match. .* != 'Australia/Melbourne')r3   r   r	  tz_localizerQ   rl   rw   rx   rG   rH   ry   r   r   r   r<   timedelta64rI   )	r@   rC   rB   r,   r	  rL   rz   rQ   r   r   r   r   test_take_fill_validR  sD   
$z&TestDatetimeArray.test_take_fill_validc                 C  sf   |}|j d u r|d}n|d }tjtdd |||g W d    d S 1 s,w   Y  d S )NrP   zto_concat must have the samerD   )rQ   r>  rG   rH   rI   r   )r@   rC   rB   rb   r   r   r   test_concat_same_type_invalid~  s   

"z/TestDatetimeArray.test_concat_same_type_invalidc                 C  sb   t tjddddd}t tjddddd}t ||g}t tg dd}t|| d S )N2000rr   r   z
US/Centralr  H)2000-01-01 00:00:00z2000-01-02 00:00:00rD  z2000-01-01 01:00:00)r   r&   r+   r   to_datetimer>  r`   r  )r@   abrL   rW   r   r   r   $test_concat_same_type_different_freq  s   z6TestDatetimeArray.test_concat_same_type_different_freqc                 C  6   |}| d}tjdd |D td}t|| d S )N%Y %bc                 S     g | ]}| d qS )rJ  strftime)r   tsr   r   r   r     r   z3TestDatetimeArray.test_strftime.<locals>.<listcomp>r6   rM  r<   rn   r   r`   ra   r@   rC   rB   rL   rW   r   r   r   test_strftime     
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-%dr6   )
r   r   r   rM  r<   rn   r}   r   r`   ra   r@   rB   rL   rW   r   r   r   test_strftime_nat  s   
z#TestDatetimeArray.test_strftime_natN)#rx   r  r  r   r3   r   r>   r   r   r   rG   r  rC   r  r  r  r"  r#  r$  r&  r,  r/  r1  r5  r   r  	_bool_opsr9  
_field_opsr<  r@  rA  rH  rQ  rV  r   r   r   r   r  |  s6    
*	
		

,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J t|}t|t s J t|t|ks*J d S )Nr/   r0   )r
   r   r   r&   r   r   )r@   tdirB   tdi2r   r   r   test_from_tdi  s   
z TestTimedeltaArray.test_from_tdic                 C  sT   t ddg}t|}|d}t|tjsJ |jdksJ t|t|ks(J 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,   |}t |}| }| }t|| d S r   )r   to_pytimedeltar`   ra   r@   r1   r[  rB   rW   rL   r   r   r   test_to_pytimedelta  s
   z&TestTimedeltaArray.test_to_pytimedeltac                 C  s.   |}t |}| }| }t||j d S r   )r   total_secondsr`   ra   valuesr_  r   r   r   test_total_seconds  s
   z%TestTimedeltaArray.test_total_secondsr6  c                 C  s<   |}t |}t||}tjt|||jd}t|| d S r  )r   r7  r<   rn   r7   r`   ra   )r@   r1   r6  r[  rB   rL   rW   r   r   r   r<    s
   
z&TestTimedeltaArray.test_int_propertiesc                 C  r  )NFr  ztimedelta64[ns]r6   r  r   r  )r   r<   r   r   r`   ra   rn   r   r   r   r  r   r   r   )r@   r1   rB   rL   rW   r7   r   r   r   r    r  z'TestTimedeltaArray.test_array_interfacec           	      C  s:  |}t |}tjdd}|jddgd|d}|d |ksJ t }|}d|jj d}tj	t
|d	 |jddgd|d W d    n1 sHw   Y  |d
}tj	t
|d	 |jddgd|d W d    n1 snw   Y  tdd}tj	t
|d	 |jddgd|d W d    d S 1 sw   Y  d S )NrF   r   r|   Tru   r   rs   rt   rD   r   r   r   )r   r&   r   rl   r   r	  rw   rx   rG   rH   ry   r0  r<   
datetime64)	r@   r1   r[  rB   td1rL   r	  r   rz   r   r   r   r@  
  s&   
"z'TestTimedeltaArray.test_take_fill_validN)rx   r  r  r
   r3   r   r>   r&   r   r   r   r]  r,  r`  rc  rG   r   r  rX  r<  r  r@  r   r   r   r   rY    s    
		
	*rY  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   r;   c                 C  s   |j S r   )r   )r@   r)   r   r   r   rC   *  r   zTestPeriodArray.arr1dc                 C  sR   |  |}|}t|t|ksJ t|}t|tsJ t|t|ks'J d S r   )r3   r   r&   r   r   r	   )r@   rC   r(   rB   pi2r   r   r   test_from_pi.  s   

zTestPeriodArray.test_from_pic                 C  sN   |  |}|}|d}t|tjsJ |jdksJ t|t|ks%J d S r'  r)  )r@   rC   r(   rB   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 d    n1 s)w   Y  t	dd	}tjt|d |jddgd|d W d    d S 1 sQw   Y  d S )
Nrs   rt   rD   r|   rF   Tru   r   r   )
r   r   rw   rx   rG   rH   ry   rl   r<   r?  )r@   rC   rB   r   rz   r   r   r   r@  @  s   "z$TestPeriodArray.test_take_fill_validhowSEc                 C  sT   |  |}|}t|j|d}|j|d}t|tsJ tt|t| d S )N)ri  )r3   r   to_timestampr   r`   rm   r&   r   )r@   ri  rC   r(   rB   rW   rL   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 d    n1 s w   Y  tjt|d |j  W d    d S 1 s=w   Y  d S )N1500r   rN   )r%   r$   z7Out of bounds nanosecond timestamp: 1500-01-01 00:00:00rD   )r&   r'   rG   rH   r   rl  r   )r@   r(   rz   r   r   r   test_to_timestamp_out_of_bounds[  s   
"z/TestPeriodArray.test_to_timestamp_out_of_boundsr6  c                 C  8   |  |}|}t||}tt||}t|| d S r   r3   r7  r<   rn   r`   ra   r@   rC   r6  r(   rB   rL   rW   r   r   r   r9  e  s
   

z$TestPeriodArray.test_bool_propertiesc                 C  rp  r   rq  rr  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 d    n1 sLw   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  S20)r<   r   rn   r   r   r`   ra   r   rG   rH   ry   r   )r@   rC   rB   rL   rW   rz   r   r   r   r  z  s   
z$TestPeriodArray.test_array_interfacec                 C  rI  )N%Yc                 S  rK  )rt  rL  )r   perr   r   r   r     r   z1TestPeriodArray.test_strftime.<locals>.<listcomp>r6   rO  rP  r   r   r   rQ    rR  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 )NrS  z	period[D]r6   rT  )
r   r	   r   rM  r<   rn   r}   r   r`   ra   rU  r   r   r   rV    s   
z!TestPeriodArray.test_strftime_natN)rx   r  r  r	   r3   r   r>   r   r   r7   r   rG   r  rC   rh  r,  r@  r   r  rm  ro  rW  r9  rX  r<  r  rQ  rV  r   r   r   r   rf  $  s(    






	rf  zarr,casting_natsr.   r   r   r    rN   r   rS   c                 C  
   t | jS r   r   rx   r   r   r   r   <lambda>     
 ry  )idsc                 C  sF   t | t| d | d g}|D ]}|  } || d< t| | qd S )NrF   rr   r   )r   r   r   r   r`   r   )rB   casting_natsrW   natr   r   r   test_casting_nat_setitem_array  s   r~  zarr,non_casting_natsc                 C  rv  r   rw  rx  r   r   r   ry    rz  c              	   C  sH   d}|D ]}t jt|d || d< W d    n1 sw   Y  qd S )Nzwvalue should be a '(Timestamp|Timedelta|Period)', 'NaT', or array of those. Got '(timedelta64|datetime64|int)' instead.rD   r   )rG   rH   ry   )rB   non_casting_natsrz   r}  r   r   r   test_invalid_nat_setitem_array  s   
r  rB   rB  rg   rO   c                 C  s   t rtj}ntj}t| d< |  }|  }||d sJ | jdd}|d dks+J | jddd}|d dks:J | j| d  d}|d |d ksNJ | j| d jdd	d}|d |d ksdJ t	| | d S )
Nr   r   r6   l         )r7   na_valuerF   )r  Fr  )
r   r&   isnar<   isnanr   r   to_numpyr`   r   )rB   r  originalrL   r   r   r   test_to_numpy_extra  s    r  rZ   TFrb  z
2020-01-01z
2020-02-01rF   rr   )unitr;   klassc                 C  s<   |s| j } | || }tjddg|jd}t|| d S )Nr   rF   r6   )r   r   r<   rn   r7   r`   ra   )rb  r  rZ   rL   rW   r   r   r   ,test_searchsorted_datetimelike_with_listlike  s
   r  argrF  rG  zEurope/London)rQ   c                 C  sB   d}t jt|d | | W d    d S 1 sw   Y  d S )Nz [Unexpected type|Cannot compare]rD   )rG   rH   ry   r   )rb  r  rz   r   r   r   :test_searchsorted_datetimelike_with_listlike_invalid_dtype  s   "r  c                 C  sB   ddgd }| |}t |dd}t dd |D }t|| d S )NrR   2020Q2rr   r   r;   c                 S  r   r   )r   )r   sr   r   r   r   2  r   z?test_period_index_construction_from_strings.<locals>.<listcomp>)r	   r`   rm   )r  stringsrA   rL   rW   r   r   r   +test_period_index_construction_from_strings,  s
   r  r7   r  rZ  c                 C  s   t jg d| 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   r6   r  rZ  r   )r<   rn   r   r   r   r`   r  r   r   r   r   r&   rE  to_timedeltar   r
   rm   )r7   rA   rB   clsrL   rW   funcidx_clsr   r   r   test_from_pandas_array6  s*   



r  
memoryviewrn   daskz
dask.array)marksxarrayc                 C  s   t jg dt jd}| j}|dkrt|}||fS |dkr+dd l}|d|}||fS |dkr=dd l}|j|}||fS |dkrJdd l}||}||fS )	Nr   r6   r  rn   r   ir  r  )r<   rn   r   r   r  
dask.arrayr  	DataArray)r   rB   namerA   rn   r  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 )Nr  r   )r   r   r   r`   r  r   r   r   r   r
   rm   )	r7   r  rB   rA   r  rW   rL   r  r  r   r   r   test_from_obscure_arrayw  s   
	r  )G
__future__r   r   numpyr<   rG   pandas._libsr   r   r   pandas.compatr   pandas.util._test_decoratorsutil_test_decoratorstdpandasr&   r   r   r	   r
   pandas._testing_testingr`   pandas.core.arraysr   r   r   r   pandas.core.arrays.datetimesr   pandas.core.arrays.timedeltasr   r  r   r)   r-   r1   r2   r  rY  rf  r   r  r   r?  r+   rd  r'   r~  r   r  rn   r  r  rE  r   r   r   rT   r\   r  r  tupler  r  r   
skip_if_nor  r  r   r   r   r   <module>   s    



    0  2x~
	

 
	
 
