U
    Cvf̦                  !   @  s  d dl mZ d dlmZ d dlZd dlZd dlZd dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! d dl"m#Z# d dl$m%Z% d dl&m'Z'm(Z( e)d	Z*d
d Z+ej,e'ddd Z-ej.j/de dfe dfe dfe dfe dfe dfe dfe dfe dfe dfe dfe dfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfedddfge+ddd Z0ej.j/dedfedfedfedfedfedfedfedfedfedfedfedfedfedfge+ddd Z1ej.j/de dfe dfedddfedddfe dfe dfedddfedddfge+ddd  Z2ej.j/d!ed e3fed e3fed"e3fed"e3fede4fede4fed e3fed e3fede4fede4fed"e3fed"e3fge+dd#d$ Z5ej.j/d%e dfe d&fe d'fe d(fge+dd)d* Z6ej.j/d%e d+fe d,fe d-fge+dd.d/ Z7ej.j/d0e e e e ge+dd1d2 Z8ej.j/d3d4e fd5eddfd&e fd6eddfd7e fd8eddfd9e fd:eddfd;e fd<eddfd=e fd>eddfd?e fd@eddfdAeddfdBeddfdCeddfdDeddfdEeddfdFeddfdGeddfdHeddfge+ddIdJ Z9eedKZ:ej./dLe;e< dMg ej./dNddgej./dOdPdQgdRdS Z=eedTZ>ej./dLe;e< dMg ej./dNddgej./dOdUdVgdWdX Z?ej./dYdZd[d\d]d^d_d`gdadb Z@ej.j/dcdddege+ddfdg ZAdhdi ZBdjdk ZCe e e eddedde e eddedde e e e e e e e gZDeddeddeddedddledddleddeddedddledddleddeddeddeddeddeddeddeddgZEej.j/dmeeDeEe+ddndo ZFeddeddeddedddledddleddeddedddledddleddeddeddeddeddeddeddeddgZGej.j/dmeHeEeGe+ddpdq ZIe deddfe deddfe deddfe deddfe deddfe deddfe deddfe deddfe deddfe deddfe deddfe deddfe deddfe deddfe dreddfe dredsdfe dredsdfe dredtdfe dredtdfgZJej.j/dueJe+ddvdw ZKej.j/dueJe+ddxdy ZLdzd{ ZMej.j/d0e e e e e e ge+dd|d} ZNd~d ZOej.j/d%e eddfe eddfe eddfe eddfe eddfe eddfe eddfe eddfe eddfe eddfe eddfe eddfe eddfge+ddd ZPedddfedddfedddfedddfedddfedddfgZQej.j/deQe+ddd ZRej.j/deQe+ddd ZSej.j/dedddfedddfedddfedddfedddfedddfge+ddd ZTej.j/d0eDe+ddd ZUej.j/dmeHeDeEe+ddd ZVej.j/dme;eHeWeDdeEeddeddfg e+ddd ZXdd ZYdd ZZej.j/dde dfdedddfde dfdedddfdedddfdedddfdedddfdedddfdedddfdedddfde dfde dfdedddfge+ddd Z[ej.j/dde ddfdeddddfdeddddfdeddddfdeddddfdeddddfde ddfdeddddfge+ddd Z\ej.j/ddde ddfddeddddfddeddddfddeddddfddeddddfddeddddfdde ddfddeddddfge+ddd Z]ej.j/dde dfdedddfdedddfdedddfdedddfdedddfde dfdedddfge+ddd Z^ej.j/dde ddfdeddddfdeddddfdeddddfdedddlddfde ddfdeddddfge+dddƄ Z_ej.j/ddde ddfddeddddfddeddddfddeddddfddeddddfdde ddfddeddddfge+dddɄ Z`ej.j/dde dfdedddfdedddfdedddfdedddfdedddfde dfdedddfge+dddЄ Zaej.j/dde ddfdeddddfdeddddfdeddddfdedddlddfde ddfdeddddfge+dddӄ Zbej.j/ddde ddfddeddddfddeddddfddeddddfddeddddfdde ddfddeddddfge+dddׄ Zcej.j/dde dfde dfde dfde dfde dfde dfde dfde dfde dfde dfde dfde dfde dfde dfde dfde dfde dfde dfde dfge+ddd Zdej.j/ddde fdde fdde fddeddfdde fddeddfge+ddd Zeej.j/de ddfe ddfeddddfedddlddfe ddfeddddfedddlddfedddlddfe ddfe ddfeddddfedddlddfe ddfeddddfedddlddfedddlddfe ddfe ddfeddddfe ddfe ddfeddddfe ddfe ddfe ddfe ddfe ddfe ddfge+ddd Zfej.j/de ddfeddddfedddlddfe ddfedddlddfe ddfeddddfedddlddfeddddfe ddfe ddfeddddfedddlddfe ddfeddddfedddlddfedddlddfe ddfeddddfe ddfe ddfeddddfe ddfe ddfe ddfe ddfe ddfe ddfe ddfge+ddd Zgdddd7ddddddgfdddd7dddddgfdddd7dddddgfdddd7dddddgfdddd7dddddgfdddd7ddddddgfdddd7ddddddgfdddd7ddddddgfdddd7ddddddgfdddd7ddddddgfdd dddddʐdddgfdddd7ddg fdddeddddܐdddd	gfddddddddddgfd
dddddddĐddgfgZhej.j/dehe+ddd Zidd Zjej./ddddddddgdd Zkd5dddd d!d"d#gfd5d$d%dd d!d"d#gfd5d&d'dd d(d)d*gfd5d+d%dd d!d"d#gfd5d,d%dd d!d"d#gfd5d-d%dd d!d"d#gfgZlej.j/d.ele+dd/d0 Zmej./d1d2d3d4d5d6d7d8d9d:d;d<d=gd>d? Znej./dYdQd4d7gd@dA Zoej./dYdQd4d7gdBdC ZpdDdE Zqej./dFdGd+dejrfdGdHde
fdGdde
fdGd,dejrfdId+de
fdJd+de
fgdKdL ZsdMdN Zte(ej./dOdPdQdRdSdTgdUdV ZudWdX ZvdYdZ Zwd[d\ ZxdS (]      )annotations)productN)CFTimeIndex)_MONTH_ABBREVIATIONSBaseCFTimeOffsetDayHourMicrosecondMillisecondMinute
MonthBeginMonthEndQuarterBegin
QuarterEndSecondTick	YearBeginYearEnd_days_in_monthcftime_range
date_rangedate_range_likeget_date_typeto_cftime_datetime	to_offset)
infer_freq)	DataArray)_CFTIME_CALENDARSrequires_cftimecftimec                 C  s   t | S )z:Called on each parameter passed to pytest.mark.parametrize)strparam r#   D/tmp/pip-unpacked-wheel-h316xyqg/xarray/tests/test_cftime_offsets.py_id_func)   s    r%   )paramsc                 C  s   | j S Nr!   )requestr#   r#   r$   calendar.   s    r)   offsetZ
expected_n      n)idsc                 C  s   | j |kstd S r'   )r/   AssertionErrorr*   r#   r#   r$   &test_cftime_offset_constructor_valid_n3   s    r2   r+   Z	invalid_ng      ?c              	   C  s$   t t | |d W 5 Q R X d S )Nr.   pytestraises	TypeErrorr3   r#   r#   r$   (test_cftime_offset_constructor_invalid_nU   s    r8   r+   Zexpected_month      month   c                 C  s   | j |kstd S r'   )r=   r1   r9   r#   r#   r$   (test_year_offset_constructor_valid_monthn   s    r?   r+   Zinvalid_month	exception   c              	   C  s$   t | | |d W 5 Q R X d S )Nr<   )r5   r6   r@   r#   r#   r$   *test_year_offset_constructor_invalid_month   s    rC   r+   expectedZMSzAS-JANzQS-MARc                 C  s   |   |kstd S r'   )Z	rule_coder1   rD   r#   r#   r$   test_rule_code   s    rF   z<BaseCFTimeOffset: n=1>z<YearBegin: n=1, month=1>z<QuarterBegin: n=1, month=3>c                 C  s$   t | |kstt| |ks td S r'   )r    r1   reprrD   r#   r#   r$   test_str_and_repr   s    
rH   r+   c                 C  s   t | | kstd S r'   r   r1   r+   r#   r#   r$   test_to_offset_offset_input   s    rK   freqrE   MZ2MZ2MSDZ2DHZ2HTZ2TminZ2minSZ2SLZ2LmsZ2msUZ2UusZ2usc                 C  s   t | |kstd S r'   rI   rL   r#   r#   r$   test_to_offset_sub_annual   s    rX   )AAS)	month_intmonth_label)r    multiple
offset_strrZ   rY   c                 C  s   |}t | }| rd|| g}|r.| | }t|}|rL|rL|||d}n&|r\||d}n|rl||d}n| }||ks~td S )N-r/   r=   r.   r<   )_ANNUAL_OFFSET_TYPESjoinr   r1   r\   r[   r^   r_   rM   Zoffset_typeresultrE   r#   r#   r$   test_to_offset_annual   s    rf   )QQSrh   rg   c                 C  s   |}t | }| rd|| g}|r.| | }t|}|rL|rL|||d}nv|r|r`||d}q|tkrv||dd}q|tkr||dd}n6|r||d}n&|tkr|dd}n|tkr|dd}||kstd S )Nr`   ra   r.   r,   r:   r<   )_QUARTER_OFFSET_TYPESrc   r   r   r   r1   rd   r#   r#   r$   test_to_offset_quarter   s.    
rj   rM   ZZ7min2ZAMzM-zAS-zQS-Z1H1minc              	   C  s"   t t t|  W 5 Q R X d S r'   )r5   r6   
ValueErrorr   )rM   r#   r#   r$   test_invalid_to_offset_str  s    rm   )argumentexpected_date_args)
2000-01-01  r,   r,   )rq   rq   c                 C  s>   t | }|| }t|tr"|| }t|| d}||ks:td S )N)r)   )r   
isinstancetupler   r1   )r)   rn   ro   	date_typerE   re   r#   r#   r$   test_to_cftime_datetime#  s    
rv   c                	   C  s"   t t td W 5 Q R X d S )N2000)r5   r6   rl   r   r#   r#   r#   r$   )test_to_cftime_datetime_error_no_calendar1  s    rx   c                	   C  s"   t t td W 5 Q R X d S Nr,   )r5   r6   r7   r   r#   r#   r#   r$   (test_to_cftime_datetime_error_type_error6  s    rz   ra   abc                 C  s   | |kst d S r'   r1   r{   r#   r#   r$   test_neqc  s    r   c                 C  s   | |kst d S r'   r~   r{   r#   r#   r$   test_eq}  s    r         ?   i  r+   r^   rE   c                 C  s   | | |kst d S r'   r~   r   r#   r#   r$   test_mul  s    r   c                 C  s   ||  |kst d S r'   r~   r   r#   r#   r$   	test_rmul  s    r   c                   C  s,   dt   t kstdt  t ks(tdS )zITest more than one iteration through _next_higher_resolution is required.gư>gt(gLQ>N)r   r	   r1   r   r#   r#   r#   r$   .test_mul_float_multiple_next_higher_resolution  s    r   c              	   C  s&   t jtdd | d  W 5 Q R X dS )z\Test that the appropriate error is raised if a non-Tick offset is
    multiplied by a float.zunsupported operand typematchr   Nr4   rJ   r#   r#   r$   *test_nonTick_offset_multiplied_float_error  s    r   c                	   C  s(   t jtdd t d  W 5 Q R X dS )zTest that the appropriate error is raised if a Tick offset is multiplied
    by a float which causes it not to be representable by a
    microsecond-precision timedelta.z5Could not convert to integer offset at any resolutionr   r   N)r5   r6   rl   r	   r#   r#   r#   r$   'test_Microsecond_multiplied_float_error  s
     r   c                 C  s   |  |kst d S r'   r~   rD   r#   r#   r$   test_neg  s    r   )r,   r,   r>   )r,   r,   r,   r-   )r,   r,   r,   r   r-   )r,   r,   r,   r   r   r-   )r,   r,   r,   r   r   r   rr   )r,   r,   r,   r   r   r   r-   )r+   ro   c                 C  s4   t |}|ddd}|| }| | }||ks0td S ry   r   r1   r+   ro   r)   ru   initialrE   re   r#   r#   r$   test_add_sub_monthly  s
    r   c                 C  s4   t |}|ddd}|| }||  }||ks0td S ry   r   r   r#   r#   r$   test_radd_sub_monthly  s
    r   )r,   r,   r,   )r,   r,   r-      )r,   r,   r-      :   )r,   r,   r-   r   ;   r   )r,   r,   r-   r   r   r   ip: )r,   r,   r-   r   r   r   i>B c                 C  s4   t |}|ddd}|| }||  }||ks0td S )Nr,   r>   r   r   r#   r#   r$   test_rsub_sub_monthly  s
    r   c              	   C  s6   t |}|ddd}tt | |  W 5 Q R X d S ry   )r   r5   r6   r7   )r+   r)   ru   r   r#   r#   r$   test_sub_error  s    r   c                 C  s   ||  }| }||kst d S r'   r~   )r|   r}   re   rE   r#   r#   r$   test_minus_offset  s    r   c              	   C  s"   t t ||   W 5 Q R X d S r'   r4   r{   r#   r#   r$   test_minus_offset_error  s    r   c                 C  s(   t | }|ddd}t|dks$td S )Nr,      r   r   r   r1   )r)   ru   	referencer#   r#   r$   test_days_in_month_non_december   s    r   c                 C  s:   | dkrd}nd}t | }|ddd}t||ks6td S )N360_dayr      r,   r:   r;   r   )r)   rE   ru   r   r#   r#   r$   test_days_in_month_december&  s    r   )initial_date_argsr+   ro   )r,   r-   r,   )r,   r>   r,   )r,   r,      )r,   r>   r>      )r-   r   r,   i)r,   r,   r,   r;   r;   r;   r;   )r,   r-   r,   r;   r;   r;   r;   )r,   r,   r>   r;   r;   r;   r;   c                 C  s0   t | }|| }|| }|| }||ks,td S r'   r   r)   r   r+   ro   ru   r   re   rE   r#   r#   r$   test_add_month_begin0  s
    r   )r   r+   expected_year_monthexpected_sub_day)r,   r,   r#   )r,   r-   )r-   r>   )r;   r;   r;   r;   c                 C  sR   t | }|| }|| }|d }|| }	|t|	f | }
||
 }||ksNtd S Nr,   r   r)   r   r+   r   r   ru   r   re   reference_argsr   ro   rE   r#   r#   r$   test_add_month_endK  s    r   )initial_year_monthinitial_sub_dayr+   r   r   )r,   r>   )r-   r   c                 C  st   t | }|d }|| }|t|f | }	||	 }
|
| }|d }|| }|t|f | }|| }||ksptd S r   r   r)   r   r   r+   r   r   ru   r   r   r   r   re   ro   rE   r#   r#   r$   test_add_month_end_onOffsetj  s    r   )r-   r,   r,   )r>   r,   r,   )r-   r-   r,   )r,   r,   r-   )r-   r,   r,   r;   r;   r;   r;   c                 C  s0   t | }|| }|| }|| }||ks,td S r'   r   r   r#   r#   r$   test_add_year_begin  s
    r   )r,   r:   )r-   r:   )r-   r>   r,   c                 C  sR   t | }|| }|| }|d }|| }	|t|	f | }
||
 }||ksNtd S r   r   r   r#   r#   r$   test_add_year_end  s    r   )r>   r:   c                 C  st   t | }|d }|| }|t|f | }	||	 }
|
| }|d }|| }|t|f | }|| }||ksptd S r   r   r   r#   r#   r$   test_add_year_end_onOffset  s    r   )r,      r,   )r,   r:   r,   )r,   r>   r-   )r,   r>   r,   r;   r;   r;   r;   )r,   r:   r,   r;   r;   r;   r;   c                 C  s0   t | }|| }|| }|| }||ks,td S r'   r   r   r#   r#   r$   test_add_quarter_begin  s
    r   )r,   r   c                 C  sR   t | }|| }|| }|d }|| }	|t|	f | }
||
 }||ksNtd S r   r   r   r#   r#   r$   test_add_quarter_end  s    r   )r-   r   )r,   	   c                 C  st   t | }|d }|| }|t|f | }	||	 }
|
| }|d }|| }|t|f | }|| }||ksptd S r   r   r   r#   r#   r$   test_add_quarter_end_onOffset/  s    r   )	date_argsr+   rE   T)r,   r,   r,   r,   )r,   r,   r;   F)r,   r>   r,   r,   )r,   r>   r;   c                 C  s*   t | }|| }||}||ks&td S r'   )r   onOffsetr1   )r)   r   r+   rE   ru   datere   r#   r#   r$   test_onOffset^  s    
r   )year_month_argssub_day_argsr+   r   c           
      C  sH   t | }|d }|| }|t|f | }|| }||}	|	sDtd S r   )r   r   r   r1   )
r)   r   r   r+   ru   r   r   r   r   re   r#   r#   r$   *test_onOffset_month_or_quarter_or_year_end~  s    
r   )r+   r   partial_expected_date_args)r-   r,   )r-   r-   r   )r,   r   r   )r,   r   )r,   r   r,   )r,   r;   )r,   r>   r-   r,   )r,   r>   r-   r,   r,   )r,   r>   r-   r,   r,   r,   )r,   r>   r-   r,   r,   r,   r,   )r,   r>   r-   r,   r,   r,   i  c                 C  s   t | }|| }t|tttfr*|d }n4t|tttfrZ|d }|| }|t|f }n|}|| }	|	|}
|
|	ks|t
d S r   )r   rs   r   r   r   r   r   r   r   Zrollforwardr1   r)   r+   r   r   ru   r   ro   r   r   rE   re   r#   r#   r$   test_rollforward  s    #

r   c                 C  s   t | }|| }t|tttfr*|d }n4t|tttfrZ|d }|| }|t|f }n|}|| }	|	|}
|
|	ks|t
d S r   )r   rs   r   r   r   r   r   r   r   rollbackr1   r   r#   r#   r$   test_rollback  s    $

r   z
0001-01-01z
0001-01-04)r,   r,   r   leftrightz0001-01-01T01:00:00)r,   r,   r-   r,   )r,   r,   r>   r,   z0001-01-01 01:00:00z
0001-01-30z
0011-02-01z3AS-JUN)r   r   r,   )r   r   r,   )
   r   r,   Z0010)r   r,   r,   )   r,   r,   )r   r,   r,   )r   r,   r,   z
0001-06-01z3QS-JUN)r-   r:   r,   )r>   r   r,   )startendperiodsrM   closed	normalizero   c              	     s   t |  fdd|D }t| tr, |  } t|tr> | }t| ||||||d}	|	j}
t|	tsht|d k	rtj	|
| n4|
| }t
dd |D }tt|dk std S )Nc                   s   g | ]} | qS r#   r#   .0argsru   r#   r$   
<listcomp>  s     z%test_cftime_range.<locals>.<listcomp>)r   r   r   rM   r   r   r)   c                 S  s   g | ]}|  qS r#   )total_seconds)r   deltar#   r#   r$   r     s     gMbP?)r   rs   rt   r   valuesr   r1   nptestingassert_equalarraymaxabs)r   r   r   rM   r   r   r)   ro   Zexpected_datesre   Zresulting_datesZdeltasr#   r   r$   test_cftime_range~  s,    

	r   c                  C  s:   t dddd} | jdkstt ddd} | jd ks6td S )Nrw   r   Zfoo)r   r   name)r   r   )r   r   r1   )re   r#   r#   r$   test_cftime_range_name  s    r   r   r   r   rM   r   )NNr;   rY   N)rw   NNrY   N)Nrw   NrY   N)rw   2001NNN)NNNNN)rw   r   NrY   Zup)rw   r   r;   rY   Nc              	   C  s,   t t t| ||||d W 5 Q R X d S )N)r   )r5   r6   rl   r   r   r#   r#   r$    test_invalid_cftime_range_inputs  s    r   noleap)r-      )r   r   )r   r   )r   r   )r   r   )r:   r   all_leap)r-      r   )r-   r   )r   r   )r   r   )r:   r   standard	gregorianjulian)rM   r)   expected_month_dayc                   sD   dt dd| |dj}t|  fdd|D }tj|| d S )Nrr   z2000-02r   )r   r   rM   r)   c                   s   g | ]} f| qS r#   r#   r   ru   yearr#   r$   r     s     z4test_calendar_specific_month_end.<locals>.<listcomp>)r   r   r   r   r   r   )rM   r)   r   re   rE   r#   r   r$    test_calendar_specific_month_end  s       r   )r)   r   r   expected_number_of_days)r   rw   r   m  )r   rw   r   n  )r   rw   r   h  )r   rw   r   r   )r   rw   r   r   )r   rw   r   r   )r   r   2002r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                 C  s&   t ||dd| d}t||ks"td S )NrO   r   )rM   r   r)   )r   lenr1   )r)   r   r   r   re   r#   r#   r$   test_calendar_year_length  s    r   c                 C  s4   t dd| dj}tjdd| dj}tj|| d S Nz
2000-02-01r>   )r   rM   )r   Z	dayofweekpdr   r   r   assert_array_equalrM   re   rE   r#   r#   r$   !test_dayofweek_after_cftime_range  s    r   c                 C  s4   t dd| dj}tjdd| dj}tj|| d S r   )r   Z	dayofyearr   r   r   r   r   r   r#   r#   r$   !test_dayofyear_after_cftime_range  s    r   c                  C  s,   ddl m}  tddd\}t|| s(td S )Nr   )DatetimeGregorianrw   r,   )r   )r   r   r   rs   r1   )r   re   r#   r#   r$   7test_cftime_range_standard_calendar_refers_to_gregorian  s    r   z'start,calendar,use_cftime,expected_typez
1990-01-01proleptic_gregorian
1400-01-01z
3400-01-01c                 C  s$   t | dd||d}t||s td S )Nr   rO   r   rM   r)   
use_cftime)r   rs   r1   )r   r)   r   Zexpected_typeZdrr#   r#   r$   test_date_range  s        r  c                	   C  s   t jtdd tdddddd W 5 Q R X t jtdd td	ddd
dd W 5 Q R X t jtdd tdddddd W 5 Q R X d S )NzDate range is invalidr   r   r,   rO   r   Fr   z
2480-01-01r   zInvalid calendar z
1900-01-01r   )r5   r6   rl   r   r#   r#   r#   r$   test_date_range_errors  s0            r  z1start,freq,cal_src,cal_tgt,use_cftime,exp0,exp_pd)
2020-02-01Z4Mr   r   N
2020-02-28F)r  rN   r   r   Tz
2020-02-29T)r  Z3Hr   r   Fr  T)
2020-03-30rN   r   r   F
2020-03-31T)r  rN   r   r   Nr  Fc           	      C  s   t | d||d}t|||d}t|dks.tt||ks>t|d  |sTt|rjt|tj	stnt|t
sxt|j|kstd S )Nr:   )r   rM   r)   r   r   )r   r   r   r1   r   	isoformat
startswithrs   r   DatetimeIndexr   r)   )	r   rM   Zcal_srcZcal_tgtr   Zexp0Zexp_pdsourceoutr#   r#   r$   test_date_range_like,  s    r  c                  C  s.   t ddddd} t| ddd}| |ks*td S )Nrp   r:   Z6HFr   rM   r   r   r  )r   r   r1   )srcr  r#   r#   r$   "test_date_range_like_same_calendarH  s    r  c               	   C  s   t ddddd} | tddk } tjtdd t| d	 W 5 Q R X ttjd
dgddggtj	ddd} tjtdd t| d W 5 Q R X tddddgdd}tjtdd t|d W 5 Q R X d S )Nz
1899-02-03   rO   Fr  r   z[`date_range_like` was unable to generate a range as the source frequency was not inferable.r   r   z
1999-01-01z
1999-01-02z
1999-01-03z
1999-01-04)Zdtype)xy)ZdimszH'source' must be a 1D array of datetime objects for inferring its range.r   r,   r-   r>   r   )time)
r   r   Zaranger5   r6   rl   r   r   r   Z
datetime64)r  dar#   r#   r$   test_date_range_like_errorsN  s2    r  c               	   C  s(   t  } tt |   W 5 Q R X d S r'   )r   r5   r6   NotImplementedErrorZas_timedelta)Ztickr#   r#   r$   "as_timedelta_not_implemented_errorm  s    r  )y
__future__r   	itertoolsr   Znumpyr   Zpandasr   r5   Zxarrayr   Zxarray.coding.cftime_offsetsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zxarray.coding.frequenciesr   Zxarray.core.dataarrayr   Zxarray.testsr   r   Zimportorskipr   r%   Zfixturer)   markZparametrizer2   r8   r?   rl   r7   rC   rF   rH   rK   rX   rb   listitemsrf   ri   rj   rm   rv   rx   rz   Z_EQ_TESTS_AZ_EQ_TESTS_Br   Z_EQ_TESTS_B_COPYzipr   Z
_MUL_TESTSr   r   r   r   r   r   Z
_ADD_TESTSr   r   r   r   r   Zrollr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z_CFTIME_RANGE_TESTSr   r   r   Z"_CALENDAR_SPECIFIC_MONTH_END_TESTSr   r   r   r   r   r
  r  r  r  r  r  r  r#   r#   r#   r$   <module>   s  `









	



 
 

	



































	
	




	
	









































"
















#
















	


 $""""""


