
    dvN                   	   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	Z	d dl
Zd dl
mZmZm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 e	j        d             Ze	j        d             Z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g          dd            Z*e	j(        )                    d ej        g ddg dfg           ej        ddg dfidg di          g          d~d            Z+e	j(        )                    d ej        g ddg dfg           ej        ddg dfidg di          g          d~d            Z,d~d Z-d~d!Z.d~d"Z/d~d#Z0d~d$Z1e	j(        )                    d%ddg          d~d&            Z2d~d'Z3 ej        ej4        5                    d(d)d*d+          g d,g d-g d. ej6        d/d0d+1          d2 e7 e8d3d4                    d5z  fd67          Z9e	j(        )                    d8g d9          e	j(        )                    de9e9:                    d:;          g          d~d<                        Z;e	j(        )                    de9e9:                    d:;          g          d~d=            Z<e	j(        =                    d>          e	j(        =                    d?          d~d@                        Z>d~dAZ?d~dBZ@d~dCZAd~dDZBd~dEZCd~dFZDd~dGZEd~dHZFd~dIZGd~dJZHd~dKZIe	j(        )                    dLddg          d~dM            ZJd~dNZKd~dOZLe	j(        )                    dddg          ddP            ZMe	j(        )                    dQddg          d~dR            ZNd~dSZOd~dTZPd~dUZQd~dVZRd~dWZSdX ZTdY ZUdZ ZVd[ ZWd\ ZXee	j(        )                    d]d^d_id`daig          db                         ZY G dc dd          ZZ G de df          Z[ G dg dh          Z\d~diZ]d~djZ^e	j(        )                    dkdlg dmfdng dofg          dds            Z_d~dtZ`d~duZaee	j(        )                    dvdwdxg          e	j(        )                    dyddg          e	j(        )                    dzdd3g          dd|                                                Zbe	j(        )                    dddg          dd}            ZcdS )    )annotationsN)	DataArrayDatasetVariable)_consolidate_slices)assert_allcloseassert_array_equalassert_equalassert_identicalcreate_test_data
has_cftimehas_floxhas_pandas_version_tworequires_daskrequires_floxrequires_scipyc                     t          j        dt          j                            ddd          fdg dfddg dd	difg d
ddgd          } dg dgdz  f| d<   | S )Nxyz         r   )efg)foobazabcname   r   r   r   r&   )r   r   )r   r   hjboo)xrr   nprandomrandndss    9lib/python3.11/site-packages/xarray/tests/test_groupby.pydatasetr1      s    	#RY__Q1%=%=>)	
 	
 OOOfc]3,,,aQRVTT
 
B 2223a78BuII    c                    | d         S )Nr    r1   s    r0   arrayr6   +   s    5>r2   returnNonec                    t          t          d          t          dd          g          t          d          gk    sJ t          t          dd          t          dd          g          t          dd          gk    sJ t          t          ddd          t          ddd          g          t          ddd          gk    sJ t          dd          t          dd          g} t          |           | k    sJ t          j        t                    5  t          t          d          dg           d d d            d S # 1 swxY w Y   d S )Nr      r      r&   r   )r   slicepytestraises
ValueError)slicess    r0   test_consolidate_slicesrA   0   so   a%1++677E!HH:EEEEaU1a[[9::uQ{{mKKKKaAaA?@@U1aQR^^DTTTTTAqkk5A;;'Fv&&&0000 
z	"	" + +U1XXqM***+ + + + + + + + + + + + + + + + + +s   EE	Ec                   |                      d          j        |                     d          j        k    sJ |                      d          j        |                     d          j        k    sJ |                     ddi          }|                     d          j        |                    d	          j        k    sJ d S )
Nr   r&   r   r   r   xyr   r   r   )rE   )groupbydimsiselstack)r1   stackeds     r0   test_groupby_dims_propertyrL   =   s    ??3$q(9(9(>>>>>??3$q(9(9(>>>>>mmT:.//G??4  %););)@@@@@@@r2   c                   |                      dd          dg         }d|z  }|                    ddg                              d	                              d
                               d	          }t          ||           d S )Nr&   T)r   dropr   r   r   r   spacerP   c                    d| z  S Nr   r4   rC   s    r0   <lambda>z.test_multi_index_groupby_map.<locals>.<lambda>L   s
    q1u r2   )rI   rJ   rG   mapunstackr
   )r1   r/   expectedactuals       r0   test_multi_index_groupby_maprX   E   s    		%	%ug	.B2vH
Sz""				__						  6"""""r2   c                X   |                      dd          }t          j        d          5  |                                }d d d            n# 1 swxY w Y   t          j        d          5  |                                }d d d            n# 1 swxY w Y   t	          ||           d S )Nr   Fsqueezeuse_floxT)rG   r*   set_optionssumr   )r1   gbrV   rW   s       r0   test_reduce_numeric_onlyra   R   s   	e	,	,B		'	'	'  6688              		&	&	&                Xv&&&&&s#   AAA.BBBc                 V   t          j        ddt          j        d          fig dg dd          } |                     d          }|                     dd	g
                              d                              d                              d          }t          ||           d S )Nr   r   )r   r   r   r    r%   rF   r   r   r   rO   rP   )	r*   r   r+   onesr_   rJ   rG   rU   r
   )r/   rV   rW   s      r0   test_multi_index_groupby_sumrd   [   s    		"')"4"456ooLLL11
 
B vvc{{HXXS#JX''//88<<SAAII'RRF6"""""r2   c                    t          j        dd          } t          j        g dt	          |           d          }|                                 }|d         |d	         g}|dd
         d	z  |d
d	         d	z  z   }t          j        |t	          |           dd          }|                    |          }|                    d          }t          j        ddgt	          |          d          }t          ||           d S )N
2000-01-01r   periodsr%   timerj   coordsrH   r   r   r&   reference_daterl   rH   r$   dimr      )rm   )	pd
date_ranger*   r   dictto_pydatetimerG   r_   r
   )	timesr   ddreference_dateslabelsindr   rW   rV   s	            r0   test_groupby_da_datetimer{   f   s    M,222E
,|||De,<,<,<6
J
J
JC					B!ubenOQqS!A%!(<q(@@F
,t'''f;K  C 	CAUUvUF|	
At?;;;BR  H 6"""""r2   c                     t          j        g ddg dfg          } t          j        ddgdddgfg          }|                     d                                          }t	          ||           d S )Nr&   r   r   r   r&   r&   r   r   r&   r   )r*   r   rG   r_   r
   )r6   rV   rW   s      r0   (test_groupby_duplicate_coordinate_labelsr   z   su    Lc999%5$677E|QFcAq6]O44H]]3##%%F6"""""r2   c                 ,   t          j        g ddg dfg          } |                                 }t          j        ddgdddgfg          }|                     d                                          }t          ||           t          | |           d S )Nr}   r   r   r   r&   r   r&   r   )r*   r   copyrG   r_   r   )r6   
array_copyrV   rW   s       r0   test_groupby_input_mutationr      s    Lc999%5$677EJ|QFcAq6]O44H]]3##%%FXv&&&UJ'''''r2   r]   TFboolc                   t          j        g ddg dfg          }t          j        dt          j        |j        j                            }t          j        |           5  |                    |          	                                }d d d            n# 1 swxY w Y   |                    |          	                                }t          j        ddgdddgfg          }t          ||           d S )	Nr}   r   r   )rH   datar\   r   r&   r   )r*   r   IndexVariablerr   Indexr   valuesr^   rG   r_   r   )r]   r6   ivrW   rV   s        r0   test_groupby_indexvariabler      s    Lc999%5$677E		s%'.)A)A	B	B	BB		*	*	* ) )r""&&(() ) ) ) ) ) ) ) ) ) ) ) ) ) )]]2""$$F|QFcAq6]O44HXv&&&&&s   $(BBBobjr&   r   r   r   r:   r;   r   r&   r&   r&   r   r   r   r   c                    |                      g d          }|                     d                              d           }t          ||           d S )N)r   r&   r   r   rC   r   c                2    |                      ddg          S )Nr   r&   rC   )rI   )r   s    r0   rS   z0test_groupby_map_shrink_groups.<locals>.<lambda>   s    AFFaVF,<,< r2   rI   rG   rT   r   )r   rV   rW   s      r0   test_groupby_map_shrink_groupsr      sT     xx,,,x''H[[!!"<"<==FXv&&&&&r2   r}   )r&   r   r   c                    d }|                      g d          }|                     d                              |          }t          ||           d S )Nc                    | j         d         dk    r|                     ddg          }n|                     dg          }|S )Nr   r&   r   rC   )sizesrI   )groupresults     r0   funcz0test_groupby_map_change_group_size.<locals>.func   sG    ;sq  ZZ1a&Z))FFZZ1#Z&&Fr2   r   r   r&   rC   r   r   )r   r   rV   rW   s       r0   "test_groupby_map_change_group_sizer      s_       xx)))x$$H[[!!$''FXv&&&&&r2   c                     d
d} t          j        g ddg dfg          }t          j        g ddg dfg          }|                    d                              | dd	          }t	          ||           d S )Nr   c                    | |z   |z   S Nr4   arg1arg2arg3s      r0   r   z+test_da_groupby_map_func_args.<locals>.func       d{T!!r2   r&   r&   r&   r   r}   r   r   r   r&   r&   argsr   r   )r*   r   rG   rT   r   )r   r6   rV   rW   s       r0   test_da_groupby_map_func_argsr      s    " " " " Lc999%5$677E|IIIiii(8'9::H]]3##Dt!#<<FXv&&&&&r2   c                     dd} t          j        ddg dfidg di          }t          j        ddg dfidg di          }|                    d                              | dd	
          }t	          ||           d S )Nr   c                    | |z   |z   S r   r4   r   s      r0   r   z+test_ds_groupby_map_func_args.<locals>.func   r   r2   r   r   r   r}   r   r   r&   r   r   )r*   r   rG   rT   r   )r   r1   rV   rW   s       r0   test_ds_groupby_map_func_argsr      s    " " " " j%#yyy!12S)))4DEEGz53			"23c9995EFFH__S!!%%dA%>>FXv&&&&&r2   c                     t          j        g d          } t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S )Nrp   rH   )r*   r   r=   r>   r?   rG   )empty_arrays    r0   test_da_groupby_emptyr      s    ,r...K	z	"	" # #E"""# # # # # # # # # # # # # # # # # #s   AAAc                 X	   t          j        g ddg did          } t          j        ddgddgdd	d          }|                     d                              d          }t	          ||           t          j        dd
gddggddgddgd	d	          }|                     d                              ddg          }t	          ||           t          j        t
          j        dd
dddgdg did          } dD ]n}|du rt
          j        dgnddg}t          j        |ddgdd	d          }|                     d                              d|          }t	          ||           ot          j        g dg dg dg dg dgg dg ddd          } |                     d                              dd          }t          j        ddgddgdd	d          }t	          ||           |                     d                              dd          }t          j        ddgddgddd          }t	          ||           |                     d                              d          }	t          j        g dg d gddgg ddd!d          }
t	          |
|	           |                     d                              d          }t          j        dd"gddgd
d#gdd$gdd%ggg dddgdd!d          }t	          ||           t          j        d&d'(          }ddg}t          j        t          j	        t          j
        d)          d*          ||d+d+,          }|                    |j        j        j                  }|                    dd          }t          j        g d-t          j
        dd.          dd/d0          }t	          ||           |                    dd1          d d         }t          j        d2dgd3d4ggddgddgdd5d6          }t	          ||           t          j        g d7dg d8id          } t          j        dd
gddgdd	d          }|                     d                              dd9:          }t	          ||           d S );Nr   r   r   r   rl   rH   r   r:   r&         ?r   quantiler   r   r;   r   TFNF      @skipnar&         r         r         r         r:         r&   r&   r&   r   r   r   rF   .ro   r   r   r   r   r&   r   r   r   r   r   r   r   r   r   r   r   r   rf   m  rg     r   r   rj   r   rk                 O@g      ^@g     f@g     @n@g      s@g     v@g     z@g     ~@g      @g     @g     @r   monthr   r   rj   r   r   ?   r   r   r   r   r   r%   r&   r&   r   r   lowermethod)r*   r   rG   r   r   r+   NaNrr   rs   reshapearangerj   dtr   )r6   rV   rW   r   r   actual_x
expected_xactual_y
expected_y	actual_xxexpected_xx	actual_yyexpected_yyrv   r   r   r   s                    r0   test_da_groupby_quantiler      s   L.@.@.@(A  E
 |V1a&c::  H ]]3((--FXv&&& |!fq!fV!Q00  H
 ]]3((!Q00FXv&&&LfaAq!$c3E3E3E-FS  E & + +!U??RVQKKa<QaV/M/MTWXXXs##,,S,@@6**** Lkk;;;[[[+++N$__99955  E }}S!!**1#*66HV1a&a88s  J Z***}}S!!**1#*66HWAq6q99  J Z***c""++A..I,kk;;;'V)));;  K
 [),,,c""++A..I,"g2wB!R1b':$__Aq6qAA  K
 [),,,M,444E	
AA
,

29W%%x00A&&  C
 	CHK%&&AZZsZ##F|
 
 
 1b))q99!  H$ Xv&&&ZZvZ&&rr*F|Ahr
#Qq!f!<<  H
 Xv&&& LlllC3FSQQQE|V1a&c::  H ]]3((W(==FXv&&&&&r2   c            
     "
   t          j        ddg dfidg di          } t          j        ddddgfidd	dgd
          }|                     d                              d          }t	          ||           t          j        ddd	dgddggfid	dgdd	gd          }|                     d                              dd	g          }t	          ||           t          j        ddt
          j        dddddgfidg di          } dD ]q}|du rt
          j        dgnddg}t          j        dd|fidd	dgd
          }|                     d                              d|          }t	          ||           rt          j        ddg dg dg dg dg dgfig dg dd          } |                     d                              dd          }t          j        ddd	dgfid	dgdd          }t	          ||           |                     d                              dd          }t          j        ddd	d gfidd	gdd!          }t	          ||           |                     d                              d          }	t          j        ddg d"g d#gfid	dgg ddd$          }
t	          |
|	           |                     d                              d          }t          j        ddd	d%gdd gdd&gdd'gdd(ggfig ddd	gdd$                                          }t	          ||           t          j	        d)d*+          }dd	g}t          j        dd,t          j
        t          j        d-          d.          fit          ||,                    }|                    |j        j        j                  }|                    dd          }t          j        dd/g d0fit          j        d	d1          dd2          }t	          ||           |                    dd3                              t#          d d          4          }t          j        dd5d6d	gd7d8ggfid	dgdd	gdd9          }t	          ||           t          j        ddg d:fidg d;i          } t          j        ddd	dgfidd	dgd
          }|                     d                              dd<=          }t	          ||           d S )>Nr!   r   r   r   )	data_varsrl   r   r:   r   r&   )r   r   r   r   r   r;   r   r   Fr   r   rF   r   r   r   r   r   r   r   .ro   rl   r   r   r   r   r   r   r   r   r   r   rf   r   rg   r   r   r   r   r   r   r   rj   )r   r   r   r   r   r   r%   r   r   r   )r*   r   rG   r   r   r+   r   	transposerr   rs   r   r   rt   rj   r   r   rI   r<   )r/   rV   rW   r   r   r   r   r   r   r   r   r   r   rv   r   r   r   s                    r0   test_ds_groupby_quantiler   G  s)   	00012CASASAS;T
 
 
B
 zq!f&Cq!f/M/M  H ZZ__%%c**FXv&&& z*aVaV,<=>V!Q00  H ZZ__%%q!f--FXv&&&	rvq!Q1567'''(
 
 
B
 & + +!U??RVQKKa:S!Ho3aV.L.L
 
 
 C))#f)==6**** 
kkk;;;[[[Q
 %__99955
 
 
B zz#''s'33HS3A-01vST9U9UVVVJZ***zz#''s'33HS3B.1ATU:V:VWWWJZ***

3((++I*	zKKK567V)));;  K [),,,

3((++I*	zQGaWq"g2wBHIJ$__Aq6qAA   ikk  [),,,M,444E	
AA
*	}bj7););XFFGH!$$$  C 	CHK%&&AZZsZ##Fz  	
& 1b))q99)  H, Xv&&&ZZvZ&&++%a..+AAFz3(T2J)?@AQq!f!<<  H Xv&&&	sS,,,$78#|||AT	U	U	UB zq!f&Cq!f/M/M  H ZZ__%%c'%::FXv&&&&&r2   
as_datasetc                H   t          j        g ddg did          }| r|                    d          n|}t          j        t
          d          5  |                    d	d
          }d d d            n# 1 swxY w Y   |                    d	d
          }t          ||           t          j	        d          5  t          j
        t          d          5  |                    d	d
d
           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr%   r   r   r   r$   r$   z<`interpolation` argument to quantile was renamed to `method`matchr   r   )interpolationr   T)recordz!interpolation and method keywords)r   r   )r*   r   
to_datasetr=   warnsFutureWarningr   r   warningscatch_warningsr>   	TypeError)r   r6   arrrW   rV   s        r0   .test_groupby_quantile_interpolation_deprecatedr     s   LlllC3FSQQQE ,6
@%



'
'
'5C	L
 
 
 : : c99	: : : : : : : : : : : : : : : ||C|00HVX&&&		 	-	-	- E E]9,OPPP 	E 	ELLWGLDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	EE E E E E E E E E E E E E E E E E EsH   A77A;>A;>DC?3D?D	DD	DDDc                    t          j        g dg dgddgt          d          t          d          d          } |                     d                              dd	d
gi          }|                     d                              d	d
g          }t          j        g dg dgddgd	d
gt          d          d          }t          ||           t          ||           d S )N)r   r   r:   )r;   rq      r   r   r   r   )r   r   rH   rl   rD   )r*   r   rangerG   assign_coordsr   )rW   actual1actual2rV   s       r0   test_da_groupby_assign_coordsr	    s    \	IIIc3ZeAhhUSTXX8V8V  F nnS!!//r2h@@GnnS!!//2r(/;;G|	IIIc3Zr2hUSTXX8V8V  H Xw'''Xw'''''r2   
      r;   r   )r   r   r   t)r!   r"   r#   r!   r"   r#   )
r&   r&   r&   r   r   r   r   r:   r   r   
2001-01-01Mfreqrh   r  r&   r   r   )r   r   r  r   r  rp   )r   r   r   r   r!   r   c                @   t          |                     |                    }| j        j         d}|d|z  z  }|dt	          t          j        | |                             z  z  }|dk    r|dz  }n#|dk    r|dz  }n|dk    r|d	z  }n|d
k    r|dz  }||k    sJ d S )NGroupByz, grouped over %r
%r groups with labels r   z1, 2, 3, 4, 5.r   z*0, 1, 2, 3, 4, 5, ..., 15, 16, 17, 18, 19.r   z'a', 'b', 'c'.r   &1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12.)reprrG   	__class____name__lenr+   unique)r   rp   rW   rV   s       r0   test_groupby_reprr    s     #++c""##F-(111H#c))H*c")CH2E2E.F.FGGH
czz$$	@@	$$	<<Xr2   c                    t          |                     d                    }| j        j         d}|dz  }|dt	          t          j        | j        j        j	                            z  z  }|dz  }||k    sJ d S )Nzt.monthr  z, grouped over 'month'r  r  )
r  rG   r  r  r  r+   r  r  r   r   )r   rW   rV   s      r0   test_groupby_repr_datetimer    s    #++i(())F-(111H((H*c")CEHN2K2K.L.LMMH88HXr2    ignore:Converting non-nanosecondz9ignore:invalid value encountered in divide:RuntimeWarningc            
     l	   t          j        dt          j        d                              d          fdt          j        d                              d          fdt          j        d          t          j        d	          t          j        d
          d          } t          j        | d         j        d<   t          j        | d         j        d<   t          j        | d         j        d<   |                     | j                  }| 	                                }t          j        |j
        j        ddd d f<   t          j        |j
        j        ddd d f<   t          j        |j
        j        d	dd d f<    |                    d           j        | j
        j         }t          ||           |                                }|                     dddgi          } |j
                            |j                                                                      ddi                                                              dd                              |j        j                                      d          j        |j
        j         }t          ||           |                    d          }|                     d                              | j                                                  }t          ||           t          j        g ddg dfg          }	dddt          j        gf|	d<   t          j        d	ddgfg          }
|	                    d                                          }t5          |
|           dt          j        d          t          j        d          t          j        d          gf|	d <   t          j        d	d t          j        d          gfg          }|	                    d                                           }t5          ||           t          j        g d!dt          j        ddt          j        d"t          j        gfg          }	t          j        d	d	gddd"gfg          }|	                    d                                          }t5          ||           d S )#N)latlonrj   g      N@)r   r   r:   )r  r   g      (@)r   r   )variableidr   r   r:   r   r"  )r   r   )r   r   )r  r  r   r  c                    | S r   r4   rC   s    r0   rS   z)test_groupby_drops_nans.<locals>.<lambda>  s    A r2   rE   r  r   TrN   )r"  rj   r}   r   r&   x1r  NaTr  )r   r&   r   r   r   r   r   )r*   r   r+   r   r   nanr   rG   r"  r   r!  rT   r   rH   r   meanrJ   wherenotnullrenamer   reset_indexassigndropnar   r_   r
   
datetime64)r/   grouped	expected1r  r  rK   	expected2actual3	expected3r6   	expected4actual4	expected5actual5	expected6actual6s                   r0   test_groupby_drops_nansr;    s   
 
/41H1H1S1ST!29T??#:#:6#B#BC	
 	
 y||BIaLL")A,,OO
 
 
B FBtHODFBtHOD fBtHOFjjG 		I)+IaAAAg&+-6Ib"aaai()+IaAAAg&0gkk++&&0"+2BCGWi((( llnnGhhuen-..G	wz113344	t				T	%	%	7:$	%	%		G$)	+  Wi((( ll6""G%%bemmoo66IWi((( Lc999%5$677EArv'E$KQ$..ImmD!!%%''GG$$$ 	M,''M,''M%  	
E#J Q#l(C(C'D!E FGGImmC  $$&&GG$$$ L+++sRVQ261bf4U.V-WXXEaVsQFm_55ImmC  $$&&GG$$$$$r2   c                    t          j        ddg dfidg di          } t          j        t          d          5  |                     dg d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                                                     dg d           d d d            n# 1 swxY w Y   t          j        t          d	          5  |                     dt          j        t          j        t          j        g           d d d            n# 1 swxY w Y   t          j        t          d	          5  |                                                     dt          j        t          j        t          j        g           d d d            n# 1 swxY w Y   t          j        t          d
          5  | 	                    | j
        t          j        z             d d d            n# 1 swxY w Y   t          j        t          d
          5  |                                 	                    | j
        t          j        z             d d d            d S # 1 swxY w Y   d S )Nr   r   r   r}   z-None of the data falls within bins with edgesr   )g?g?g333333?binszAll bin edges are NaN.zFailed to group data.)r*   r   r=   r>   r?   groupby_binsto_arrayr+   r'  rG   r   r5   s    r0   test_groupby_grouping_errorsrA  P  s   j%#yyy!12S)))4DEEG	J
 
 
 8 8 	S7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 
J
 
 
 C C 	''///'BBBC C C C C C C C C C C C C C C
 
z)B	C	C	C A AS'?@@@A A A A A A A A A A A A A A A 
z)B	C	C	C L L''2626262J'KKKL L L L L L L L L L L L L L L 
z)A	B	B	B . .bf,---. . . . . . . . . . . . . . . 
z)A	B	B	B 9 9""7;#78889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9sl   A!!A%(A%,B??CC%9D**D.1D.AF''F+.F+(HHH':I..I25I2c                \   |                      d          }t          j        t          d          5  |                                 d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   |                      dd          }t          | |                                           t          |                     d          |                    t          j        d                     t          |                     dd	g          |                    t          j        dd	g                     d S )
Nr   zcannot reduce over dimensionsr   huh)r   r   asdFrZ   r   r   )	rG   r=   r>   r?   r(  r   reducer+   r   )r6   r0  s     r0   #test_groupby_reduce_dimension_errorrF  i  s   mmC  G	z)I	J	J	J                 
z)I	J	J	J  U               
z)I	J	J	J ( (&'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( mmCm//GUGLLNN+++UZZ__gnnRWc&B&BCCCEJJSz**GNN27S#J,O,OPPPPPs5   AAA8BB!B C""C&)C&c                    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   rG   )r6   s    r0   !test_groupby_multiple_string_argsrH  {  s    	y	!	!    c3                                   s   >AAc            	     H   t          j                    } t          j        t          j        ddd          d          | d<   t          j        t          j        | d         j                  d          | d<   t          j        ddd	          }|                     d|          	                                }t          j        d
t          j        d          z  dgdt          j
        ||          j        i                              d          }t          ||           d S )Nz
2010-08-01z
2010-08-1515minr  rj   r   val24H)startendr  `   )   	time_binsr  r   )r*   r   r   rr   rs   r+   rc   shaper?  r_   cut
categoriesr   r   )r/   rR  rW   rV   s       r0   test_groupby_bins_timeseriesrV    s   	B
lLw???f  BvJ RWRZ%566VDDDBuILlOOOI__VY//3355F|
RWU^^]RVIy99DE   jej	 
 VX&&&&&r2   c                    t          j        d          dz   } t          j        |           }t          j        t          j        | d                    }|                    |                                          }d|j        v sJ d S )Nr
  r   r   )r+   r   r*   r   floor_dividerG   r(  rH   )r   dakeyr(  s       r0   test_groupby_none_group_namer[    st     9R==2D	d		B
,rtQ//
0
0C::c??!!Ddir2   c                   t          |                     d          |                     d          d                    t          |                     d          |                     d          d                    t          | j                            d          | j                            d          d                    t          | j                            d          | j                            d          d                    |                     d          d                                                             dd	d          }|                     dgdd
g                              dd	d          }t          ||           d S )Nr!   rC   r   r&   r   r   r)   r   r   r   )r   r   )r   selrG   r   rU   r   )r1   rW   rV   s      r0   test_groupby_getitemr_    sA   W[[3['')=)=c)BCCCW[[1[%%ws';';A'>???W[__s_++W[-@-@-E-Ec-JKKKW[__q_))7;+>+>s+C+CA+FGGG__U##C(0022<<S#sKKF{{aSQF{++55c3DDHXv&&&&&r2   c                    t          dddgt          j                            dd          fidt	          d          fdg dft          d          d          } |                     d          }t          |          dk    sJ d	d
dd}|j        |k    sJ d| 	                    d	          fd| 	                    d
          fd| 	                    d          fg}t          ||          D ]5\  }}|d	         |d	         k    sJ t          |d
         |d
                    6d }dD ]<}|                     |d                              |          }t          | |           =d S )Nr   r   r   r   r:   abc)r   r&   r   )r   r#   r   r   r&   r   r    r!   rC   r"   r#   c                    | S r   r4   rC   s    r0   identityz&test_groupby_dataset.<locals>.identity  s    r2   FrZ   )r   r+   r,   r-   listr  rG   r  groupsrI   zipr
   rT   )	r   rG   expected_groupsexpected_itemsr  r1  rc  kr  s	            r0   test_groupby_datasetrj    s   	Sz29??1a0012DKK YYY'7eAhhGG D ll3Gw<<1AA..O>_,,,,	dii!inn	dii!inn	dii!innN
 "'>:: / /qzYq\))))WQZ1....    $ $,,q%,0044X>>T7####$ $r2   c                 p   t          dddgt          j                            dd          fi          } |                     d                              d           }| d         }t          ||           | d                             d                              d           }| }t          ||           d S )Nr   r   r   r   r:   c                    | d         S )Nr   r4   r.   s    r0   rS   z7test_groupby_dataset_returns_new_type.<locals>.<lambda>  s
    r#w r2   c                *    |                                  S r   )r   rC   s    r0   rS   z7test_groupby_dataset_returns_new_type.<locals>.<lambda>  s    1<<>> r2   )r   r+   r,   r-   rG   rT   r   )r   r  r1  r  r2  s        r0   %test_groupby_dataset_returns_new_typern    s    C3*biooa&;&;<=>>Dll3##$6$677GS	IY(((3i$$(()A)ABBGIY(((((r2   c                    t                      } t          t          |                     d                    d d                   D ]\  }\  }}| d         |         |k    sJ t	          | d         |         |d                    t	          | d         |         |d                    t	          | d         d d |f         |d                    d S )Ndim1r   var1var2var3)r   	enumeraterd  rG   r
   )r   nr  subs       r0   test_groupby_dataset_iterrw    s    D dll6&:&:!;!;BQB!?@@ 6 68AsF|A!####T&\!_c&k222T&\!_c&k222T&\!!!Q$'V5555	6 6r2   c                 N   t                      } t          j        t          d          5  |                     t          j        d                     d d d            n# 1 swxY w Y   t          j        t          d          5  |                     | d         d d                    d d d            n# 1 swxY w Y   t          j        t          d          5  |                     | j        d         	                                           d d d            d S # 1 swxY w Y   d S )Nz`group` must ber   r
  zlength does not matchrp  r   )
r   r=   r>   r   rG   r+   r   r?   rl   to_index)r   s    r0   test_groupby_dataset_errorsrz    s   D	y(:	;	;	; $ $RYr]]###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $	z)A	B	B	B ' 'T&\"1"%&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	y(:	;	;	; 5 5T[(11334445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s5   (AA"%A"$B44B8;B83DD!Dc                    t          ddgt          j                            dd          fdt          j                            d          fdt          j                            d          fdg dfd          } |                     d          }|d         j                            ddi          |d<   |                     d                              d          }t          ||           |                     d                              d          }t          ||           | d	         }t          | d
                             |                              d          | d                                         j                            d	di          | d                             |                                          d          }|                     d	                              d          }t          ||           d S )Nr   r   r   r   )r!   r!   r"   r"   )rE   xonlyyonlylettersr}  .r~  rE   r|  r   )rE   r|  r}  )	r   r+   r,   r-   r(  r!  set_dimsrG   r   )r   rV   rW   r~  s       r0   test_groupby_dataset_reducer    s   :ryq!44529??1--.29??1--.1112		
 	
 D yy~~H )2;;S!HEEHW\\###C((FHf%%%\\###C((FHf%%%9oGt*$$W--223777m((**3<<i^LL']**73388::	
 	
 H \\)$$))#..FHf%%%%%r2   r[   c                   d }t                      }|d         |d<   |                    d|           } |||j        d         z             }||j        d         z   }t          | ||                     |j        d         |z   }t          | ||                     d|z  } |||z             }||z   }t          | ||                     ||z   }t          | ||                     d S )Nc                2    |                      dddd          S )Nrp  dim2dim3rj   )r   rC   s    r0   reorder_dimsz/test_groupby_dataset_math.<locals>.reorder_dims  s    {{6666:::r2   rp  rZ   r   )r   rG   rl   r   )r[   r  r/   r0  rV   rW   ds2s          r0   test_groupby_dataset_mathr    s   ; ; ; 
		BFBvJjjj11G|B6!2233Hry((FX||F33444Yv(FX||F33444
b&C|BH%%Hs]FX||F334447]FX||F3344444r2   c                    t                      } |                     d          }t          g ddt          d          fg          }| t	          dt          j        d                    z                       dddd          }||z   }t          ||           ||z   }t          ||           t          j
        t          d	
          5  || z    d d d            n# 1 swxY w Y   t          j
        t          d	
          5  | |z    d d d            n# 1 swxY w Y   t          j
        t          d
          5  |dz    d d d            n# 1 swxY w Y   t          j
        t          d
          5  ||z    d d d            n# 1 swxY w Y   t          j
        t          d
          5  | |z  } d d d            n# 1 swxY w Y   t          dt          j        d          ft          j        dd          d          } t          j
        t          d	
          5  | |                     d          z    d d d            d S # 1 swxY w Y   d S )Nnumbers)r   r   r   r   r   r  r
  rp  r  rj   zincompat.* grouped binaryr   only support binary opsr&   in-place operationsd   rf   rg   )r   rj   
time.month)r   rG   r   r  r   r+   zerosr   r
   r=   r>   r?   r   r   r   rr   rs   )r/   r0  r  rV   rW   s        r0   test_groupby_math_morer    s   			Bjj##Gllliq%:$;<<EXfbhrll333>> H u_F6"""W_F6"""	z)E	F	F	F  "              	z)E	F	F	F  
W              	y(B	C	C	C  !              	y(B	C	C	C  '              	y(>	?	?	?  
g               
")C..)M,<<<	
 	

 
B 
z)E	F	F	F & &
RZZ%%%%& & & & & & & & & & & & & & & & & &sl   CCC>DDD6EEE.F  FF&F88F<?F<H>>IIc                 f   t          dt          j        dt                    fdt          j        dt                    dz  fdg dfg dd          } t	          g dd	g d
fg          }t          dg dfdg dfdg dfg dd          }g }|                     d	          D ]3\  }}|                    |          }|                    ||z             4t          j	        |d          
                    d	          }t          ||           |                     d	          |z  
                    d	          }t          ||           t          dg dfdg dfdg dfg dd          }g }	|                    d	          D ]3\  }}|                    |          }|	                    ||z	             4t          j	        |	d          
                    d	          }
t          ||
           |                    d	          |z	  
                    d	          }
t          ||
           d S )Nindexr   dtyper  r   r   r&   r   r   )r   r   levelr  )r&   r   r&   r  )r&   r   r  )r   r   r   r   )r  r  r  )r   r   r  r  )r  ro   names)r   r   r   r   )r  r  r  r  )r   r   r   r   )r   r+   rc   intr   rG   r^  appendr*   concatreset_coordsr
   )r/   shiftleft_expectedleft_manuallevr   shifterleft_actualright_expectedright_manualright_actuals              r0   test_groupby_math_bitshiftr  :  s   	271C0001271C000256|||,!\\		
 	

 
B iii7III"6!788E<<<(+++,|||,!\\		
 	
 M Kjj)) - -
U))#)&&5G+,,,,)KW555BBBQQK,,,::g&&%/==G=LLK,,,<<<(+++,|||,!\\		
 	
 N L#++G44 . .
U))#)&&EW,----9\w777DD7DSSL...!))'22e;IIPWIXXL.....r2   c           
        t          j        t          j        d                              dd          d          }d}t          j        |           5  |                    d|d	d
                                          }d d d            n# 1 swxY w Y   t          j        t          j        ddgddgddgg          dddt          j
                            |d          fi          }t          ||           d S )Nr   r;   r   rF   r   )r   r   r   r;   r\   r   TF)r>  include_lowestright      ?       @      @      @g      "@      $@)x_binsr   r  leftclosedr  )r*   r   r+   r   r   r^   r?  r(  r6   rr   IntervalIndexfrom_breaksr   )r]   rY  r  rW   rV   s        r0   test_groupby_bins_cut_kwargsr  l  s@   	bimm++Aq11
	C	C	CBF		*	*	*  fT ! 
 

$&& 	               |
3*sCj3+677x!1!=!=fV!=!T!TU
  H Xv&&&&&s   ,BBBindexed_coordc                   d}t          t          j                            ||f          d          }| r.t          j        |          |d<   t          j        |          |d<   |                    dt          j        d|dz   d                    }|                                }|                    t          dd           	          |                    dg d
f          z
  }||z
  }t          ||           d S )Nrq   rF   r   r   r   r   r&   r   rC   )r   r   r   r&   r&   r&   )r  )	r   r+   r,   r   r?  r(  rI   r<   r   )r  NrY  r   r(  rV   rW   s          r0   test_groupby_bins_mathr    s    	A	29##QF++*	=	=	=B )A,,3)A,,3
RYq!a%3344A6688Dwwq$w((499SBTBTBT<U9+V+VVHXFXv&&&&&r2   c                    d} t          t          j                            | | f          dddt          j        g d| dz            fi          }t	          j        |j        |          d	         |d
<   |                    d
          }|                                }||	                    |j
                  z
  }|j                            |j
                  |d<   ||z
  }t          ||           dt          j        g d| dz            f|d<   t	          j        |j        |          d	         |d<   |                    dg d          }|                                }t          j        |j        dd          d dd d f         dz
  }|                    d                              d|f          }|                    t'          d                    |z
  }|j                            |j
                  |d<   |j                            |j                  |d<   d|j        j        |         f|d<   ||z
  }t          ||           d S )N(   rF   ry   r   )r!   r"   r#   dr   r   r   r'   r  )repeatsr  r   labels2d)r  )r&   r   r   r   r:   r;   rq   r  numnum2d)r   r   r;   r=  T)r>  r     r&   
num2d_bins)r  rC   )r   r+   r,   repeatr*   	broadcastry   rG   r(  r^  r  broadcast_liker   r  r?  digitizer  	drop_varsrI   r<   r  r   )r  rY  r   r(  rV   rW   idxrexpanded_means           r0   test_groupby_math_nD_groupr    sC   
A	
	!Q  	BBBAQRFSSS
	
 	
 	
B \")R003BzN


:A6688DDHHbkH222H!778IJJHXXFXv&&& 	
	***AF;;;BuI ,rvr**1-BwK
iii00A6688D;rxit<<<SbS!!!VDqHDNN<0055*dAS5TTMwwrw##m3H!778IJJHXl11(.AAHUO($/*>t*DEH\XFXv&&&&&r2   c                    t          ddg dfidt          j        dd          i          } |                     d          }||                    d          z
  }t          ddg d	fi| ddg                   }t          ||           d S )
Nr   r  r}   20100101r   rg   zt.day.)r   r   r   )r   rr   rs   rG   r(  r   )r/   r0  rW   rV   s       r0   !test_groupby_dataset_math_virtualr    s    	#YYY'(3jRS0T0T0T*U	V	VBjj!!Gw||C(((Fc999-.C>0BCCHVX&&&&&r2   c            
         t          t          j        d          ddt          j        ddd          i          } |                     d	          }||                                z
  }|j        | j        k    sJ d S )
N)r
  r
  r   r   r   rj   rj   r  r   6Hrh   r  r  ztime.day)r   r+   rc   rr   rs   rG   r(  rH   )rY  r0  r   s      r0   test_groupby_math_dim_orderr    s    	
lBTJJJK
 
 
B
 jj$$Gw||~~%F;"'!!!!!!r2   c            	         t          ddg dfidddddt          j        gfi          } |                     d                              d          }t          ddd	gfddgd
          }t          ||           d S )Nr   r   r%   barr&   r   .      ?r   )r   r  )r   r+   r'  rG   r(  r   r/   rW   rV   s      r0   test_groupby_dataset_nanr    s    	%#|||,-aArv=N7O/P	Q	QBZZ##C((FQx0!Q@@AAHVX&&&&&r2   c                 r   t                      } dD ])}t          t          j        d          dg          | |<   *t	          | j                                                  }|                     d                              d          } t	          | j                                                  }||k    sJ d S )Nr    r
  r  r   .)	r   r   r+   r   rd  r   keysrG   r(  )r/   vndata_vars_refr   s       r0   test_groupby_dataset_orderr    s    	B 6 629R==u5552**,,--M	C		c	"	"BR\&&(())I%%%%%%r2   c                 *   t          ddt          j        dt          j        dgfidg di          } t          ddt          d          fidg di          }| |fD ]}dg df|j        d<   |                     d                              t          d	d
gd                    }t          ||           |                     d                              t          ddd	d
gfi                    }t          ||           d| j	        d<   d| j
        j	        d<   |                     d                              t          ddd	d
gfi                    }|j	        | j	        k    sJ |j
        j        dk    sJ |j
        j	        | j
        j	        k    sJ d S )Nr!   r   r&   r   r  r   r   r   r&   r&   r"   r   r   r   r/   attrrY  )r   r+   r'  r  rl   rG   fillnar   r   attrsr!   r$   )r/   rV   targetrW   s       r0   test_groupby_dataset_fillnar    s   	#bfa345\\\7J	K	KBc588_-\\\/BCCHx. 1 1!<<<0cZZ__##Iq!f3$?$?$?@@FXv&&&ZZ__##GS3A-,@$A$ABBFXv&&& BHVBDJvZZ__##GS3A-,@$A$ABBF<28####8=C8>RTZ''''''r2   c                 \   t          ddt          d          fiddg dfi          } t          ddddgfi          }|                     d          }d	d
gt          j        gdz  z   |d         _        |                     d                              |          }t          ||           d| j	        d<   d| j
        j	        d<   |                     d                              |          }|j	        | j	        k    sJ |j
        j        dk    sJ |j
        j	        | j
        j	        k    sJ d S )Nr!   r   r:   r#   r   r   r&   r&   r&   TFdeepr   r&   r   r/   r  rY  )r   r  r   r+   r'  r   rG   r)  r   r  r!   r$   )r/   condrV   rW   s       r0   test_groupby_dataset_wherer    s(   	#U1XX'#___/E)F	G	GBC#e}-.//DwwDw!!Hq6RVHqL0HSMZZ__""4((FXv&&& BHVBDJvZZ__""4((F<28####8=C8>RTZ''''''r2   c                 R   t          ddt          d          fidddgdz  dgz   fi          } |                     d                              d 	          }|                     d
dg dfi          }t          ||           |                     d                              d 	          }|                     d
dg dfi          }t          ||           |                     d                              d 	          }|                    d
          }t          ||           d S )Nr!   r   r   r"   Ar   Bc                    d| j         z  S rR   r!   r.   s    r0   rS   z-test_groupby_dataset_assign.<locals>.<lambda>  s    RT r2   )r#   r#   )r   r   r   c                4    | j                                         S r   r!   r_   r.   s    r0   rS   z-test_groupby_dataset_assign.<locals>.<lambda>	  s     r2   r~   c                4    | j                                         S r   r  r.   s    r0   rS   z-test_groupby_dataset_assign.<locals>.<lambda>  s    

 r2   )r   r  rG   r-  merger   r  
set_coordsr  s      r0   test_groupby_dataset_assignr    s*   	#U1XX'#cUQY#5F/G)H	I	IBZZ__##&9&9#::FxxsIII./00HVX&&&ZZ__##&;&;#<<FxxsIII./00HVX&&&ZZ__**-B-B*CCF""3''HVX&&&&&r2   c                     t          ddg dfidg di          } |                     d                              d           }t          ddgdd	d
gidd          }t	          ||           d S )Nr   r   r%   r  r   c                4    | j                                         S r   )r   r(  grps    r0   rS   z9test_groupby_dataset_map_dataarray_func.<locals>.<lambda>  s    SW\\^^ r2   r        @r   r&   rn   )r   rG   rT   r   r   r  s      r0   'test_groupby_dataset_map_dataarray_funcr    s    	%#|||,-sLLL6I	J	J	JBZZ__  !;!;<<F#sS1a&M%PPPHVX&&&&&r2   c                     t          g ddg didd          } |                     d                              d           }t          j        ddddgfidd	d
gi          }t          ||           d S )Nr%   r   r  r   rn   c                N    |                                                                  S r   )r(  r   r  s    r0   rS   z9test_groupby_dataarray_map_dataset_func.<locals>.<lambda>  s    SXXZZ-B-B-D-D r2   r  r  r   r&   r   )r   rG   rT   r*   r   r   )rY  rW   rV   s      r0   'test_groupby_dataarray_map_dataset_funcr    s    	<<<lll(;#E	R	R	RBZZ__  !D!DEEFz53c
"34cAq6]KKKHVX&&&&&r2   kwargsr   z
map-reduceenginenumpyc                   t          ddt          d          fiddg dfi          }t          j        d          5  |                    d                                          }d d d            n# 1 swxY w Y   t          j        d          5   |                    d          j        d	i | }d d d            n# 1 swxY w Y   t          ||           d S )
Nr!   r   r:   r#   r  Fr\   Tr4   )r   r  r*   r^   rG   r(  r   )r  r/   rV   rW   s       r0   test_groupby_flox_kwargsr  "  sS    
#U1XX'#___/E)F	G	GB		'	'	' * *::c??''))* * * * * * * * * * * * * * *		&	&	& 0 0%C%////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0Xv&&&&&s#   (A11A58A5!B>>CCc                     e Zd Z ej        d          d             Zd Zd Zd Zej	        
                    dg d          ej	        
                    d	dd
g          ej	        
                    ddd
g          d<d                                    Zd Zej	        
                    dg d          d             Zd Zej	        
                    d	dd
g          ej	        
                    dg d          d                         Zej	        
                    dg d          d             Zd Zd Zd Zej	        
                    ddd
g          d             Zd Zd Zd Zd Zd  Zd! Zd" Zd# Zej	        
                    d$dd
g          ej	        
                    d% ej        d&           ej        d&          d'd'd(         g d)g          ej	        
                    d*d'dd+d'd
d+d,d-d.gid,d/d0gid,d.d-gif          d=d4                                    Zd5 Z ej	        
                    d$dd
g          d>d6            Z!d7 Z"d8 Z#d9 Z$d: Z%d; Z&d'S )?TestDataArrayGroupByT)autousec                   ddd| _         t          j                            d          | _        t	          ddg| j                  | _        t	          ddg| j        | j                   | _        t          d| j        i          | _        | j        d         | _	        t          j                            dd	gd
dggd          | _        t          g dd| j        id          | _        | j	                                        | _        dt          j        dgdz  dgz   d	gdz  z             f| j        j        d<   dd| j        d         z  z   | j        j        d<   d S )Nvalue1iq  )attr1attr2)r
  r  r   r   r   r!   r"   r&   r   )level_1level_2r  r  rk   	   r#   r
  ra  r  r  )r  r+   r,   r   r   vvar   r/   dvrr   
MultiIndexfrom_productmindexr   mdar   rY  r6   rl   selfs    r0   setupzTestDataArrayGroupBy.setup.  s:   '$77
!!(++3*df--C:tvtz::5$&/**'%.m003Z!Q (> 1 
 
 \\\32D3OOO',,..!$bhuqyC5/@C52:/M&N&N Ou 3#55sr2   c           	        ddgddgg}g d}ddg}ddg}t          j        ||d|i          }|                    |	                              d
                                          }t
          j                            ddgddgg|          }t          j        |d
gd
|i          }t          ||           t          j        ||d|d d d         i          }|                    |	                              d
                                          }	t
          j                            ddgddgg|          }
t          j        |d
gd
|
i          }t          |	|           d S )Nr   r&   r   r   r  r   r   r  r]  r   r  r  )	r*   r   rJ   rG   firstrr   r  r  r
   )r  r   	data_flatrH   y_valsr   r  midx1r1  r  midx2r2  s               r0   !test_stack_groupby_unsorted_coordz6TestDataArrayGroupBy.test_stack_groupby_unsorted_coord@  sv   AA LL	SzQl4dC=AAA))d)##++C006688**QFQF+;4*HHL#U|LLL	Wi((( l4dC"3FGGG))d)##++C006688**QFQF+;4*HHL#U|LLL	Wi(((((r2   c                f   t          | j                            d          | j                            d                    D ])\  \  }}\  }}||k    sJ t	          |d         |           *t          | j                            d          | j                  D ]\  \  }}}t	          ||           d S )Nr   r   r   )rf  r  rG   r/   r   )r  act_xact_dvexp_xexp_ds_exp_dvs          r0   test_groupby_iterz&TestDataArrayGroupBy.test_groupby_iterS  s    03GOOC  $'//#"6"61
 1
 	4 	4,OUF_eV E>>>>VE]F3333#&tws';';TW#E#E 	- 	-KQVV,,,,	- 	-r2   c                X   | j                             d          }t          dd          dgt          dd          d}|                                |j                                        k    sJ |D ]#}t          ||         |j        |                    $dt          |          k    sJ d S )Nra  r   r  r
  r  )r!   r#   r"   r   )rY  rG   r  r  re  r	   r  )r  r0  rg  rZ  s       r0   test_groupby_propertiesz,TestDataArrayGroupBy.test_groupby_properties\  s    '//%(( %a1#E"bMMJJ##%%)<)<)>)>>>>>" 	J 	JCs3W^C5HIIIICLL      r2   z
by, use_da))r   F)r   F)r   T)ra  FshortcutFr[   r7   r8   c                    | j         }|r|j        |         }d }|                    ||          }|                    ||          }t	          ||           d S )Nc                    | S r   r4   rC   s    r0   rc  z@TestDataArrayGroupBy.test_groupby_map_identity.<locals>.identityn  s    Hr2   rZ   )r(  )rY  rl   rG   rT   r   )	r  byuse_dar(  r[   rV   rc  r0  rW   s	            r0   test_groupby_map_identityz.TestDataArrayGroupBy.test_groupby_map_identityd  ss     7 	%$B	 	 	 ""2w"77X996*****r2   c                P   | j                             d          }t          t          dgt	          j        | j        d d d df                                         | j        d d dd f                                         | j        d d ddf                                         g          j                  t          dgt	          j        g d                    d          d         }t          ||
                    t          j        d                     t          ||                    d                     t          fd	t          d          t          dd           t          dd          fD             g dgdg          }d
                             d                              t          j                  }t          ||           d
                             d                              d          }t          ||           t          ddgt	          j        | j        d d d df                             d          | j        d d dd f                             d          | j        d d ddf                             d          g          j        ft          dgt	          j        g d                    d          d         }t          ||
                    t          j        d
                     t          ||                    d
                     d S )Nra  r  r
  r    r   ra  r   .ro   c                Z    g | ]'}d          j         |                                         (S rD   )r   r_   ).0idxr6   s     r0   
<listcomp>z9TestDataArrayGroupBy.test_groupby_sum.<locals>.<listcomp>  sA        c
!#&**,,  r2   r   r   r&   )rY  rG   r   r   r+   r6   r   r_   Tr   rE  r   r<   rT   )r  r0  expected_sum_allrV   rW   expected_sum_axis1r6   s         @r0   test_groupby_sumz%TestDataArrayGroupBy.test_groupby_sumu  s   --&&"GH F111bqb5M--// F111bcc6N..00 F111ad7O//11  	 	  ///)B)BCC 
 
  	('..S.*I*IJJJ('++c*:*:;;;   !!HHeBoouQ||D   __G
 
 s##E**..rv66&)))s##E**..s33&)))$ %LH F111bqb5M--a00 F111bcc6N..q11 F111ad7O//22  	  ///)B)BCC 
 
  	*GNN263,G,GHHH*GKK,<,<=====r2   r   )r_   r(  medianc                6   | j         }|                    d          }t          t          |          }t	          t          ddgt          j         || j        d d d df         d           || j        d d dd f         d           || j        d d ddf         d          g          j                  t          dgt          j        g d                    d          d	         }t          j
        d
          5   t          ||          d          }d d d            n# 1 swxY w Y   t          j
        d          5   t          ||          d          }d d d            n# 1 swxY w Y   t          ||           t          ||           d S )Nra  r   r  r  axisr
  r    r/  r   Fr\   r   ro   T)rY  rG   getattrr+   r   r   r6   r   r4  r*   r^   r   )r  r   r6   r0  	reductionrV   actual_legacy
actual_npgs           r0   test_groupby_reductionsz,TestDataArrayGroupBy.test_groupby_reductions  s8   --&&B''	%LH%IdfQQQUm"===%IdfQQQVn2>>>%IdfQQQ"WoB???  	 	  ///)B)BCC 
 
   ^U+++ 	> 	>4GGV44===M	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> ^T*** 	; 	;1&11c:::J	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	-000*-----s$    D''D+.D+E..E25E2c                   t          ddt          j        t          j        ddgddg dfid          }|                    d                                          }t          g ddg dfg          }t          ||           d S )	Nr   catr   )r!   r"   r"   r#   r#   r#   rk   r~   r    r   )r   r+   r'  rG   countr   r  r6   rW   rV   s       r0   test_groupby_countz'TestDataArrayGroupBy.test_groupby_count  s    26261a(C!?!?!?@A
 
 

 u%%++--YYY0H/IJJJ*****r2   
keep_attrs)NTFc                ^   | j         }d|j        d<   |                    d                              t          j        ||          }t          j        d          5  |                    d                              |          }d d d            n# 1 swxY w Y   t          ||           d S )Nr  r   ra  )rF  r(  Fr\   rF  )	rY  r  rG   rE  r+   r(  r*   r^   r   )r  r(  rF  r6   rW   rV   s         r0   test_groupby_reduce_keep_attrsz3TestDataArrayGroupBy.test_groupby_reduce_keep_attrs  s     "Eu%%,,G
X - 
 
 ^U+++ 	H 	H}}U++00J0GGH	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H6*****s   *BBBc                   | j         }d|j        d<   t          j        d          5  |                    d                              |          }d d d            n# 1 swxY w Y   t          j        d          5  |                    d                              |          }d d d            n# 1 swxY w Y   |j        |_        t          ||           d S )Nr  r   Fr\   ra  rH  T)rY  r  r*   r^   rG   r(  r   r   )r  rF  r6   rV   rW   s        r0   test_groupby_keep_attrsz,TestDataArrayGroupBy.test_groupby_keep_attrs  sl   "E^U+++ 	H 	H}}U++00J0GGH	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H^T*** 	F 	F]]5))..*.EEF	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F
 m6*****s#   *AA!$A!=*B33B7:B7c           
        d }| j         }|                    d          }|                                }t          j         || j        d d d df                    || j        d d ddf                    || j        d d dd f                   g          }ddg|f|d<   |d         }t          ||                    |                     d S )Nc                0    | t          j        |           z
  S r   )r+   r(  rC   s    r0   centerz<TestDataArrayGroupBy.test_groupby_map_center.<locals>.center  s    rwqzz>!r2   ra  r  r
  r   r   r   )rY  rG   r   r+   hstackr   r   rT   )r  rN  r6   r0  expected_dsexp_dataexpected_centereds          r0   test_groupby_map_centerz,TestDataArrayGroupBy.test_groupby_map_center  s    	" 	" 	" --&&&&((9VDF111bqb5M""FF46!!!QrT'?$;$;VVDF111bcc6N=S=ST
 
  #Cj(3E'.)7;;v+>+>?????r2   c                    | j         }|                    d          }|                    t          j                  }t          ||           d S )Nra  )rY  rG   rT   r+   asarrayr
   )r  r6   r0  rW   s       r0   test_groupby_map_ndarrayz-TestDataArrayGroupBy.test_groupby_map_ndarray  sC    --&&RZ((UF#####r2   c                    d }| j         }|                    d          }|                    |          }|                                } ||          }t	          ||           d S )Nc                J    | j         d         dz  | j         d<   d| j        d<   | S )Nr   r   lemonfruit)rl   r  rC   s    r0   change_metadatazOTestDataArrayGroupBy.test_groupby_map_changes_metadata.<locals>.change_metadata  s)    HSMA-AHSM&AGGHr2   ra  )rY  rG   rT   r   r
   )r  r[  r6   r0  rW   rV   s         r0   !test_groupby_map_changes_metadataz6TestDataArrayGroupBy.test_groupby_map_changes_metadata  sn    	 	 	
 --&&_--::<<"?8,,Xv&&&&&r2   c                   | j         }|                    d|          }||j        d         z   }||j        d         z   }t          ||           |j        d         |z   }t          ||           |j        d                             d          }||z   }||z   }t          ||           ||z   }t          ||           d S )Nr   rZ   Xr   )rY  rG   rl   r   r   )r  r[   r6   r0  rV   rW   r/   s          r0   test_groupby_math_squeezez.TestDataArrayGroupBy.test_groupby_math_squeeze  s    --W-555<,,5<,,6***c"W,6***\#))s)332:26***g6*****r2   c                   | j         }|                    d          }|                    d          t          j        d          z
                      d           }|t          t          d          dg dfg          z
  }|                    d                              d          }t          ||           t          j
        t          d          5  |dz    d d d            n# 1 swxY w Y   t          j
        t          d          5  ||z    d d d            n# 1 swxY w Y   t          j
        t          d          5  ||z  }d d d            d S # 1 swxY w Y   d S )	Nra  .r   r    r  r   r&   r  )rY  rG   r(  r+   r   r+  r   r  r   r=   r>   r   )r  r6   r0  expected_aggrW   
actual_aggs         r0   test_groupby_mathz&TestDataArrayGroupBy.test_groupby_math&  s	   --&&S))BIaLL8@@FF9U1XX0H/IJJJ^^E**//44
j111]9,FGGG 	 	aKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,FGGG 	 	g	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,BCCC 	 	WE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   C$$C(+C(
DD #D EEEc                .   t          t          d          dg dfg ddd          }t          dgdd	gid
          }|                    d          |z   }t          ddt          j        t          j        g|j                  }t          ||           |                    d                                          }|                    d	dg                              d          |z
  }t          dd	gdd	d	gfd	dgdd          }t          ||           t          dgdd	gdd
          }|                    d          |z   }t          ddt          j        t          j        g|j                  }dgdgdz  t          j        gdz  z   f|j        d<   t          ||           t          dddgfidd	gi          }|                    d          |z   }t          ddddt          j        t          j        gfi|j                  }t          ||           d S )Nr   r   r  r  )r"   r   r   r
  r"   r   rk   r   r&   rC   r  {   )r#   r"   r   r#   r!   )
r   r  rG   r+   r'  rl   r   r_   r^  r   )r  r6   otherrW   rV   s        r0   test_groupby_math_not_alignedz2TestDataArrayGroupBy.test_groupby_math_not_aligned5  s   !HHS,,,/lllCC#
 
 
 2$aSz<<<s##e+b"bfbf5u|DD6*** c""&&((aV$$,,S11E9b!WS1a&MA&G&GcRRR6***2$Ss';';#FFFs##e+b"bfbf5u|DD!$uqyBF8a<'?@6***sRDk*S1#J77s##e+C#B'?!@A5<PP6*****r2   c                (   t          t          j                            dd          dt	          d          fdt	          d          fdddg          }dD ];\  }}|                    |                              d           }|j        |k    sJ <d S )	Nr:   r   r   r   )r!   r"   rk   )r   rF   )r   rF   )r!   )r!   r   )r"   )r   r"   c                *    |                                  S r   rZ   rC   s    r0   rS   zETestDataArrayGroupBy.test_groupby_restore_dim_order.<locals>.<lambda>[  s    QYY[[ r2   r   r+   r,   r-   r  rG   rT   rH   r  r6   r+  expected_dimsr   s        r0   test_groupby_restore_dim_orderz3TestDataArrayGroupBy.test_groupby_restore_dim_orderO  s    IOOAq!!uQxxU1XX??s
 
 

"
 	0 	0B ]]2&&**+@+@AAF;-/////	0 	0r2   c           
     z   t          t          j                            dd          dt	          d          fdt	          d          fdt          j                            dd          fdddg          }dD ]C\  }}|                    |d	
                              d           d         }|j        |k    sJ Dd S )Nr:   r   r   r   rF   r    rk   ri  T)restore_coord_dimsc                *    |                                  S r   rZ   rC   s    r0   rS   zFTestDataArrayGroupBy.test_groupby_restore_coord_dims.<locals>.<lambda>p  s    !))++ r2   r#   rk  rl  s        r0   test_groupby_restore_coord_dimsz4TestDataArrayGroupBy.test_groupby_restore_coord_dims^  s    IOOAq!!588_588_ ")//!Q"7"78 
 s
 
 
"
 		0 		0B ]]2$]??CC%% F ;-/////		0 		0r2   c                   t          g dd          }t          dgdz  dgdz  z   dd	          }t          d
dgdddgfg          }|                    |                                          }t          ||           t          ddgdddgfg          }|                    |                                          }t          ||           t          t
          j                            dd          ddg          }t          |ddg         dddgiddg          }|                    |                                          }t          ||           |                    d                                          }|}t          ||           d S )N)r&   r   r   r   r:   r   r   r!   r   r"   r   ab)rH   r$   r&   r:   r   r   )r   rG   r  r   lastr+   r,   r-   )r  r6   r+  rV   rW   s        r0   test_groupby_first_and_lastz0TestDataArrayGroupBy.test_groupby_first_and_lastt  s   ///444uqyC519,3TBBBaVtc3Z&8%9::r""((**6***aVtc3Z&8%9::r""''))6***")//!Q//sCjAAAUAq6]TC:,>sLLr""((**6***s##))++6*****r2   c                t    t          ddgddggddgddgggd	d
gddgddggfd	d
gddgddggfdg d          S )Nr   r&   r   r   r:   r
  r   r  nynxr  r  2   )r   r  )rj   rx  ry  rk   )r   r  s    r0   #make_groupby_multidim_example_arrayz8TestDataArrayGroupBy.make_groupby_multidim_example_array  s    !fq!fB"b23tBx"b&:;tBx"b&:;  &%%
 
 
 	
r2   c                   |                                  }dt          g ddg dfg          fdt          ddgddd	gfg          ffD ]=\  }}|                    |                              d
          }t	          ||           >d S )Nr   )r:      r   )g      >@g      D@g      I@r   r  r   r  r        4@.)r{  r   rG   r_   r   )r  r6   rp   expected_sum
actual_sums        r0   test_groupby_multidimz*TestDataArrayGroupBy.test_groupby_multidim  s    88::IkkkE;M;M;M3N2OPPPQIr2ht0E/FGGGH"
 	7 	7C s++//44J\:6666	7 	7r2   c                    |                                  }|                    d                              d           }t          ddgddggddgd	d
ggg|j        |j                  }t          ||           d S )Nr   c                0    | |                                  z
  S r   r(  rC   s    r0   rS   z@TestDataArrayGroupBy.test_groupby_multidim_map.<locals>.<lambda>  s    AL r2   g      g      g      g      !r         @g       @g      !@rk   )r{  rG   rT   r   rl   rH   r   rD  s       r0   test_groupby_multidim_mapz.TestDataArrayGroupBy.test_groupby_multidim_map  s    88::u%%))*@*@AATlT4L)S#Jc
+CD<
 
 

 	6*****r2   r]   rl   r   Nr  )r   r   r   r&   
cut_kwargs)ry   r  ry   r!   r"   g333333?r  np.typing.ArrayLiker   rt   c                J   t          t          j        d          dd|id          }d|d<   g d}|                                }t	          j        |d         |fi ||d<   |                    d                                          }|                    d	
          	                                
                    t          j        |j                                                ddi          d         }t          j        |          5   |j        dd|i|                                }	t#          ||	            |j        dd|i|                    d           }	t#          ||	           t'          |j                  dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   dim_0r!   )rH   rl   r$   c   r   )r   r  r:   
dim_0_binsTr$  )r  r  r\   r>  c                *    |                                  S r   r_   rC   s    r0   rS   z8TestDataArrayGroupBy.test_groupby_bins.<locals>.<lambda>  s    !%%'' r2   )r  )r   r+   r   to_dataframerr   rT  rG   r_   r,  	to_xarrayr  r6   r  r+  r*   r^   r?  r   rT   r  r  )
r  rl   r]   r  r6   r>  dfexpected_dfrV   rW   s
             r0   test_groupby_binsz&TestDataArrayGroupBy.test_groupby_bins  s   $ IaLLw/@s
 
 
 a {{!!6%.$EE*EE<jj..2244 ###..Y[[]+*;!<!<]==VWl+,,S2 	 ^X... 
	) 
	)'U'IIdIjIIMMOOFXv...'U'IIdIjIIMM!! F Xv... u{##q(((((
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	) 
	)s   A?FFFc                   t          j        t          j        d                    }g d}t          j        d          5  |                    d|                              d          }d d d            n# 1 swxY w Y   t          j        d          5  |                    d|                              d          }d d d            n# 1 swxY w Y   t          ||           d S )N)r   r   r   )r  r   r&   r   Fr\   r  .T)r*   r   r+   rc   r^   r?  r(  r   )r  rY  r>  rW   rV   s        r0   test_groupby_bins_ellipsisz/TestDataArrayGroupBy.test_groupby_bins_ellipsis  s]   \"'),,--}}^U+++ 	> 	>__Wd3388==F	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>^T*** 	@ 	@w55::3??H	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@)))))s$    *A66A:=A:*CCCc                   t           j                            d          }|                    ddd          }t          j        ddd          }g d}t          j        ||gdg	          }t          j        t           j        t           j        dddd
dddg	dd|i          }|                    d||          }t          j	        |          5  |
                                }	d d d            n# 1 swxY w Y   t          |	|           d S )N*   r:   i  r  r&   r
  )	onetwothreefourfivesixseveneightninerl   rk   r     h   i  coords_binsr  )ry   r\   )r+   r,   default_rngnormallogspacer*   r   r'  r?  r^   rC  r   )
r  r]   rngrl   r>  ry   darrrV   r`   rW   s
             r0   &test_groupby_bins_gives_correct_subsetz;TestDataArrayGroupBy.test_groupby_bins_gives_correct_subset  sP    i##B''Aq$''{2q"%%

 

 

 |FF88*EEE<VRVQ1aS#6!6*
 
 

 xf==^X... 	  	 XXZZF	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 *****s   C..C25C2c                   t          t          j        d          dt          d          fg          }g d}t	          j        |d         |          j        }|                    d|                                          }t          dt          j	        gdd|i          }t          ||           t          |j                  dk    sJ d S )Nr   r   )r   r   r:   r;   r  r  )r   r+   r   r  rr   rT  rU  r?  r_   r'  r   r  r   )r  r6   r>  
bin_coordsrW   rV   s         r0   test_groupby_bins_emptyz,TestDataArrayGroupBy.test_groupby_bins_empty   s    ")A,,#uQxx(9::yyVE#J--8
##C..2244a[x:@VWWW6*** 57||q      r2   c           	     <   |                                  }g d}t          j        |d         j        j        |          j        }t          ddgdd|i          }|                    d|                              d           }t          ||           t          j        dd	gd	dgg          |d         _        t          d
d
gdd|i          }|                    d|                              d           }t          ||           g d}t          t          j        d          d          }t          t          j        g ddz  g                              dd          d          }|                    ||                                          }t          j        d t!          |d d         |dd                    D             t"                    }t          t          j        dt          j        ddg          dd|i          }t          ||           d S )N)r   r   r  r  r   r  lat_binsr  c                *    |                                  S r   r  rC   s    r0   rS   zATestDataArrayGroupBy.test_groupby_bins_multidim.<locals>.<lambda>      quuww r2   r  r~  r}  c                *    |                                  S r   r  rC   s    r0   rS   zATestDataArrayGroupBy.test_groupby_bins_multidim.<locals>.<lambda>  r  r2   )r  r  r   r&   r   )r:   r   rF   r   )      r  r   r  r  r   r:   r=  c                B    g | ]\  }}t          j        ||d           S )r  r  )rr   Interval)r1  r  r  s      r0   r3  zCTestDataArrayGroupBy.test_groupby_bins_multidim.<locals>.<listcomp>!  s=       D% D%888  r2   r  r&   r  r;   
group_bins)r{  rr   rT  r   flatrU  r   r?  rT   r   r+   r6   r   rc   r   rC  rf  objectr'  )	r  r6   r>  r  rV   rW   fieldr+  bincoords	            r0   test_groupby_bins_multidimz/TestDataArrayGroupBy.test_groupby_bins_multidim  s4   88::{{VE%L/4d;;F
b"XJ
J?WXXX##E400445F5FGG6***HtTlT4L%ABBeb"XJ
J?WXXX##E400445F5FGG6***   "'&//
;;;H111A5677??1EEJ
 
 
 ##BT#2288::8 #&tCRCy$qrr(#;#;   
 
 
 HaA&'' (+
 
 

 	*****r2   c           
        t          j        t          j        d          ddt          j        ddd          i          }|                    dd                                          }|                                j        sJ t          j	        d	          5  |                    dd          
                                }d d d            n# 1 swxY w Y   t          j	        d
	          5  |                    dd          
                                }d d d            n# 1 swxY w Y   t          ||           d S )Nr  r   i)r  r  r   r=  Tr\   F)r*   r   r+   r   linspacer?  r(  ry  is_monotonic_increasingr^   rC  r   )r  r   binned_meanrW   rV   s        r0   test_groupby_bins_sortz+TestDataArrayGroupBy.test_groupby_bins_sort.  s   |IcNNc2;tSc3R3R3R-S
 
 
 ''"'55::<<##%%====^T*** 	= 	=&&s&44::<<F	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=^U+++ 	? 	?((2(66<<>>H	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?*****s$   *CCC0*D&&D*-D*c                    t          g dddg dfid          }|                    d                              d           }|                                }dg df|j        d	<   t          ||           d S )
Nr%   r#   r   r  r   c                *    |                                  S r   r  r  s    r0   rS   zATestDataArrayGroupBy.test_groupby_assign_coords.<locals>.<lambda>=  s    affhh r2   )r  )r  r  r  r  r  )r   rG   r  r   rl   r   rD  s       r0   test_groupby_assign_coordsz/TestDataArrayGroupBy.test_groupby_assign_coords;  s    ,,,sLLL.A(BMMMs##114F4F1GG::<< #%9%9%9:*****r2   c                   t          t          j        dt          j        dgdt          d          id          }t          ddgd          }|                    |          }t          ddgddgddgddggdt          d          id	          }t          ||           t          t          d          dt          d          id          }|                                }||fD ]}dg d
f|j        d<   |                    d                              t          ddgd                    }t          ||           d S )Nr&   r   r   r   rk   r   r   r   rF   r  r"   r   )	r   r+   r'  r  r  r   r   rl   rG   )r  r!   
fill_valuerW   rV   r"   r  s          r0   test_groupby_fillnaz(TestDataArrayGroupBy.test_groupby_fillnaB  sD   rvq"&!,c588_3OOO1vC000
*%%VaVaVaV,c588_:
 
 
 	6***eAhhU1XXSAAA6688(m 	5 	5F"%|||!4FM#3&&y!Qc'B'B'BCC6*****r2   r7   r8   )rl   r  r]   r   r  rt   r7   r8   r]   r   r7   r8   )'r  
__module____qualname__r=   fixturer  r  r%  r'  markparametrizer-  r7  r@  rE  rI  rK  rS  rV  r\  r_  rc  rg  rn  rr  rv  r{  r  r  r+   r   r  r  r  r  r  r  r  r  r4   r2   r0   r  r  -  s       V^D!!!6 6 "!6") ) )&- - -! ! ! [OOO  [Z$77[Yu66
+ 
+ 
+ 76 87 

+3> 3> 3>j [X'@'@'@AA. . BA.<+ + + [Z$77[\+>+>+>??	+ 	+ @? 87	+ [\+>+>+>??+ + @?+@ @ @$ $ $' ' ' [Yu66+ + 76+&  + + +40 0 00 0 0,+ + +*
 
 
7 7 7+ + + [Z$77[X		!ibill44R46H,,,'WXX[t44u55Sz"Sz"Sz"	
	 	%) %) %)	 	 YX 87%)N* * * [Z$77+ + + 87+:
! 
! 
! +  +  +D+ + ++ + ++ + + + +r2   r  c            
      2   e Zd Zej                            dddg          d$d            Zej                            dddg          d$d            Zd	 Zd
 Z	d Z
ed             Zd Zd Zd Zd Zd Zed             Zeej                            d          d                         Zed             Zeeej                            dddg          d                                     Zej                            ed          d%d            Zd%dZd%dZej                            ed          ej                            dd ej        d            ej         d            ej!        d           g          d%d!                        Z"d%d"Z#d#S )&TestDataArrayResample
use_cftimeTFr   r7   r8   c                   rt           st          j                     t          j        ddd          fd}t          t          j        d          dfg          }|                    d          	                                } ||d          }t          ||           |                    d                              t          j	                  }t          ||           |                    dd	
          	                                } ||dd	          }t          ||           t          j        t          d          5  |g d                             d           d d d            d S # 1 swxY w Y   d S )Nrf   r  r
  r  rh   r  c                   |                      d          }r                                |d<   t          j         |                                j        |i |                                          }r|                    d          }|S )NTr  rj   standard)calendarr  )r   to_datetimeindexr   from_series	to_seriesresampler(  convert_calendar)r6   r   r  array_r   rv   r  s        r0   resample_as_pandasz?TestDataArrayResample.test_resample.<locals>.resample_as_pandas\  s    ZZTZ**F :!&!7!7!9!9v*+  ""+T<V<<AACC F  00'J 1   Mr2   rj   rM  ri   r  )rj   r  r  zindex must be monotonicr   )r   r   r&   1D)r   r=   skipr*   rs   r   r+   r   r  r(  r   rE  r>   r?   )r  r  r  r6   rW   rV   rv   s    `    @r0   test_resamplez#TestDataArrayResample.test_resampleT  s    	j 	KMMMtRJ
 
 
	 	 	 	 	 	 ")B--65/):;;U++0022%%eU336***U++2227;;6***U7;;@@BB%%eU7CCC6***]:-GHHH 	1 	1)))%%4%000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   E77E;>E;c                   |rt           st          j                     t          j        t          j        dddddt
          j        g          dt          dt          j	        ddd|          fdt          j        g d	          f
                    }|
                    d                                          }t	          g dddt          j	        ddd|          i          }t          ||           d S )Nr&   r   r   rj   r  r  r;   r  )r!   r"   r#   r#   r"   r!   )rj   ry   r  3Mri   )r&   r   r&   )r   r=   r  r*   r   r+   r6   r'  rt   rs   r  rC  r   )r  r  rY  rW   rV   s        r0   test_resample_doctestz+TestDataArrayResample.test_resample_doctesty  s      	j 	KMMM\HaAq!RV,--M$3j   )G)G)G H HI  
 
 
 $''--//II tQ:  
 
 
 	*****r2   c                    dd}t          j        ddd          }t          j        g d|gdg	          }t          j        g d
|gdg	          }|                    d                              |dd          }t          ||           d S )Nr   c                8    |                      d          |z   |z   S Nrj   r  r   s      r0   r   z>TestDataArrayResample.test_da_resample_func_args.<locals>.func      99V$$t+d22r2   2000r   Dr  r  r  r  rj   rk   r  r  r  ri   r  r  r   r   )rr   rs   r*   r   r  rT   r   )r  r   rv   rY  rV   rW   s         r0   test_da_resample_func_argsz0TestDataArrayResample.test_da_resample_func_args  s    	3 	3 	3 	3 fac:::\///5'III<vhOOO#&&**4f3*GG*****r2   c                   t          j        ddd          }t          t          j        d          d|fg          }|                    d                                          }t          g dd|d d d	         fg          }t          ||           |                    d
                                          }t          |                                                    d
                                                    }t          ||           |	                    t                    }t          j        |d d<   |                    d                                          }t          g dd|d d d	         fg          }t          ||           |                    d                              d          }t          t          j        d	dgd|d d d	         fg          }t          ||           t          d|i          d         }|                    d                                          }t          j        g d          }t          |d|d d d	         fgd          }t          ||           d S )Nrf   r  r
  r  rj   r  ri   r   r   r  r   rM  r   )r   r   r  Fr   r  )z2000-01-01T18z2000-01-02T18z2000-01-03T06r   )rr   rs   r   r+   r   r  r  r   r  astypefloatr'  r   ru  to_datetime)r  rv   r6   rW   rV   expected_timess         r0   test_resample_firstz)TestDataArrayResample.test_resample_first  sN   lrBBB")B--65/):;;T**0022YYY&%!*)=(>??6*** U++1133U__..77>>DDFFGG6*** U##Fbqb	T**0022YYY&%!*)=(>??6***T**000>>bfa^vuSSqSz.B-CDD6*** ((0T**//11???
 
 ^vuSSqSz.B-C&QQQ6*****r2   c                (   t          j        ddd          }t          t          j        d          d|fg          }t          j        t          d          5   |j        d	i ddi	                                 d d d            d S # 1 swxY w Y   d S )
Nrf   r  r
  r  __resample_dim__zProxy resampling dimensionr   r  r4   )
rr   rs   r   r+   r   r=   r>   r?   r  r  r  rv   r6   s      r0   test_resample_bad_resample_dimz4TestDataArrayResample.test_resample_bad_resample_dim  s    lrBBB")B--+=u*E)FGG]:-JKKK 	A 	AEN880$788>>@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   "BBBc                   t          j        d          }t          j        d          }t          j        ddd          }t          j        t          j        d          d          }t          j        |dz  |dz            \  }}t          j        t          |          t          	          }t          ||||d
d          }t          |j	        ||dd          }	t          |j	        ||dd          }
t          |d|id          }t          ||	|
|d          }|                    g d          }|d         }|                    dd                              d          }d|j        vsJ |                    dd                                          }d|j        vsJ |                    dd                              d          }d|j        vsJ d S )Nr;   r   rf   r  r:   r  r;   r   r&   r   r  rj   r   r   r  rF   rj   ri   r   xcyctcr  r  r  r   12HT)rj   rp  r  1Hlinearr+   r   rr   rs   tilemeshgridr  r  r   r4  r   r  r  r(  rl   ffillinterpolater  xsysrv   r   xxyyttr6   xcoordycoordtcoordr/   rW   s                 r0    test_resample_drop_nondim_coordsz6TestDataArrayResample.test_resample_drop_nondim_coords  s   Yq\\Yq\\lqAAAwry||Y//R!VR#X..BYs5zz---$Rb A ACUVV24r!3!3Z@@24r!3!3Z@@2	::e6vNNOO]]---.. 6
 UtDDII&QQ6=(((( TdCCIIKK6=(((( TdCCOO
 
 6=((((((r2   c                   t          j        ddd          }t          t          j        d          d|fg          }d|j        d<   |                    d	                              d
          }t          g dd|d d d         fg|j                  }t          ||           t          j
        t          d          5  |                    dd
           d d d            d S # 1 swxY w Y   d S )Nrf   r  r
  r  rj   r   metar  ri   TrH  r   r   )r  5Passing ``keep_attrs`` to ``resample`` has no effect.r   rj   rF  )rr   rs   r   r+   rc   r  r  r(  r   r=   r   UserWarningr  rv   r6   r   rV   s        r0   test_resample_keep_attrsz.TestDataArrayResample.test_resample_keep_attrs  s;   lrBBB"'"++'899$FT**//4/@@YYY&%!*)=(>ekRRR***\V
 
 
 	7 	7 NNN666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   C&&C*-C*c                b   t          j        ddd          }t          t          j        d          d|fg          }t          j        |d<   |                    d                              d	
          }t          t          j        ddgd|d d d         fg          }t          ||           d S )Nrf   r  r
  r  rj   r&   r  ri   Fr   r   )	rr   rs   r   r+   rc   r'  r  r(  r   r  s        r0   test_resample_skipnaz*TestDataArrayResample.test_resample_skipna  s    lrBBB"'"++'8996aT**//u/==bfa^vuSSqSz.B-CDD*****r2   c                N   t          j        ddd          }t          t          j        d          d|fg          }|                    d                                          }t          |                                                    d                                                    }t          ||           |                    d          	                                }t          |                                                    d          	                                          }t          ||           |                    d          
                                }t          |                                                    d          
                                          }t          ||           |                    d                                          }t          |                                                    d                                                    }t          ||           |                    d          }|                                }|j        d         j        }t          |                    |d	
                    }t          ||           d S )Nrf   r  r:   r  rj   3Hri   r   nearest)rj   r   )rr   rs   r   r+   r   r  r  r  r   bfillasfreqpadr  groupers
full_indexreindex)r  rv   r6   rW   rV   rs	new_timess          r0   test_upsamplez#TestDataArrayResample.test_upsample   s!   lqAAA")A,,&%(9:: T**0022U__..77==CCEEFF6*** T**0022U__..77==CCEEFF6*** T**1133U__..77==DDFFGG6*** T**..00U__..77==CCEEFF6*** ^^^&&KN-	U]]	)]LLMM6*****r2   c                   t          j        d          }t          j        d          }t          j        ddd          }t          j        t          j        d          d          }t          ||||dd	          }|                    d
                                          }t          j        |dd          }|	                                                    d
          
                                j        }|dd t          |          f         }t          ||||dd	          }	t          |	|           |                    d
                                          }t          j        t          j        |j                  j        dd          }t          j        |j                  j        }|	                                                    d
          
                                j        }|dd t          |          f         }t          ||||dd	          }	t          |	|           |                    d
          
                                }t          j        |dd                              t"                    dd df         }t           j        |ddd df<   |	                                                    d
          
                                j        }t          ||||dd	          }	t          |	|           |                    d
                                          }t          j        |dd          }|dd d df         |ddd df<   |dd df         }|	                                                    d
          
                                j        }t          ||||dd	          }	t          |	|           d S )Nr;   r   rf   r  r:   r  r  r  r  r  ri   r   r  r:  .r&   )r+   r   rr   rs   r  r   r  r  r  r  r  r  r  r   flipudr4  r  r  r'  r   )
r  r	  r
  rv   r   r6   rW   expected_datar  rV   s
             r0   test_upsample_ndz&TestDataArrayResample.test_upsample_nd  s   Yq\\Yq\\lqAAAwry||Y//$Rb A ACUVV T**0022	$333**33D99@@BBH%c+@S-@-@+@&@A#"266
 

 	6*** T**0022	")DF"3"3"5qrBBB	-/224**33D99@@BBH%c+@S-@-@+@&@A#"266
 

 	6*** T**1133	$333::5AA#ss(K#%6c14a4i **33D99@@BBH#"266
 

 	6*** T**..00	$333#0ccc#:c14a4i %c3B3h/**33D99@@BBH#"266
 

 	6*****r2   c                   t          j        ddd          }t          j        ddd          }t          t          j        d          d|fg          }|                    d                              d	
          }t          dddt          j        dgd|fg          }t          ||           |                    d          	                    d	
          }t          dt          j        dddgd|fg          }t          ||           |                    d          
                    d
          }t          ddt          j        ddgd|fg          }t          ||           d S )Nrf   r  r   r  r  r:   rj   ri   r   )	tolerancer   r  r   r&   )rr   rs   r   r+   r   r  r  r'  r   r  r  )r  rv   times_upsampledr6   rW   rV   s         r0   test_upsample_tolerancez-TestDataArrayResample.test_upsample_toleranceY  s`   lqAAA-4KKK")A,,&%(9:: T**0050AAc3RVS9V_<U;VWW6*** T**0050AAc263S9V_<U;VWW6*** T**22T2BBaBFAq1V_4M3NOO6*****r2   c           	        ddl m} t          j        d          }t          j        d          }t	          j        ddd          }t          j        d          d	z  }t          j        |d
          }t          ||||dd          }|                                	                    d          
                                j        }t          j        dt          |          dz
  t          |          dz            }	dD ]}
|	                    d                              |
          } |t          j        t          |                    ||
ddd          } ||	          }t          ||||dd          }t          ||d           d S )Nr   interp1dr;   r   rf   r  r:   r  r   r  r  r  r  r&   r  r  zeroslinear	quadraticcubicri   r  Tkindr;  bounds_errorassume_sorted缉ؗҜ<rtol)scipy.interpolater1  r+   r   rr   rs   r  r   r  r  r  r  r  r  r  r   )r  r1  r	  r
  rv   r   r   r6   r  new_times_idxr8  rW   r   r)  rV   s                  r0   test_upsample_interpolatez/TestDataArrayResample.test_upsample_interpolaten  s   ......Yq\\Yq\\lqAAAIaLLAwq)$$$Rb A ACUVV**33D99@@BBH As5zzA~s5zzA~FFR 	: 	:D^^^..::4@@F	#e**%%!"  A Am,,M 'br::" H Hf599999'	: 	:r2   r  c                   t          j        ddd          }t          j        t	          j        t          |                    d|fg          }|                    d                              d          }t	          j	        t	          j
        d	          t	          j
        d
          g          }t          j        dt          j        gd|fg          }t          ||           d S )Nz
2007-02-01z
2007-03-01r  rK  rj   r  ri   r  z
2007-02-28z
2007-03-31g      ;@)rr   rs   r*   r   r+   r   r  r  r  r6   r/  r'  r
   )r  datesrY  r   r  rV   s         r0   "test_upsample_interpolate_bug_2197z8TestDataArrayResample.test_upsample_interpolate_bug_2197  s     lLsCCC\")CJJ//65/1BCC#&&228<<]<(("-*E*EF
 
 <rv&.1I0JKKVX&&&&&r2   c                6   t          j        ddd          }t          j        t          j                            t          |          ddf          dd|i	          }|                    d
                              d          }t          ||d           d S )Nz
2016-01-01z
2016-03-31r  rK  r   r   r  rj   r  ri   r  r;  r<  )
rr   rs   r*   r   r+   r,   r  r  r  r   )r  rB  rV   rW   s       r0   )test_upsample_interpolate_regression_1605z?TestDataArrayResample.test_upsample_interpolate_regression_1605  s    lLtDDD<Ic%jj!Q/00#E?
 
 

 """--99(CCu555555r2   chunked_timec           	        ddl m} t          j        d          }t          j        d          }t	          j        ddd          }t          j        d          d	z  }t          j        |d
          }t          ||||dd          }d	dd}	|rd|	d<   |                                	                    d          
                                j        }
t          j        dt          |          dz
  t          |          dz            }dD ]}|                    |	          	                    d                              |          }|                                } |t          j        t          |                    ||ddd          } ||          }t          ||
||dd          }t#          ||d           d S )Nr   r0  r;   r   rf   r  r:   r  r   r  r  r  r&   rF   rj   r  r2  ri   r  Tr7  r;  r<  )r>  r1  r+   r   rr   rs   r  r   r  r  r  r  r  r  chunkr  computer   )r  rF  r1  r	  r
  rv   r   r   r6   chunksr  r?  r8  rW   r   r)  rV   s                    r0   test_upsample_interpolate_daskz4TestDataArrayResample.test_upsample_interpolate_dask  s    	/.....Yq\\Yq\\lqAAAIaLLAwq)$$$Rb A ACUVVq!! 	F6N**33D99@@BBH As5zzA~s5zzA~FFR 	: 	:D[[((11t1<<HHNNF^^%%F	#e**%%!"  A Am,,M 'br::" H Hf599999)	: 	:r2   zrequires pandas < 2.0.0)reasonc                   t          j        ddd          }t          t          j        d          d|fg          }d}t          j        t          d          5  |                    d	|
          	                                }d d d            n# 1 swxY w Y   t          |
                                                    d	| d          	                                          }t          ||           d S )N2000-01-01T02:03:01r  r
  r  rj   r   z the `base` parameter to resampler   rM  )rj   baseHoffset)rr   rs   r   r+   r   r=   r   r   r  r(  r  r   )r  rv   r6   rO  rW   rV   s         r0   test_resample_basez(TestDataArrayResample.test_resample_base  s2   3$KKK")B--65/):;;\-/QRRR 	B 	B^^T^::??AAF	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	BOO&&uZZZ&@@EEGG
 
 	6*****s   *BBBc                   t          j        ddd          }t          t          j        d          d|fg          }t          j        d          }|                    d|                                          }t          |                                                    d|	                                                    }t          ||           d S )
NrN  r  r
  r  rj   11HrM  )rj   rR  rQ  )
rr   rs   r   r+   r   	Timedeltar  r(  r  r   )r  rv   r6   rR  rW   rV   s         r0   test_resample_offsetz*TestDataArrayResample.test_resample_offset  s    3$KKK")B--65/):;;e$$U6::??AAU__..77f7MMRRTTUU6*****r2   c                   t          j        ddd          }t          t          j        d          d|fg          }d}|                    d|                                          }t          |                                                    d|	                                                    }t          ||           d S )
NrN  r  r
  r  rj   rN  rM  )rj   origin)rY  )	rr   rs   r   r+   r   r  r(  r  r   )r  rv   r6   rY  rW   rV   s         r0   test_resample_originz*TestDataArrayResample.test_resample_origin  s    3$KKK")B--65/):;;U6::??AAU__..77f7MMRRTTUU6*****r2   loffsetz-12Hi)hoursc                `   t          j        ddd          }t          t          j        d          d|fg          }t          j        t          d          5  |                    d|	          	                                }d d d            n# 1 swxY w Y   |
                                                    d          	                                }t          |t           j                  st          j        |          }|j        |z   |_        t          |          }t          ||           d S )
Nrf   r  r
  r  rj   z`loffset` parameterr   rM  rj   r[  )rr   rs   r   r+   r   r=   r   r   r  r(  r  
isinstance
DateOffsetrV  r  r   )r  r[  rv   r6   rW   seriesrV   s          r0   test_resample_loffsetz+TestDataArrayResample.test_resample_loffset  sR    lrBBB")B--65/):;;\-/DEEE 	H 	H^^^@@EEGGF	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H""++E227799'2=11 	,l7++G|g-V$$*****s   *BBBc                   t          j        ddd          }t          t          j        d          d|fg          }t          j        t          d          5  t          j        t          d          5  |
                    d	d
                                           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrf   r  r
  r  rj   z)Following pandas, the `loffset` parameterr   z`loffset` must berM  r&   r^  )rr   rs   r   r+   r   r=   r   r   r>   r?   r  r(  r  s      r0   test_resample_invalid_loffsetz3TestDataArrayResample.test_resample_invalid_loffset  sF   lrBBB")B--65/):;;\!L
 
 
 	= 	= z1DEEE = =E155::<<<= = = = = = = = = = = = = = =	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s6   C4*B*C*B.	.C1B.	2CC	CN)r  r   r7   r8   r  )$r  r  r  r=   r  r  r  r  r  r  r  r   r  r  r  r&  r*  r.  r@  filterwarningsrC  rE  r   rK  skipifr   rS  rW  rZ  datetime	timedeltarr   rV  r`  rb  rd  r4   r2   r0   r  r  S  s       [\D%=99"1 "1 "1 :9"1H [\D%=99+ + + :9+<+ + ++ + +BA A A ) ) ^)>7 7 7+ + ++ + +>8+ 8+ 8+t+ + +* ": ": ^":H [ BCC' ' DC ^' 6 6 ^6 [^dE];;&: &: <; ^ ]&:P [.7PQQ+ + + RQ++ + + ++ + + + [.7PQQ[HS)))BLs###BM$$$		
 + + +  RQ+= = = = = =r2   r  c                  Z    e Zd Zd Zd Zd Zd Zd Zd Ze	d             Z
d Zd	 Zd
 ZdS )TestDatasetResamplec                   t          j        ddd          }t          g dt          j                            ddd          fdt          j                            d          d	d
if|d          }|                    d                              d          }|                    g d          }t          ||           t          j        ddd          }|
                    |          }|                    d          }dD ],}t          ||          } |            }t          ||           -t          j        fD ]'}|                    |          }t          ||           (d S )Nrf   r  r
  r  r  r:   r   rj   r  r   r   r  rj   r  ri   TrH  r  r     )r(  r_   r  ru  )rr   rs   r   r+   r,   r-   r  r  rI   r   r#  r<  r
   r(  rE  )	r  rv   r/   rW   rV   expected_timehowr   r   s	            r0   test_resample_and_firstz+TestDatasetResample.test_resample_and_first  sy   lrBBB***BIOOB1,E,EF	 3 3ff5EF 
 
 $''--->>77			7**6*** lrJJJ::=:11$''3 	+ 	+CVS))FVXXF6****wi 	+ 	+F]]6**F6****	+ 	+r2   c                *   t          j        ddd          }t          g dt          j                            ddd          fdt          j                            d          d	d
if|d          t          j        d         dk    t          j        d                   d<   	                    d          
                    d          }t          j        fdt          d          D             |d                   }t          ||           d S )Nrf   r  r
  r  r  r:   r   rj   r  r   rl  r   r  r  ri   r&   	min_countc           	         g | ]D}                     t          |d z  |dz   d z                                          dd          ES )r   r&   ri   rj   rr  )rI   r<   r_   )r1  ir/   s     r0   r3  z?TestDatasetResample.test_resample_min_count.<locals>.<listcomp>@  s`        U1q51q5A+6677;;Fa;PP  r2   ro   )rr   rs   r   r+   r,   r-   r*   r)  r'  r  r_   r  r  r   )r  rv   rW   rV   r/   s       @r0   test_resample_min_countz+TestDatasetResample.test_resample_min_count2  s    lrBBB***BIOOB1,E,EF	 3 3ff5EF 
 
 HRY_bfbi@@5	$''++a+889   q   v
 
 
 	&)))))r2   c                R   t          j        ddd          }t          g dt          j                            ddd          fdt          j                            d          d	d
if|d          }d|j        d<   |                    d                              d          }|d         j        }|d         j        }||k    sJ |j        }|j        }||k    sJ t          j
        t          d          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nrf   r  r
  r  r  r:   r   rj   r  r   rl  dsdatadsmetar  ri   TrH  r  r  r   r  )rr   rs   r   r+   r,   r-   r  r  r(  r=   r   r  )r  rv   r/   resampled_dsrW   rV   s         r0   %test_resample_by_mean_with_keep_attrsz9TestDatasetResample.test_resample_by_mean_with_keep_attrsH  s   lrBBB***BIOOB1,E,EF	 3 3ff5EF 
 
 &{{{--22d2CCe$*e9?6!!!!#86!!!!\V
 
 
 	4 	4 KKTdK333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   7DD #D c                    t          j        ddd          }t          g dt          j                            ddd          fdt          j                            d          d	d
if|d          }d|j        d<   d S )Nrf   r  r
  r  r  r:   r   rj   r  r   rl  rx  ry  )rr   rs   r   r+   r,   r-   r  r  rv   r/   s      r0   rb  z)TestDatasetResample.test_resample_loffseta  s    lrBBB***BIOOB1,E,EF	 3 3ff5EF 
 
 &r2   c                   t          j        ddd          }t          g dt          j                            ddd          fdt          j                            d          d	d
if|d          }d|j        d<   |                    d                              d          }|d         j        i k    sJ |j        i k    sJ d S Nrf   r  r
  r  r  r:   r   rj   r  r   rl  rx  ry  r  ri   FrH  r  )	rr   rs   r   r+   r,   r-   r  r  r(  r  rv   r/   rz  s       r0   &test_resample_by_mean_discarding_attrsz:TestDatasetResample.test_resample_by_mean_discarding_attrsl      lrBBB***BIOOB1,E,EF	 3 3ff5EF 
 
 &{{{--22e2DDE"(B....!R''''''r2   c                   t          j        ddd          }t          g dt          j                            ddd          fdt          j                            d          d	d
if|d          }d|j        d<   |                    d                              d          }|d         j        i k    sJ |j        i k    sJ d S r  )	rr   rs   r   r+   r,   r-   r  r  ru  r  s       r0   &test_resample_by_last_discarding_attrsz:TestDatasetResample.test_resample_by_last_discarding_attrs|  r  r2   c                   t          j        d          }t          j        d          }t          j        ddd          }t          j        t          j        d          d          }t          j        |dz  |dz            \  }}t          j        t          |          t          	          }t          ||||d
d          }t          |j	        ||dd          }	t          |j	        ||dd          }
t          |d|id          }t          ||	|
|d          }|                    g d          }|                    d                              d          }d|j        vsJ |                    d                                          }d|j        vsJ |                    d                              d          }d|j        vsJ d S )Nr;   r   rf   r  r:   r  r  r   r  r  r  rF   rj   ri   r  r  r   r  r  r  r  r  s                 r0   r  z4TestDatasetResample.test_resample_drop_nondim_coords  s   Yq\\Yq\\lqAAAwry||Y//R!VR#X..BYs5zz---$Rb A ACUVV24r!3!3Z@@24r!3!3Z@@2	::e6vNNOO]]---.. %((--f556=(((( $''--//6=(((( $''33H==6=((((((r2   c                   t          j        ddd          }t          g dt          j                            ddd          fdt          j                            d          d	d
if|d          }t          j        t          d          5  |	                    dd           d d d            n# 1 swxY w Y   t          j        t          d          5  |	                    ddd           d d d            n# 1 swxY w Y   t          j        t          d          5  |	                    dd           d d d            d S # 1 swxY w Y   d S )Nrf   r  r
  r  r  r:   r   rj   r  r   rl  zresample\(\) no longer supportsr   r  r(  )rp   ro  ro   )
rr   rs   r   r+   r,   r-   r=   r>   r   r  r}  s      r0   test_resample_old_apiz)TestDatasetResample.test_resample_old_api  s	   lrBBB***BIOOB1,E,EF	 3 3ff5EF 
 
 ]9,NOOO 	& 	&KKf%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& ]9,NOOO 	6 	6KK&fK555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 ]9,NOOO 	* 	*KK&K)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s6   B..B25B2C99C= C=EEEc                   t          j        ddd          }t          j        dt          j                            dd          f|t	          j        d          d          }t          |	                    d	          
                                d
         |j        	                    d	          
                                           d S )Nrf   r  i  r  r   r:   )r   rj   r   r  ri   r   )rr   rs   r*   r   r+   r,   r-   r   r   r  r(  r   )r  rj   r/   s      r0    test_resample_ds_da_are_the_samez4TestDatasetResample.test_resample_ds_da_are_the_same  s    }\gFFFZ%ryw'B'BCYq\\ 
 
 	KKSK!!&&((/c1J1J1O1O1Q1Q	
 	
 	
 	
 	
r2   c                    dd}t          j        ddd          }t          j        dg df|d	          }t          j        dg d
f|d	          }|                    d                              |dd          }t          ||           d S )Nr   c                8    |                      d          |z   |z   S r  r  r   s      r0   r   zBTestDatasetResample.test_ds_resample_apply_func_args.<locals>.func  r  r2   r  r  r   r  rj   r  )r   rj   r  ri   r  r  r   r  )rr   rs   r*   r   r  rT   r   )r  r   rv   r/   rV   rW   s         r0    test_ds_resample_apply_func_argsz4TestDatasetResample.test_ds_resample_apply_func_args  s    	3 	3 	3 	3 f3:::Z 95IIJJ:v&?OOPP#&&**4f3*GG6*****r2   N)r  r  r  rp  rv  r{  rb  r  r  r   r  r  r  r  r4   r2   r0   rj  rj    s        + + +4* * *,4 4 42	& 	& 	&( ( ( ( ( (  ) ) ^)4* * *&
 
 
+ + + + +r2   rj  c                    t          j        ddg dfig ddg dfd          } |                     d	                              d
          }t          j        ddg dfig d| j        d          }t          |                    dd	g          |           | j                            d	                              d
          }| j        |j        d	<   t          j
        d          |j        d<   t          |j        |           d S )Nr   rC   )rq   r   r&   r&   r&   r&   r&   r   r&   r   r   r   r:   r;   r   r   r   r&   r&   r   r   r   r   group_idr   r  ro   )rq   r
  r&   r   r&   r   r   rq   )r*   r   rG   cumsumr  r   r  r   rl   r+   r   r  s      r0   test_groupby_cumsumr    s6   		.../0***>S>S>S8TUU
 
 
B ZZ
##**s*33FzF2223	
 '&&
 
	  H X''j(9::FCCCV^^J''..3.77F"$+HOJ9Q<<HOCX\6*****r2   c                    t          j        ddg dfig ddg dfd          } |                     d	                              d
          }t          j        ddg dfig d| j        d          }t          |                    dd	g          |           | j                            d	                              d
          }| j        |j        d	<   t          j
        d          |j        d<   t          |j        |           d S )Nr   rC   )rq   r   r   r&   r&   r   r&   r  r   r  r  r   r  ro   )rq      r   r   r&   r   r   rq   )r*   r   rG   cumprodr  r   r  r   rl   r+   r   r  s      r0   test_groupby_cumprodr    s6   		.../0***>S>S>S8TUU
 
 
B ZZ
##+++44FzF2223	
 '&&
 
	  H X''j(9::FCCCV^^J''//C/88F"$+HOJ9Q<<HOCX\6*****r2   zmethod, expected_arrayr  )r  r  r  r  r  r  r  )r  r  r  r  r  r  strexpected_arraylist[float]c           
     d   t          j        dddddddt          j        gfidt	          j        ddd	          i
          } t          |                    d          |           d          }t          j        dd|fidt	          j        ddd	          i
          }t          |	                    dg          |            t          |j
                            d          |           d          }|j        |j        d<   t          |	                    dg          j
        |           d S )Nr   rj   r&   r   r   z
01-01-2001r  r;   r  r   r  ri   ro   )r*   r   r+   r'  rr   rs   r<  r  r   r  r   rj   rl   )r   r  r/   rW   rV   s        r0   test_resample_cumsumr  	  s@    
	!Q1a012BM,S!DDD

 
 
B 5WR[[d[++V44@@@Fz	N+,BM,S!DDD
  H X''116:::8WRV__$_//88VDDDF gHOFX''115v>>>>>r2   c            	        t          j        ddd          } t          j        ddd          }t          j        |d| i	          }t          j        |d
t          j        ddd          i	          }|                    dg          }|                    d          |z
  }t          t          j	        |          |           d S )Nz
2023-01-01z
2023-12-31MSrK  r  r&   r   rj   r   r   r   z
2023-04-01ri   r  )
r*   rs   r+   r  r   r   r^  rG   r   
zeros_like)rj   r   r   climx_sliceanom_gbs         r0   !test_groupby_binary_op_regressionr  "	  s     =|$???D;r1b!!D
T64.111A<gryB/B/B%CDDDD ee,e((G ool++d2GR]7++W55555r2   c                 N   t           j                            t          d          ddggd          } t	          j        t          j                            dd          d| fd	t          d          fg          }|
                    d
          j        }|ddgddgddgdk    sJ d S )Nra  r   r&   )r  r  r  r;   r   r   r   r  r   r   r:   r    )rr   r  r  rd  r*   r   r+   r,   randr  rG   re  )midxr  re  s      r0   test_groupby_multiindex_levelr  3	  s    =%%tE{{QF&;>%RRD
,ry~~a++sDkCq?-K
L
LC[[&FAq6AaV<<<<<<<<r2   r   r_   prodr   rs  
int | Nonec           
     
   t          t          j        t          j        ddt          j        ddg          dddt          j        g d          fi          }|                    d          }t          j        | ||          }t          j        d          5   ||          }d d d            n# 1 swxY w Y   t          j        d	          5   ||          }d d d            n# 1 swxY w Y   t          ||           d S )
Nr&   r   ry   r&   r   r   r&   r   r   r   rH   rl   )rs  r   Tr\   F)
r   r+   r6   r'  rG   operatormethodcallerr*   r^   r   )r   rs  r   rY  r`   r   rW   rV   s           r0   test_min_count_vs_floxr  ;	  s   
 
Xrvq!RVQ2333););); < <=>
 
 
B 
H		B"49VLLLF		&	&	&                		'	'	'  6"::              VX&&&&&s$   B00B47B4C((C,/C,c           
        | rt           st          j                     t          t	          j        t          j        ddt          j        ddg          dddt	          j        g d          fi          }t          j        |           5  t          j	        t                    5  |                    d                              d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr&   r   ry   r  r  r\   rr  )r   r=   r  r   r+   r6   r'  r*   r^   r>   r   rG   r(  )r]   rY  s     r0   test_min_count_errorr  O	  sp     	Xrvq!RVQ2333););); < <=>
 
 
B
 
	*	*	* 3 3]9%% 	3 	3JJx  %%%222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s6   C0"*CC0C	C0C	 C00C47C4r  r  )r   r  r  r  r7   r8   )r   r  rs  r  r   r   r7   r8   )d
__future__r   rg  r  r   r   r+   pandasrr   r=   xarrayr*   r   r   r   xarray.core.groupbyr   xarray.testsr   r	   r
   r   r   r   r   r   r   r   r   r  r1   r6   rA   rL   rX   ra   rd   r{   r   r   r  r  r   r   r   r   r   r   r   r   r   r	  r,   r-   rs   rd  r  repr_dar   r  r  re  r;  rA  rF  rH  rV  r[  r_  rj  rn  rw  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rj  r  r  r  r  r  r  r  r4   r2   r0   <module>r     s>
   " " " " " "                 / / / / / / / / / / 3 3 3 3 3 3                          
 
 
   
+ 
+ 
+ 
+A A A A
# 
# 
# 
#' ' ' '# # # ## # # #(# # # #( ( ( ( dE]33' ' ' 43' 	'''30B0B0B*C)DEE
EC!3!3!345=O=O=O7PQQ ' ' ' ' 	YYY#yyy!1 233
EC+,sIII.>?? 
' 
' 
' 
'' ' ' '' ' ' '# # # #p' p' p' p'fr' r' r' r'j t}55E E E 65E*
( 
( 
( 
( ",IOOBAr""			++++++R]<c2>>>ttEE!RLL))A-.	 	 	 	  8 8 899'*<*<#*<*F*F GHH   IH :9  '*<*<#*<*F*F GHH   IH >??WXXD% D% D% YX @?D%N9 9 9 92Q Q Q Q$       
' ' ' ' 	  	  	  	 	' 	' 	' 	'$ $ $ $4	) 	) 	) 	)6 6 6 65 5 5 5& & & &< T5M225 5 5 3250& & & &D// // // //d dE]33' ' ' 43'$ 4-88
' 
' 
' 98
'#' #' #' #'L' ' ' '" " " "' ' ' '& & & &( ( ((( ( ($' ' '' ' '' ' ' X|$<x>Q#RSS' ' TS 'c+ c+ c+ c+ c+ c+ c+ c+LA= A= A= A= A= A= A= A=Hx+ x+ x+ x+ x+ x+ x+ x+v+ + + +2+ + + +2 	1112	2223 ? ? ? ?.6 6 6 6"= = = = %11D%=11tQi00' ' ' 10 21 21 '  dE]33
3 
3 
3 43
3 
3 
3r2   