U
    ÎZj'Á  ã                   @  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 dd	d
dddgd�dd„ ƒZ!ej dd„ ƒZ"ej dd„ ƒZ#ej dd„ ƒZ$G dd„ dƒZ%G dd„ de%ƒZ&G dd„ de%ƒZ'G dd„ de%ƒZ(ej)j*ded d!d"gƒj+ee ,d"d#¡ffej-d$d%dd&�j+ee .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d d!d"gƒ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) *d0ej-d1d2d3�j3ej4d1d2d3�j3g¡d4d5„ ƒZ5ej) *d6d7d8g¡ej) *d9e 6d:d;g¡ed<d=gdd>�ed:d;gdd?�g¡ej) *d@e7ej3ej3ej8ej9ej:ej;g¡dAdB„ ƒƒƒZ<ej) *d9e 6d:d;g¡ed<d=gdd>�ed:d;gdd?�g¡ej) *dCd<d=gdDdEge	d:dFdG�gd= g¡dHdI„ ƒƒZ=ej) *d@e7e>ej3ej8g¡dJdK„ ƒZ?ej) *dLdMdNg¡dOdP„ ƒZ@ej dQdRejAdSe BdT¡dU�ejAdVe BdV¡dU�gd�dWdX„ ƒZCej) *dLdMdNg¡dYdZ„ ƒZDdS )[é    )Ú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   úh/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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_index6   s    
r(   c                   C  s   t dddgƒS )a  
    A fixture to provide TimedeltaIndex objects with different frequencies.
     Most TimedeltaArray behavior is already tested in TimedeltaIndex tests,
    so here we just test that the TimedeltaArray behavior matches
    the TimedeltaIndex behavior.
    ú1 Dayú3 Hoursr   )r	   r   r   r   r   Útimedelta_indexD   s    	r+   c                   @  s  e Zd ZU ded< ejdd„ ƒZdd„ Zej 	de
jdd	d
�e
jdd	dd�e
jdd	d
�e
jdd	dd�g¡dd„ ƒZej 	dddg¡ej 	dddg¡dd„ ƒƒZdd„ Zej 	ddde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 	d8d9d:d;g¡d<d=„ ƒZd>d?„ Zd@dA„ ZdBdC„ Z dDdE„ Z!dFdG„ Z"ej 	d8e
j#e
j$e%j&e'e(g¡dHdI„ ƒZ)dJdK„ Z*ej 	dddg¡dLdM„ ƒZ+dNdO„ Z,ej 	d8e'e%j&e
j#e
j$g¡dPdQ„ ƒZ-dRdS„ Z.dTdU„ Z/dVdW„ Z0dXdY„ Z1d9S )ZÚ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  sd   |}|   |¡}tjtdd�� ||d d… k W 5 Q R X tjtdd�� ||dg k W 5 Q R X d S )NzLengths must match©Úmatché   r   )r-   ÚpytestÚraisesÚ
ValueError)r:   r=   r<   Úidxr   r   r   Útest_compare_len1_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t‚t||kƒr*t‚d S ©N)r"   ÚCategoricalÚallÚAssertionErrorÚany)r:   rF   Ú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)Úorderedr0   )	r"   rN   ÚCategoricalIndexr6   ÚonesÚshapeÚboolÚtmÚassert_numpy_array_equal)r:   r=   rU   rT   rV   ÚotherÚleftÚrightrX   ZzerosrF   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k	r4d nd}| j||d�}| j |¡}d	d
dg}| |¡}| |¡}t	 
|  |¡|¡ t  d	d
dg¡}| |¡}| |¡}t	 
|  |¡|¡ d S )Nr   r/   r0   r2   r3   r4   r   r5   r@   é   é^   )r6   r7   ÚrandomÚshuffler8   r   r-   Ú_simple_newÚtaker[   Úassert_index_equalÚarray)r:   r;   r!   r<   rD   ZtakersrF   rR   r   r   r   Ú	test_take˜   s    




zSharedTests.test_takeÚ
fill_valueé   g       @iå  r@   é   c              	   C  sj   t jddd�d d d }| j|dd�}d	|jj› d
�}tjt|d�� |jddgd|d� W 5 Q R X d S )Nr.   r/   r0   r2   r3   r4   r   r5   úvalue should be a 'ú' or 'NaT'. Gotr>   r   r@   T©Z
allow_fillrj   )	r6   r7   r8   Ú_scalar_typeÚ__name__rA   rB   Ú	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ksLt‚|jd	d
gdt jd�}|d tksrt‚|jd	d
gdtd�}|d tks–t‚d S )Nr.   r/   r0   r2   r3   r4   r   r5   éÿÿÿÿr@   Tro   r   )r6   r7   r8   rf   r   rP   Únan©r:   r;   r<   rF   r   r   r   Útest_take_fill·   s    zSharedTests.test_take_fillc              	   C  sv   |j ddgdt|d ƒd�}|ddg }t ||¡ d|jj› d�}tjt|d�� |j ddgddd� W 5 Q R X d S )	Nru   r@   Tro   rm   rn   r>   Úfoo)	rf   Ústrr[   Úassert_equalrp   rq   rA   rB   rr   )r:   r=   rF   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   r@   )r-   Úinsertr   r8   Ú_concat_same_typeÚastypeÚobjectr6   Zconcatenater[   rg   )r:   r=   r<   rD   rF   Ú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||ƒsNt‚| t	¡}t||ƒsft‚d
| j
j› d�}tjt|d�� | d¡ W 5 Q R X d S )Nr.   r/   r0   r2   r3   r4   r   r5   r   z'value' should be a Ú.r>   ry   )r6   r7   r8   Z_unbox_scalarÚ_datar1   ÚtypeÚ
isinstancerP   r   Úscalar_typerq   rA   rB   rC   )r:   r;   r<   rF   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.   r/   r0   r2   r3   r4   r   r5   r   r@   )r6   r7   r8   Z_check_compatible_withr   r9   r   r   r   Útest_check_compatible_withé   s
    z&SharedTests.test_check_compatible_withc                 C  sN   t jddd�d d d }| j|dd�}| t|d	 ƒ¡}||d	 ksJt‚d S )
Nr.   r/   r0   r2   r3   r4   r   r5   r   )r6   r7   r8   Z_scalar_from_stringrz   rP   rw   r   r   r   Útest_scalar_from_stringñ   s    z#SharedTests.test_scalar_from_stringc              	   C  sT   t jddd�d d d }| j|dd�}d	}tjt|d
�� | d¡ W 5 Q R X d S )Nr.   r/   r0   r2   r3   r4   r   r5   z)does not support reduction 'not a method'r>   znot a method)r6   r7   r8   rA   rB   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sdt‚|d	 tkstt‚d S )Nr.   r/   r0   r2   r3   r4   r   r5   ra   r�   rG   é   )rŒ   )r6   r7   r8   r   ZfillnarP   )r:   rŒ   r;   r<   rj   rF   r   r   r   Ú%test_fillna_method_doesnt_change_origÿ   s    z1SharedTests.test_fillna_method_doesnt_change_origc                 C  sâ   t jddd�d d d }| j|dd�}| |d	 ¡}|d	ksBt‚|j|d
 dd�}|dks`t‚| |d	d… ¡}t jd	d
gt jd�}t ||¡ |j|d	d… dd�}t jd
dgt jd�}t ||¡ | t	¡}|dksÞt‚d S )Nr.   r/   r0   r2   r3   r4   r   r5   r@   rk   r_   ©ZsiderG   )
r6   r7   r8   ÚsearchsortedrP   rh   Úintpr[   r\   r   )r:   r;   r<   rF   rR   r   r   r   Útest_searchsorted  s    
zSharedTests.test_searchsortedÚboxNÚindexZseriesc              
   C  s°  t |tƒr\|j}|dd… \}}|d k	r\|j |¡|j |¡kr\tjjtdd�}|j 	|¡ |}	|d krjn|dkr~|  
|	¡}	n
t |	¡}	|	 t|	d ƒ¡}
|
dks¦t‚|	jt|	d ƒdd�}
|
dksÈt‚|	 d	d
„ |	dd… D ƒ¡}
tjddgtjd�}t |
|¡ tjtt d|jj› d�¡d�� |	 d¡ W 5 Q R X |dk�rHdnd}t d|¡�N tjtt d|jj› d|› d�¡d�� |	 t|	d ƒdg¡ W 5 Q R X W 5 Q R X d S )Nr@   rG   ú!timezone comparisons inconsistent©rB   Úreasonr•   rk   r_   r�   c                 S  s   g | ]}t |ƒ‘qS r   ©rz   ©Ú.0Úxr   r   r   Ú
<listcomp>E  s     zBSharedTests.test_searchsorted_castable_strings.<locals>.<listcomp>r0   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
   rJ   ÚtznamerA   ÚmarkÚxfailrr   ÚnodeÚ
add_markerr-   r"   ÚSeriesr‘   rz   rP   r6   rh   r’   r[   r\   rB   ÚreÚescaperp   rq   Zoption_context)r:   r=   r”   r   rŸ   rJ   Úts1Úts2r¡   r<   rF   rR   Zarr_typer   r   r   Ú"test_searchsorted_castable_strings&  sL    
  ÿ
ÿþÿþz.SharedTests.test_searchsorted_castable_stringsc                 C  s\   t jdd„ tddƒD ƒdd�}| j|dd�}|d	  t |¡}|d	  t |¡}|d	  d S )
Nc                 S  s   g | ]}t j| ‘qS r   )r   Úvalue)r›   Únr   r   r   r�   a  s     zGSharedTests.test_getitem_near_implementation_bounds.<locals>.<listcomp>r@   rŽ   r/   r0   Únsr5   r   )r6   ÚasarrayÚranger8   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œt‚d S )Nr0   rG   r   )ru   r   ru   )r…   r„   r6   Únewaxisr1   r[   r{   rP   )r:   r=   rR   rF   Ú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@t‚|D ]4}t	|t|ƒƒsZt‚|j
dksht‚|j|jksDt‚qDd S )NrG   r0   r@   )r„   r6   r²   r…   re   r1   ÚlistÚlenrP   r†   Úndim)r:   r=   Údata2dr³   rF   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sÀt‚d S )
NrG   r0   ú<z>
[
['r   z'],
['r@   rk   z']
]
Shape: (3, 1), dtype: )r„   r6   r²   r…   re   r1   Úreprr†   r   rq   Z
_repr_baserP   )r:   r=   r¸   r³   rF   rR   r   r   r   Útest_repr_2d†  s    
@ÿ4ÿ
zSharedTests.test_repr_2dc                 C  s¢   t jddd�d d d }| j|dd�}|d	 |d
< t jddd�d d d }|d	 |d
< t |j|¡ |dd … |d d…< |dd … |d d…< t |j|¡ d S )Nr.   r/   r0   r2   r3   r4   r   r5   r@   r   éþÿÿÿrk   )r6   r7   r8   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kr(| d ¡}|}|tkr>t|ƒ}nF|tjkrZt | t¡¡}n*|t	krv|tj
|td�ƒ}n||ƒ t¡}||d d …< t ||¡ d S )Nru   )Úmr   r0   )Úcopyr1   ÚkindÚ
_with_freqrµ   r6   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 k	r\|j |¡|j |¡kr\tjjtdd�}|j 	|¡ | 
¡ }|dd … |ddg< | 
¡ }dd„ |dd … D ƒ|d d…< t ||¡ | 
¡ }|d	 |d< | 
¡ }t|d	 ƒ|d< t ||¡ d S )
Nr½   r–   r—   r   r@   c                 S  s   g | ]}t |ƒ‘qS r   r™   rš   r   r   r   r�   ã  s     z1SharedTests.test_setitem_strs.<locals>.<listcomp>rk   ru   )r†   r
   rJ   r    rA   r¡   r¢   rr   r£   r¤   rÂ   r[   r{   rz   )	r:   r=   r   rJ   r¨   r©   r¡   rR   rF   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"   rN   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 5 Q R X tjtdd�� tƒ |d	< W 5 Q R X d}tjt|d�� |d g|g < W 5 Q R X d}tjt|d�� |d d… |dd…< W 5 Q R X d S )Nr.   r/   r0   r2   r3   r4   r   r5   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 lengthr@   z=cannot set using a slice indexer with a different length thanrG   )	r6   r7   r8   rA   rB   Ú
IndexErrorrr   r€   rC   )r:   r;   r<   Úvalrs   r   r   r   Útest_setitem_raisesü  s    zSharedTests.test_setitem_raisesc              	   C  sp   d|j j› d�}tjt|d�� |ddgƒ|d d…< W 5 Q R X tjt|d�� |ddgƒ|d d…< W 5 Q R X d S )	Nrm   z ', 'NaT', or array of those. Gotr>   r   r@   rk   g        g      ð?)rp   rq   rA   rB   rr   )r:   r=   r”   rs   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 )Nr.   r/   r0   r2   r3   r4   r   r5   r@   ©Údays)r6   r7   r8   r"   Ú	Timedeltar[   r{   r¿   r   r   r   Útest_inplace_arithmetic  s    z#SharedTests.test_inplace_arithmeticc              	   C  s°   t jddd�d d d }| j|dd�}d	}tjt|d
�� |jddd�}W 5 Q R X | ¡ }| jtkrz|j	j
d|jd�}n
| 	d¡}||d< |d d… |dd …< t ||¡ d S )Nr.   r/   r0   r2   r3   r4   r   r5   zPassing <class 'int'> to shiftr>   r@   )rj   r   ru   )r6   r7   r8   r[   Úassert_produces_warningÚFutureWarningÚshiftrÂ   r   rp   Z_from_ordinalr!   r{   )r:   r;   r<   rs   rF   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|ƒksLt‚||ksXt‚t|t |ƒd < t|tƒsš|t |ƒd d t |ƒd d …  ¡ }|jdd�tks®t‚| ¡ }t|ƒt|ƒksÊt‚||ksÖt‚|d d…  ¡ tksît‚|d d… jdd�tk�st‚| dd¡}|jd d�}t|ƒt|ƒk�s:t‚||k�sHt‚|jd dd�tk�s`t‚|jdd�}t|ƒj	|g|j
d	�}t ||¡ |jddd�}t|ƒj	tg|j
d	�}t ||¡ |jdd�}t ||¡ |jddd�}t ||¡ d S )
Nrk   r   ru   r@   F)Úskipna)Úaxis)r×   rÖ   r0   )r¶   Zmedianr…   rP   r   r†   r   ZmeanÚreshapeÚ_from_sequencer1   r[   r{   )r:   r=   r<   rR   rF   r�   Z	expected2r   r   r   Útest_median>  s>    
(zSharedTests.test_medianc                 C  sT   t jdddgt jd�}| j|| jd�}tj|dd�}| j|| jd�}t ||¡ d S )Nr@   rk   rG   r0   ZInt64)r6   rh   Úint64r8   Úexample_dtyper"   r[   Úassert_extension_array_equal)r:   r<   rR   r;   rF   r   r   r   Útest_from_integer_arrayn  s
    z#SharedTests.test_from_integer_array)2rq   Ú
__module__Ú__qualname__Ú__annotations__rA   Úfixturer=   rE   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¥   r6   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!   rJ   )r"   r&   r„   )r:   Ztz_naive_fixturer   rJ   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2Tr5   r@   )Úminutes)	r-   Úroundr"   rÐ   rÄ   r[   rg   r„   Úassert_datetime_array_equal)r:   r=   r'   rF   rR   ré   r   r   r   Ú
test_round‰  s    

zTestDatetimeArray.test_roundc                 C  s€  t |ƒ}t |¡}|j}||ks$t‚t ||¡ tj|dd�}||ksJt‚t ||¡ tj|dd�}|j}||ksvt‚t ||¡ tj|ddd�}||ksžt‚t ||¡ tj|dd�}||k	sÄt‚t ||¡ tj|td�}tjt	|ƒtd�}t ||¡ tj|dd�}||j
k	�st‚t ||¡�r,t‚|j
 ¡ }t ||¡ dtfD ]0}tj||d�}t |¡ |¡}t ||¡ �qJd S )NF©rÂ   údatetime64[ns]r0   ©r1   rÂ   rÛ   Úfloat64)r
   r6   r®   r„   rP   r[   r\   rh   r€   rµ   r¾   Úmay_share_memoryrÂ   rz   r   )r:   r(   r<   rF   rR   r1   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 ©Nr0   )r-   r6   rh   rµ   r€   r[   r\   ©r:   r=   r<   r'   rR   rF   r   r   r   Útest_array_object_dtypeÁ  s    
z)TestDatetimeArray.test_array_object_dtypec                 C  s®   |}|   |¡}|j d¡}tj|dd�}t ||¡ tj|dd�}t ||¡ tj|ddd�}|j|jksnt‚|jd k	s|t‚tj|ddd�}|j|jksœt‚|jd k	sªt‚d S )Nrç   r0   rï   Frð   )	r-   r¾   Úviewr6   rh   r[   r\   ÚbaserP   rõ   r   r   r   Útest_array_tzÏ  s    
zTestDatetimeArray.test_array_tzc                 C  s|   |}|   |¡}|j}tj|dd�}t ||¡ tj|tjd�}t ||¡ tj|ddd�}|j|jk	sjt‚|jd ksxt‚d S )Nr/   r0   Frð   )	r-   r¾   r6   rh   r[   r\   rÛ   rø   rP   rõ   r   r   r   Útest_array_i8_dtypeã  s    
z%TestDatetimeArray.test_array_i8_dtypec                 C  sL   t jddgdd�}t|ƒ}|j|ks(t‚t|d d… ƒ}|jj|ksHt‚d S )Nr   z
2000-01-02rç   r0   r   )r6   rh   r
   r„   rP   rø   )r:   r<   ré   r   r   r   Útest_from_array_keeps_baseó  s
    z,TestDatetimeArray.test_from_array_keeps_basec                 C  sR   |}|   |¡}t|ƒt|ƒks"t‚t |¡}t|tƒs:t‚t|ƒt|ƒksNt‚d S rM   )r-   rµ   rP   r"   r°   r†   r   )r:   r=   r<   r'   Zdti2r   r   r   Útest_from_dtiü  s    

zTestDatetimeArray.test_from_dtic                 C  sN   |}|   |¡}| d¡}t|tjƒs(t‚|jdks6t‚t|ƒt|ƒksJt‚d S ©NÚO©r-   r   r†   r6   ÚndarrayrP   r1   rµ   )r:   r=   r<   r'   Úasobjr   r   r   Útest_astype_object  s    

z$TestDatetimeArray.test_astype_objectc              	   C  s†   |}t |ƒ}d}tjt|d�� |j|d�}W 5 Q R X tjt|d�� |j|d�}W 5 Q R X t|tƒsjt‚t t	 
|¡t	 
|¡¡ d S )Nz0to_perioddelta is deprecated and will be removedr>   r5   )r
   r[   rÒ   rÓ   Zto_perioddeltar†   r   rP   rg   r"   r°   )r:   r(   r   r'   r<   rs   rR   rF   r   r   r   Útest_to_perioddelta  s    z%TestDatetimeArray.test_to_perioddeltac                 C  sN   |}t |ƒ}|j|d�}|j|d�}t|tƒs2t‚t t |¡t |¡¡ d S )Nr5   )	r
   Ú	to_periodr†   r   rP   r[   rg   r"   r°   )r:   r(   r   r'   r<   rR   rF   r   r   r   Útest_to_period"  s    z TestDatetimeArray.test_to_periodc              	   C  s`   |  dd¡}|jd krd nt}t |¡�" | d¡}| d¡  dd¡}W 5 Q R X t ||¡ d S )Nr@   ru   r   )rØ   rJ   ÚUserWarningr[   rÒ   r  Zassert_period_array_equal)r:   r=   r³   ÚwarnrF   rR   r   r   r   Útest_to_period_2d.  s    
z#TestDatetimeArray.test_to_period_2dÚpropnamec                 C  sN   |   |¡}|}|j|jkst‚t||ƒ}tjt||ƒ|jd�}t ||¡ d S rô   )	r-   r!   rP   Úgetattrr6   rh   r1   r[   r\   )r:   r=   r	  r'   r<   rF   rR   r   r   r   Útest_bool_properties7  s    

z&TestDatetimeArray.test_bool_propertiesc           	   	   C  sl   d }d}|dkrt }|  |¡}|}tj||d��& t||ƒ}tjt||ƒ|jd�}W 5 Q R X t ||¡ d S )Nz4weekofyear and week have been deprecated, please use)ÚweekZ
weekofyearr>   r0   )	rÓ   r-   r[   rÒ   r
  r6   rh   r1   r\   )	r:   r=   r	  r  rs   r'   r<   rF   rR   r   r   r   Útest_int_propertiesC  s    

 z%TestDatetimeArray.test_int_propertiesc           
   
   C  sä  |}|   |¡}| |j¡}|jddgd|d�}|d |ks>t‚d|jj› d�}tjt	|d�� |jddgd|| d� W 5 Q R X tjt	|d�� |jddgdt
d	ƒd� W 5 Q R X |jd k	rÀd nd
}| |¡}d}tjt	|d�� |jddgd|d� W 5 Q R X tj}	d|jj› d�}tjt	|d�� |jddgd|	d� W 5 Q R X t dd¡}	tjt	|d�� |jddgd|	d� W 5 Q R X |jd k	�rà| d¡}	d}tjt|d��4 tjtdd�� |jddgd|	d�}W 5 Q R X W 5 Q R X d S )Nru   r@   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_localizerJ   rf   rP   rp   rq   rA   rB   rr   r   r   r«   r6   Útimedelta64rC   r[   rÒ   rÓ   )
r:   r=   Úfixed_now_tsr<   r'   ÚnowrF   rs   rJ   r«   r   r   r   Útest_take_fill_validT  s>    
""

 ÿz&TestDatetimeArray.test_take_fill_validc              	   C  sP   |}|j d kr| d¡}n
| d ¡}tjtdd�� | ||g¡ W 5 Q R X d S )NrI   zto_concat must have the samer>   )rJ   r  rA   rB   rC   r~   )r:   r=   r<   r]   r   r   r   Útest_concat_same_type_invalidˆ  s    

z/TestDatetimeArray.test_concat_same_type_invalidc                 C  sf   t tjddddd�ƒ}t tjddddd�ƒ}t  ||g¡}t t dddd	g¡ d¡ƒ}t ||¡ d S )
NÚ2000rk   r   z
US/Centralrè   ÚHz2000-01-01 00:00:00z2000-01-02 00:00:00z2000-01-01 01:00:00)r
   r"   r&   r~   Úto_datetimer  r[   rì   )r:   ÚaÚbrF   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�   ª  s     z3TestDatetimeArray.test_strftime.<locals>.<listcomp>r0   ©r  r6   rh   r€   r[   r\   ©r:   r=   r<   rF   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-%dr0   )
r
   r   r   r  r6   rh   rv   r€   r[   r\   ©r:   r<   rF   rR   r   r   r   Útest_strftime_nat­  s    
z#TestDatetimeArray.test_strftime_natN)#rq   rß   rà   r   r-   r
   r8   r   r‡   rÜ   rA   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(t‚t |¡}t|t ƒs@t‚t|ƒt|ƒksTt‚d S )Nr)   r*   )r	   r   rµ   rP   r"   r°   r†   )r:   Útdir<   Ztdi2r   r   r   Útest_from_tdi¼  s    
z TestTimedeltaArray.test_from_tdic                 C  sT   t ddgƒ}t|ƒ}| d¡}t|tjƒs.t‚|jdks<t‚t|ƒt|ƒksPt‚d S )Nr)   r*   rþ   )	r	   r   r   r†   r6   r   rP   r1   rµ   )r:   r)  r<   r  r   r   r   r  Æ  s    
z%TestTimedeltaArray.test_astype_objectc                 C  s,   |}t |ƒ}| ¡ }| ¡ }t ||¡ d S rM   )r   Zto_pytimedeltar[   r\   ©r:   r+   r)  r<   rR   rF   r   r   r   Útest_to_pytimedeltaÎ  s
    z&TestTimedeltaArray.test_to_pytimedeltac                 C  s.   |}t |ƒ}| ¡ }| ¡ }t ||j¡ d S rM   )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
  r6   rh   r1   r[   r\   )r:   r+   r	  r)  r<   rF   rR   r   r   r   r  à  s
    
z&TestTimedeltaArray.test_int_propertiesc                 C  s€  t |ƒ}t |¡}|j}||ks$t‚t ||¡ tj|dd�}||ksJt‚t ||¡ tj|dd�}|j}||ksvt‚t ||¡ tj|ddd�}||ksžt‚t ||¡ tj|dd�}||k	sÄt‚t ||¡ tj|td�}tjt	|ƒtd�}t ||¡ tj|dd�}||j
k	�st‚t ||¡�r,t‚|j
 ¡ }t ||¡ dtfD ]0}tj||d�}t |¡ |¡}t ||¡ �qJd S )NFrî   ztimedelta64[ns]r0   rð   rÛ   rñ   )r   r6   r®   r„   rP   r[   r\   rh   r€   rµ   r¾   rò   rÂ   rz   r   )r:   r+   r<   rF   rR   r1   r   r   r   ró   ê  s<    

z'TestTimedeltaArray.test_array_interfacec           	   	   C  sô   |}t |ƒ}tjdd�}|jddgd|d�}|d |ks<t‚|}d|jj› d�}tjt	|d	�� |jddgd|d� W 5 Q R X | 
d
¡}tjt	|d	�� |jddgd|d� W 5 Q R X t dd¡}tjt	|d	�� |jddgd|d� W 5 Q R X d S )Nr@   rÎ   ru   Tro   r   rm   rn   r>   r   r   r­   )r   r"   rÐ   rf   rP   rp   rq   rA   rB   rr   r  r6   Ú
datetime64)	r:   r+   r  r)  r<   Ztd1rF   r«   rs   r   r   r   r    s    
z'TestTimedeltaArray.test_take_fill_validN)rq   rß   rà   r	   r-   r   r8   r"   rÐ   r‡   rÜ   r*  r  r,  r/  rA   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   r5   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"t‚t |¡}t|tƒs:t‚t|ƒt|ƒksNt‚d S rM   )r-   rµ   rP   r"   r°   r†   r   )r:   r=   r$   r<   Zpi2r   r   r   Útest_from_pi:  s    

zTestPeriodArray.test_from_pic                 C  sN   |   |¡}|}| d¡}t|tjƒs(t‚|jdks6t‚t|ƒt|ƒksJt‚d S rý   rÿ   )r:   r=   r$   r<   r  r   r   r   r  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 5 Q R X t 	dd	¡}tjt|d�� |jddgd|d� W 5 Q R X d S )
Nrm   rn   r>   ru   r@   Tro   r   r­   )
r   r«   rp   rq   rA   rB   rr   rf   r6   r  )r:   r=   r<   r«   rs   r   r   r   r  L  s    z$TestPeriodArray.test_take_fill_validÚhowÚSÚEc                 C  sT   |   |¡}|}t|j|d�ƒ}|j|d�}t|tƒs8t‚t t |¡t |¡¡ d S )N)r3  )	r-   r
   Úto_timestampr†   rP   r[   rg   r"   r°   )r:   r3  r=   r$   r<   rR   rF   r   r   r   Útest_to_timestampZ  s    
z!TestPeriodArray.test_to_timestampc           	      C  s¤   t jdddd�j}| ¡ }| ¡ }|jdks0t‚t ||¡ |d d d… }| ¡ }| ¡ }|jdksht‚t ||¡ | d¡}| ¡ }|jdks”t‚t ||¡ d S )Nz
2021-10-18rG   r   rL   rk   Z2B)	r"   r&   r„   r  r6  r!   rP   r[   rÝ   )	r:   ré   ZparrrF   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 5 Q R X tjt|d�� |j ¡  W 5 Q R X d S )NZ1500r   rG   )r!   r    z7Out of bounds nanosecond timestamp: 1500-01-01 00:00:00r>   )r"   r#   rA   rB   r   r6  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 rM   ©r-   r
  r6   rh   r[   r\   ©r:   r=   r	  r$   r<   rF   rR   r   r   r   r  „  s
    

z$TestPeriodArray.test_bool_propertiesc                 C  s8   |   |¡}|}t||ƒ}t t||ƒ¡}t ||¡ d S rM   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 5 Q R X t j|dd�}t  |¡ d¡}t ||¡ d S )Nr0   rÛ   zEfloat\(\) argument must be a string or a( real)? number, not 'Period'r>   rñ   ZS20)r6   r®   rh   rµ   r€   r[   r\   r¾   rA   rB   rr   r   )r:   r=   r<   rF   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�   µ  s     z1TestPeriodArray.test_strftime.<locals>.<listcomp>r0   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]r0   r"  )
r   r   r   r  r6   rh   rv   r€   r[   r\   r#  r   r   r   r$  ¸  s    
z!TestPeriodArray.test_strftime_natN)rq   rß   rà   r   r-   r   r8   r   r‡   r1   rÜ   rA   râ   r=   r2  r  r  r¡   rã   r7  r8  r9  r%  r  r&  r  ró   r   r$  r   r   r   r   r1  -  s(   






	r1  zarr,casting_natsr)   r*   r   r­   r   rG   rL   c                 C  s
   t | ƒjS rM   ©r…   rq   ©rœ   r   r   r   Ú<lambda>Î  ó    r?  )Zidsc                 C  sF   t | ƒ t| d | d g¡}|D ] }|  ¡ } || d< t | |¡ q d S )Nr@   rk   r   )r…   rÙ   r   rÂ   r[   r{   )r<   Zcasting_natsrR   Únatr   r   r   Útest_casting_nat_setitem_arrayÁ  s
    rB  zarr,non_casting_natsc                 C  s
   t | ƒjS rM   r=  r>  r   r   r   r?  é  r@  c              
   C  s4   d}|D ]&}t jt|d�� || d< W 5 Q R X qd S )Nzwvalue should be a '(Timestamp|Timedelta|Period)', 'NaT', or array of those. Got '(timedelta64|datetime64|int)' instead.r>   r   )rA   rB   rr   )r<   Znon_casting_natsrs   rA  r   r   r   Útest_invalid_nat_setitem_arrayÙ  s
    ÿrC  r<   r  ra   rH   c                 C  sÈ   t | d< |  ¡ }|  ¡ }t |d ¡s*t‚| jdd�}|d dksFt‚| jddd�}|d dksdt‚| j| d  ¡ d�}|d |d ksŒt‚| j| d jdd	�d�}|d |d ks¸t‚t | |¡ d S )
Nr   rÛ   r0   lûÿÿÿ         )r1   Úna_valuer@   )rD  Frî   )r   rÂ   Zto_numpyr6   ÚisnanrP   r[   r{   )r<   ÚoriginalrF   r   r   r   Útest_to_numpy_extraö  s    rG  rU   TFr.  z
2020-01-01z
2020-02-01r@   rk   )Úunitr5   Úklassc                 C  s<   |s
| j } |  || ƒ¡}tjddg|jd�}t ||¡ d S )Nr   r@   r0   )r„   r‘   r6   rh   r1   r[   r\   )r.  rI  rU   rF   rR   r   r   r   Ú,test_searchsorted_datetimelike_with_listlike  s
    rJ  Úargr  r  zEurope/London)rJ   c              	   C  s,   d}t jt|d�� |  |¡ W 5 Q R X d S )Nz [Unexpected type|Cannot compare]r>   )rA   rB   rr   r‘   )r.  rK  rs   r   r   r   Ú:test_searchsorted_datetimelike_with_listlike_invalid_dtype3  s    rL  c                 C  sB   ddgd }| |ƒ}t |dd�}t dd„ |D ƒƒ}t ||¡ d S )NrK   Z2020Q2rk   r   r5   c                 S  s   g | ]}t |ƒ‘qS r   )r   )r›   Úsr   r   r   r�   K  s     z?test_period_index_construction_from_strings.<locals>.<listcomp>)r   r[   rg   )rI  Ústringsr;   rF   rR   r   r   r   Ú+test_period_index_construction_from_stringsE  s
    rO  r1   rç   r(  c                 C  sø   t jdddg| d�}t|ƒ}ttdœ|  }||ƒ}||ƒ}t ||¡ | |¡}| |¡}t ||¡ tt	dœ|  }||ƒd }||ƒd }t 
||¡ tjtjdœ|  }||ƒj}||ƒj}t 
||¡ ttdœ|  }||ƒ}||ƒ}t ||¡ d S )Nr@   rk   rG   r0   ©rç   r(  r   )r6   rh   r   r
   r   r[   rÝ   rÙ   r   r   r{   r"   r  Úto_timedeltar   r	   rg   )r1   r;   r<   ÚclsrF   rR   ÚfuncÚidx_clsr   r   r   Útest_from_pandas_arrayO  s*    



rU  Ú
memoryviewrh   Údaskz
dask.array)ZmarksÚxarrayc                 C  sŒ   t jdddgt jd�}| j}|dkr.t|ƒ}nV|dkrLddl}| d	|¡}n8|d
krjddl}|j |¡}n|dkr„d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@   rk   rG   r0   rV  rh   r   NÚirW  rX  )r6   rh   rÛ   r   rV  Z
dask.arrayrX  Z	DataArray)r   r<   Únamer;   rh   rW  Zxrr   r   r   Úarray_likesp  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 )NrP  r   )r
   r   rÙ   r[   rÝ   r   r   r{   r†   rV  r"   r  rQ  rh   r   r	   rg   )	r1   r[  r<   r;   rR  rR   rF   rS  rT  r   r   r   Útest_from_obscure_array”  s$    



r\  )EÚ
__future__r   r¦   Únumpyr6   rA   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'  r1  r¡   rã   r„   r  r&   r0  r#   rB  r«   rC  rh   rä   rG  r  rµ   r¥   r°   rN   rW   rJ  rL  ÚtuplerO  rU  r   Z
skip_if_nor[  r\  r   r   r   r   Ú<module>   sÞ   



    ,  @w þþ÷ó
	þþþ÷ð
þþ
ýþùþýþ ÿ
	
 üÿ
