a
    oÝEb?¿  ã                   @  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 ©N)Úparam)Úrequest© r   úe/home/ja/django-apps/lartica_env/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-01éd   ©Ú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_index5   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_indexC   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 )	Né
   Úi8©Údtypeé   é  é Êš;r   ©r"   )ÚnpÚarangeÚ	array_cls©ÚselfÚdataÚarrr   r   r   Úarr1dR   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_raisesX   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 r   )r#   ÚCategoricalÚallÚany)r<   rH   Úexpectedr   r   r   Útest_compare_with_Categoricale   s    

z)SharedTests.test_compare_with_CategoricalÚreverseTFÚas_indexc                 C  sÎ   t j||d�}|rt  |¡}|| }}|r4|| }}tj|jtd�}| }	||k}
t |
|¡ ||k}
t |
|	¡ |sÊ|sÊ||k }
t |
|	¡ ||k}
t |
|¡ ||k}
t |
|	¡ ||k}
t |
|¡ d S )N)Úorderedr2   )	r#   rO   ÚCategoricalIndexr8   ÚonesÚshapeÚboolÚtmÚassert_numpy_array_equal)r<   r?   rU   rT   rV   ÚotherÚleftÚrightrX   ZzerosrH   r   r   r   Útest_compare_categorical_dtypes   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   r1   r2   r4   r5   r6   r   r7   )rB   é   é^   )r8   r9   ÚrandomÚshuffler:   r   r/   Ú_simple_newÚtaker[   Úassert_index_equalÚarray)r<   r=   r"   r>   rF   ZtakersrH   rR   r   r   r   Ú	test_take–   s    



zSharedTests.test_takeÚ
fill_valueé   g       @iå  rB   é   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 )Nr0   r1   r2   r4   r5   r6   r   r7   úvalue should be a 'ú' or 'NaT'. Gotr@   r   rB   T©Z
allow_fillrj   )	r8   r9   r:   Ú_scalar_typeÚ__name__rC   rD   Ú	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 s–J ‚d S )Nr0   r1   r2   r4   r5   r6   r   r7   éÿÿÿÿrB   Tro   r   )r8   r9   r:   rf   r   Únan©r<   r=   r>   rH   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   rB   Tro   rm   rn   r@   Úfoo)	rf   Ústrr[   Úassert_equalrp   rq   rC   rD   rr   )r<   r?   rH   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   rB   )r/   Úinsertr   r:   Ú_concat_same_typeÚastypeÚobjectr8   Zconcatenater[   rg   )r<   r?   r>   rF   rH   Ú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 s¤0    Y  d S )Nr0   r1   r2   r4   r5   r6   r   r7   r   z'value' should be a Ú.r@   ry   )r8   r9   r:   Z_unbox_scalarÚ_datar3   ÚtypeÚ
isinstancer   Úscalar_typerq   rC   rD   rE   )r<   r=   r>   rH   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 )Nr0   r1   r2   r4   r5   r6   r   r7   r   rB   )r8   r9   r:   Z_check_compatible_withr   r;   r   r   r   Útest_check_compatible_withç   s
    z&SharedTests.test_check_compatible_withc                 C  sN   t jddd�d d d }| j|dd�}| t|d	 ƒ¡}||d	 ksJJ ‚d S )
Nr0   r1   r2   r4   r5   r6   r   r7   r   )r8   r9   r:   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 )Nr0   r1   r2   r4   r5   r6   r   r7   z)does not support reduction 'not a method'r@   znot a method)r8   r9   r:   rC   rD   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 )Nr0   r1   r2   r4   r5   r6   r   r7   ra   r�   rI   é   )rŒ   )r8   r9   r:   r   Zfillna)r<   rŒ   r=   r>   rj   rH   r   r   r   Ú%test_fillna_method_doesnt_change_origý   s    z1SharedTests.test_fillna_method_doesnt_change_origc                 C  sâ   t jddd�d d d }| j|dd�}| |d	 ¡}|d	k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sÞJ ‚d S )Nr0   r1   r2   r4   r5   r6   r   r7   rB   rk   r_   ©ZsiderI   )	r8   r9   r:   Úsearchsortedrh   Úintpr[   r\   r   )r<   r=   r>   rH   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s¦J ‚|	jt|	d ƒdd�}
|
dksÈJ ‚|	 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 �sÄ0    Y  W d   ƒ n1 �sä0    Y  d S )NrB   rI   ú!timezone comparisons inconsistent©rD   Úreasonr•   rk   r_   r�   c                 S  s   g | ]}t |ƒ‘qS r   ©rz   ©Ú.0Úxr   r   r   Ú
<listcomp>C  ó    zBSharedTests.test_searchsorted_castable_strings.<locals>.<listcomp>r2   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
   rL   ÚtznamerC   ÚmarkÚxfailrr   ÚnodeÚ
add_markerr/   r#   ÚSeriesr‘   rz   r8   rh   r’   r[   r\   rD   ÚreÚescaperp   rq   Zoption_context)r<   r?   r”   r   r    rL   Úts1Úts2r¢   r>   rH   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�   _  rž   zGSharedTests.test_getitem_near_implementation_bounds.<locals>.<listcomp>rB   rŽ   r1   r2   Únsr7   r   )r8   ÚasarrayÚranger:   r#   ÚIndexr¦   )r<   Zi8valsr>   r•   Zserr   r   r   Ú'test_getitem_near_implementation_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sœJ ‚d S )Nr2   rI   r   )ru   r   ru   )r…   r„   r8   Únewaxisr3   r[   r{   )r<   r?   rR   rH   Úarr2dr   r   r   Útest_getitem_2di  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 )NrI   r2   rB   )
r„   r8   r³   r…   re   r3   ÚlistÚlenr†   Úndim)r<   r?   Údata2dr´   rH   rœ   r   r   r   Útest_iter_2dz  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sÀJ ‚d S )
NrI   r2   ú<z>
[
['r   z'],
['rB   rk   z']
]
Shape: (3, 1), dtype: )r„   r8   r³   r…   re   r3   Úreprr†   r   rq   Z
_repr_base)r<   r?   r¹   r´   rH   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 )Nr0   r1   r2   r4   r5   r6   r   r7   rB   r   éþÿÿÿrk   )r8   r9   r:   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   r2   )Úcopyr3   ÚkindÚ
_with_freqr¶   r8   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   rB   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
   rL   r¡   rC   r¢   r£   rr   r¤   r¥   rÃ   r[   r{   rz   )	r<   r?   r   rL   r©   rª   r¢   rR   rH   r   r   r   Útest_setitem_strsÎ  s$    
 ÿzSharedTests.test_setitem_strsc                 C  sd   |  ¡ d d d… }t|tƒs&| d ¡}t |¡}|r>t |¡}|d d d… |d d …< t ||¡ d S )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 s”0    Y  d}tjt|d�� |d g|g < W d   ƒ n1 sÔ0    Y  d}tjt|d��$ |d d… |dd…< W d   ƒ n1 �s0    Y  d S )Nr0   r1   r2   r4   r5   r6   r   r7   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 lengthrB   z=cannot set using a slice indexer with a different length thanrI   )	r8   r9   r:   rC   rD   Ú
IndexErrorrr   r€   rE   )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 sŠ0    Y  d S )	Nrm   z ', 'NaT', or array of those. Gotr@   r   rB   rk   g        g      ð?)rp   rq   rC   rD   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 )Nr0   r1   r2   r4   r5   r6   r   r7   rB   ©Údays)r8   r9   r:   r#   Ú	Timedeltar[   r{   rÀ   r   r   r   Útest_inplace_arithmetic  s    z#SharedTests.test_inplace_arithmeticc                 C  sÄ   t jddd�d d d }| j|dd�}d	}tjt|d
�� |jddd�}W d   ƒ n1 s^0    Y  | ¡ }| jtu rŽtj	j
d|jd�}n
| 	d¡}||d< |d d… |dd …< t ||¡ d S )Nr0   r1   r2   r4   r5   r6   r   r7   zPassing <class 'int'> to shiftr@   rB   )rj   r   ru   )r8   r9   r:   r[   Úassert_produces_warningÚFutureWarningÚshiftrÃ   r   rp   Z_from_ordinalr"   r{   )r<   r=   r>   rs   rH   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 s®J ‚| ¡ }t|ƒt|ƒu sÊJ ‚||ksÖJ ‚|d d…  ¡ tu sîJ ‚|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   rB   F)Úskipna)Úaxis)rØ   r×   r2   )r·   Zmedianr…   r   r†   r   ÚmeanÚreshapeÚ_from_sequencer3   r[   r{   )r<   r?   r>   rR   rH   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©rB   rk   rI   r2   ZInt64)r8   rh   Úint64r:   Úexample_dtyper#   r[   Úassert_extension_array_equal)r<   r>   rR   r=   rH   r   r   r   Útest_from_integer_arrayl  s
    z#SharedTests.test_from_integer_arrayN)2rq   Ú
__module__Ú__qualname__Ú__annotations__rC   Úfixturer?   rG   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¦   r8   rh   r¶   r   rÇ   rÈ   rÊ   rÍ   rÎ   rÒ   rÖ   rÜ   rá   r   r   r   r   r.   O   sp   

üþ	
!
	


7
ûþ



0r.   c                   @  sÚ   e Zd ZeZeZeZdZ	e
jdd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Ze
j dej¡dd„ ƒZe
j dej¡dd„ ƒZdd „ Zd!d"„ Zd#d$„ Z d%d&„ Z!d'd(„ Z"d)S )*ÚTestDatetimeArrayúM8[ns]c                 C  s    |}t jdd||d�}|j}|S )Nz2016-01-01 01:01:00rŽ   ©r!   r"   rL   )r#   r'   r„   )r<   Ztz_naive_fixturer   rL   r(   Údtar   r   r   r?   |  s    zTestDatetimeArray.arr1dc                 C  sj   |   |¡}|jdd�}|tjdd� }| d ¡}t ||¡ |j}|jdd�}|j d ¡}t ||¡ d S )NZ2Tr7   rB   )Úminutes)	r/   Úroundr#   rÑ   rÅ   r[   rg   r„   Úassert_datetime_array_equal)r<   r?   r(   rH   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 sžJ ‚t ||¡ tj|dd�}||usÄJ ‚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]r2   ©r3   rÃ   rÞ   Úfloat64)r
   r8   r¯   r„   r[   r\   rh   r€   r¶   r¿   Úmay_share_memoryrÃ   rz   r   )r<   r)   r>   rH   rR   r3   r   r   r   Útest_array_interface‘  s<    

z&TestDatetimeArray.test_array_interfacec                 C  sT   |}|   |¡}t t|ƒ¡}tj|td�}t ||¡ tj|td�}t ||¡ d S ©Nr2   )r/   r8   rh   r¶   r€   r[   r\   ©r<   r?   r>   r(   rR   rH   r   r   r   Útest_array_object_dtype»  s    
z)TestDatetimeArray.test_array_object_dtypec                 C  s®   |}|   |¡}|j d¡}tj|dd�}t ||¡ tj|dd�}t ||¡ tj|ddd�}|j|ju snJ ‚|jd us|J ‚tj|ddd�}|j|ju sœJ ‚|jd usªJ ‚d S )Nrê   r2   rò   Fró   )r/   r¿   Úviewr8   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 )Nr1   r2   Fró   )r/   r¿   r8   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ê   r2   r   )r8   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 r   )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†   r8   Úndarrayr3   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ƒs’J ‚t t 	|¡t 	|¡¡ d S )Nz0to_perioddelta is deprecated and will be removedr@   r7   )
r
   r[   rÓ   rÔ   Zto_perioddeltar†   r   rg   r#   r±   )r<   r)   r   r(   r>   rs   rR   rH   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 )Nr7   )r
   Ú	to_periodr†   r   r[   rg   r#   r±   )r<   r)   r   r(   r>   rR   rH   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 )NrB   ru   r   )rÚ   rL   ÚUserWarningr[   rÓ   r  Zassert_period_array_equal)r<   r?   r´   ÚwarnrH   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"   Úgetattrr8   rh   r3   r[   r\   )r<   r?   r  r(   r>   rH   rR   r   r   r   Útest_bool_properties1  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@   r2   )	rÔ   r/   r[   rÓ   r  r8   rh   r3   r\   )	r<   r?   r  r
  rs   r(   r>   rH   rR   r   r   r   Útest_int_properties=  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 sŠ0    Y  tjt|d��( |jddgdt	d	ƒd� W d   ƒ n1 sÐ0    Y  |jd urèd 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 �sŽ0    Y  t dd¡}	tjt|d��$ |jddgd|	d� W d   ƒ n1 �sÞ0    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   rB   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_localizerL   rf   rp   rq   rC   rD   rr   r   r   r¬   r8   Útimedelta64rE   r[   rÓ   rÔ   )
r<   r?   Úfixed_now_tsr>   r(   ÚnowrH   rs   rL   r¬   r   r   r   Útest_take_fill_validN  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 )NrK   zto_concat must have the samer@   )rL   r  rC   rD   rE   r~   )r<   r?   r>   r]   r   r   r   Útest_concat_same_type_invalid‚  s    

z/TestDatetimeArray.test_concat_same_type_invalidc                 C  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ÚbrH   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>r2   ©r   r8   rh   r€   r[   r\   ©r<   r?   r>   rH   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-%dr2   )
r
   r   r   r   r8   rh   rv   r€   r[   r\   ©r<   r>   rH   rR   r   r   r   Útest_strftime_nat§  s    
z#TestDatetimeArray.test_strftime_natN)#rq   râ   rã   r   r/   r
   r:   r   r‡   rß   rC   rå   r?   rð   rö   rù   rü   rý   rþ   rÿ   r  r  r  r  r¢   ræ   Ú	_bool_opsr  Ú
_field_opsr  r  r  r  r$  r(  r   r   r   r   ré   v  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†   r8   r  r3   r¶   )r<   r-  r>   r  r   r   r   r  À  s    
z%TestTimedeltaArray.test_astype_objectc                 C  s,   |}t |ƒ}| ¡ }| ¡ }t ||¡ d S r   )r   Zto_pytimedeltar[   r\   ©r<   r-   r-  r>   rR   rH   r   r   r   Útest_to_pytimedeltaÈ  s
    z&TestTimedeltaArray.test_to_pytimedeltac                 C  s.   |}t |ƒ}| ¡ }| ¡ }t ||j¡ d S r   )r   Útotal_secondsr[   r\   Úvaluesr/  r   r   r   Útest_total_secondsÑ  s
    z%TestTimedeltaArray.test_total_secondsr  c                 C  s<   |}t |ƒ}t||ƒ}tjt||ƒ|jd�}t ||¡ d S r÷   )r   r  r8   rh   r3   r[   r\   )r<   r-   r  r-  r>   rH   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 sžJ ‚t ||¡ tj|dd�}||usÄJ ‚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]r2   ró   rÞ   rô   )r   r8   r¯   r„   r[   r\   rh   r€   r¶   r¿   rõ   rÃ   rz   r   )r<   r-   r>   rH   rR   r3   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 sˆ0    Y  | 	d
¡}tjt|d	��$ |jddgd|d� W d   ƒ n1 sÔ0    Y  t
 dd¡}tjt|d	��$ |jddgd|d� W d   ƒ n1 �s$0    Y  d S )NrB   rÏ   ru   Tro   r   rm   rn   r@   r   r   r®   )r   r#   rÑ   rf   rp   rq   rC   rD   rr   r  r8   Ú
datetime64)	r<   r-   r  r-  r>   Ztd1rH   r¬   rs   r   r   r   r    s    2
2z'TestTimedeltaArray.test_take_fill_validN)rq   râ   rã   r	   r/   r   r:   r#   rÑ   r‡   rß   r.  r  r0  r3  rC   r¢   ræ   r*  r  rö   r  r   r   r   r   r+  °  s   
		
	*r+  c                   @  s¾   e Zd ZeZeZeZeg dd�j	Z
ejdd„ ƒZdd„ Zdd„ Zd	d
„ Zej dddg¡dd„ ƒZdd„ Zdd„ Zej dej¡dd„ ƒZej dej¡dd„ ƒZdd„ Zdd„ Zdd„ ZdS ) ÚTestPeriodArrayr   r7   c                 C  s   |j S r   )r„   )r<   r&   r   r   r   r?   -  s    zTestPeriodArray.arr1dc                 C  sR   |   |¡}|}t|ƒt|ƒks"J ‚t |¡}t|tƒs:J ‚t|ƒt|ƒksNJ ‚d S r   )r/   r¶   r#   r±   r†   r   )r<   r?   r%   r>   Zpi2r   r   r   Útest_from_pi1  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  ;  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 s 0    Y  d S )
Nrm   rn   r@   ru   rB   Tro   r   r®   )
r   r¬   rp   rq   rC   rD   rr   rf   r8   r  )r<   r?   r>   r¬   rs   r   r   r   r  C  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)r7  )r/   r
   Úto_timestampr†   r[   rg   r#   r±   )r<   r7  r?   r%   r>   rR   rH   r   r   r   Útest_to_timestampQ  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s”J ‚t ||¡ d S )Nz
2021-10-18rI   r   rN   rk   Z2B)r#   r'   r„   r  r:  r"   r[   rà   )	r<   rì   ZparrrH   Zdta2Zparr2Zresult2Zparr3Zresult3r   r   r   Ú test_to_timestamp_roundtrip_bday^  s    
z0TestPeriodArray.test_to_timestamp_roundtrip_bdayc                 C  s†   t jdddd�}d}tjt|d�� | ¡  W d   ƒ n1 s@0    Y  tjt|d�� |j ¡  W d   ƒ n1 sx0    Y  d S )NZ1500r   rI   )r"   r!   z7Out of bounds nanosecond timestamp: 1500-01-01 00:00:00r@   )r#   r$   rC   rD   r   r:  r„   )r<   r%   rs   r   r   r   Útest_to_timestamp_out_of_boundsq  s    &z/TestPeriodArray.test_to_timestamp_out_of_boundsr  c                 C  s8   |   |¡}|}t||ƒ}t t||ƒ¡}t ||¡ d S r   ©r/   r  r8   rh   r[   r\   ©r<   r?   r  r%   r>   rH   rR   r   r   r   r  {  s
    

z$TestPeriodArray.test_bool_propertiesc                 C  s8   |   |¡}|}t||ƒ}t t||ƒ¡}t ||¡ d S r   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 s˜0    Y  t j|dd�}t  |¡ d¡}t ||¡ d S )Nr2   rÞ   zEfloat\(\) argument must be a string or a( real)? number, not 'Period'r@   rô   ZS20)r8   r¯   rh   r¶   r€   r[   r\   r¿   rC   rD   rr   r   )r<   r?   r>   rH   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 )r@  r  )r›   Zperr   r   r   r�   ¬  rž   z1TestPeriodArray.test_strftime.<locals>.<listcomp>r2   r"  r#  r   r   r   r$  ¨  s    
zTestPeriodArray.test_strftimec                 C  sB   t tdtgdd�ƒ}| d¡}tjdtjgtd�}t 	||¡ d S )Nr%  z	period[D]r2   r&  )
r   r   r   r   r8   rh   rv   r€   r[   r\   r'  r   r   r   r(  ¯  s    
z!TestPeriodArray.test_strftime_natN)rq   râ   rã   r   r/   r   r:   r   r‡   r3   rß   rC   rå   r?   r6  r  r  r¢   ræ   r;  r<  r=  r)  r  r*  r  rö   r$  r(  r   r   r   r   r5  '  s(   






	r5  zarr,casting_natsr*   r   r®   r   rI   r   rN   c                 C  s
   t | ƒjS r   ©r…   rq   ©rœ   r   r   r   Ú<lambda>Å  rž   rC  )Úidsc                 C  sF   t | ƒ t| d | d g¡}|D ] }|  ¡ } || d< t | |¡ q d S )NrB   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 r   rA  rB  r   r   r   rC  à  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   )rC   rD   rr   )r>   Znon_casting_natsrs   rE  r   r   r   Útest_invalid_nat_setitem_arrayÐ  s
    ÿrG  r>   r  ra   rJ   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sŒJ ‚| j| d jdd	�d�}|d |d ks¸J ‚t | |¡ d S )
Nr   rÞ   r2   lûÿÿÿ         )r3   Úna_valuerB   )rH  Frñ   )r   rÃ   Zto_numpyr8   Úisnanr[   r{   )r>   ÚoriginalrH   r   r   r   Útest_to_numpy_extraí  s    rK  rU   TFr2  z
2020-01-01z
2020-02-01rB   rk   )Úunitr7   Úklassc                 C  s<   |s
| j } |  || ƒ¡}tjddg|jd�}t ||¡ d S )Nr   rB   r2   )r„   r‘   r8   rh   r3   r[   r\   )r2  rM  rU   rH   rR   r   r   r   Ú,test_searchsorted_datetimelike_with_listlike
  s
    rN  Úargr  r  zEurope/London)rL   c                 C  s@   d}t jt|d�� |  |¡ W d   ƒ n1 s20    Y  d S )Nz [Unexpected type|Cannot compare]r@   )rC   rD   rr   r‘   )r2  rO  rs   r   r   r   Ú:test_searchsorted_datetimelike_with_listlike_invalid_dtype*  s    rP  c                 C  sB   ddgd }| |ƒ}t |dd�}t dd„ |D ƒƒ}t ||¡ d S )NrM   Z2020Q2rk   r   r7   c                 S  s   g | ]}t |ƒ‘qS r   )r   )r›   Úsr   r   r   r�   B  rž   z?test_period_index_construction_from_strings.<locals>.<listcomp>)r   r[   rg   )rM  Ústringsr=   rH   rR   r   r   r   Ú+test_period_index_construction_from_strings<  s
    rS  r3   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Ý   r2   ©rê   r,  r   )r8   rh   r   r
   r   r[   rà   rÛ   r   r   r{   r#   r  Úto_timedeltar   r	   rg   )r3   r=   r>   ÚclsrH   rR   ÚfuncÚidx_clsr   r   r   Útest_from_pandas_arrayF  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r‚dd l}| |¡}||fS )	NrÝ   r2   rZ  rh   r   Úir[  r\  )r8   rh   rÞ   r   rZ  Z
dask.arrayr\  Z	DataArray)r   r>   Únamer=   rh   r[  Zxrr   r   r   Úarray_likesg  s    


r_  c           	      C  sÐ   |\}}t tdœ|  }||ƒ}| |¡}t ||¡ ttdœ|  }||ƒd }||ƒd }t ||¡ t|t	ƒs¢t
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   )	r3   r_  r>   r=   rV  rR   rH   rW  rX  r   r   r   Útest_from_obscure_array‡  s$    



r`  )EÚ
__future__r   r§   Únumpyr8   rC   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+  r5  r¢   ræ   r„   r  r'   r4  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 þþ÷ó
	þþþ÷ð
þþ
ýþùþýþ ÿ
	
 üÿ
