U
    NZf                     @   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ejdddddg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-nbcvw55c/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   Z_ndarrayAssertionError)r   datar   r   r   r   	test_copyz   s
    z&TestDatetimeArrayConstructor.test_copyunitsmsusnsc                 C   sH   t jdddgd| dd}t|}|j|ks2t|d j|ksDtd S )Nr   r   r   zM8[]r   r   )r
   r   r   rM   rJ   )r   rM   rK   r   r   r   r   test_numpy_datetime_unit   s    z5TestDatetimeArrayConstructor.test_numpy_datetime_unitN)__name__
__module____qualname__r   r    r)   r   markparametrizer   r   r   r	   rB   rA   r0   r:   r<   r?   rC   rG   rH   rL   rS   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   sH   t jdgtddd}tjtdd t j|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   _from_sequence_not_strictr   r   r   r   test_tz_dtype_mismatch_raises   s      z2TestSequenceToDT64NS.test_tz_dtype_mismatch_raisesc                 C   s8   t dd}tjdg|d}tj||d}t|| d S )Nr;   r,   r+   r   )r   r   r   r[   r6   Zassert_equal)r   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   r_   r   r   )r	   r4   r
   r   objectr   Tr   Zravelr6   Zassert_numpy_array_equalrJ   r   r   shaper7   )r   r^   Zdtir   resr9   r   r   r   test_2d   s    
zTestSequenceToDT64NS.test_2dN)	rT   rU   rV   r\   r]   r   rW   rX   rf   r   r   r   r   rY      s   	rY   )Znumpyr
   r   Zpandas.core.dtypes.dtypesr   Zpandasr	   Zpandas._testingZ_testingr6   Zpandas.core.arraysr   Zpandas.core.arrays.datetimesr   r   rY   r   r   r   r   <module>   s   ~