U
    _{fbc                     @   s   d Z ddlmZ ddlZzddlmZ W n ek
r@   dZY nX ddlZddl	Z	ddl
mZmZ ddlmZ ddlZddlmZ ddlmZmZ G dd	 d	ZG d
d dZG dd dZdS )z
Tests for DatetimeArray
    )	timedeltaN)ZoneInfo)npy_unit_to_abbrev
tz_compare)DatetimeTZDtype)DatetimeArrayTimedeltaArrayc                   @   sV  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dd Z	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d-d. Zej
d/ed0d1ejd0d1e !d0d2e !d3dej"#d4ej"$d0gd5d6 Z%d7d8 Z&d9d: Z'd;S )<TestNonNanosmsus)paramsc                 C   s   |j S )z)Fixture returning parametrized time units)param)selfrequest r   a/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/pandas/tests/arrays/test_datetimes.pyunit   s    zTestNonNano.unitc                 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-017   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,   ;   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   AssertionErrorr   r   r   all)r   r   r   r+   r,   r   r   r   test_non_nano@   s    zTestNonNano.test_non_nanofieldc           	      C   s>   |\}}||k  stt||}t|j|}t|| d S r.   )r5   r4   r"   _datatmassert_numpy_array_equal)	r   r   r7   r   r-   r,   r*   resexpectedr   r   r   test_fieldsI   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_normalizedr4   	normalizer9   assert_extension_array_equal)r   r   r*   r+   r,   expr<   r;   r   r   r   test_normalizeU   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   r1   r2   r3   r   r   r)   r   r4   pytestraises)r   r   r+   r   r,   Zwrongr   r   r   test_simple_new_requires_matchd   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std_cresor4   floor)r   r   r*   r+   r,   r;   r   r   r   test_std_non_nanoo   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_periodz   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#   	Timestampr4   _valuerK   )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.   )rK   ).0xr,   r   r   	<genexpr>   s     z1TestNonNano.test_astype_object.<locals>.<genexpr>c                 s   s   | ]\}}||kV  qd S r.   r   )rX   rY   yr   r   r   r[      s     )r&   objectr5   r4   zip)r   r,   rP   r   rZ   r   test_astype_object   s    
zTestNonNano.test_astype_objectc                 C   s(   |\}}|  }|  }t|| d S r.   )to_pydatetimer9   r:   rO   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-   rb   r,   r*   rP   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;   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   replacer4   )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rt dddg}	nN|t
jkrt dddg}	n2|t
jt
jfkrt 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 )Nr0   r!   M8[ns]M8[s]FT)r   iinfor2   arrayminmaxr3   r   r)   r   operatoreqneltler9   r:   _ndarray)r   comparison_opoprn   valsr+   Zarr2leftrightr<   rP   Znp_resr   r   r   #test_compare_mismatched_resolutions   s*     



z/TestNonNano.test_compare_mismatched_resolutionsc                 C   sJ   t jdd}t jddd| }|jd}||d }|jdksFtd S )Nr0   )microsecondsr      r   r   )r#   	Timedeltar$   r8   as_unitr   r4   )r   tdr*   r,   r;   r   r   r   (test_add_mismatched_reso_doesnt_downcast   s
    z4TestNonNano.test_add_mismatched_reso_doesnt_downcastscalar   )hourshi m x   c           
      C   s   |\}}t |}t|j|j}t|}|| j|}|| }	t|	| || }	t|	| || j|}|| }	t|	| d S r.   )	r#   r   rq   rK   r   r8   r   r9   rA   )
r   r-   r   r,   r*   r   Zexp_resoZexp_unitr<   rP   r   r   r   -test_add_timedeltalike_scalar_mismatched_reso   s    
z9TestNonNano.test_add_timedeltalike_scalar_mismatched_resoc                 C   sb   t jddd}|jd}|d d}|| }||d  jd}|jdksRtt|| d S )Nr   r   r   r   r   r
   zm8[us])r#   r$   r8   r   r   r4   r9   rA   )r   r*   r,   tsrP   r<   r   r   r   %test_sub_datetimelike_scalar_mismatch   s    z1TestNonNano.test_sub_datetimelike_scalar_mismatchc                 C   st   t jddd}|jd}|d}|| }tjdddgdd}tj||jd}t	
|| || }t	
|| d S )	Nr   r   r   r
   r   r   zm8[ms]r!   )r#   r$   r8   r   r   ro   r   r)   r   r9   rA   )r   r*   r{   r|   rP   Z
exp_valuesr<   Zresult2r   r   r   !test_sub_datetime64_reso_mismatch  s    
z-TestNonNano.test_sub_datetime64_reso_mismatchN)(__name__
__module____qualname__rH   Zfixturer   r   r-   r,   r6   markparametrizer   Z
_field_opsZ	_bool_opsr=   rC   rJ   rM   filterwarningsrQ   rW   r_   ra   rf   rg   rk   r}   r   r   r#   r   r   timedelta64offsetsZMinuteZHourr   r   r   r   r   r   r   r	      sR   



	 

	

	
	#





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|| qd S )Nz	2016-01-1ZMS	   )r   r   r   r!   )rt   gtru   )r#   r$   r   r   r4   r   r   Zoneslenboolr   r9   r:   ro   listtupler&   r]   )	r   rx   ry   r*   r+   r|   r<   rP   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                   @   sH  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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/d0d1gd2d3 Zejd/d0d1gd4d5 Z ejd
d6ed6d7e!d8ej"d9d:d;ej#d<d=d>d? d@ dA e#d<$dBd? d@ dA ed%dCg	ejd/d0d1gdDdE Z&dFdG Z'dHdI Z(dJdK Z)dLdM Z*dNdOgZ+e,dPk	r.ze,dNZ-W n e.k
r"   Y nX e+/e- ejdQe+dRdS Z0dPS )T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   r   rm   )
r#   r$   r&   r   r4   r8   
isinstancecoreZarraysr   )r   r*   r;   r,   r   r   r   test_astype_non_nano_tznaive9  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stt||std S )	Nr   r   r    r   r   zM8[s, US/Pacific]z
M8[s, UTC]Fcopy)r#   r$   r&   r   r4   r8   r9   Zshares_memory)r   r*   r;   r,   res2res3r   r   r   test_astype_non_nano_tzawareD  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&   r4   )r   r+   rP   r   r   r   test_astype_to_sameW  s     z%TestDatetimeArray.test_astype_to_samer   datetime64[ns]zdatetime64[ns, UTC]r   zdatetime64[ns, CET]c              	   C   s   t jddg|d}| }d}|dk|dkA r2d}|rn|dkrDd}nd}tjt|d	 || W 5 Q R X n$||}t j|d d < t	|| d S )
Nr0   r   r!   Fr   Tz<Use obj.tz_localize instead or series.dt.tz_localize insteadz1from timezone-aware dtype to timezone-naive dtyperF   )
r#   Seriesr   rH   rI   	TypeErrorr&   NaTr9   assert_series_equal)r   r   r   Zserorigerrmsgtr   r   r   test_astype_copies^  s    
z$TestDatetimeArray.test_astype_copiesZuint32Zuint64c              	   C   sx   t tdtdg}t|tjkrRtjt	dd |
| W 5 Q R X d S |
|}|jd}t|| d S )Nr   Z2001zDo obj.astype\('int64'\)rF   i8)r   r   r#   rU   r   r   r2   rH   rI   r   r&   rw   r3   r9   r:   )r   r   r+   rP   r<   r   r   r   test_astype_intx  s    
z!TestDatetimeArray.test_astype_intc                 C   s@   t jddd}|j}|d}|jdks,t||k s<td S )Nr      r   zSparse[datetime64[ns]])r#   r$   r8   r&   r   r4   r5   )r   r*   r,   rP   r   r   r   test_astype_to_sparse_dt64  s
    
z,TestDatetimeArray.test_astype_to_sparse_dt64c              	   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_raises  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 )	Nr0   r   r   rl   r!   r   z2020-09-08 16:50r   )r   ro   r   r   r   r   r#   rU   r(   strr9   assert_equal)	r   r   r   datar   r+   r<   r   setterr   r   r   test_setitem_str_impute_tz  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}||d< |d |	dks|t
d S )Nr0   r   r   rl   r!   Fr   r   )r   r   z$Cannot compare tz-naive and tz-awarerF   r   r   
US/Eastern)r   ro   r   r   rH   rI   r   r#   rU   r'   r4   )r   r   r+   r   r   r   r    test_setitem_different_tz_raises  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$   rU   r   r4   )r   ar   r   r   test_setitem_clears_freq  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   r4   )r   r   r*   r+   r   r   r   test_setitem_objects  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   r0   )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d}t
|| d S )Nr   r   r   r   r   r   r   F)Zdropnar0   r   count)indexname)r#   r$   r   r   Zvalue_countsr   equalsr4   r   r   r9   r   )r   r*   r+   rP   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st	|d t j
dddkst	d S )Nz
2000-01-01r/   r   r   r   Tr   r   r   r0   r   r   r   r   r!   r   z
2000-01-03)r#   r$   r   r   r   r   fillnar9   rA   r4   rU   )r   r   r*   r+   Zfill_valr<   rP   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 st|j
jd rt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   r0   )r0   r   r   r   )r   r   r   )r   r   )r0   r0   F)orderZF_CONTIGUOUSZC_CONTIGUOUS)r#   r$   r8   reshaper   r   r   r9   rA   Z_from_backing_datarw   flagsr4   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!   rl   z2017-01-01T06:00:00z2017-01-02T06:00:00)
r   r#   r$   r   r%   ro   rU   r]   r9   r:   )r   r   r   rP   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   ro   r%   r9   r:   r]   rU   )r   r   r<   rP   r   r   r   test_array_interface9  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
   r   r!         ʚ;r   r   
Asia/Tokyor   r    r   )r   r1   r   r(   r#   Indexsearchsortedr'   r4   r9   r   )r   r   r   r+   r<   rP   r   r   r   test_searchsorted_different_tzI  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   r1   r   r#   r   r(   rH   rI   r   r   )r   r   r   r+   Zmismatchr   r   r   r   $test_searchsorted_tzawareness_compatX  s    

z6TestDatetimeArray.test_searchsorted_tzawareness_compatr0   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   r1   r   r#   r   joinrH   rI   r   r   )r   r   r   r   r+   r   r   r   r   test_searchsorted_invalid_typesl  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
|| qd S )Nr   r   r   r0   
fill_valuer    )r#   r$   r8   r   r   Zrollrw   r`   to_datetime64shiftr9   assert_datetime_array_equalr(   )r   r*   r,   r<   fvr   rP   r   r   r   test_shift_fill_value  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 qd S )
Nr   r   r   r   r    zCannot comparerF   r0   r   )
r#   r$   r8   r(   r`   rH   rI   r   r   r   )r   r*   r,   r   r   r   r   r   %test_shift_value_tzawareness_mismatch  s    
z7TestDatetimeArray.test_shift_value_tzawareness_mismatchc                 C   sV   t jdddd}|j}t jddd}|jd|d	}|jd|dd	}t|| d S )
Nr   r   r    r   z2020-10-18 18:44r   r   r0   r   )r#   r$   r8   rU   r   r'   r9   r   )r   r*   r,   r   rP   r<   r   r   r   test_shift_requires_tzmatch  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,   rP   r<   Z	roundtripr   r   r   test_tz_localize_t2d  s    

z&TestDatetimeArray.test_tz_localize_t2dr   zdateutil/US/EasternNr   c                 C   s   t jddddgt jd}|d9 }t|d|}|d }t|d }t|t|ks\t|	 |	 kspt|
td }t|t|kst|	 |	 kstd S )	Ni@NiPNi`"Nip0Nr!   r   r    r   )r   ro   r2   r   r(   r'   r   r   r4   	utcoffsetr&   r]   )r   r   Zutc_valsr,   r{   r|   Zright2r   r   r   test_iter_zoneinfo_fold  s    
 z)TestDatetimeArray.test_iter_zoneinfo_fold)1r   r   r   r   r   r   rH   r   r   r   intr   Zint32r2   r   r   r   r   r   r   r#   rU   r   r`   r   r   r   r   r   r   r   r   r   r   r   r1   r3   rN   r   r   r   r   r   Zeastsr   r   KeyErrorappendr   r   r   r   r   r   8  s~    
	


)




r   )__doc__datetimer   rr   Zzoneinfor   ImportErrornumpyr   rH   Zpandas._libs.tslibsr   r   Zpandas.core.dtypes.dtypesr   Zpandasr#   Zpandas._testingZ_testingr9   Zpandas.core.arraysr   r   r	   r   r   r   r   r   r   <module>   s"   
 w$