U
    c                     @   sh   d dl Zd dlZd dlmZ d dlZd dlmZ	 d dl
mZ d dlmZ G dd dZG dd dZdS )	    N)DatetimeTZDtype)DatetimeArray)_sequence_to_dt64nsc                   @   s   e Zd Zdd Zdd Zdd Zejde	j
eejejg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S )TestDatetimeArrayConstructorc              	   C   sD   t jtdtdg}tjtdd t	| W 5 Q R X d S )N   zCannot create a DatetimeArraymatch)
pdZ
MultiIndexZfrom_productnparangepytestraises	TypeErrorr   _from_sequence)selfmi r   S/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/arrays/datetimes/test_constructors.pytest_from_sequence_invalid_type   s    z<TestDatetimeArrayConstructor.test_from_sequence_invalid_typec              	   C   sx   t jddddgddd}tjtdd	 t|ddd W 5 Q R X tjtdd	 t|dg   W 5 Q R X d S )
Nr            zM8[h]dtypeM8[ns]zOnly 1-dimensionalr   )	r
   arrayZastyper   r   
ValueErrorr   reshapeZsqueezer   arrr   r   r   test_only_1dim_accepted   s
    z4TestDatetimeArrayConstructor.test_only_1dim_acceptedc              	   C   sF   t jdt jdd d }d}tjt|d t|dd W 5 Q R X d S )	Nr   r      ʚ;zRInferred frequency H from passed values does not conform to passed frequency W-SUNr   Wfreq)r
   r   int64r   r   r   r   r   r   msgr   r   r   test_freq_validation   s
    z1TestDatetimeArrayConstructor.test_freq_validationmethc              
   C   s`   t tdtjdddg}d}||d d d fD ]&}tjt|d || W 5 Q R X q4d S )N2000ZCETtzzuCannot mix tz-aware with tz-naive values|Tz-aware datetime.datetime cannot be converted to datetime64 unless utc=Truer   )r
   r   r	   Z	Timestampr   r   r   )r   r*   r   r(   objr   r   r    test_mixing_naive_tzaware_raises)   s    z=TestDatetimeArrayConstructor.test_mixing_naive_tzaware_raisesc                 C   sP   t tjdtjdd d }t|d}t jddddj	}t
|| d S )	Nr   r   r!   r"   inferz
1970-01-01H)periodsr%   )r	   r   r
   r   r&   r   r   Z
_with_freq
date_range_datatmassert_datetime_array_equal)r   r   resultexpectedr   r   r   test_from_pandas_arrayB   s    z3TestDatetimeArrayConstructor.test_from_pandas_arrayc              	   C   s   t tjdgddtddd}tdd}d}tjt|d t ||d W 5 Q R X tjt|d t |tdd W 5 Q R X tjt|d t |d |jd W 5 Q R X d S )	Nz2000-01-01T06:00:00r   r   
US/Centralr,   z
US/EasternzEdtype=datetime64\[ns.*\] does not match data dtype datetime64\[ns.*\]r   )	r   r
   r   r   r   r   r   r   Ztz_localize)r   r   r   r(   r   r   r   test_mismatched_timezone_raisesJ   s    
z<TestDatetimeArrayConstructor.test_mismatched_timezone_raisesc              	   C   s,   t jtdd tdddg W 5 Q R X d S )Nlistr   r   r   r   )r   r   r   r   r   r   r   r   test_non_array_raisesZ   s    z2TestDatetimeArrayConstructor.test_non_array_raisesc              	   C   s   t jdddgdd}d}tjt|d t| W 5 Q R X d}tjt|d t| W 5 Q R X tjt|d t| W 5 Q R X tjt|d t	
| W 5 Q R X tjt|d t	| W 5 Q R X d S )	Nr   r   r   boolr   z-Unexpected value for 'dtype': 'bool'. Must ber   z2dtype bool cannot be converted to datetime64\[ns\])r
   r   r   r   r   r   r   r   r   r	   DatetimeIndexto_datetimer'   r   r   r   test_bool_dtype_raises^   s    z3TestDatetimeArrayConstructor.test_bool_dtype_raisesc              	   C   s:   t jtdd" ttjdddgdddd W 5 Q R X d S )	NzUnexpected value for 'dtype'.r   r   r   r   i8r   categoryr   r   r   r   r
   r   r>   r   r   r   test_incorrect_dtype_raisesr   s    z8TestDatetimeArrayConstructor.test_incorrect_dtype_raisesc              	   C   s:   t jtdd" ttjdddgdddd	 W 5 Q R X d S )
NzFrequency inferencer   r   r   r   rD   r   r1   r$   rF   r>   r   r   r   test_freq_infer_raisesv   s    z3TestDatetimeArrayConstructor.test_freq_infer_raisesc                 C   sL   t jdddgdd}t|dd}|j|ks.tt|dd}|j|k	sHtd S )	Nr   r   r   r   r   F)copyT)r
   r   r   r5   AssertionError)r   datar   r   r   r   	test_copyz   s
    z&TestDatetimeArrayConstructor.test_copyN)__name__
__module____qualname__r   r    r)   r   markparametrizer   r   r   r	   rB   rA   r0   r:   r<   r?   rC   rG   rH   rL   r   r   r   r   r      s&   	
r   c                   @   s6   e Zd Zdd Zdd Zejdddgdd	 Zd
S )TestSequenceToDT64NSc              	   C   sF   t jdgtddd}tjtdd t|tddd W 5 Q R X d S )Nr+   r;   r,   r   zdata is already tz-awarer   UTC)r   r   r   r   r   r   r   r   r   r   r   test_tz_dtype_mismatch_raises   s     z2TestSequenceToDT64NS.test_tz_dtype_mismatch_raisesc                 C   s@   t jdgtddd}t|tddd\}}}t|j| d S )Nr+   r;   r,   r   )r   r   r   r   r6   assert_numpy_array_equalr5   )r   r   r8   _r   r   r   test_tz_dtype_matches   s     z*TestSequenceToDT64NS.test_tz_dtype_matchesorderFCc                 C   s   t jdddd}tj|tddd}|dkr4|j}t|}t| }t	
|d	  |d	  |d
 |d
 kstt|d |d kstt|}t| |j}t	|| d S )Nz
2016-01-01   z
US/Pacific)r3   r-   r   r   r   rY   r   r   )r	   r4   r
   r   objectr   Tr   Zravelr6   rU   rJ   r   r   shaper7   )r   rX   Zdtir   resr9   r   r   r   test_2d   s    
zTestSequenceToDT64NS.test_2dN)	rM   rN   rO   rT   rW   r   rP   rQ   r`   r   r   r   r   rR      s   rR   )Znumpyr
   r   Zpandas.core.dtypes.dtypesr   Zpandasr	   Zpandas._testingZ_testingr6   Zpandas.core.arraysr   Zpandas.core.arrays.datetimesr   r   rR   r   r   r   r   <module>   s   w