a
    j=ic'                     @  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  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.ddffej/ddd d!j+effgd"d# d$d%d& Z0ej)j*d'eg dj+e.ddej1ffej-ddd d!j+e,ddej1ffej/ddd d!j+e.dde,ddej1ffgd(d# d$d)d* Z2ej)*d+ej-d,d-d.j3ej4d,d-d.j3gd/d0 Z5ej)*d1d2d3gej)*d4e6d5d6ged7d8gd d9ed5d6gd d:gej)*d;e7ej3ej3ej8ej9ej:ej;gd<d= Z<ej)*d4e6d5d6ged7d8gd d9ed5d6gd d:gej)*d>d7d8gd?d@ge	d5dAdBgd8 gdCdD Z=ej)*d;e7e>ej3ej8gdEdF Z?ej)*dGdHdIgdJdK Z@ej dLdMejAdNeBdOdPejAdQeBdQdPgd	dRdS ZCej)*dGdHdIgdTdU ZDdS )V    )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   v/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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_index6   s    
r(   c                   C  s   t g dS )a  
    A fixture to provide TimedeltaIndex objects with different frequencies.
     Most TimedeltaArray behavior is already tested in TimedeltaIndex tests,
    so here we just test that the TimedeltaArray behavior matches
    the TimedeltaIndex behavior.
    1 Day3 Hoursr   )r	   r   r   r   r   timedelta_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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	d8g d9d:d; Zd<d= Zd>d? Zd@dA Z dBdC Z!dDdE Z"ej	d8e
j#e
j$e%j&e'e(gdFdG Z)dHdI Z*ej	dddgdJdK Z+dLdM Z,ej	d8e'e%j&e
j#e
j$gdNdO Z-dPdQ Z.dRdS Z/dTdU Z0dVdW Z1dXS )Y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   arr1dS   s    zSharedTests.arr1dc                 C  s   |}|  |}tjtdd  ||d d k W d    n1 sB0    Y  tjtdd ||dg k W d    n1 s~0    Y  d S )NzLengths must matchmatch   r   )r.   pytestraises
ValueError)r;   r>   r=   idxr   r   r   test_compare_len1_raisesZ   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J t||kr*J d S N)r"   Categoricalallany)r;   rG   expectedr   r   r   test_compare_with_Categoricalg   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)orderedr1   )	r"   rO   CategoricalIndexr7   onesshapebooltmassert_numpy_array_equal)r;   r>   rU   rT   rV   otherleftrightrX   ZzerosrG   r   r   r   test_compare_categorical_dtypeu   s*    


z*SharedTests.test_compare_categorical_dtypec                 C  s   t jdddd d d }t j| | jtur4d nd}| j||d}| j|}g d	}||}||}t	
| || t g d	}||}||}t	
| || d S )
Nr   r0   r1   r3   r4   r5   r   r6   )rA      ^   )r7   r8   randomshuffler9   r   r.   _simple_newtaker[   assert_index_equalarray)r;   r<   r!   r=   rE   ZtakersrG   rR   r   r   r   	test_take   s    



zSharedTests.test_take
fill_value   g       @i  rA      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    n1 sp0    Y  d S )Nr/   r0   r1   r3   r4   r5   r   r6   value should be a '' or 'NaT'. Gotr?   r   rA   TZ
allow_fillrj   )	r7   r8   r9   _scalar_type__name__rB   rC   	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u sLJ |jd	d
gdt jd}|d tu srJ |jd	d
gdtd}|d tu sJ d S )Nr/   r0   r1   r3   r4   r5   r   r6   rA   Tro   r   )r7   r8   r9   rf   r   nanr;   r<   r=   rG   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    n1 s|0    Y  d S )	Nru   rA   Tro   rm   rn   r?   foo)	rf   strr[   assert_equalrp   rq   rB   rC   rr   )r;   r>   rG   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   rA   )r.   insertr   r9   _concat_same_typeastypeobjectr7   Zconcatenater[   rg   )r;   r>   r=   rE   rG   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||sNJ |t}t||sfJ d
| j	j
 d}tjt|d |d W d    n1 s0    Y  d S )Nr/   r0   r1   r3   r4   r5   r   r6   r   z'value' should be a .r?   ry   )r7   r8   r9   Z_unbox_scalar_datar2   type
isinstancer   scalar_typerq   rB   rC   rD   )r;   r<   r=   rG   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/   r0   r1   r3   r4   r5   r   r6   r   rA   )r7   r8   r9   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sJJ d S )
Nr/   r0   r1   r3   r4   r5   r   r6   r   )r7   r8   r9   Z_scalar_from_stringrz   rw   r   r   r   test_scalar_from_string   s    z#SharedTests.test_scalar_from_stringc                 C  sh   t jdddd d d }| j|dd}d	}tjt|d
 |d W d    n1 sZ0    Y  d S )Nr/   r0   r1   r3   r4   r5   r   r6   z)does not support reduction 'not a method'r?   znot a method)r7   r8   r9   rB   rC   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sdJ |d	 tu stJ d S )Nr/   r0   r1   r3   r4   r5   r   r6   ra   r   rH      )r   )r7   r8   r9   r   Zfillna)r;   r   r<   r=   rj   rG   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sBJ |j|d
 dd}|dks`J ||d	d }t jd	d
gt jd}t|| |j|d	d dd}t jd
dgt jd}t|| |t}|dksJ d S )Nr/   r0   r1   r3   r4   r5   r   r6   rA   rk   r_   siderH   )	r7   r8   r9   searchsortedrh   intpr[   r\   r   )r;   r<   r=   rG   rR   r   r   r   test_searchsorted  s    
zSharedTests.test_searchsortedbox)NindexZ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 rjn|dkr~| 
|	}	n
t|	}	|	t|	d }
|
dksJ |	jt|	d dd}
|
dksJ |	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 sF0    Y  |dkr^dnd}td|n tjttd|jj d| dd& |	t|	d dg W d    n1 s0    Y  W d    n1 s0    Y  d S )NrA   rH   !timezone comparisons inconsistentrC   reasonr   rk   r_   r   c                 S  s   g | ]}t |qS r   rz   .0xr   r   r   
<listcomp>E      zBSharedTests.test_searchsorted_castable_strings.<locals>.<listcomp>r1   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
   rK   tznamerB   markxfailrr   node
add_markerr.   r"   Seriesr   rz   r7   rh   r   r[   r\   rC   reescaperp   rq   Zoption_context)r;   r>   r   r   r   rK   ts1ts2r   r=   rG   rR   Zarr_typer   r   r   "test_searchsorted_castable_strings&  sN    
 
*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   a  r   zGSharedTests.test_getitem_near_implementation_bounds.<locals>.<listcomp>rA   r   r0   r1   nsr6   r   )r7   asarrayranger9   r"   Indexr   )r;   Zi8valsr=   r   Zserr   r   r   'test_getitem_near_implementation_bounds^  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sJ d S )Nr1   rH   r   )ru   r   ru   )r   r   r7   newaxisr2   r[   r{   )r;   r>   rR   rG   arr2dr   r   r   test_getitem_2dk  s    " zSharedTests.test_getitem_2dc                 C  s~   |j d dtjf }t|j||jd}t|}t|dks@J |D ]4}t|t|sZJ |j	dkshJ |j|jksDJ qDd S )NrH   r1   rA   )
r   r7   r   r   re   r2   listlenr   ndim)r;   r>   data2dr   rG   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sJ d S )
NrH   r1   <z>
[
['r   z'],
['rA   rk   z']
]
Shape: (3, 1), dtype: )r   r7   r   r   re   r2   reprr   r   rq   Z
_repr_base)r;   r>   r   r   rG   rR   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 )Nr/   r0   r1   r3   r4   r5   r   r6   rA   r   rk   )r7   r8   r9   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v r(|d }|}|tu r>t|}nF|tju rZt|t}n*|t	u rv|tj
|td}n||t}||d d < t|| d S )Nru   )mr   r1   )copyr2   kind
_with_freqr   r7   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   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   rA   c                 S  s   g | ]}t |qS r   r   r   r   r   r   r     r   z1SharedTests.test_setitem_strs.<locals>.<listcomp>rk   ru   )r   r
   rK   r   rB   r   r   rr   r   r   r   r[   r{   rz   )	r;   r>   r   rK   r   r   r   rR   rG   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"   rO   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 d    n1 s\0    Y  tjtdd t |d	< W d    n1 s0    Y  d}tjt|d |d g|g < W d    n1 s0    Y  d}tjt|d$ |d d |dd< W d    n1 s0    Y  d S )Nr/   r0   r1   r3   r4   r5   r   r6   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 lengthrA   z=cannot set using a slice indexer with a different length thanrH   )	r7   r8   r9   rB   rC   
IndexErrorrr   r   rD   )r;   r<   r=   valrs   r   r   r   test_setitem_raises  s    &(,zSharedTests.test_setitem_raisesc                 C  s   d|j j d}tjt|d$ |ddg|d d< W d    n1 sH0    Y  tjt|d$ |ddg|d d< W d    n1 s0    Y  d S )	Nrm   z ', 'NaT', or array of those. Gotr?   r   rA   rk   g        g      ?)rp   rq   rB   rC   rr   )r;   r>   r   rs   r   r   r   test_setitem_numeric_raises  s    2z'SharedTests.test_setitem_numeric_raisesc                 C  s   t jdddd d d }| j|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/   r0   r1   r3   r4   r5   r   r6   rA   days)r7   r8   r9   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^0    Y  | }| jtu r|j	j
d|jd}n
|	d}||d< |d d |dd < t|| d S )Nr/   r0   r1   r3   r4   r5   r   r6   zPassing <class 'int'> to shiftr?   rA   )rj   r   ru   )r7   r8   r9   r[   assert_produces_warningFutureWarningshiftr   r   rp   Z_from_ordinalr!   r{   )r;   r<   r=   rs   rG   rR   Zfill_valr   r   r   test_shift_fill_int_deprecated,  s    ,

z*SharedTests.test_shift_fill_int_deprecatedc                 C  s  |}t |d dkr |d d }|t |d  }| }t|t|u sLJ ||ksXJ t|t |d < t|ts|t |d d t |d d   }|jddtu sJ | }t|t|u sJ ||ksJ |d d  tu sJ |d d jddtu sJ |dd}|jd d}t|t|u s:J ||ksHJ |jd ddtu s`J |jdd}t|j|g|j	d	}t
|| |jddd}t|jtg|j	d	}t
|| |jdd}t
|| |jddd}t
|| d S )
Nrk   r   ru   rA   F)skipna)axis)r   r   r1   )r   Zmedianr   r   r   r   meanreshape_from_sequencer2   r[   r{   )r;   r>   r=   rR   rG   r   Z	expected2r   r   r   test_median>  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rA   rk   rH   r1   ZInt64)r7   rh   int64r9   example_dtyper"   r[   assert_extension_array_equal)r;   r=   rR   r<   rG   r   r   r   test_from_integer_arrayn  s
    z#SharedTests.test_from_integer_arrayN)2rq   
__module____qualname____annotations__rB   fixturer>   rF   r   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   r7   rh   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 )zc
        Fixture returning DatetimeArray with parametrized frequency and
        timezones
        z2016-01-01 01:01:00r   r    r!   rK   )r"   r&   r   )r;   Ztz_naive_fixturer   rK   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2Tr6   rA   )minutes)	r.   roundr"   r   r   r[   rg   r   assert_datetime_array_equal)r;   r>   r'   rG   rR   r   r   r   r   
test_round  s    

zTestDatetimeArray.test_roundc                 C  s  t |}t|}|j}||u s$J t|| tj|dd}||u sJJ t|| tj|dd}|j}||u svJ t|| tj|ddd}||u sJ t|| tj|dd}||usJ t|| tj|td}tjt|td}t|| tj|dd}||j	usJ t
||r,J |j	 }t|| dtfD ]0}tj||d}t||}t|| qJd S )NFr   datetime64[ns]r1   r2   r   r   float64)r
   r7   r   r   r[   r\   rh   r   r   r   may_share_memoryr   rz   r   )r;   r(   r=   rG   rR   r2   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 Nr1   )r.   r7   rh   r   r   r[   r\   r;   r>   r=   r'   rR   rG   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 snJ |jd us|J tj|ddd}|j|ju sJ |jd usJ d S )Nr   r1   r   Fr   )r.   r   viewr7   rh   r[   r\   baser   r   r   r   test_array_tz  s    
zTestDatetimeArray.test_array_tzc                 C  s|   |}|  |}|j}tj|dd}t|| tj|tjd}t|| tj|ddd}|j|jusjJ |jd u sxJ d S )Nr0   r1   Fr   )r.   r   r7   rh   r[   r\   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 sHJ d S )Nr   z
2000-01-02r   r1   r   )r7   rh   r
   r   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"J t|}t|ts:J t|t|ksNJ d S rN   )r.   r   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(J |jdks6J t|t|ksJJ d S NOr.   r   r   r7   ndarrayr2   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 d    n1 s@0    Y  tjt|d |j|d}W d    n1 sz0    Y  t|tsJ tt	|t	| d S )Nz0to_perioddelta is deprecated and will be removedr?   r6   )
r
   r[   r   r   Zto_perioddeltar   r   rg   r"   r   )r;   r(   r   r'   r=   rs   rR   rG   r   r   r   test_to_perioddelta  s    **z%TestDatetimeArray.test_to_perioddeltac                 C  sN   |}t |}|j|d}|j|d}t|ts2J tt|t| d S )Nr6   )r
   	to_periodr   r   r[   rg   r"   r   )r;   r(   r   r'   r=   rR   rG   r   r   r   test_to_period"  s    z TestDatetimeArray.test_to_periodc                 C  st   | dd}|jd u rd nt}t|, |d}|d dd}W d    n1 sZ0    Y  t|| d S )NrA   ru   r   )r   rK   UserWarningr[   r   r  Zassert_period_array_equal)r;   r>   r   warnrG   rR   r   r   r   test_to_period_2d.  s    
0z#TestDatetimeArray.test_to_period_2dpropnamec                 C  sN   |  |}|}|j|jksJ t||}tjt|||jd}t|| d S r   )r.   r!   getattrr7   rh   r2   r[   r\   )r;   r>   r  r'   r=   rG   rR   r   r   r   test_bool_properties7  s    

z&TestDatetimeArray.test_bool_propertiesc           	      C  s   d }d}|dv rt }| |}|}tj||d0 t||}tjt|||jd}W d    n1 sf0    Y  t|| d S )Nz4weekofyear and week have been deprecated, please use)weekZ
weekofyearr?   r1   )	r   r.   r[   r   r  r7   rh   r2   r\   )	r;   r>   r  r  rs   r'   r=   rG   rR   r   r   r   test_int_propertiesC  s    

4z%TestDatetimeArray.test_int_propertiesc           
   	   C  sz  |}|  |}||j}|jddgd|d}|d |ks>J d|jj d}tjt|d( |jddgd|| d W d    n1 s0    Y  tjt|d( |jddgdt	d	d W d    n1 s0    Y  |jd urd nd
}||}d}tjt|d$ |jddgd|d W d    n1 s40    Y  t
j}	d|jj d}tjt|d$ |jddgd|	d W d    n1 s0    Y  tdd}	tjt|d$ |jddgd|	d W d    n1 s0    Y  |jd urv|d}	d}tjt|dT tjtdd$ |jddgd|	d}W d    n1 sL0    Y  W d    n1 sl0    Y  d S )Nru   rA   Tro   r   rm   rn   r?   Z2014Q1z
US/Easternz:Cannot compare tz-naive and tz-aware datetime-like objectsr   r   zAustralia/Melbournez2Timezones don't match. .* != 'Australia/Melbourne'zmismatched timezone)r.   tz_localizerK   rf   rp   rq   rB   rC   rr   r   r   r   r7   timedelta64rD   r[   r   r   )
r;   r>   fixed_now_tsr=   r'   nowrG   rs   rK   r   r   r   r   test_take_fill_validT  s<    
66
444
z&TestDatetimeArray.test_take_fill_validc                 C  sd   |}|j d u r|d}n
|d }tjtdd |||g W d    n1 sV0    Y  d S )NrJ   zto_concat must have the samer?   )rK   r  rB   rC   rD   r~   )r;   r>   r=   r]   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2000rk   r   z
US/Centralr   H)2000-01-01 00:00:00z2000-01-02 00:00:00r  z2000-01-01 01:00:00)r
   r"   r&   r~   to_datetimer  r[   r   )r;   abrG   rR   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     r   z3TestDatetimeArray.test_strftime.<locals>.<listcomp>r1   r!  r7   rh   r   r[   r\   r;   r>   r=   rG   rR   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-%dr1   )
r
   r   r   r!  r7   rh   rv   r   r[   r\   r;   r=   rG   rR   r   r   r   test_strftime_nat  s    
z#TestDatetimeArray.test_strftime_natN)#rq   r   r   r   r.   r
   r9   r   r   r   rB   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   x  s4   

*	
		

4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sTJ d S )Nr*   r+   )r	   r   r   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.J |jdks<J t|t|ksPJ d S )Nr*   r+   r  )r	   r   r   r   r7   r  r2   r   )r;   r.  r=   r  r   r   r   r    s    
z%TestTimedeltaArray.test_astype_objectc                 C  s,   |}t |}| }| }t|| d S rN   )r   Zto_pytimedeltar[   r\   r;   r,   r.  r=   rR   rG   r   r   r   test_to_pytimedelta  s
    z&TestTimedeltaArray.test_to_pytimedeltac                 C  s.   |}t |}| }| }t||j d S rN   )r   total_secondsr[   r\   valuesr0  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  r7   rh   r2   r[   r\   )r;   r,   r  r.  r=   rG   rR   r   r   r   r    s
    
z&TestTimedeltaArray.test_int_propertiesc                 C  s  t |}t|}|j}||u s$J t|| tj|dd}||u sJJ t|| tj|dd}|j}||u svJ t|| tj|ddd}||u sJ t|| tj|dd}||usJ t|| tj|td}tjt|td}t|| tj|dd}||j	usJ t
||r,J |j	 }t|| dtfD ]0}tj||d}t||}t|| qJd S )NFr   ztimedelta64[ns]r1   r   r   r   )r   r7   r   r   r[   r\   rh   r   r   r   r   r   rz   r   )r;   r,   r=   rG   rR   r2   r   r   r   r     s<    

z'TestTimedeltaArray.test_array_interfacec           	      C  s2  |}t |}tjdd}|jddgd|d}|d |ks<J |}d|jj d}tjt|d	$ |jddgd|d W d    n1 s0    Y  |	d
}tjt|d	$ |jddgd|d W d    n1 s0    Y  t
dd}tjt|d	$ |jddgd|d W d    n1 s$0    Y  d S )NrA   r   ru   Tro   r   rm   rn   r?   r   r   r   )r   r"   r   rf   rp   rq   rB   rC   rr   r  r7   
datetime64)	r;   r,   r  r.  r=   Ztd1rG   r   rs   r   r   r   r    s    2
2z'TestTimedeltaArray.test_take_fill_validN)rq   r   r   r	   r.   r   r9   r"   r   r   r   r/  r  r1  r4  rB   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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   r6   c                 C  s   |j S )zW
        Fixture returning DatetimeArray from parametrized PeriodIndex objects
        )r   )r;   r%   r   r   r   r>   3  s    zTestPeriodArray.arr1dc                 C  sR   |  |}|}t|t|ks"J t|}t|ts:J t|t|ksNJ d S rN   )r.   r   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(J |jdks6J t|t|ksJJ d S r  r  )r;   r>   r$   r=   r  r   r   r   r  D  s    

z"TestPeriodArray.test_astype_objectc                 C  s   |}t j}d|jj d}tjt|d$ |jddgd|d W d    n1 sR0    Y  t	dd	}tjt|d$ |jddgd|d W d    n1 s0    Y  d S )
Nrm   rn   r?   ru   rA   Tro   r   r   )
r   r   rp   rq   rB   rC   rr   rf   r7   r  )r;   r>   r=   r   rs   r   r   r   r  L  s    2z$TestPeriodArray.test_take_fill_validhowSEc                 C  sT   |  |}|}t|j|d}|j|d}t|ts8J tt|t| d S )N)r8  )r.   r
   to_timestampr   r[   rg   r"   r   )r;   r8  r>   r$   r=   rR   rG   r   r   r   test_to_timestampZ  s    
z!TestPeriodArray.test_to_timestampc           	      C  s   t jddddj}| }| }|jdks0J t|| |d d d }| }| }|jdkshJ t|| |d}| }|jdksJ t|| d S )Nz
2021-10-18rH   r   rM   rk   Z2B)r"   r&   r   r  r;  r!   r[   r   )	r;   r   ZparrrG   Zdta2Zparr2Zresult2Zparr3Zresult3r   r   r    test_to_timestamp_roundtrip_bdayg  s    
z0TestPeriodArray.test_to_timestamp_roundtrip_bdayc                 C  s   t jdddd}d}tjt|d |  W d    n1 s@0    Y  tjt|d |j  W d    n1 sx0    Y  d S )NZ1500r   rH   )r!   r    z7Out of bounds nanosecond timestamp: 1500-01-01 00:00:00r?   )r"   r#   rB   rC   r   r;  r   )r;   r$   rs   r   r   r   test_to_timestamp_out_of_boundsz  s    &z/TestPeriodArray.test_to_timestamp_out_of_boundsr  c                 C  s8   |  |}|}t||}tt||}t|| d S rN   r.   r  r7   rh   r[   r\   r;   r>   r  r$   r=   rG   rR   r   r   r   r    s
    

z$TestPeriodArray.test_bool_propertiesc                 C  s8   |  |}|}t||}tt||}t|| d S rN   r?  r@  r   r   r   r    s
    

z#TestPeriodArray.test_int_propertiesc                 C  s   |}t |}t jt|td}t|| t j|td}t|| t j|dd}t||j d}tj	t
|d t j|dd W d    n1 s0    Y  t j|dd}t |d}t|| d S )Nr1   r   zEfloat\(\) argument must be a string or a( real)? number, not 'Period'r?   r   ZS20)r7   r   rh   r   r   r[   r\   r   rB   rC   rr   r   )r;   r>   r=   rG   rR   rs   r   r   r   r     s    
,z$TestPeriodArray.test_array_interfacec                 C  s6   |}| d}tjdd |D td}t|| d S )N%Yc                 S  s   g | ]}| d qS )rA  r   )r   Zperr   r   r   r     r   z1TestPeriodArray.test_strftime.<locals>.<listcomp>r1   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]r1   r'  )
r   r   r   r!  r7   rh   rv   r   r[   r\   r(  r   r   r   r)    s    
z!TestPeriodArray.test_strftime_natN)rq   r   r   r   r.   r   r9   r   r   r2   r   rB   r   r>   r7  r  r  r   r   r<  r=  r>  r*  r  r+  r  r   r%  r)  r   r   r   r   r6  -  s(   






	r6  zarr,casting_natsr)   r   r   r   rH   r   rM   c                 C  s
   t | jS rN   r   rq   r   r   r   r   <lambda>  r   rD  )Zidsc                 C  sF   t | t| d | d g}|D ] }|  } || d< t| | q d S )NrA   rk   r   )r   r   r   r   r[   r{   )r=   Zcasting_natsrR   natr   r   r   test_casting_nat_setitem_array  s
    rF  zarr,non_casting_natsc                 C  s
   t | jS rN   rB  rC  r   r   r   rD    r   c              	   C  sH   d}|D ]:}t jt|d || d< W d    q1 s80    Y  qd S )Nzwvalue should be a '(Timestamp|Timedelta|Period)', 'NaT', or array of those. Got '(timedelta64|datetime64|int)' instead.r?   r   )rB   rC   rr   )r=   Znon_casting_natsrs   rE  r   r   r   test_invalid_nat_setitem_array  s
    rG  r=   r  ra   rI   c                 C  s   t | d< |  }|  }t|d s*J | jdd}|d dksFJ | jddd}|d dksdJ | j| d  d}|d |d ksJ | j| d jdd	d}|d |d ksJ t| | d S )
Nr   r   r1   l         )r2   na_valuerA   )rH  Fr   )r   r   Zto_numpyr7   isnanr[   r{   )r=   originalrG   r   r   r   test_to_numpy_extra  s    rK  rU   TFr3  z
2020-01-01z
2020-02-01rA   rk   )unitr6   klassc                 C  s<   |s
| j } | || }tjddg|jd}t|| d S )Nr   rA   r1   )r   r   r7   rh   r2   r[   r\   )r3  rM  rU   rG   rR   r   r   r   ,test_searchsorted_datetimelike_with_listlike  s
    rN  argr  r  zEurope/London)rK   c                 C  s@   d}t jt|d | | W d    n1 s20    Y  d S )Nz [Unexpected type|Cannot compare]r?   )rB   rC   rr   r   )r3  rO  rs   r   r   r   :test_searchsorted_datetimelike_with_listlike_invalid_dtype3  s    rP  c                 C  sB   ddgd }| |}t |dd}t dd |D }t|| d S )NrL   Z2020Q2rk   r   r6   c                 S  s   g | ]}t |qS r   )r   )r   sr   r   r   r   K  r   z?test_period_index_construction_from_strings.<locals>.<listcomp>)r   r[   rg   )rM  stringsr<   rG   rR   r   r   r   +test_period_index_construction_from_stringsE  s
    rS  r2   r   r-  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   r1   r   r-  r   )r7   rh   r   r
   r   r[   r   r   r   r   r{   r"   r  to_timedeltar   r	   rg   )r2   r<   r=   clsrG   rR   funcidx_clsr   r   r   test_from_pandas_arrayO  s*    



rY  
memoryviewrh   daskz
dask.array)Zmarksxarrayc                 C  s   t jg dt jd}| j}|dkr,t|}nV|dkrJddl}|d|}n8|dkrhddl}|j|}n|d	krd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   r1   rZ  rh   r   Nir[  r\  )r7   rh   r   r   rZ  Z
dask.arrayr\  Z	DataArray)r   r=   namer<   rh   r[  Zxrr   r   r   array_likesp  s    

r_  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 )NrT  r   )r
   r   r   r[   r   r   r   r{   r   rZ  r"   r  rU  rh   r   r	   rg   )	r2   r_  r=   r<   rV  rR   rG   rW  rX  r   r   r   test_from_obscure_array  s$    



r`  )E
__future__r   r   numpyr7   rB   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,  r6  r   r   r   r  r&   r5  r#   rF  r   rG  rh   r   rK  r  r   r   r   rO   rW   rN  rP  tuplerS  rY  r   Z
skip_if_nor_  r`  r   r   r   r   <module>   s   



    ,  @w 
	

 
	
 
