
    dw                       d dl mZ d dlZd dlZd dlZd dlZd dl	Z	d dlm
Z
mZ d dlmZmZmZmZ d dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z) d d	l*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2  e%d
          Z3 G d d          Z4e2 G d de4                      Z5d Z6d Z7d Z8 G d d          Z9d Z:d Z;d Z<d Z=e+e	j>        ?                    d          e	j>        @                    d
e-rddgndg          d_d                                    ZAe1e	j>        @                    d
ddg          d                         ZBe1e2d                          ZCe1d!             ZDd" ZEe	j>        @                    d#d$d%g          e	j>        @                    d&eFeGejH        ejI        g          e	j>        @                    d
ddg          e	j>        @                    d'g d(          e	j>        @                    d)ddg          e	j>        @                    d*dd+g          d,                                                                         ZJe	j>        @                    d#d$d%g          e	j>        @                    d&eFeGejH        ejI        eKg          e	j>        @                    d-ddg          e	j>        @                    d
ddg          e	j>        @                    d'd.d/g          e	j>        @                    d)ddg          e	j>        @                    d*d+d0g          d1                                                                                     ZLd2 ZMe	j>        @                    d3 ej
         ejN        d4           ejN        d5          g           ej
         ejO        d$d6           ejO        d5          g           ej
        d7ej        g           ej
        d8ej        g           ej
        d9ej        geP:          g          d;             ZQe2d<             ZRe	j>        S                    e- d=>          e	j>        @                    d?g d@          e	j>        @                    dAd$d%g          dB                                     ZTe	j>        @                    d#d$d%g          e	j>        @                    d&eFeGejH        ejI        g          e	j>        @                    d
ddg          e	j>        @                    d'dCdDg          e	j>        @                    d*dd+g          e	j>        @                    d-ddg          e	j>        @                    d)g dE          dF                                                                                     ZUe	j>        @                    d&eFeGejH        ejI        g          e	j>        @                    d
ddg          e	j>        @                    d'dCdDg          dG                                     ZVe	j>        @                    d
ddg          e	j>        @                    d'dCdDg          e	j>        @                    dHg dI          dJ                                     ZWe	j>        @                    d'dCdDg          dK             ZXe	j>        @                    d&eFeGejH        ejI        g          e	j>        @                    d
ddg          e	j>        @                    d)ddg          e	j>        @                    d'dCdDg          dL                                                 ZYe	j>        @                    d
ddg          dM             ZZe1e	j>        @                    d
ddg          dN                         Z[e1dO             Z\dP Z]e	j>        @                    dQ ejO        d$dR          dSg ejO        d$dT          dUgf          dV             Z^e	j>        @                    dQ ej_        d$dR          dSg ej_        d$dT          dUgf          dW             Z`e	j>        @                    dX eja        d$Y           ejO        d$dR           ej_        d$dR          dZg          d[             Zbe	j>        @                    d\ddg          e	j>        @                    d)ddg          d]                         Zce2e0d^                         ZddS )`    )annotationsN)arraynan)	DataArrayDatasetcftime_rangeconcat)dtypesduck_array_ops)array_notnull_equivconcatenatecountfirstgradientlastleast_squaresmeannp_timedelta64_to_floatpd_timedelta_to_floatpushpy_timedelta_to_floatstacktimedelta_to_numericwhere)
array_type)assert_allcloseassert_equalassert_identical)	arm_xfailassert_array_equalhas_dask	has_scipyraise_if_dask_computesrequires_bottleneckrequires_cftimerequires_daskdaskc                      e Zd Z ej        d          d             Zd Zd Zd Zd Z	d Z
d	 Zej                            d
          d             ZdS )TestOpsTautousec           	         t          t          t          dt          gt          ddt          gdddt          ggt          ddd	gt          d
dt          gt          dt          t          ggg          | _        d S )N       @      @      @       @      "@      $@      *@      ,@      .@      1@      2@      5@)r   r   xselfs    @lib/python3.11/site-packages/xarray/tests/test_duck_array_ops.pysetUpzTestOps.setUp/   sr     #sC(#sC(#tS) $d+$c*$S)
 
    c                   t          t          dddgt          ddt          gdddt          gg          t          dddt          gt          dd	dgg          t          g d
g dg          g}t          g dd|z            D ]*\  }}t          | j        |          }t          ||           +| j        d         }t          | j        dd          }t          ||           | j        d         }t          | j        dd          }t          ||           t          j        t          d          5  t          | j        d           d d d            d S # 1 swxY w Y   d S )N                  	   
      )rA   rC   rE   )r@         r      rA   r   Faxisskipna).r   rO   out of boundsmatch   )	r   r   zipr   r9   r    pytestraises
IndexErrorr;   expected_resultsrQ   expectedactuals        r<   
test_firstzTestOps.test_first@   s   CQ#c1a%51b#GHHAq!S>CR#4566999lll+,,

 ""7"7"7=M9MNN 	1 	1ND(464((Fx00006!9tvAe4448V,,,6&>tvBu5558V,,,]:-=>>> 	 	$&!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	   -EEEc                   t          t          dddgt          ddt          gdddt          gg          t          dd	dt          gt          dddgg          t          g d
g dg          g}t          g dd|z            D ]*\  }}t          | j        |          }t          ||           +| j        d         }t          | j        dd          }t          ||           | j        d         }t          | j        dd          }t          ||           t          j        t          d          5  t          | j        d           d d d            d S # 1 swxY w Y   d S )Nr@   rH   rB   rI      rE   rJ   rG   rF   )rA   rD   rG   )rB   rb   rJ   rK   rA   rO   r   FrP   ).rO   rS   rT   rV   )	r   r   rW   r   r9   r    rX   rY   rZ   r[   s        r<   	test_lastzTestOps.test_lastU   s   CR$sBC&81b"c:JKLLAq"c?S"b"$5677:::|||,--

 ""7"7"7=M9MNN 	1 	1ND($&$''Fx00006":df1U3338V,,,6'?df2e4448V,,,]:-=>>> 	 	OOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r`   c                    dt          | j                  k    sJ t          g dg dg          }t          |t          | j        d                     dt          t	          j        d                    k    sJ d S )N   rL   rA   rV   )rV   rA   rL   rO   rQ   rL   
2000-01-01)r   r9   r   r    np
datetime64)r;   r]   s     r<   
test_countzTestOps.test_countj   s}    U46]]"""")))YYY/008U46%;%;%;<<<E"-5566666666r>   c                   t          ddgddgddg          }t          |t          j        ddgt                               t          ddgt          j        ddgt          j                  t          j                  }|j        t          j        k    sJ t          |t          j        dt          j        gt          j                             d S )NTFrL   rA   abdtype)r   r    ri   r   objectfloat32r   rp   r;   results     r<   test_where_type_promotionz!TestOps.test_where_type_promotionr   s    e}q!fsCj99628QHF#C#C#CDDDe}bh1vrz&B&BBFKK|rz))))628QKrz#J#J#JKKKKKr>   c                ~    t          ddg          }t          |t          j        ddgt                               d S NrL   rn   ro   )r   r    ri   r   rq   rs   s     r<   test_stack_type_promotionz!TestOps.test_stack_type_promotionz   s:    3x628QHF#C#C#CDDDDDr>   c                    t          dgdgg          }t          |t          j        ddgt                               d S rw   )r   r    ri   r   rq   rs   s     r<   test_concatenate_type_promotionz'TestOps.test_concatenate_type_promotion~   s@    qcC5\**628QHF#C#C#CDDDDDr>   errorc                x    t          j        t          t           j        t           j        g                    sJ d S N)ri   isnanr   r   r:   s    r<   test_all_nan_arrayszTestOps.test_all_nan_arrays   s/    xbfbf-..///////r>   N)__name__
__module____qualname__rX   fixturer=   r_   rc   rk   ru   rx   rz   markfilterwarningsr    r>   r<   r)   r)   .   s        V^D!!!
 
 "!
   *  *7 7 7L L LE E EE E E [((0 0 )(0 0 0r>   r)   c                  B    e Zd Z ej        d          d             ZdS )TestDaskOpsTr*   c           	        dd l }|j                            t          t          dt          gt          ddt          gdddt          ggt          dd	d
gt          ddt          gt          dt          t          gggd          | _        d S )Nr   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   )rA   rL   rA   chunks)
dask.arrayr   
from_arrayr   r9   )r;   r'   s     r<   r=   zTestDaskOps.setUp   s    && #sC(#sC(#tS) $d+$c*$S)  ' 
 
r>   N)r   r   r   rX   r   r=   r   r>   r<   r   r      s=        V^D!!!
 
 "!
 
 
r>   r   c                    t          j        g d          } t          j        g d          }t          j        |           }t	          ||           t          j        | d          }t	          ||           t          j        | d          }t	          ||           t          j        | d          }t	          ||           t          j        | d          }t	          | |           d S )N)r   rL   rA   rV   )r   rL   rV   rD   r   rg   rO   )r   r   ri   r   r   cumsumr    inputsr]   r^   s      r<   test_cumsum_1dr      s    Xlll##Fx%%H"6**Fx((("6222Fx((("6333Fx((("6555Fx((("6333Fvv&&&&&r>   c                 N   t          j        ddgddgg          } t          j        ddgddgg          }t          j        |           }t	          ||           t          j        | d          }t	          ||           t          j        | d          }t	          | |           d S )	NrL   rA   rV      rG   r   rL   rg   r   r   r   s      r<   test_cumsum_2dr      s    X1v1v&''Fx!Q!R)**H"6**Fx((("6777Fx((("6333Fvv&&&&&r>   c                 N   t          j        ddgddgg          } t          j        ddgddgg          }t          j        |           }t	          ||           t          j        | d          }t	          ||           t          j        | d          }t	          | |           d S )	NrL   rA   rV   r      r   rg   r   )ri   r   r   cumprodr    r   s      r<   test_cumprod_2dr      s    X1v1v&''Fx!Q!Y011H#F++Fx(((#F888Fx(((#F444Fvv&&&&&r>   c                  d   e Zd Zej                            d ej        g d           ej        g d          f ej        ddej        g           ej        dej        dg          f ej        ej        dej        g           ej        dej        ej        g          fg          d             Z	d Z
d Zej                            d	 ej        d
           ej        d           ej        d           ej        d          fdddej        fddddej        fg          d             ZdS )TestArrayNotNullEquivz
arr1, arr2rf   rL   rA   rV   c                *    t          ||          sJ d S r}   )r   )r;   arr1arr2s      r<   
test_equalz TestArrayNotNullEquiv.test_equal   s      #4.......r>   c                    t          j        g d          }t          j        dt           j        dg          }t          ||          rJ d S )N)rL   rA   r   rL   rV   ri   r   r   r   r;   rm   rn   s      r<   test_some_not_equalz)TestArrayNotNullEquiv.test_some_not_equal   sH    HYYYHa^$$&q!,,,,,,,r>   c                    t          j        dt           j        t           j        dgg          }t          j        ddgt           j        dgg          }t          ||          rJ d S )NrL   r   rA   r   r   s      r<   test_wrong_shapez&TestArrayNotNullEquiv.test_wrong_shape   s[    Hq"&"&!,-..Hq!frvqk*++&q!,,,,,,,r>   zval1, val2, val3, null200020012002NaT      ?r-         @)foobarbazNr   r   r   c                    t          |t                    rt          nd }t          j        ||||g|          }t          j        ||||g|          }t          ||          sJ d S )Nro   )
isinstancestrrq   ri   r   r   )r;   val1val2val3nullrp   r   r   s           r<   
test_typesz TestArrayNotNullEquiv.test_types   sr     %T3//9TxtT40>>>xtT40>>>"4.......r>   N)r   r   r   rX   r   parametrizeri   r   r   r   r   r   rj   r   r   r>   r<   r   r      s       [RXiii  ("(999"5"56RXq!RVn%%xrxBFA'?'?@RXrvq"&)**HBHa5H,I,IJ	
 / / /- - -
- - -
 [  f%%f%%f%%e$$	 #sBF#'E5"&)
	
 / / / / /r>   r   c                   t           j                            d          }g dd |          }dd |          }t          j        |t           j                  r |j        |                     |          }nt          j        |t           j                  r,|                    dd|                              |          }nwt          j        |t           j	                  r,|                    dd|                              |          }n,|t          k    r|                    g d|          }nt          |rs|                    t          |j                  t          |j        dz                      }t!          j        |j                  \  }}	 |j        |          }|	|j        |<   t)          ||d	t          j        d
          id          }
|r(t,          r!d |D             }|
                    |          }
|
S )Nr   )   rE   r   r9   yzrG   )sizerL   )rm   rn   cdg?r9   r   da)dimscoordsnamec                    i | ]}|d S )r   r   ).0r   s     r<   
<dictcomp>z'construct_dataarray.<locals>.<dictcomp>  s    %%%1!Q%%%r>   )ri   randomRandomState
issubdtypefloatingrandnastypeintegerrandintbool_r   choice
ValueErrorranger   intr
   maybe_promoterp   flatr   aranger!   chunk)dim_numrp   contains_nanr'   rngshapesr   r   inds
fill_valuer   r   s               r<   construct_dataarrayr      s   
)


"
"CZZ!F8G8$D	}UBK(( 		6"))%00	ubj	)	) Ar//66u==	ubh	'	' Aqv..55e<<	#

///f
== &zz%
++Sc1A-B-BCC"0==zU##%
4	5tS")B--,@t	L	L	LB  %%%%%XXfIr>   c                |    t          | t          j                  rt          j        |           S t          |           S r}   )r   pdSeriesr   from_series)ses    r<   from_series_or_scalarr     s3    "bi   $R(((}}r>   c                0   |                     dd          d|d<   || j        dk    r7|                                 }t           t	          ||          di |          S g }t          | j                  }|                    |           |d         }t          t          | |                             D ]1}|
                    t           | j        di ||i||fi |           2|| j        v rt          || |                   S t          ||          S )zwconvert DataArray to pd.Series, apply pd.func, then convert back to
    a DataArray. Multiple dims cannot be specified.rR   TNrL   r   dimr   )getndim	to_seriesr   getattrlistr   remover   lenappendseries_reduceiselr   r	   )	r   funcr   kwargsr   da1r   r   is	            r<   r   r     s+   
 zz(D!!)x
{bgll\\^^$%6WR%6%6%@%@%@%@AAABG}}CGs2a5zz"" 	N 	NAJJ}WRW%6%61v%6%6cLLVLLMMMM	>>#2a5))))cq!!!!r>   c                `    |r'| j         dk    rt          | j        t                    sJ d S d S d S )Nr   )r   r   datadask_array_type)r   r'   s     r<   assert_dask_arrayr   7  s@     4!"'?333334 433r>   z,ignore:All-NaN .* encountered:RuntimeWarningFTboolreturnNonec                   t          t          j        g dd          dg          }| r|                    ddi          }t          t          j        dd                    }t          t          j        dd                    }|                                }| r	|j        J t          ||           |                    d	
          }| r	|j        J t          ||           t          |dg                                         |           t          |dg                             d	
          |           t          |d                                         |d                    t          |d                             d	
          |d                    t          |d                                         |           t          |d                             d	
          |           d S )N)z
2010-01-01r   z
2010-01-03r   r   zM8[ns]ro   timer   rV   z
2010-01-02r   FrR   rL   r   )r   ri   r   r   r   r   r   )r'   r   expect
expect_natr^   s        r<   test_datetime_meanr  <  s   
 

BBB(SSSX
 
 
B  #XXvqk""rxH===>>F28E:::;;JWWYYF )}(((   WWEW""F )}((($$$ QC,,,QCU++Z888 Ar!u%%%A5))2a5111Az***A5)):66666r>   c                   | rt           st          j        d           t          dd          }t	          |dg          }t	          |j                            dd                    }| r.|                    ddi          }|                    ddi          }|                    d	
          }t          d          5  |                    d	
          
                                }d d d            n# 1 swxY w Y   t          ||            t          ||           t	          |                    dddd                    }t          d          5  |
                                }d d d            n# 1 swxY w Y   t          ||            t          ||           t          d          5  |
                                }d d d            n# 1 swxY w Y   t          ||            t          ||           d S )Nrequires daskr   r   )periodsr   r  rA   dim_0r   r   rL   )max_computesi  re   )r!   rX   skipr   r   valuesreshaper   r   r#   r   r   r   	date_type)r'   timesr   da_2dr]   rt   s         r<   test_cftime_datetime_meanr  a  s     %H %O$$$+++E	5x	(	(	(Bel**1a0011E *XXvqk""WaL))wwAwH	Q	/	/	/ ( (a%%''( ( ( ( ( ( ( ( ( ( ( ( ( ( (fd###"""q!R8899H	Q	/	/	/                fd###"""	Q	/	/	/                fd###"""""s6   ?)C44C8;C8E55E9<E90GGGc            	         t          dt          ddd          fdt          t          d                    fd          } |                     d          }|                     i                               d          }t          ||           d S )	Nr
  z
2021-10-31rG   Dr  freq)r9   )var1var2r9   )r   r   r   r   r   r   r   )dsr]   rt   s      r<   Ctest_mean_over_non_time_dim_of_dataset_with_dask_backed_cftime_datar    s    
 
\2C P P PQT%))__-	
 	

 
B wws||HXXb\\s##F"""""r>   c                    dd l } t          j        |                     ddddddd          |                     ddddddd          g|                     ddddddd          |                     ddddddd          g|                     ddddddd          |                     ddddddd          gg          }t	          |dd	g
          }|                    d	          }t	          |                     ddddddd          |                     ddddddd          |                     ddddddd          gdg
          }t          ||           d S )Nr   i  re      i  i  i  r   d2r  i  iD  i  )cftimeri   r   DatetimeNoLeapr   r   r   )r  r  r   rt   r]   s        r<   *test_cftime_datetime_mean_long_time_periodr     s   MMMH %%c2r1aA>>%%c2r1aA>>
 %%c2r1aA>>%%c2r1aA>>
 %%c2r1aA>>%%c2r1aA>>	
 E" 
5~	.	.	.BWWT]]F!!#r2q!Q::!!#r2q!Q::!!#r2q!Q::	

 X  H """""r>   c                    t                      } g d| d<   dddgddgdd	ggf| d
<   dg df| d<   t          |                     d          d         | d                    t          |                     d          d         | d                    t          |                     d          d         | d                    t          |                     d          d         | d                    d S )Nrf   pos)r"  r   r   r-   r         @r.   r/   r   )rA   rV   r   varr   r   )r   r   r   maxminsum)r  s    r<   test_empty_axis_dtyper(    s    	B		BuI C:SzC:"FFBvJyyy BuIRWWW((/E;;;RVVV''.5	:::RVVV''.5	:::RVVV''.5	:::::r>   r   rL   rA   rp   r   )r'  r&  r%  r   r$  rR   aggdimr9   c                   |dk    r| dk     rt          j        d           |t          j        k    r|dk    rt          j        d           |rt          st          j        d           |r'|du r#|t          j        fv rt          j        d           |t          j        k    rd	nd
}t          | |d|          }|d n|                    |          }t          j	                    5  t          j
        dd           t          j
        dd           t          j
        dd           |j        j        dk    r|r	 |r) t          t          d|           |j        |          }	n% t          t          |          |j        |          }	 t          ||          ||          }
t          |
|           t          j                            |
j        t          j        |	          d	d           n# t&          t(          t*          f$ r Y nw xY w t          ||          ||          }
 t          |                                |          ||          }	t#          |
|	|           |dv rt/          ||||d          }	t#          |
|	|            t          ||          ||d          }
|rt1          |j        t4                    sJ t/          ||||d          }	t#          |
|	|           n%t/          ||||          }	t#          |
|	|           |dvrC t          ||          ||t6                    }
t          |
|           |
j        t6          k    sJ t          | |d|          } t          ||          |          }
|rt1          |j        t4                    sJ  t          t          d|           |j                  }	|
j        t8          k    r |
j        t          j        |	          k    sJ n0t          j        |
j        t          j        |	          |          sJ d d d            d S # 1 swxY w Y   d S )Nr   rA   dim not in this testr   znumpy does not support thisr  Fz(dask does not compute object-typed arrayg-C6?gh㈵>Tr   r'   ignorezMean of empty sliceAll-NaN slicezinvalid value encountered inOr   rg   )rR   r   )rtol	equal_nan)r0  )r$  stdr   )rR   r   ddofrC   )r%  r&  )rR   r   rp   r  )rX   r  ri   r   r!   rr   r   get_axis_numwarningscatch_warningsr   rp   kindr   r  r   testingr   r   	TypeErrorAttributeErrorZeroDivisionErrorcomputer   r   r   r   floatrq   allclose)r   rp   r'   r   rR   r)  r0  r   rQ   r]   r^   s              r<   test_reducer?    s    }}1*+++TV^^1222 %H %O$$$ @%EbhZ$7$7>???RZ''55UD	We$T	J	J	JB>44rv'>'>D 
	 	"	" :M :M*?@@@/:::*HIII8=CF G8wr<<<88NNNHH0wr400FFFH*T**&fEEE!&$///
**M28H#5#5Fd +     ~/@A    
 #T""&f=== /72::<<..f&IIIt4444 >!!$Rf&qQQQHFH48888&WR&&f&qIIIF <!"'?;;;;;$Rf&qQQQHFH488888$Rf&IIIHFH48888 ~%%&WR&&f&NNNFfd+++<5(((( !%e$OOO"T""&111 	8bg77777,72|T||,,RY77<6!!=BHX$6$666666;v}bhx.@.@tLLLLLLu:M :M :M :M :M :M :M :M :M :M :M :M :M :M :M :M :M :Ms9   $AP97B5G-,P9-HP9HH%P99P= P=r   r&  r%  r   c                   |dk    r| dk     rt          j        d           |rt          st          j        d           |rG|st          j        d           |r/t          j        |          j        dv rt          j        d           t          | |||          }t          j                    5  t          j	        d	d
            |j
        di | t          |d|z             ||                                          i} t          ||          ||          }	t          |                    t          |j                            |	                    t          |	j                                       d d d            d S # 1 swxY w Y   d S )Nr   rA   r+  r  z;numpy's argmin (not nanargmin) does not handle object-dtypeiufcz4numpy's nanargmin raises ValueError for all nan axisr,  r-  r.  arg)r   rR   r   )rX   r  r!   ri   rp   r7  r   r5  r6  r   r   r   r<  r   	drop_varsr   r   )
r   rp   r   r'   r   rR   r)  r   r^   r]   s
             r<   test_argmin_maxrD    s    }}1*+++ %H %O$$$ P 	WKUVVV 	Pbhuoo*f44KNOOO	We,T	R	R	RB		 	"	" 

 

/::: 
 
0wr54<00VFKKKSSUUV
 
 %72t$$???T&-0011tHO4455	
 	
 	


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s   -CFF	Fc                     t          dt          j        dd          } t          j        | d<   t	          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S )NrA   TFr,  r   r   r   )r   ri   r   r   rX   rY   r   argminr   s    r<   test_argmin_max_errorrH  <  s    	Qt%	H	H	HBFBqE	z	"	"  
		c	                 s   A**A.1A.r   rh   r   hg        y              ?r   ro   c                    t          j        ddg          }t          j        |           }t           j                            ||           d S )NFT)ri   r   r   isnullr8  r   )r   r]   r^   s      r<   test_isnullrL  C  sE     x&&H"5))FJHf-----r>   c                 L   t          dt          j        dd          } t          |                                 j        t                    sJ t          |                                                                 |                                                                            d S )NrA   Tr,  )	r   ri   rr   r   rK  r   r   r   loadrG  s    r<   test_isnull_with_daskrO  S  sy    	Q
D	I	I	IBbiikk&88888!!##RWWYY%5%5%7%788888r>   zThis is for dask.)reasonrQ   )r   rO   rL   
edge_orderc                   dd l m} t          j        t          j                            ddd                    }t          j        t          j        dd|j        |                              }|                    |g d          }t          ||| |          }t          ||| |          }t          ||j                  sJ t          ||           d S )	Nr   d   rC   (   rL   ))rD      rU     rH   rC   rE   r   )rQ   rQ  )r   r   ri   r   r   explinspaceshaper   r   r   Arrayr    )rQ   rQ  r   r   r9   darrayr]   r^   s           r<   test_dask_gradientr\  Z  s     HRY__S!R0011E
r{1aT!23344A]]5)D)D)D]EEFqt
CCCHfadzBBBFfbh'''''vx(((((r>   r'  prod)TFNc                V   |rt           st          j        d           t          | |||          }d}t	                      5   t          ||          |||          }	d d d            n# 1 swxY w Y   t          |||||          }
t          |	|
           t          |	|           d S )Nr  r,  rV   r   rR   	min_count)rR   r   r`  )	r!   rX   r  r   r#   r   r   r   r   )r   rp   r'   r   r)  r   rR   r   r`  r^   r]   s              r<   test_min_countra  k  s     %H %O$$$	We,T	R	R	RBI 
 	!	! S S"T""vf	RRRS S S S S S S S S S S S S S S Rf&IVVVHFH%%%fd#####s   A**A.1A.c                n   |rt           st          j        d           d}d}t          || d|          }t	                      5   t          ||          g dd|          }d d d            n# 1 swxY w Y    t          ||          dd|          }t          ||           t          ||           d S )Nr  rV   Tr,  r   r_  .)r!   rX   r  r   r#   r   r   r   )rp   r'   r   r`  r   r   r^   r]   s           r<   test_min_count_ndrc    s     %H %O$$$IG	We$T	J	J	JB 
 	!	! 
 
"T""	
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 !wr4  SKKKHFH%%%fd#####s   A..A25A2r   )Nrm   rn   c                   | rt           st          j        d           t          t	          j        dt          j                  t          j        z  d          }d|d         d<   d|d         d<   d|d         d<   d|d         d<   | r|                    ddd          }|r7d}t          d	t          j        t          j        gdz  |d
k    rdnd
f          }nd}t          |dk    rdnd          }t                      5   t          ||          |d|          }d d d            n# 1 swxY w Y   t          ||            t          ||           |dz  }|t          j        z  }t                      5   t          ||          |d|          }d d d            n# 1 swxY w Y   t          ||            t          ||           d S )Nr  )rD   rD   ro   )rm   rn   r  rA   r   rV   r#  rn   rm   r   r'  r0   g      0@T)rR   r`  rL   )r!   rX   r  r   ri   onesfloat64r   r   r#   r   r   r   )r'   r   r   r   r`  r]   r^   s          r<   test_min_count_specificrg    s     %H %O$$$ 
276444rv=J	O	O	OBBqE!HBqE!HBqE!HBqE!H (XXAA&&''  =	"&"&!A%C3JJSSC,I
 
 
 	DEMMSSt<< 
 	!	! J J"T""3tyIIIJ J J J J J J J J J J J J J Jfd###FH%%% NIH		!	! J J"T""3tyIIIJ J J J J J J J J J J J J J Jfd###FH%%%%%s$    D))D-0D-6FF#&F#c                   t          dt          dd          }t          d|iddi          } t          ||           d	dd
          d         } t          |d         |           d	dd
          }t	          ||           d S )NrA   TF)rp   r   r'   r  scalarr   )r   r9   rV   r_  )r   r=  r   r   r   )r   r   r  r^   r]   s        r<   test_min_count_datasetrj    s    	Qe$U	K	K	KB	&"xm	4	4	4BWR3tqAAA&IF(wr&z4((SKKKHFH%%%%%r>   c                $   |rt           st          j        d           t          d| d|          } t	          ||          d|          } t	           t	          ||          d|          |          d|          }t          ||           d S )	Nr  rV   Tr,  )r9   r   r  r9   r   )r!   rX   r  r   r   r   )rp   r'   rR   r   r   r^   r]   s          r<   test_multiple_dimsrl    s    
  %H %O$$$	QDt	D	D	DBWRz&999FCw(wr4((V<<<dCCCPVWWWHFH%%%%%r>   c                   | rt           st          j        d           t          j        ddd          j        }| r dd l} | j                            |d          }t                      5  t          j        |d	
          }d d d            n# 1 swxY w Y   dt          j        ddd          z  }t          j                            ||           |d         }t                      5  t          j        ||d	          }d d d            n# 1 swxY w Y   dt          j        ddd          z  }t          j                            ||           t          j        }t                      5  t          j        |d	|          }d d d            n# 1 swxY w Y   dt          j        ddd                              |          z  }t          j                            ||           d S )Nr  r   rC   7Dr  r   rO   r   rI  datetime_unitr   #      rL   )offsetrp     rp  rp   )r!   rX   r  r   
date_ranger  r   r   r   r#   r   datetime_to_numericri   r   r8  r    rr   r   )r'   r  rt   r]   rs  rp   s         r<   #test_datetime_to_numeric_datetime64ry    s    %H %O$$$M&!$777>E 8
%%eB%77		!	! N N3EMMMN N N N N N N N N N N N N N NBIaQ'''HJ!!&(3331XF		!	! 
 
3&
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 BIb"a(((HJ!!&(333JE		!	! 
 
3E
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 BIaQ''..u555HJ!!&(33333s6   *BBB'DDD)FFFc                   | rt           st          j        d           t          dddd          j        }| r dd l} | j                            |d	          }t                      5  t          j
        |d
t                    }d d d            n# 1 swxY w Y   dt          j        ddd          z  }t          j                            ||           |d         }t                      5  t          j
        ||d
t                    }d d d            n# 1 swxY w Y   dt          j        ddd          z  }t          j                            ||           t          j        }t                      5  t          j
        |d
|          }d d d            n# 1 swxY w Y   dt          j        ddd                              |          z  }t          j                            ||           t                      5  | r!| j                            |d                   }nt          j        |d                   }t          j
        ||d         d
t                    }d d d            n# 1 swxY w Y   t          j        d                              t                    }t          j                            ||           d S )Nr  r   rC   rn  standardr  r  calendarr   rO   r   rI  rv  r   rq  rr  rL   rs  rp  rp   rt  ru     )r!   rX   r  r   r  r   r   r   r#   r   rx  r   ri   r   r8  r    rr   r   asarray)r'   r  rt   r]   rs  rp   r   s          r<   test_datetime_to_numeric_cftimer    s     %H %O$$$
KKKRE 8
%%eB%77		!	! Y Y3ETWXXXY Y Y Y Y Y Y Y Y Y Y Y Y Y YBIaQ'''HJ!!&(3331XF		!	! 
 
3&3
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 BIb"a(((HJ!!&(333JE		!	! 
 
3E
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 BIaQ''..u555HJ!!&(333		!	! 
 
 	(:%%eAh//DD:eAh''D3qC
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 x&&s++HJ!!&(33333sI   &BBB)DDD1FFF:A!I''I+.I+c                    dd l } t          j        ddd          j                            d          }t          dddd          j        }t          j        d	          }|                     d
d
d
          }t          j
        ||dt                    }t          j
        ||dt                    }dt          j        ddd          z   }t          j                            ||           t          j                            ||           d S )Nr   r   rC   rn  r  zdatetime64[us]proleptic_gregorianr|  z
0001-01-01rL   r  r~  i$ rq  rr  )r  r   rw  r  r   r   ri   rj   DatetimeProlepticGregorianr   rx  r   r   r8  r    )r  r  cftimesrs  cfoffsetrt   cfresultr]   s           r<   +test_datetime_to_numeric_potential_overflowr  (  s   MMMM&!$777>EEFVWWE/D    ]<((F00Aq99H/fCs  F 13  H 	!R+++HJ!!&(333J!!(H55555r>   c                 D   t          t          j        d          d          dk    sJ t          t          j        d          d          dk    sJ t          t          j        d          d          dk    sJ t          t          j        d          d	          d
k    sJ t          t          j        d          d          dk    sJ t          t          j        d          d          dk    sJ t          t          j        d          d          dk    sJ d S )NrL   daysns  S$Bg    .ApsgV.KDg )Dusg yE/sCmssg   `4Br  )r   dt	timedeltar   r>   r<   test_py_timedelta_to_floatr  A  s     1!5!5!5t<<KKKK 3!7!7!7>>,NNNN 3!7!7!7>>,NNNN 3!7!7!7>>,NNNN 3!7!7!7>>+MMMM 3!7!7!7==LLLL 3!7!7!7==DDDDDDr>   ztd, expectedr  r  r  r   c                   t          | d          }t          j                            ||           t	          |t
                    sJ t          t          j        |           d          }t          j                            ||           d S Nr  ro  )r   ri   r8  r   r   r=  
atleast_1dtdr]   outs      r<   test_np_timedelta64_to_floatr  K  s~    
 ""D
9
9
9CJsH---c5!!!!!
!"-"3"34
H
H
HCJsH-----r>   c                    t          | d          }t          j                            ||           t	          |t
                    sJ d S r  )r   ri   r8  r   r   r=  r  s      r<   test_pd_timedelta_to_floatr  X  sJ      $
7
7
7CJsH---c5!!!!!!!r>   r  r  z1 dayc                    t          | d          }t          j                            |d           t	          |t
                    sJ d S )Nr  r  )r   ri   r8  r   r   r=  )r  r  s     r<   test_timedelta_to_numericr  a  sG    
 r4
(
(CJsK000c5!!!!!!!r>   use_daskc                   | r"t           rt          st          j        d           t	          j        ddgddgddgg          }t          t	          j        g d          d          }| r|                    ddi          }t          ||j	        |	          \  }}t          j
                            |d
dg           t          j
                            |dg           d S )Nzrequires dask and scipyrL   rA   rV   )rV   rC   rr  )r   r  r   r  g      ?g      ?r-   )r!   r"   rX   r  ri   r   r   r   r   r   r8  r   )r  rR   lhsrhscoeffs	residualss         r<   test_least_squaresr  k  s      / / /-...
(QFQFQF+
,
,C
BHYYY''f
5
5
5C "iia!!%c38FCCCFIJvT{333Jy3%00000r>   c                    dd l } dd l}t          j        t          j        dddt          j        t          j        t          j        t          j        ddt          j        dg          }dD ]}|                     |d|	          }t          dd
          D ]t}t                      5  t          |j                            ||          d|	          }d d d            n# 1 swxY w Y   t          j	        
                    ||           ut                      5  t          |j                            |d          d|	          }d d d            n# 1 swxY w Y   t          j	        
                    ||           d S )Nr   rL   rA   rV   r   rC   rD   )NrL   rA   rV   r   rC      )rQ   nr  r   )rL   rA   rV   rA   rA   rL   rL   )
bottleneckr   ri   r   r   r   r   r#   r   r8  r   )r  r'   r   r  r]   r   r^   s          r<   test_push_daskr  |  s    HbfaArvrvrvrvq!RVUVWXXE& 2 2??5qA?66q" 	6 	6A')) S Sdj33E!3DD1PQRRRS S S S S S S S S S S S S S SJ##FH5555 $%% 	 	
%%e4I%JJQRVW  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
11112 2s$   "-CC"C-EE	E	)r'   r   r   r   )e
__future__r   datetimer  r5  numpyri   pandasr   rX   r   r   xarrayr   r   r   r	   xarray.corer
   r   xarray.core.duck_array_opsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   xarray.core.pycompatr   xarray.testingr   r   r   xarray.testsr   r    r!   r"   r#   r$   r%   r&   r   r)   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r(  r=  r   rr   r   r?  r   rD  rH  rj   timedelta64rq   rL  rO  skipifr\  ra  rc  rg  rj  rl  ry  r  r  r  r  	Timedeltar  r  r  r  r  r   r>   r<   <module>r     s`   " " " " " "                       ; ; ; ; ; ; ; ; ; ; ; ; . . . . . . . .                                 " , + + + + + J J J J J J J J J J	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 *V$$V0 V0 V0 V0 V0 V0 V0 V0r 
 
 
 
 
' 
 
 
,' ' '&' ' '' ' '(/ (/ (/ (/ (/ (/ (/ (/V  @  " " "04 4 4
 JKK(!G%HH7 7 7 IH LK 7D %//# # 0/ #> # #  # # # #B; ; ; QF++5#rz28"DEE%//!E!E!EFFE4=11D#;//NM NM 0/ 21 GF 0/ FE ,+NMb QF++5#rz28S"IJJ$77%//%00E4=11C:..
 
 /. 21 10 0/ 87 KJ ,+
<   -"---}r}U/C/CDEE.".C((.".*?*?@AA#rv"bf%///	 	. .	 	. 9 9 9 L)<==,,1v..) ) /. -, >=) QF++5#rz28"DEE%//%11D#;//$77#6#6#677$ $ 87 87 0/ 21 0/ FE ,+$  5#rz28"DEE%//%11$ $ 21 0/ FE$* %//%11 0 0 011$& $& 21 21 0/$&N %11& & 21& 5#rz28"DEE%//E4=11%11& & 21 21 0/ FE& $//4 4 0/4@ $//'4 '4 0/ '4T 6 6 60E E E bnQk*^R^At-D-Dc,JK . .	 . lbl1c**K8<2<4;P;PRU:VW " " " <2<Q3!7!7a9M9Mw
W " " " dE]33D%=111 1 21 431 2 2  2 2 2r>   