o
    d                     @  s  d dl mZ d dlZd dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlm  mZ d dlZd dlmZmZmZmZ d dlmZ d dlmZmZmZmZ d dlmZ d dlm Z  ej!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j0ddd d!j,effgd"d# d$d%d& Z1ej*j+d'eg dj,e/ddej2ffej.ddd d!j,e-ddej2ffej0ddd d!j,e/dde-ddej2ffgd(d# d$d)d* Z3ej*+d+ej.d,d-d.jej4d,d-d.jgd/d0 Z5ej*+d1d2d3gej*+d4e6d5d6ged7d8gd d9ed5d6gd d:gej*+d;e7ejeje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je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   j/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/arrays/test_datetimelike.pyfreqstr#   s   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_index7   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_indexE   s   	r.   c                   @  s  e Zd ZU ded< ejdd Zdd Zej	de
jdd	d
e
jdd	dde
jdd	d
e
jdd	ddgdd Zej	dddgej	dddgdd Zdd Zej	dddedddd jgd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zej	d1d2d3gd4d5 Zd6d7 Zej	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   arr1dT   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   )r0   pytestraises
ValueError)r=   r@   r?   idxr   r   r   test_compare_len1_raises[   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 N)r#   Categoricalallany)r=   rI   expectedr   r   r   test_compare_with_Categoricalh   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)orderedr3   )	r#   rR   CategoricalIndexr9   onesshapebooltmassert_numpy_array_equal)r=   r@   rX   rW   rY   otherleftrightr[   zerosrI   r   r   r   test_compare_categorical_dtypev   s,   


z*SharedTests.test_compare_categorical_dtypec                 C  s   t jdddd d d }t j| | jturd nd}| j||d}| j|}g d	}||}||}t	
| || t g d	}||}||}t	
| || d S )
Nr   r2   r3   r5   r6   r7   r   r8   )rC      ^   )r9   r:   randomshuffler;   r   r0   _simple_newtaker^   assert_index_equalarray)r=   r>   r"   r?   rG   takersrI   rU   r   r   r   	test_take   s   



zSharedTests.test_take
fill_value   g       @i  rC      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 )Nr1   r2   r3   r5   r6   r7   r   r8   value should be a '' or 'NaT'. GotrA   r   rC   T
allow_fillro   )	r9   r:   r;   _scalar_type__name__rD   rE   	TypeErrorrj   )r=   ro   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 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 )Nr1   r2   r3   r5   r6   r7   r   r8   rC   Trt   r   )r9   r:   r;   rj   r   nanr=   r>   r?   rI   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{   rC   Trt   rr   rs   rA   foo)	rj   strr^   assert_equalrv   rw   rD   rE   rx   )r=   r@   rI   rU   ry   r   r   r   test_take_fill_str   s   "zSharedTests.test_take_fill_strc                 C  s   |}|  |}|dt}| |}||d d |dd  |g}|t}|  t|d d |dd  |gd }t	
|  || d S )Nr   r{   rC   )r0   insertr   r;   _concat_same_typeastypeobjectr9   concatenater^   rk   )r=   r@   r?   rG   rI   arr2rU   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 )Nr1   r2   r3   r5   r6   r7   r   r8   r   z'value' should be a .rA   r   )r9   r:   r;   _unbox_scalar_ndarrayr4   type
isinstancer   scalar_typerw   rD   rE   rF   )r=   r>   r?   rI   rU   ry   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 )Nr1   r2   r3   r5   r6   r7   r   r8   r   rC   )r9   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 )
Nr1   r2   r3   r5   r6   r7   r   r8   r   )r9   r:   r;   _scalar_from_stringr   r}   r   r   r   test_scalar_from_string   s   z#SharedTests.test_scalar_from_stringc                 C  sj   t jdddd d d }| j|dd}d	}tjt|d
 |d W d    d S 1 s.w   Y  d S )Nr1   r2   r3   r5   r6   r7   r   r8   z)does not support reduction 'not a method'rA   znot a method)r9   r:   r;   rD   rE   rx   _reduce)r=   r>   r?   ry   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 )Nr1   r2   r3   r5   r6   r7   r   r8   re   r   rK      )r   )r9   r:   r;   r   fillna)r=   r   r>   r?   ro   rI   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}|dksoJ d S )Nr1   r2   r3   r5   r6   r7   r   r8   rC   rp   rb   siderK   )	r9   r:   r;   searchsortedrl   intpr^   r_   r   )r=   r>   r?   rI   rU   r   r   r   test_searchsorted  s   
zSharedTests.test_searchsortedbox)Nindexseriesc              
   C  s  |}|d u rn|dkr|  |}nt|}|t|d }|dks%J |jt|d dd}|dks6J |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 stw   Y  |dkrd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 )Nr   rC   rp   rb   r   rK   c                 S     g | ]}t |qS r   r   .0xr   r   r   
<listcomp>:      zBSharedTests.test_searchsorted_castable_strings.<locals>.<listcomp>r3   rr   z/', 'NaT', or array of those. Got 'str' instead.rA   r   pythonStringArrayArrowStringArraystring_storagez"', 'NaT', or array of those. Got 'z
' instead.baz)r0   r#   Seriesr   r   r9   rl   r   r^   r_   rD   rE   rx   reescaperv   rw   option_context)r=   r@   r   r   r?   rI   rU   arr_typer   r   r   "test_searchsorted_castable_strings'  sH   
	"z.SharedTests.test_searchsorted_castable_stringsc                 C  s\   t jdd tddD dd}| j|dd}|d	  t|}|d	  t|}|d	  d S )
Nc                 S  s   g | ]}t j| qS r   )r   _value)r   nr   r   r   r   V      zGSharedTests.test_getitem_near_implementation_bounds.<locals>.<listcomp>rC   r   r2   r3   nsr8   r   )r9   asarrayranger;   r#   Indexr   )r=   i8valsr?   r   serr   r   r   'test_getitem_near_implementation_boundsS  s   

z3SharedTests.test_getitem_near_implementation_boundsc                 C  s   t ||jd d tjf |jd}|d d tjf }t|| |}t ||jd ddf |jd}|d ddf }t|| |d }|d }||ksNJ d S )Nr3   rK   r   )r{   r   r{   )r   r   r9   newaxisr4   r^   r   )r=   r@   rU   rI   arr2dr   r   r   test_getitem_2d`  s   " zSharedTests.test_getitem_2dc                 C  s~   |j d dtjf }t|j||jd}t|}t|dks J |D ]}t|t|s-J |j	dks4J |j|jks<J q"d S )NrK   r3   rC   )
r   r9   r   r   ri   r4   listlenr   ndim)r=   r@   data2dr   rI   r   r   r   r   test_iter_2dq  s   zSharedTests.test_iter_2dc              
   C  s   |j d dtjf }t|j||jd}t|}t|tr?dt|j	 d|d 
  d|d 
  d|d 
  d	|j 
}ndt|j	 d|d  d|d  d|d  d	|j 
}||ks`J d S )
NrK   r3   <z>
[
['r   z'],
['rC   rp   z']
]
Shape: (3, 1), dtype: )r   r9   r   r   ri   r4   reprr   r   rw   
_repr_base)r=   r@   r   r   rI   rU   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 )Nr1   r2   r3   r5   r6   r7   r   r8   rC   r   rp   )r9   r:   r;   r^   r_   asi8r=   r>   r?   rU   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   r3   )copyr4   kind
_with_freqr   r9   rl   r   r   r   r   r^   r   )r=   r   r@   rU   valsr   r   r   test_setitem_object_dtype  s   


z%SharedTests.test_setitem_object_dtypec                 C  s   |  }|dd  |ddg< |  }dd |dd  D |d d< t|| |  }|d |d< |  }t|d |d< t|| d S )Nr   r   rC   c                 S  r   r   r   r   r   r   r   r     r   z1SharedTests.test_setitem_strs.<locals>.<listcomp>rp   r{   )r   r^   r   r   )r=   r@   rU   rI   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#   rR   rZ   r^   r   )r=   r@   rX   rU   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 )Nr1   r2   r3   r5   r6   r7   r   r8   r   zindex 12 is out of boundsrA   rq   zvalue should be a.* 'object'z<cannot set using a list-like indexer with a different lengthrC   z=cannot set using a slice indexer with a different length thanrK   )	r9   r:   r;   rD   rE   
IndexErrorrx   r   rF   )r=   r>   r?   valry   r   r   r   test_setitem_raises  s"   
"zSharedTests.test_setitem_raisesc                 C  s   d|j j d}tjt|d |ddg|d d< W d    n1 s$w   Y  tjt|d |ddg|d d< W d    d S 1 sFw   Y  d S )	Nrr   z ', 'NaT', or array of those. GotrA   r   rC   rp   g        g      ?)rv   rw   rD   rE   rx   )r=   r@   r   ry   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 )Nr1   r2   r3   r5   r6   r7   r   r8   rC   days)r9   r:   r;   r#   	Timedeltar^   r   r   r   r   r   test_inplace_arithmetic  s   z#SharedTests.test_inplace_arithmeticc                 C  sj   t jdddd d d }| j|dd}tjtd	d
 |jddd W d    d S 1 s.w   Y  d S )Nr1   r2   r3   r5   r6   r7   r   r8   zvalue should be arA   rC   )ro   )r9   r:   r;   rD   rE   rx   shiftr<   r   r   r   test_shift_fill_int_deprecated  s
   "z*SharedTests.test_shift_fill_int_deprecatedc                 C  s  |}t |d dkr|d d }|t |d  }| }t|t|u 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 )
Nrp   r   r{   rC   F)skipna)axis)r   r   r3   )r   medianr   r   r   r   meanreshape_from_sequencer4   r^   r   )r=   r@   r?   rU   rI   r   	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rC   rp   rK   r3   Int64)r9   rl   int64r;   example_dtyper#   r^   assert_extension_array_equal)r=   r?   rU   r>   rI   r   r   r   test_from_integer_arrayM  s
   z#SharedTests.test_from_integer_arrayN)2rw   
__module____qualname____annotations__rD   fixturer@   rH   markparametrizer#   r(   timedelta_ranger$   rV   rd   rn   r   timerz   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   rl   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   Q   sr   
 

	!
	


+




0r/   c                   @  s   e Zd ZeZeZeZdZ	e
jdd Zdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Ze
jdejdd Ze
jdejdd Zdd Zdd  Zd!d" Zd#d$ Z d%d& Z!d'S )(TestDatetimeArrayM8[ns]c                 C  s    |}t jdd||d}|j}|S )zc
        Fixture returning DatetimeArray with parametrized frequency and
        timezones
        z2016-01-01 01:01:00r   r!   r"   rN   )r#   r(   _data)r=   tz_naive_fixturer   rN   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 )N2Tr8   rC   )minutes)	r0   roundr#   r   r   r^   rk   r   assert_datetime_array_equal)r=   r@   r)   rI   rU   r   r   r   r   
test_roundh  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]r3   r4   r   r   float64)r
   r9   r   r   r^   r_   rl   r   r   r   may_share_memoryr   r   r   )r=   r*   r?   rI   rU   r4   r   r   r   test_array_interfacev  >   

z&TestDatetimeArray.test_array_interfacec                 C  sT   |}|  |}tt|}tj|td}t|| tj|td}t|| d S Nr3   )r0   r9   rl   r   r   r^   r_   r=   r@   r?   r)   rU   rI   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   r3   r  Fr  )r0   r   viewr9   rl   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s5J |jd u s<J d S )Nr2   r3   Fr  )r0   r   r9   rl   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 s$J d S )Nr   z
2000-01-02r   r3   r   )r9   rl   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s'J d S rQ   )r0   r   r#   r   r   r   )r=   r@   r?   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r0   r   r   r9   ndarrayr4   r   )r=   r@   r?   r)   asobjr   r   r   test_astype_object  s   

z$TestDatetimeArray.test_astype_objectc                 C  sN   |}t |}|j|d}|j|d}t|tsJ tt|t| d S )Nr8   )r
   	to_periodr   r   r^   rk   r#   r   )r=   r*   r   r)   r?   rU   rI   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 )NrC   r{   r   )r   rN   UserWarningr^   assert_produces_warningr  assert_period_array_equal)r=   r@   r   warnrI   rU   r   r   r   test_to_period_2d  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  )r0   r"   getattrr9   rl   r4   r^   r_   r=   r@   r$  r)   r?   rI   rU   r   r   r   test_bool_properties  s   

z&TestDatetimeArray.test_bool_propertiesc                 C  s>   |  |}|}t||}tjt|||jd}t|| d S r  )r0   r%  r9   rl   r4   r^   r_   r&  r   r   r   test_int_properties  s
   

z%TestDatetimeArray.test_int_propertiesc                 C  s>  |}|  |}||j}|jddgd|d}|d |ksJ d|jj d}tjt|d |jddgd|| d W d    n1 sEw   Y  tjt|d |jddgdt	d	d W d    n1 shw   Y  |jd urtd nd
}||}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|d}	|jddgd|	d}|jddgd|	|jjd}
t||
 d S d S )Nr{   rC   Trt   r   rr   rs   rA   2014Q1z
US/Easternz:Cannot compare tz-naive and tz-aware datetime-like objectsr   r   zAustralia/Melbourne)r0   tz_localizerN   rj   rv   rw   rD   rE   rx   r   r   r   r9   timedelta64
tz_convertr4   r^   r   )r=   r@   fixed_now_tsr?   r)   nowrI   ry   rN   valuerU   r   r   r   test_take_fill_valid  sJ   


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 )NrM   zto_concat must have the samerA   )rN   r*  rD   rE   rF   r   )r=   r@   r?   r`   r   r   r   test_concat_same_type_invalidI  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2000rp   r   z
US/Centralr   H)2000-01-01 00:00:00z2000-01-02 00:00:00r4  z2000-01-01 01:00:00)r
   r#   r(   r   to_datetimer*  r^   r  )r=   abrI   rU   r   r   r   $test_concat_same_type_different_freqU  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 )r:  strftime)r   tsr   r   r   r   k  r   z3TestDatetimeArray.test_strftime.<locals>.<listcomp>r3   r=  r9   rl   r   r^   r_   r=   r@   r?   rI   rU   r   r   r   test_strftimeg     
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-%dr3   )
r
   r   r   r=  r9   rl   r|   r   r^   r_   r=   r?   rI   rU   r   r   r   test_strftime_natn  s   
z#TestDatetimeArray.test_strftime_natN)"rw   r   r   r   r0   r
   r;   r   r   r   rD   r   r@   r  r  r  r  r  r  r  r  r  r#  r   r   	_bool_opsr'  
_field_opsr(  r0  r1  r8  rA  rF  r   r   r   r   r   W  s4    

*	
		

	0r   c                   @  sf   e Zd ZeZeZejZ	dZ
dd Zdd Zdd Zdd	 Zejd
ejdd Zdd Zdd ZdS )TestTimedeltaArraym8[ns]c                 C  sX   t ddg}t|}t|t|ksJ t|}t|t s J t|t|ks*J d S )Nr,   r-   )r	   r   r   r#   r   r   )r=   tdir?   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,   r-   r  )r	   r   r   r   r9   r  r4   r   )r=   rK  r?   r  r   r   r   r    s   
z%TestTimedeltaArray.test_astype_objectc                 C  s,   |}t |}| }| }t|| d S rQ   )r   to_pytimedeltar^   r_   r=   r.   rK  r?   rU   rI   r   r   r   test_to_pytimedelta  s
   z&TestTimedeltaArray.test_to_pytimedeltac                 C  s.   |}t |}| }| }t||j d S rQ   )r   total_secondsr^   r_   valuesrO  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%  r9   rl   r4   r^   r_   )r=   r.   r$  rK  r?   rI   rU   r   r   r   r(    s
   
z&TestTimedeltaArray.test_int_propertiesc                 C  r  )NFr  ztimedelta64[ns]r3   r  r   r	  )r   r9   r   r   r^   r_   rl   r   r   r   r
  r   r   r   )r=   r.   r?   rI   rU   r4   r   r   r   r    r  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 sDw   Y  |	d
}tjt|d	 |jddgd|d W d    n1 sjw   Y  t
dd}tjt|d	 |jddgd|d W d    d S 1 sw   Y  d S )NrC   r   r{   Trt   r   rr   rs   rA   r   r   r   )r   r#   r   rj   rv   rw   rD   rE   rx   r  r9   
datetime64)	r=   r.   r-  rK  r?   td1rI   r/  ry   r   r   r   r0    s$   
"z'TestTimedeltaArray.test_take_fill_validN)rw   r   r   r	   r0   r   r;   r#   r   r   r   rM  r  rP  rS  rD   r   r   rH  r(  r  r0  r   r   r   r   rI  w  s    
		
	*rI  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   r8   c                 C  s   |j S )zW
        Fixture returning DatetimeArray from parametrized PeriodIndex objects
        )r   )r=   r&   r   r   r   r@     s   zTestPeriodArray.arr1dc                 C  sR   |  |}|}t|t|ksJ t|}t|tsJ t|t|ks'J d S rQ   )r0   r   r#   r   r   r   )r=   r@   r%   r?   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=   r@   r%   r?   r  r   r   r   r    s   

z"TestPeriodArray.test_astype_objectc                 C  s   |}t j}d|jj d}tjt|d |jddgd|d W 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 )
Nrr   rs   rA   r{   rC   Trt   r   r   )
r   r   rv   rw   rD   rE   rx   rj   r9   r+  )r=   r@   r?   r/  ry   r   r   r   r0    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)rY  )r0   r
   to_timestampr   r^   rk   r#   r   )r=   rY  r@   r%   r?   rU   rI   r   r   r   test_to_timestamp  s   
z!TestPeriodArray.test_to_timestampc           	      C  s   t jddddj}| }| }|jdksJ t|| |d d d }| }| }|jdks4J t|| |d}| }|jdksJJ t|| d S )Nz
2021-10-18rK   r   rP   rp   2B)r#   r(   r   r  r\  r"   r^   r   )	r=   r   parrrI   dta2parr2result2parr3result3r   r   r    test_to_timestamp_roundtrip_bday(  s   
z0TestPeriodArray.test_to_timestamp_roundtrip_bdayc                 C  s   t jdddd}d}tjt|d |  W d    n1 s w   Y  tjt|d |j  W d    d S 1 s=w   Y  d S )N1500r   rK   )r"   r!   z7Out of bounds nanosecond timestamp: 1500-01-01 00:00:00rA   )r#   r$   rD   rE   r   r\  r   )r=   r%   ry   r   r   r   test_to_timestamp_out_of_bounds;  s   
"z/TestPeriodArray.test_to_timestamp_out_of_boundsr$  c                 C  8   |  |}|}t||}tt||}t|| d S rQ   r0   r%  r9   rl   r^   r_   r=   r@   r$  r%   r?   rI   rU   r   r   r   r'  E  s
   

z$TestPeriodArray.test_bool_propertiesc                 C  rh  rQ   ri  rj  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 )Nr3   r   zEfloat\(\) argument must be a string or a( real)? number, not 'Period'rA   r	  S20)r9   r   rl   r   r   r^   r_   r   rD   rE   rx   r   )r=   r@   r?   rI   rU   ry   r   r   r   r  Z  s   
z$TestPeriodArray.test_array_interfacec                 C  r9  )N%Yc                 S  r;  )rl  r<  )r   perr   r   r   r   v  r   z1TestPeriodArray.test_strftime.<locals>.<listcomp>r3   r?  r@  r   r   r   rA  r  rB  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 )NrC  z	period[D]r3   rD  )
r   r   r   r=  r9   rl   r|   r   r^   r_   rE  r   r   r   rF  y  s   
z!TestPeriodArray.test_strftime_natN)rw   r   r   r   r0   r   r;   r   r   r4   r   rD   r   r@   rX  r  r0  r   r   r]  re  rg  rG  r'  rH  r(  r  rA  rF  r   r   r   r   rV    s*    






	rV  zarr,casting_natsr+   r   r   r   rK   r   rP   c                 C  
   t | jS rQ   r   rw   r   r   r   r   <lambda>     
 rq  )idsc                 C  sF   t | t| d | d g}|D ]}|  } || d< t| | qd S )NrC   rp   r   )r   r   r   r   r^   r   )r?   casting_natsrU   natr   r   r   test_casting_nat_setitem_array  s   rv  zarr,non_casting_natsc                 C  rn  rQ   ro  rp  r   r   r   rq    rr  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.rA   r   )rD   rE   rx   )r?   non_casting_natsry   ru  r   r   r   test_invalid_nat_setitem_array  s   
rx  r?   r2  re   rL   c                 C  s   t | d< |  }|  }t|d sJ | jdd}|d dks#J | jddd}|d dks2J | j| d  d}|d |d ksFJ | j| d jdd	d}|d |d ks\J t| | d S )
Nr   r   r3   l         )r4   na_valuerC   )ry  Fr  )r   r   to_numpyr9   isnanr^   r   )r?   originalrI   r   r   r   test_to_numpy_extra  s   r}  rX   TFrR  z
2020-01-01z
2020-02-01rC   rp   )unitr8   klassc                 C  s<   |s| j } | || }tjddg|jd}t|| d S )Nr   rC   r3   )r   r   r9   rl   r4   r^   r_   )rR  r  rX   rI   rU   r   r   r   ,test_searchsorted_datetimelike_with_listlike  s
   r  argr6  r7  zEurope/London)rN   c                 C  sB   d}t jt|d | | W d    d S 1 sw   Y  d S )Nz [Unexpected type|Cannot compare]rA   )rD   rE   rx   r   )rR  r  ry   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 )NrO   2020Q2rp   r   r8   c                 S  r   r   )r   )r   sr   r   r   r     r   z?test_period_index_construction_from_strings.<locals>.<listcomp>)r   r^   rk   )r  stringsr>   rI   rU   r   r   r   +test_period_index_construction_from_strings  s
   r  r4   r   rJ  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   r3   r   rJ  r   )r9   rl   r   r
   r   r^   r   r   r   r   r   r#   r5  to_timedeltar   r	   rk   )r4   r>   r?   clsrI   rU   funcidx_clsr   r   r   test_from_pandas_array  s*   



r  
memoryviewrl   daskz
dask.array)marksxarrayc                 C  s   t jg dt jd}| j}|dkrt|}||fS |dkr'td|}||fS |dkr9ddl}|j|}||fS |d	krFd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   r3   r  rl   ir  r   Nr  )r9   rl   r   r   r  
dask.arrayr  	DataArray)r   r?   namer>   r  xrr   r   r   array_likes1  s    

r  c           	      C  s   |\}}t td|  }||}||}t|| ttd|  }||d }||d }t|| t|t	sQt
jt
jd|  }||j}||j}t|| ttd|  }||}||}t|| d S )Nr  r   )r
   r   r   r^   r   r   r   r   r   r  r#   r5  r  rl   r   r	   rk   )	r4   r  r?   r>   r  rU   rI   r  r  r   r   r   test_from_obscure_arrayR  s$   



r  )E
__future__r   rl   r   numpyr9   rD   pandas._libsr   r   r   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*   r.   r/   r   rI  rV  r   r   r   r+  r(   rT  r$   rv  r   rx  r   r}  r5  r   r   r   rR   rZ   r  r  tupler  r  r   
skip_if_nor  r  r   r   r   r   <module>   s    



    
  "w 
	

 
	
 
