U
    Cvf                     @  s  d dl mZ d dlZd dlZd dlZd dlZd dlZ	d dl
mZ edZddddd	d
dddddddddddddddddddddgZd`d d!d"d#Zd$d!d%d&Zejjd'ed(d) d*ejd+dd,d-gejd.dd,d-gejjd/d0d1d2gd3d) d*d d!d4d5Zejd6d7d8d9d:d;d<d=d>d?d@g
d d!dAdBZejdCejdDdEdFdGdHdIgd d!dJdKZejd+d,d-gejjdLdMdNdOdPdQdRgdSd) d*d d!dTdUZdVdW ZejdXdYdZd[gd d!d\d]Zd d!d^d_ZdS )a    )annotationsN)CFTimeGroupercftime)8003DZ4001D)r   Z16006D)r   Z21AS)6H3H)r   12H)r   Z400T)3DD)r	   Z6D)Z11DMS)3MSr   )r   Z6MS)r   Z85D)7MZ3M)r   Z14M)r   z2QS-APR)43QS-AUGz21QS-AUG)r   z86QS-AUG)r   z11A-JUN)11Q-JUNz5Q-JUN)r   z22Q-JUN)r   Z51MS)3AS-MARzAS-MAR)r   z6AS-MAR)r   z14Q-FEB)7A-MAYz3A-MAY)r   z14A-MAY)r   Z85MNone)returnc	                 C  s   t |tr&ttj| }	tj| }
n|}	|}
z | j|||||||	d }W nF t	k
r   t
t	" |j||||||
|d  W 5 Q R X Y nX |j||||||
|d }|jd   |d< tj|| d S )N)timeclosedlabelbaseloffsetoffsetorigin)r   r   r   r   r   r   r   r   )
isinstancetuplepdZ	Timestampdatetimer   ZDatetimeGregorianresamplemean
ValueErrorpytestraisesxindexesto_pandas_indexto_datetimeindexxrtestingassert_identical)da_datetimeindexda_cftimeindexfreqr   r   r   r   r   r   Zorigin_pandasZorigin_cftimeZresult_datetimeindexZresult_cftimeindex r-   J/tmp/pip-unpacked-wheel-h316xyqg/xarray/tests/test_cftimeindex_resample.pycompare_against_pandas5   sL    
	

r/   zxr.DataArrayc                 C  s"   t jtdd| j | gdgdS )Ng      Y@r   )ZcoordsZdims)r'   Z	DataArraynpZarangesize)indexr-   r-   r.   dam   s
      r3   freqsc                 C  s
   dj |  S )Nz{}->{})formatxr-   r-   r.   <lambda>s       r8   )idsr   leftrightr   )r   r   )   N)   N)N5Sc                 C  s   |  S Nr-   r6   r-   r-   r.   r8   w   r9   c                 C  sh   | \}}d}d}d}	t |d|d}
tjf |
}tjf |
}t|}t|}t||||||||	|d	 d S )Nz2000-01-01T12:07:01r   start   rA   periodsr,   )r   r   r   r   r   r   dictr   
date_ranger'   cftime_ranger3   r/   )r4   r   r   r   r   initial_freqresample_freqrA   r   r   index_kwargsdatetime_indexcftime_indexr*   r+   r-   r-   r.   test_resamples   s(    rN   r,   expected)Sr;   )Tr;   )Hr;   )r
   r;   )Mr<   )r   r;   )Qr<   )ZQSr;   )Ar<   )ZASr;   c                 C  s,   t | dj|kstt | dj|ks(td S )N)r,   )r   r   AssertionErrorr   rO   r-   r-   r.   test_closed_label_defaults   s    rX   zignore:Converting a CFTimeIndexcalendarZ	gregorianZnoleapZall_leapZ360_dayZjulianc           
      C  s   d\}}}}t jdd}tjddd| d}tjdddd}t|j|||||d	 }t|j|||||d	 }	|j	d
 
  |d
< tj||	 d S )N)Z8001TNN      )hoursz2004-01-01T12:07:01   r	   )rA   rD   r,   rY   rC   )r   r   r   r   r   r   )r   	timedeltar'   rH   r   rG   r3   r   r    r$   r%   r&   r(   r)   )
rY   r,   r   r   r   r   Zxr_indexZpd_index	da_cftimeZda_datetimer-   r-   r.   test_calendars   s6               r`   r   Z	start_dayrA   endZend_dayepoch)i     rc         c                 C  s   |  S r@   r-   r6   r-   r-   r.   r8      r9   c           
      C  sX   d\}}d}t |d|d}tjf |}tjf |}t|}t|}	t||	|| |d d S )N)r   Z9Hz1969-12-31T12:07:01r[   rC   )r   r   rE   )
r   r   rI   rJ   rA   rK   rL   rM   r*   r+   r-   r-   r.   test_origin   s    rf   c               	   C  sD   t jddd} t| }tjtdd |jdddd	 W 5 Q R X d S )
N2000rB   rD   zbase and offset cannotmatch2Drd   r?   )r   r   r   r'   rH   r3   r"   r#   r!   r   )rM   r_   r-   r-   r.   test_base_and_offset_error   s    rm   r   ZfooZ5MS
   c              	   C  sB   t jddd}t|}tjtdd |jd| d W 5 Q R X d S )Nrg   rB   rh   zoffset must beri   rk   r   r   rl   )r   rM   r_   r-   r-   r.   test_invalid_offset_error   s    rp   c                  C  s\   t jdd} d}tjddd}t|}|jd| d }|jd|d }tj|| d S )NrB   )secondsr?   rg   rh   rk   ro   )	r   r^   r'   rH   r3   r   r    r(   r)   )r^   stringrM   r_   Ztimedelta_resultZstring_resultr-   r-   r.   test_timedelta_offset   s    rs   )NNNNNN)
__future__r   r   Znumpyr0   Zpandasr   r"   Zxarrayr'   Zxarray.core.resample_cftimer   Zimportorskipr   ZFREQSr/   r3   markZparametrizerN   rX   filterwarningsr`   rf   rm   rp   rs   r-   r-   r-   r.   <module>   s   
#      8  
 