§
    ¼º¬dp  ã                  ó>  — d dl mZ d dlZd dlZd dlmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZ  ej        d¦  «        Zej                             d	g d
¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        ej                             dddg¦  «        d„ ¦   «         ¦   «         Zeej                             dg d¢¦  «        d„ ¦   «         ¦   «         Zed„ ¦   «         Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zed„ ¦   «         ZdS )é    )ÚannotationsN)Ú	DataArrayÚ
infer_freq)Úconvert_calendarÚinterp_calendar)Ú
date_range)Úassert_identical)Úrequires_cftimeÚcftimez source, target, use_cftime, freq))ÚstandardÚnoleapNÚD)r   Úproleptic_gregorianTr   )r   Úall_leapNr   )r   r   FÚ4Hc                óò  — t          t          dd|| ¬¦  «        dd¬¦  «        }t          t          j        dd|j        ¦  «        dd|i¬	¦  «        }t          |||¬
¦  «        }|j        j        j        |k    sJ ‚| dk    rt          dd|||¬¦  «        }n=t          dd|||¬¦  «        }t          dd|||¬¦  «        }	| 	                    |	¦  «        }t          j
                             |j        |¦  «         d S )Nú
2004-01-01ú
2004-12-31©ÚfreqÚcalendar©Útimer   ©ÚdimsÚnamer   é   ©r   Úcoords)Ú
use_cftimer   )r   r    r   z
2004-02-28z
2004-03-01)r   r   ÚnpÚlinspaceÚsizer   r   Údtr   ÚappendÚtestingÚassert_array_equal)
ÚsourceÚtargetr    r   ÚsrcÚda_srcÚconvÚexpected_timesÚexpected_times_pre_leapÚexpected_times_post_leaps
             ú>lib/python3.11/site-packages/xarray/tests/test_calendar_ops.pyÚtest_convert_calendarr1      sC  € õ Ý< °DÀ6ÐJÑJÔJØØðñ ô €Cõ
 Ý
ŒAq˜#œ(Ñ#Ô#¨)¸VÀS¸Mðñ ô €Fõ ˜F F°zÐBÑBÔB€DàŒ9Œ<Ô  FÒ*Ð*Ð*Ð*àÒÐÝ#ØØØØ!Øð
ñ 
ô 
ˆˆõ #-ØØØØ!Øð#
ñ #
ô #
Ðõ $.ØØØØ!Øð$
ñ $
ô $
Ð ð 1×7Ò7Ð8PÑQÔQˆÝ„J×!Ò! $¤)¨^Ñ<Ô<Ð<Ð<Ð<ó    zsource,target,freq))r   Ú360_dayr   )r3   r   r   )r   r3   r   Úalign_onÚdateÚyearc                ó’  — t          t          dd|| ¬¦  «        dd¬¦  «        }t          t          j        dd|j        ¦  «        dd|i¬	¦  «        }t          |||¬
¦  «        }|j        j        j        |k    sJ ‚|dk    rXt          j	         
                    |j                             d¬¦  «                             ¦   «         j        j        g d¢¦  «         nµ|dk    rXt          j	         
                    |j                             d¬¦  «                             ¦   «         j        j        g d¢¦  «         nWt          j	         
                    |j                             d¬¦  «                             ¦   «         j        j        g d¢¦  «         | dk    r|dk    r|dk    r|j        dk    snd S J ‚d S |dk    r|j        dk    snd S J ‚d S )Nr   ú
2004-12-30r   r   r   r   r   r   r   ©r4   r5   ÚM)é   é   r;   r;   r;   r;   r;   r;   r;   r;   r;   r;   r3   )r;   r;   r;   r;   r;   r;   r;   r;   r;   r;   r;   r<   )r;   r<   r;   r;   é   r;   r;   r=   r;   r=   r<   r=   r6   r   ih  i   ig  )r   r   r!   r"   r#   r   r   r$   r   r&   r'   ÚresampleÚlastÚday)r(   r)   r   r4   r*   r+   r,   s          r0   Útest_convert_calendar_360_daysrA   A   s  € õ Ý< °DÀ6ÐJÑJÔJØØðñ ô €Cõ
 Ý
ŒAq˜#œ(Ñ#Ô#¨)¸VÀS¸Mðñ ô €Fõ ˜F F°XÐ>Ñ>Ô>€DàŒ9Œ<Ô  FÒ*Ð*Ð*Ð*à6ÒÐÝ
Œ
×%Ò%ØŒI×Ò CÐÑ(Ô(×-Ò-Ñ/Ô/Ô2Ô6Ø<Ð<Ð<ñ	
ô 	
ð 	
ð 	
ð 
9Ò	Ð	Ý
Œ
×%Ò%ØŒI×Ò CÐÑ(Ô(×-Ò-Ñ/Ô/Ô2Ô6Ø<Ð<Ð<ñ	
ô 	
ð 	
ð 	
õ
 	Œ
×%Ò%ØŒI×Ò CÐÑ(Ô(×-Ò-Ñ/Ô/Ô2Ô6Ø<Ð<Ð<ñ	
ô 	
ð 	
ð ÒÐ˜x¨6Ò1Ð1Ø#'¨3¢; ;ˆtŒy˜CÒÐÐÐÐÐÐÐÐà#'¨3¢; ;ˆtŒy˜CÒÐÐÐÐÐÐÐÐr2   ))r   r   r   )r   r   r   )r   r   r:   )r3   r   r   )r   r3   r   c                óæ  — t          t          d| dk    rdnd|| ¬¦  «        dd¬¦  «        }t          t          j        d	d
|j        ¦  «        dd|i¬¦  «        }t          ||t          j        d¬¦  «        }t          |j        ¦  «        |k    sJ ‚t          d|dk    rdnd||¬¦  «        }t          j	         
                    |j        |¦  «         |dk    r›t          ||d¬¦  «        }|                     |j                             |j        ¦  «         ¬¦  «        }|                     ¦   «                              ¦   «         sJ ‚|                     |j        ¬¦  «        }	t!          |	|¦  «         d S d S )Nr   r3   r   r8   r   r   r   r   r   r   r   r5   )Úmissingr4   r:   r9   )r   r   r!   r"   r#   r   Únanr   r   r&   r'   ÚiselÚisinÚisnullÚallÚselr	   )
r(   r)   r   r*   r+   ÚoutÚexpectedÚout_without_missingÚexpected_nanÚexpected_not_nans
             r0   Útest_convert_calendar_missingrO   m   s  € õ ÝØØ" iÒ/Ð/ˆLˆL°\ØØð		
ñ 	
ô 	
ð Øð	ñ 	ô 	€Cõ Ý
ŒAq˜#œ(Ñ#Ô#¨)¸VÀS¸Mðñ ô €Fõ ˜6 6µ2´6ÀFÐ
KÑ
KÔ
K€CÝc”hÑÔ 4Ò'Ð'Ð'Ð'åØØ )Ò+Ð+ˆˆ°ØØð	ñ ô €Hõ „J×!Ò! #¤(¨HÑ5Ô5Ð5àˆs‚{€{Ý.¨v°vÈÐOÑOÔOÐØ—x’x c¤h§m¢mÐ4GÔ4LÑ&MÔ&MÐ%MxÑNÔNˆØ×"Ò"Ñ$Ô$×(Ò(Ñ*Ô*Ð*Ð*Ð*àŸ7š7Ð(;Ô(@˜7ÑAÔAÐÝÐ)Ð+>Ñ?Ô?Ð?Ð?Ð?ð €{r2   c                 ó¶  — t          t          dddd¬¦  «        dd¬¦  «        } t          j        t          d	¬
¦  «        5  t          | d¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬
¦  «        5  t          | d¦  «         d d d ¦  «         n# 1 swxY w Y   t          | dd¬¦  «        }t          j        t          d	¬
¦  «        5  t          |d¦  «         d d d ¦  «         n# 1 swxY w Y   t          g d¢dd¬¦  «        }t          j        t          d¬
¦  «        5  t          |dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nú
0000-01-01z
0000-12-31r   r   r   r   r   r   z%Argument `align_on` must be specified©Úmatchr3   ú1Source time coordinate contains dates with year 0r   r6   r9   ©r   r   é   ©ÚxrX   z+Coordinate x must contain datetime objects.©Údim)r   r   ÚpytestÚraisesÚ
ValueErrorr   )Úsrc_nlÚsrc_360Údas      r0   Útest_convert_calendar_errorsra   š   sm  € åÝ< °CÀ(ÐKÑKÔKØØðñ ô €Fõ 
Œ•zÐ)PÐ	QÑ	QÔ	Qð ,ð ,Ý˜ Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,õ 
ŒÝÐMð
ñ 
ô 
ð -ð -õ 	˜ Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -õ ˜v y¸6ÐBÑBÔB€GÝ	Œ•zÐ)PÐ	QÑ	QÔ	Qð ,ð ,Ý˜ (Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,õ 
999 6°Ð	4Ñ	4Ô	4€BÝ	Œ•zÐ)VÐ	WÑ	WÔ	Wð 2ð 2Ý˜˜Z¨SÐ1Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2sG   ¿AÁA Á#A ÂBÂB#Â&B#ÃC4Ã4C8Ã;C8Ä.EÅEÅEc                 óx   — t          t          dddd¬¦  «        dd¬¦  «        } t          | d	¦  «        }| |u sJ ‚d S )
Nz
2000-01-01é   Ú6HF)Úperiodsr   r    r   r   r   r   )r   r   r   )r*   rJ   s     r0   Ú#test_convert_calendar_same_calendarrf   ¶   sS   € Ý
Ý<¨°$À5ÐIÑIÔIØØðñ ô €Cõ
 ˜3Ð 5Ñ
6Ô
6€CØ#ˆ:ˆ:ˆ:ˆ:ˆ:ˆ:r2   zsource,target))r   r   )r   r   )r   r3   )r3   r   )r   r   )r3   r   c                óÚ  — t          t          ddd| ¬¦  «        dd¬¦  «        }t          t          ddd|¬¦  «        dd¬¦  «        }t          t          j        dd	|j        ¦  «        dd|i¬
¦  «        }t          ||¦  «        }t          |j        |j        ¦  «         t          j         	                    | 
                    ¦   «         d	d¦  «         |                     ¦   «         dk    sJ ‚d S )Nr   z
2004-07-30r   r   r   r   r   r   r   r   rV   )r   r   r!   r"   r#   r   r	   r   r&   Úassert_almost_equalÚmaxÚmin)r(   r)   r*   Útgtr+   r,   s         r0   Útest_interp_calendarrl   À   só   € õ Ý< °CÀ&ÐIÑIÔIØØðñ ô €Cõ
 Ý< °CÀ&ÐIÑIÔIØØðñ ô €Cõ
 Ý
ŒAq˜#œ(Ñ#Ô#¨)¸VÀS¸Mðñ ô €Fõ ˜6 3Ñ'Ô'€DåS”X˜tœyÑ)Ô)Ð)å„J×"Ò" 4§8¢8¡:¤:¨q°!Ñ4Ô4Ð4Ø8Š8‰:Œ:˜Š?ˆ?ˆ?ˆ?ˆ?ˆ?r2   c                 óÂ  — t          dgdz  ddt          dddd¬¦  «        i¬	¦  «        } t          d
ddd¬¦  «        }t          j        t          d¬¦  «        5  t          | |¦  «         d d d ¦  «         n# 1 swxY w Y   t          g d¢dd¬¦  «        }|dz   }t          j        t          d¬¦  «        5  t          ||d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   éd   r   r   rQ   ÚMSr   )re   r   r   r   z
0001-01-01z
0001-12-30r   r   rT   rR   rU   rW   rX   r   z;Both 'source.x' and 'target' must contain datetime objects.rY   )r   r   r[   r\   r]   r   )r^   Útgt_360Úda1Úda2s       r0   Útest_interp_calendar_errorsrs   á   s”  € åØ	
ˆˆc‰	Øà•J˜|°S¸tÈhÐWÑWÔWð
ðñ ô €Fõ ˜ |¸$ÈÐTÑTÔT€Gå	ŒÝÐMð
ñ 
ô 
ð )ð )õ 	˜ Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ
 III F°Ð
5Ñ
5Ô
5€CØ
‰'€Cå	ŒÝÐWð
ñ 
ô 
ð +ð +õ 	˜˜S cÐ*Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð +ð +s$   ÁA5Á5A9Á<A9Â4CÃCÃC)Ú
__future__r   Únumpyr!   r[   Úxarrayr   r   Úxarray.coding.calendar_opsr   r   Úxarray.coding.cftime_offsetsr   Úxarray.testingr	   Úxarray.testsr
   Úimportorskipr   ÚmarkÚparametrizer1   rA   rO   ra   rf   rl   rs   © r2   r0   ú<module>r      s/  ðØ "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø +Ð +Ð +Ð +Ð +Ð +Ø (Ð (Ð (Ð (Ð (Ð (à	ˆÔ	˜XÑ	&Ô	&€ð „×ÒØ&ðð ð ñô ð&=ð &=ñô ð&=ðR „×ÒØðð ð ñô ð „×Ò˜ f¨fÐ%5Ñ6Ô6ð <ð  <ñ 7Ô6ñô ð <ðF Ø„×ÒØðð ð ñ	ô 	ð@ð @ñ	ô 	ñ „ð@ðD ð2ð 2ñ „ð2ð6ð ð ð „×ÒØðð ð ñ
ô 
ðð ñ
ô 
ðð, ð+ð +ñ „ð+ð +ð +r2   