U
    ÎZj
W  ã                   @   sŽ   d Z ddlZddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlZddlmZ ddlmZ G dd„ dƒZG d	d
„ d
ƒZG dd„ dƒZdS )z
Tests for DatetimeArray
é    N)Ú
tz_compare)ÚNpyDatetimeUnit)ÚDatetimeTZDtype)ÚDatetimeArrayc                   @   s  e Zd Zejdddgd�dd„ ƒZejdd„ ƒZejd	d
„ ƒZejdd„ ƒZejdd„ ƒZ	dd„ Z
ej d¡ej dejej ¡dd„ ƒƒZdd„ Zdd„ Zdd„ Zej d¡dd„ ƒZdd„ Zd d!„ Zd"d#„ Zej d$d%d&d'g¡d(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zd0S )1ÚTestNonNanoÚsÚmsÚus)Úparamsc                 C   s   |j S )z)Fixture returning parametrized time units)Úparam)ÚselfÚrequest© r   úe/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/arrays/test_datetimes.pyÚunit   s    zTestNonNano.unitc                 C   s   t jjt jjt jjdœ| S )z;Fixture returning datetime resolution for a given time unit)r   r   r	   )r   ZNPY_FR_sÚvalueZ	NPY_FR_msZ	NPY_FR_us)r   r   r   r   r   Úreso   s    ýüzTestNonNano.resoc                 C   s.   |}|d krt  d|› d�¡S t||d�S d S )Nzdatetime64[ú])r   Útz)ÚnpÚdtyper   )r   r   Útz_naive_fixturer   r   r   r   r   "   s    zTestNonNano.dtypec                 C   sz   t |dd ƒ}tjddd|d�}|d kr@t |¡ d|› d�¡}n$t | d¡ d ¡¡ d|› d�¡}tj	||d	�}||fS )
Nr   ú
2016-01-01é7   ÚD©ÚperiodsÚfreqr   úM8[r   ÚUTC©r   )
ÚgetattrÚpdÚ
date_ranger   ÚasarrayÚastypeÚ
tz_convertÚtz_localizer   Ú_simple_new)r   r   r   r   ÚdtiÚarrÚdtar   r   r   Údta_dti*   s    
ÿzTestNonNano.dta_dtic                 C   s   |\}}|S ©Nr   )r   r,   r+   r)   r   r   r   r+   9   s    zTestNonNano.dtac                 C   s‚   t jdt jd� d|› d�¡}tj||d�}|j|ks:t‚|d j|ksLt‚t	|j
|d j
ƒsbt‚|d |d d… k ¡ s~t‚d S )Né   r    r   r   r   é   )r   ÚarangeÚint64Úviewr   r(   r   ÚAssertionErrorÚ_resor   r   Úall)r   r   r   r   r*   r+   r   r   r   Útest_non_nano>   s    zTestNonNano.test_non_nanoz=ignore:weekofyear and week have been deprecated:FutureWarningÚfieldc           
      C   s.   |\}}t ||ƒ}t |j|ƒ}	t ||	¡ d S r-   )r!   Ú_dataÚtmÚassert_numpy_array_equal)
r   r   r   r7   r   r,   r+   r)   ÚresÚexpectedr   r   r   Útest_fieldsG   s    
zTestNonNano.test_fieldsc                 C   s†   t jdddd�}t |¡ d|› d�¡}tj||jd�}|jrBt	‚t | 
¡ ¡ d|› d�¡}tj||jd�}| 
¡ }t ||¡ d S )Nz2016-01-01 06:00:00r   r   ©r   r   r   r   r    )r"   r#   r   r$   r%   r   r(   r   Úis_normalizedr3   Ú	normalizer9   Úassert_extension_array_equal)r   r   r)   r*   r+   Úexpr<   r;   r   r   r   Útest_normalizeV   s    
zTestNonNano.test_normalizec              	   C   sz   t jdt jd� d|› d�¡}t|dƒ}tj||d�}|j|ksDt‚tddƒ}t	j
tdd�� tj||d� W 5 Q R X d S )	Nr.   r    r   r   r   ÚnsÚ ©Úmatch)r   r0   r1   r2   r   r   r(   r   r3   ÚpytestÚraises)r   r   r*   r   r+   Zwrongr   r   r   Útest_simple_new_requires_matche   s    

z*TestNonNano.test_simple_new_requires_matchc                 C   sj   t jdddd�}t |¡ d|› d�¡}tj||jd�}| ¡ }|j	|j	ksPt
‚|| ¡  |¡ksft
‚d S )Nr   r   r   r>   r   r   r    )r"   r#   r   r$   r%   r   r(   r   Zstdr4   r3   Úfloor)r   r   r)   r*   r+   r;   r   r   r   Útest_std_non_nanop   s    zTestNonNano.test_std_non_nanoz.ignore:Converting to PeriodArray.*:UserWarningc                 C   s.   |\}}|  d¡}|j  d¡}t ||¡ d S )Nr   )Ú	to_periodr8   r9   rA   ©r   r,   r+   r)   Úresultr<   r   r   r   Útest_to_period{   s    
zTestNonNano.test_to_periodc                 C   sV   t t|ƒƒ}|d }t|ƒtjks&t‚|j|jks6t‚|j|jksFt‚||ksRt‚d S )Nr   )ÚnextÚiterÚtyper"   Ú	Timestampr3   r   r4   )r   r+   r;   r<   r   r   r   Ú	test_iterƒ   s    zTestNonNano.test_iterc                    sD   ˆ   t¡}t‡ fdd„|D ƒƒs$t‚tdd„ t|ˆ ƒD ƒƒs@t‚d S )Nc                 3   s   | ]}|j ˆ j kV  qd S r-   )r4   )Ú.0Úx©r+   r   r   Ú	<genexpr>Ž   s     z1TestNonNano.test_astype_object.<locals>.<genexpr>c                 s   s   | ]\}}||kV  qd S r-   r   )rV   rW   Úyr   r   r   rY   �   s     )r%   Úobjectr5   r3   Úzip)r   r+   rO   r   rX   r   Útest_astype_objectŒ   s    
zTestNonNano.test_astype_objectc                 C   s(   |\}}|  ¡ }|  ¡ }t ||¡ d S r-   )Úto_pydatetimer9   r:   rN   r   r   r   Útest_to_pydatetime‘   s    zTestNonNano.test_to_pydatetimeÚmethÚtimeÚtimetzÚdatec                 C   s,   |\}}t ||ƒ}t ||ƒ}t ||¡ d S r-   )r!   r9   r:   )r   r,   r`   r+   r)   rO   r<   r   r   r   Útest_time_date˜   s    

zTestNonNano.test_time_datec           	      C   s*   |\}}|  ¡ }|j  ¡ }t ||¡ d S r-   )Z_format_native_typesr8   r9   r:   )	r   r   r   r   r,   r+   r)   r;   rB   r   r   r   Útest_format_native_types    s    
z$TestNonNano.test_format_native_typesc                 C   s0   |\}}t |ƒt |jƒ dd|› �¡ks,t‚d S )Nz[nsú[)Úreprr8   Úreplacer3   )r   r,   r   r+   r)   r   r   r   Ú	test_repr©   s    zTestNonNano.test_reprc                 C   sF  |}t  t j¡}t j|j|jd |jgt jd�}t  |¡ d¡}| d¡}tj||j	d�}tj||j	d�}|t
jkr†t  dddg¡}	nN|t
jkr¢t  dddg¡}	n2|t
jt
jfkrÄt  dddg¡}	nt  dddg¡}	|||ƒ}
t |
|	¡ ||d |ƒ}
t |
|	¡ |t
jt
jfk�rB||j|jƒ}t |dd … |	dd …  ¡ d S )Nr/   r    úM8[ns]úM8[s]FT)r   Úiinfor1   ÚarrayÚminÚmaxr2   r   r(   r   ÚoperatorÚeqÚneÚltÚler9   r:   Ú_ndarray)r   Úcomparison_opÚoprl   Úvalsr*   Zarr2ÚleftÚrightr<   rO   Znp_resr   r   r   Ú#test_compare_mismatched_resolutions¯   s*     



z/TestNonNano.test_compare_mismatched_resolutionsN)Ú__name__Ú
__module__Ú__qualname__rH   Zfixturer   r   r   r,   r+   r6   ÚmarkÚfilterwarningsÚparametrizer   Z
_field_opsZ	_bool_opsr=   rC   rJ   rL   rP   rU   r]   r_   rd   re   ri   r{   r   r   r   r   r      s@   




	ÿ 
ÿ	

	
	r   c                   @   s   e Zd Zdd„ ZdS )ÚTestDatetimeArrayComparisonsc           	      C   sÒ   |}t jdddd d�}t|ƒ}|j|jks.t‚|j|jks>t‚|}tjt|ƒt	d�}|j
dkrd| }|||ƒ}t ||¡ |t |¡t|ƒt|ƒ| t¡fD ]0}|||ƒ}t ||¡ |||ƒ}t ||¡ qœd S )Nz	2016-01-1ZMSé	   )r   r   r   r    )rr   Úgtrs   )r"   r#   r   r   r3   r   r   ZonesÚlenÚboolr|   r9   r:   rm   ÚlistÚtupler%   r[   )	r   rv   rw   r)   r*   rz   r<   rO   Úotherr   r   r   Útest_cmp_dt64_arraylike_tznaive×   s*    

û

z<TestDatetimeArrayComparisons.test_cmp_dt64_arraylike_tznaiveN)r|   r}   r~   rŠ   r   r   r   r   r‚   Ó   s   r‚   c                   @   sê  e Zd Zdd„ Zdd„ Zdd„ Zej ddd	g¡ej d
dd	dg¡dd„ ƒƒZ	ej de
ejejddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zej de d¡e d¡ ¡ e d¡ ¡ g¡dd„ ƒZdd„ Zd d!„ Zej d"d#d$g¡d%d&„ ƒZd'd(„ Zd)d*„ Zd+d,„ Zej d-d.d/g¡d0d1„ ƒZej d-d.d/g¡d2d3„ ƒZej d
d4e d4¡d5e  d6¡ej!d7d8�d9ej"d:d;d<�d= d> d? e "d:¡ #d@¡d= d> d? e d¡ $dA¡g	¡ej d-d.d/g¡dBdC„ ƒƒZ%dDdE„ Z&dFdG„ Z'dHdI„ Z(dJdK„ Z)dLS )MÚTestDatetimeArrayc                 C   s\   t jddd�}| d¡}|jdks&t‚|j}| d¡}|jdksDt‚t|t jjj	ƒsXt‚d S )Nr   é   ©r   rk   )
r"   r#   r%   r   r3   r8   Ú
isinstanceÚcoreZarraysr   )r   r)   r;   r+   r   r   r   Útest_astype_non_nano_tznaiveø   s    

z.TestDatetimeArray.test_astype_non_nano_tznaivec                 C   sž   t jdddd�}| d¡}|jdks(t‚|j}| d¡}|jdksFt‚| d¡}|jdks^t‚t ||¡rnt‚|jddd�}|jdksŠt‚t ||¡sšt‚d S )	Nr   rŒ   r   ©r   r   zM8[s, US/Pacific]z
M8[s, UTC]F©Úcopy)r"   r#   r%   r   r3   r8   r9   Zshares_memory)r   r)   r;   r+   Úres2Úres3r   r   r   Útest_astype_non_nano_tzaware  s    


z.TestDatetimeArray.test_astype_non_nano_tzawarec                 C   s:   t jdgtdd�d�}|jtdd�dd�}||ks6t‚d S )NÚ2000ú
US/Central©r   r    Fr’   )r   Ú_from_sequencer   r%   r3   )r   r*   rO   r   r   r   Útest_astype_to_same  s     ÿz%TestDatetimeArray.test_astype_to_samer   údatetime64[ns]zdatetime64[ns, UTC]r‰   zdatetime64[ns, CET]c              	   C   sp   t jddg|d�}| ¡ }d }|dk|dkA r2t}t |¡� | |¡}W 5 Q R X t j|d d …< t ||¡ d S )Nr/   é   r    rœ   )	r"   ÚSeriesr“   ÚFutureWarningr9   Úassert_produces_warningr%   ÚNaTÚassert_series_equal)r   r   r‰   ZserÚorigÚwarnÚtr   r   r   Útest_astype_copies  s    z$TestDatetimeArray.test_astype_copiesZuint32Úuint64c              	   C   s    t  t d¡t d¡g¡}t |¡jdkr6t d¡}n
t d¡}| |¡}d }||krZt}d}t	j
||d�� | |¡}W 5 Q R X |j|ks�t‚t	 ||¡ d S )Nr—   Z2001Úur§   r1   z( will return exactly the specified dtyperF   )r   rš   r"   rT   r   r   Úkindr%   rŸ   r9   r    r3   r:   )r   r   r*   Zexpected_dtyper<   r¤   ÚmsgrO   r   r   r   Útest_astype_int0  s    

z!TestDatetimeArray.test_astype_intc              	   C   s:   t jdgtdd�d�}tjtdd�� d|_W 5 Q R X d S )Nr—   r˜   r™   r    r'   rF   r   )r   rš   r   rH   rI   ÚAttributeErrorr   )r   r*   r   r   r   Útest_tz_setter_raisesD  s     ÿz'TestDatetimeArray.test_tz_setter_raisesc           	      C   s¦   |}t jdddgdd�}|d kr&|jnt|d�}t||d�}| ¡ }t d¡ |¡}t	| d ¡ƒ}||d< ||d< t
 ||¡ ||d< ||g|d d…< t
 ||¡ d S )	Nr/   r�   rŒ   rj   r    r™   z2020-09-08 16:50r   )r   rm   r   r   r   r“   r"   rT   r'   Ústrr9   Úassert_equal)	r   r   r   Údatar   r*   r<   ÚtsÚsetterr   r   r   Útest_setitem_str_impute_tzK  s    z,TestDatetimeArray.test_setitem_str_impute_tzc              
   C   sž   t jdddgdd�}t|dtdd�d	�}tjtd
d�� t d¡|d< W 5 Q R X tjddd�}tjt	dd��( t
jtdd�� ||d< W 5 Q R X W 5 Q R X d S )Nr/   r�   rŒ   rj   r    Fr˜   r™   )r“   r   z$Cannot compare tz-naive and tz-awarerF   r—   r   z
US/Easternúmismatched timezones)r   rm   r   r   rH   rI   Ú	TypeErrorr"   rT   Ú
ValueErrorr9   r    rŸ   )r   r°   r*   r±   r   r   r   Ú test_setitem_different_tz_raisesb  s     ÿz2TestDatetimeArray.test_setitem_different_tz_raisesc                 C   s:   t tjddddd�ƒ}tjddd�|d< |jd ks6t‚d S )Nr—   r�   r   r˜   r   r™   r   )r   r"   r#   rT   r   r3   )r   Úar   r   r   Útest_setitem_clears_freqq  s    z*TestDatetimeArray.test_setitem_clears_freqÚobjz
2021-01-01c                 C   s2   t jdddd�}|j}||d< |d |ks.t‚d S )Nr—   r�   r   r>   r   )r"   r#   r8   r3   )r   rº   r)   r*   r   r   r   Útest_setitem_objectsv  s    
z&TestDatetimeArray.test_setitem_objectsc                 C   sJ   t jddddd�}t|ƒ}| ddg¡}t|jd |jd�}t ||¡ d S )Nr—   r�   r   r˜   r   r/   )r   r   )r"   r#   r   ÚrepeatZasi8r   r9   r¯   )r   r)   r*   Zrepeatedr<   r   r   r   Útest_repeat_preserves_tz†  s
    z*TestDatetimeArray.test_repeat_preserves_tzc                 C   s†   t jddddd�}t|ƒ ddg¡}| ¡ }|j |¡s<t‚t j|d< |jd	d
�}t j	dddg|d |d t jgd�}t
 ||¡ d S )Nr—   r�   r   r˜   r   é   rŒ   éþÿÿÿF)Zdropnar/   r   )Úindex)r"   r#   r   r¼   Zvalue_countsrÀ   Úequalsr3   r¡   rž   r9   r¢   )r   r)   r*   rO   r<   r   r   r   Útest_value_counts_preserves_tz�  s    
$z0TestDatetimeArray.test_value_counts_preserves_tzÚmethodÚpadÚbackfillc                 C   s¶   t jddddd�}t|dd�}t j|d< |d	kr8|d
 n|d }tj|d |d
 ||d |d gtdd�d�}|j|d�}t ||¡ |d t jks˜t	‚|d t j
ddd�ks²t	‚d S )Nz
2000-01-01r.   r   r˜   r   Tr’   r�   rÄ   r/   rŒ   r   r¾   r™   r    ©rÃ   z
2000-01-03)r"   r#   r   r¡   rš   r   Úfillnar9   rA   r3   rT   )r   rÃ   r)   r*   Zfill_valr<   rO   r   r   r   Útest_fillna_preserves_tzž  s    
þz*TestDatetimeArray.test_fillna_preserves_tzc                 C   sd  t jdddd�}|j dd¡ ¡ }t j|d< t j|d< |jd	d
�}| ¡ }|d |d< t ||¡ |jdd
�}| ¡ }| ¡ }|d |d< |d |d< t ||¡ | 	|j
jdd�¡}|j
jd sÆt‚|j
jd rÖt‚t ||¡ |jd	d
�}t ||¡ |jdd
�}	t |	|¡ t  |¡}
|
jd	d
�}t  |¡}t ||¡ |
jdd
�}t  |¡}t ||¡ d S )Nr   é   ú
US/Pacificr‘   rŒ   r�   )r   r/   )r/   r   rÄ   rÆ   )r   r   rÅ   )r�   r   )r/   r/   ÚF)ÚorderZF_CONTIGUOUSZC_CONTIGUOUS)r"   r#   r8   Úreshaper“   r¡   rÇ   r9   rA   Z_from_backing_dataru   Úflagsr3   Z	DataFrameZassert_frame_equal)r   r)   r+   Zres1Z	expected1r”   Z	expected2Zdta2r•   Zres4Zdfr;   r<   r   r   r   Útest_fillna_2d±  s:    




z TestDatetimeArray.test_fillna_2dc                 C   sž   d}t tjdd|d�ƒ}t |¡}tjtjd|d�tjd|d�gtd�}t 	||¡ tj|td�}t 	||¡ tj|d	d�}tjd
dgd	d�}t 	||¡ d S )Nr˜   Ú2017r�   r‘   ú2017-01-01T00:00:00r™   ú2017-01-02T00:00:00r    rj   z2017-01-01T06:00:00z2017-01-02T06:00:00)
r   r"   r#   r   r$   rm   rT   r[   r9   r:   )r   r   r°   rO   r<   r   r   r   Útest_array_interface_tzÚ  s$    
þû ÿz)TestDatetimeArray.test_array_interface_tzc                 C   sv   t tjddd�ƒ}tjddgdd�}t |¡}t ||¡ tj|td�}tjt 	d¡t 	d¡gtd�}t ||¡ d S )NrÐ   r�   r�   rÑ   rÒ   rœ   r    )
r   r"   r#   r   rm   r$   r9   r:   r[   rT   )r   r°   r<   rO   r   r   r   Útest_array_interfaceò  s     ÿ
þz&TestDatetimeArray.test_array_interfacerÀ   TFc                 C   s¢   t jddd�d d d }t|dd� d	¡}|r:t |¡}| |d
 ¡}| |d
  d¡¡}||ksht‚| |d
d… ¡}| |d
d…  d¡¡}t	 
||¡ d S )Né
   Úi8r    é   é  é Êš;r   ©r   ú
Asia/Tokyor�   r   rÉ   )r   r0   r   r'   r"   ÚIndexÚsearchsortedr&   r3   r9   r¯   )r   rÀ   r°   r*   r<   rO   r   r   r   Útest_searchsorted_different_tz  s    
z0TestDatetimeArray.test_searchsorted_different_tzc              	   C   sÞ   t jddd�d d d }t|dd�}|r4t |¡}| d	¡}d
}tjt|d�� | 	|d ¡ W 5 Q R X tjt|d�� | 	|¡ W 5 Q R X tjt|d�� | 	|d ¡ W 5 Q R X tjt|d�� | 	|¡ W 5 Q R X d S )NrÕ   rÖ   r    r×   rØ   rÙ   r   rÚ   rÛ   z:Cannot compare tz-naive and tz-aware datetime-like objectsrF   r   )
r   r0   r   r"   rÜ   r'   rH   rI   rµ   rÝ   )r   rÀ   r°   r*   Zmismatchrª   r   r   r   Ú$test_searchsorted_tzawareness_compat  s    

z6TestDatetimeArray.test_searchsorted_tzawareness_compatr/   g      ð?r¡   r�   )ÚdaysÚinvalidrÕ   rÖ   r    r×   rØ   rÙ   ztimedelta64[ns]r   c              	   C   sj   t jddd�d d d }t|dd�}|r4t |¡}d	 d
dg¡}tjt|d�� | 	|¡ W 5 Q R X d S )NrÕ   rÖ   r    r×   rØ   rÙ   r   rÚ   ú|z0searchsorted requires compatible dtype or scalarz<value should be a 'Timestamp', 'NaT', or array of those. GotrF   )
r   r0   r   r"   rÜ   ÚjoinrH   rI   rµ   rÝ   )r   r‰   rÀ   r°   r*   rª   r   r   r   Útest_searchsorted_invalid_types%  s    
þÿz1TestDatetimeArray.test_searchsorted_invalid_typesc                 C   s¬   t jddd�}|j}tt |jd¡ƒ}|d }|| ¡ | ¡ fD ]}|jd|d�}t	 
||¡ q@| d¡}| d¡}|d }|| ¡ fD ]}|jd|d�}t	 
||¡ qˆd S )Nr   rŒ   r�   r/   éÿÿÿÿ©Ú
fill_valuer   )r"   r#   r8   r   r   Zrollr^   Úto_datetime64Úshiftr9   Úassert_datetime_array_equalr'   )r   r)   r+   r<   Úfvrç   rO   r   r   r   Útest_shift_fill_valueC  s    

z'TestDatetimeArray.test_shift_fill_valuec              
   C   s¸   t jddd�}|j}|d  d¡}|| ¡ fD ],}tjtdd�� |jd|d	� W 5 Q R X q.| d¡}|d  d ¡}|| ¡ | 	¡ fD ],}tjtdd�� |jd|d	� W 5 Q R X q†d S )
Nr   rŒ   r�   rå   r   zCannot comparerF   r/   ræ   )
r"   r#   r8   r'   r^   rH   rI   rµ   ré   rè   )r   r)   r+   rë   rá   r   r   r   Ú%test_shift_value_tzawareness_mismatchU  s    
z7TestDatetimeArray.test_shift_value_tzawareness_mismatchc              
   C   sn   t jdddd�}|j}t jddd�}d}tjt|d	��. tjt	d
d	�� |j
d|d� W 5 Q R X W 5 Q R X d S )Nr   rŒ   r   r‘   z2020-10-18 18:44rÊ   r™   z,Timezones don't match. 'UTC' != 'US/Pacific'rF   r´   r/   ræ   )r"   r#   r8   rT   rH   rI   r¶   r9   r    rŸ   ré   )r   r)   r+   rç   rª   r   r   r   Útest_shift_requires_tzmatche  s     ÿz-TestDatetimeArray.test_shift_requires_tzmatchc                 C   sd   t jdddd�}|j dd¡}| d ¡}| ¡  d ¡ |j¡}t ||¡ | d¡}t ||¡ d S )Nz
1994-05-12é   rÊ   r‘   rŒ   r¾   )	r"   r#   r8   rÍ   r'   ZravelÚshaper9   rê   )r   r)   r+   rO   r<   Z	roundtripr   r   r   Útest_tz_localize_t2dx  s    

z&TestDatetimeArray.test_tz_localize_t2dN)*r|   r}   r~   r�   r–   r›   rH   r   r�   r¦   Úintr   Zint32r1   r«   r­   r³   r·   r¹   r"   rT   rè   r^   r»   r½   rÂ   rÈ   rÏ   rÓ   rÔ   rÞ   rß   Ztimedelta64Z	Timedeltar0   r2   rM   rä   rì   rí   rî   rñ   r   r   r   r   r‹   ÷   sj    ÿ
ýþ


)


÷þr‹   )Ú__doc__rp   Únumpyr   rH   Zpandas._libs.tslibsr   Zpandas._libs.tslibs.dtypesr   Zpandas.core.dtypes.dtypesr   Zpandasr"   Zpandas._testingZ_testingr9   Zpandas.core.arraysr   r   r‚   r‹   r   r   r   r   Ú<module>   s    A$