
    d $                       d dl mZ d dlZd dlmZ d dlZd dlZd dl	Z	d dl
Zd dlmZ d dlmZ  e	j        d          Zg dZ	 	 	 	 	 	 d5d6d
Zd7dZe	j                            ded           e	j                            dg d          e	j                            dg d          e	j                            dg dd           d6d                                                Ze	j                            dg d          d6d            Ze	j                            d          e	j                            dg d          d6d                        Z G d de          Ze	j                            dd d!g          e	j                            d"g d#d$           d6d%                        Zd& Ze	j                            d'g d(          d6d)            Zd6d*Ze	j                            d+d, ej         d-.          g          d6d/            Z!d6d0Z"e	j                            d1g d2          d3             Z#d4 Z$dS )8    )annotationsN)	TypedDict)_convert_base_to_offset)CFTimeGroupercftime))8003D4001D)r   16006D)r   21AS)6H3H)r   12H)r   400T)3DD)r   6D)11DMS)3MSr   )r   6MS)r   85D)7M3M)r   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   51MS)3AS-MARzAS-MAR)r   z6AS-MAR)r   z14Q-FEB)7A-MAYz3A-MAY)r   z14A-MAY)r   85MreturnNonec	                   t          |t                    r/t          j        t	          j        |           }	t          j        | }
n|}	|}
	 |                     |||||||	                                          }|                    ||||||
|                                          }no# t          $ rb t          j        t                    5  |                    ||||||
|                                           d d d            n# 1 swxY w Y   Y nw xY w|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pd	Timestampdatetimer   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(   origin_pandasorigin_cftimeresult_datetimeindexresult_cftimeindexs                Flib/python3.11/site-packages/xarray/tests/test_cftimeindex_resample.pycompare_against_pandasrD   7   s    &%   X%6%?@@0&9/88   9  
  
 $&& 	* ,44  5 
 
 $&& 	  
 
 
]:&& 		 		##$ $   dfff		 		 		 		 		 		 		 		 		 		 		 		 		 		 		
. 	#F+;;==NNPP v J 24HIIIIIs6   
.B' '#D
/D9DD			DD		DDxr.DataArrayc                j    t          j        t          j        dd| j        z             | gdg          S )Ng      Y@r$   )coordsdims)r9   	DataArraynparangesize)indexs    rC   darN   o   s9    <
	%+,,eWF8       freqsc                     dj         |  S )Nz{}->{})formatxs    rC   <lambda>rU   u   s    x7J rO   )idsr%   )Nleftrightr&   )r'   r)   ))   N)   N)N5Sc                    |  S N rS   s    rC   rU   rU   y   s	    QRf rO   c                X   | \  }}d}d}d}	t          |d|          }
t          j        d	i |
}t          j        d	i |
}t          |          }t          |          }t          j        t          d          5  t          ||||||||	|	  	         d d d            d S # 1 swxY w Y   d S )
Nz2000-01-01T12:07:01r   start   r`   periodsr>   `loffset` parametermatch)r%   r&   r'   r)   r*   r(   r^   )
dictr-   
date_ranger9   cftime_rangerN   r4   warnsFutureWarningrD   )rP   r%   r&   r'   r)   initial_freqresample_freqr`   r(   r*   index_kwargsdatetime_indexcftime_indexr<   r=   s                  rC   test_resamplerq   u   s"    #(L-!EGFeQ\BBBL]22\22N?22\22L.))%%N	m+@	A	A	A 
 

	
 
	
 
	
 
	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   9BB#&B#r>   expected)
)SrW   )TrW   )HrW   )r   rW   )MrX   )r   rW   )QrX   )QSrW   )ArX   )ASrW   c                r    t          |           j        |k    sJ t          |           j        |k    sJ d S )N)r>   )r   r%   r&   rr   s     rC   test_closed_label_defaultsr}      sH      d###*h6666d###)X555555rO   zignore:Converting a CFTimeIndexcalendar)	gregoriannoleapall_leap360_dayjulianc                (   d\  }}}}t          j        d          }t          j        ddd|           }t	          j        ddd          }t          |                              |||||	                                          }t          |                              |||||	                                          }	|j	        d
         
                                                                |d
<   t          j                            ||	           d S )N)8001TNN      hoursz2004-01-01T12:07:01   r   )r`   rc   r>   r~   rb   )r$   r%   r&   r'   r(   r$   )r/   	timedeltar9   ri   r-   rh   rN   r1   r2   r6   r7   r8   r:   r;   )
r~   r>   r%   r&   r'   r(   xr_indexpd_index	da_cftimeda_datetimes
             rC   test_calendarsr      s    !8D&% r***G#QTH  H }#8!$OOOH
8	tF%dG	T	T	  	8	tF%dG	T	T	  "*62BBDDUUWWIfJ	;77777rO   c                  .    e Zd ZU ded<   ded<   ded<   dS )DateRangeKwargsstrr`   intrc   r>   N)__name__
__module____qualname____annotations__r^   rO   rC   r   r      s+         JJJLLLIIIIIrO   r   rW   rX   r*   )	start_dayr`   endend_dayepoch)i     r         c                    |  S r]   r^   rS   s    rC   rU   rU      s    Q& rO   c                    d\  }}d}t          |d|          }t          j        di |}t          j        di |}t          |          }t          |          }	t          ||	|| |           d S )N)r   9Hz1969-12-31T12:07:01r   rb   )r%   r*   r^   )rg   r-   rh   r9   ri   rN   rD   )
r%   r*   rl   rm   r`   rn   ro   rp   r<   r=   s
             rC   test_originr      s     #/L-!E$(ub|$T$T$TL]22\22N?22\22L.))%%N     rO   c                     t          j        dd          } t          |           }t          j        t
          d          5  |                    ddd	           d d d            d S # 1 swxY w Y   d S )
N2000ra   rc   zbase and offset cannotre   2Dr   r[   )r$   r'   r)   r9   ri   rN   r4   r5   r3   r1   )rp   r   s     rC   test_base_and_offset_errorr      s    ?61555L<  I	z)A	B	B	B ; ;1T:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   A''A+.A+r)   )foo5MS
   c                    t          j        dd          }t          |          }t          j        t
          d          5  |                    d|            d d d            d S # 1 swxY w Y   d S )Nr   ra   r   zoffset must bere   r   r$   r)   r   )r)   rp   r   s      rC   test_invalid_offset_errorr      s    ?61555L<  I	z)9	:	:	: 5 5V4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   A&&A*-A*c                 b   t          j        d          } d}t          j        dd          }t	          |          }|                    d|                                           }|                    d|                                          }t          j                            ||           d S )Nra   )secondsr[   r   r   r   r   )	r/   r   r9   ri   rN   r1   r2   r:   r;   )r   stringrp   r   timedelta_resultstring_results         rC   test_timedelta_offsetr      s    "1---IF?61555L<  I ))tI)FFKKMM&&D&@@EEGGMJ 0-@@@@@rO   r(   r   ir   c                   t          j        ddd          }t          j        t	          j        d          d|fg          }t          j        ddd          }t          j        t	          j        d          d|fg          }t          j        t          d          5  |
                    d| 	                                          }|
                    d| 	                                          }d d d            n# 1 swxY w Y   |j        d                                                                         |d<   t          j                            ||           d S )
N
2000-01-01r   r   r>   rc   r$   rd   re   24Hr$   r(   )r-   rh   r9   rI   rJ   rK   ri   r4   rj   rk   r1   r2   r6   r7   r8   r:   r;   )r(   datetimeindexr<   cftimeindexr=   resultrs   s          rC   !test_resample_loffset_cftimeindexr      s}   M,T2FFFM|BIbMMV]4K3LMM/,T2FFFK\")B--6;2G1HIIN	m+@	A	A	A Q Q((eW(EEJJLL#,,%,IINNPPQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q _V,<<>>OOQQF6NJ11111s   AC==DDc                    t          j        ddd          } t          j        t          j        d          d| fg          }t          j        t                    5  |                    dd           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   r   r$   r   r   r   )	r9   ri   rI   rJ   rK   r4   r5   r3   r1   )timesrN   s     rC   )test_resample_invalid_loffset_cftimeindexr     s    OLtR@@@E	bimmvuo%6	7	7B	z	"	" + +
***+ + + + + + + + + + + + + + + + + +s   B  BB)r'   r>   ))r   10S)r   r   )   5Uc                    t          j        dd          }t          j        dd          }t	          | ||          }t	          | ||          }|                                |k    sJ d S )Nr   r   r   )r-   rh   r9   ri   r   to_pytimedelta)r'   r>   r   r   pandas_resultcftime_results         rC   test__convert_base_to_offsetr     sq     M&!444M/&!444K+D$FFM+D$DDM''))]::::::rO   c                     t          j        t          d          5  t          ddt	          j        dg                     d d d            d S # 1 swxY w Y   d S )NzCan only resamplere   r   r   r   )r4   r5   r3   r   r-   Indexr^   rO   rC   *test__convert_base_to_offset_invalid_indexr     s    	z)<	=	=	= 9 95"(A3--8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   %AAA)NNNNNN)r!   r"   )r!   rE   )%
__future__r   r/   typingr   numpyrJ   pandasr-   r4   xarrayr9   xarray.core.pdcompatr   xarray.core.resample_cftimer   importorskipr   FREQSrD   rN   markparametrizerq   r}   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r^   rO   rC   <module>r      s   " " " " " "                     8 8 8 8 8 8 5 5 5 5 5 5		X	&	&	 	 	F 
	5J 5J 5J 5J 5Jp    %-J-JKK#:#:#:;;"9"9"9::>>>DTDT   
 
 
  ;: <; LK
2    6 6 6 6
 =>>HHH 8 8 8  ?>8.    i    FG#455III   
    65$; ; ; #5#5#5665 5 5 765	A 	A 	A 	A U,>H,>S,I,I,I$JKK2 2 2 LK2+ + + + )+O+O+OPP; ; QP;9 9 9 9 9rO   