
    do                      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
 d dlZd dlmZmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZ 	 d dlmZ n# e$ r Y nw xY w ej        d          Z e j!        j"        Z"e #                    d	
          Z$e$j%        Z%ej&        '                    d          gZ(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4 ej5         ej6        e7           ej6        e8          ge9          d             Z6d Z: G d d          Z; G d d          Z<ej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          d&             Z@ej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          d'             ZAej&        =                    d( ej>        d)e"d*+           ej>        e$jB        e"d,+           ej>        e$jC        e"d-+           ej>        e$jD        dd.+           ej>        e$jE        dd/+          feF0          ej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          ej&        =                    d1d2ejG        f          d3                                     ZHej&        =                    d( ej>        d)e"d*+           ej>        e$jB        e"d,+           ej>        e$jC        e"d-+           ej>        e$jD        dd.+           ej>        e$jE        dd/+          feF0          ej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          ej&        =                    d1d2ejG        f          d4                                     ZId5 ZJd6 ZKej&        =                    d( ej>        d)e"d*+           ej>        e$jB        e"d,+           ej>        e$jC        e"d-+           ej>        e$jD        dd.+           ej>        e$jE        dd/+          feF0          ej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          d7                         ZLej&        =                    d( ej>        d)e"d*+           ej>        e$jB        e"d,+           ej>        e$jC        e"d-+           ej>        e$jD        dd.+           ej>        e$jE        dd/+          feF0          ej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          d8                         ZMej&        =                    d( ej>        d)e"d*+           ej>        e$jB        e"d,+           ej>        e$jC        e"d-+           ej>        e$jD        dd.+           ej>        e$jE        dd/+          feF0          ej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          d9                         ZNej&        =                    d( ej>        d)e"d*+           ej>        e$jB        e"d,+           ej>        e$jC        e"d-+           ej>        e$jD        dd.+           ej>        e$jE        dd/+          feF0          ej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          d:                         ZOej&        =                    d( ej>        d)e"d*+           ej>        e$jB        e"d,+           ej>        e$jC        e"d-+           ej>        e$jD        dd.+           ej>        e$jE        dd/+          feF0          ej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          d;                         ZPej&        =                    d( ej>        d)e"d*+           ej>        e$jB        e"d,+           ej>        e$jC        e"d-+           ej>        e$jD        dd.+           ej>        e$jE        dd/+          feF0          ej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          d<                         ZQej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          ej&        =                    d=ejR        ejS        f          d>                         ZTej&        =                    dd  ej>        d!ej&        ?                    d"#          $          d%f          ej&        =                    d=ejR        ejS        f          d?                         ZUej&        =                    dd  ej>        d!ej&        ?                    d"#          $           ej>        d%ej&        V                    d@#          $          f          dA             ZWej&        =                    dd  ej>        d!ej&        ?                    d"#          $           ej>        d%ej&        V                    d@#          $          f          dB             ZXej&        =                    d( ej>        d)e"d*+           ej>        e$jB        e"d,+           ej>        e$jC        e"d-+           ej>        e$jD        dd.+           ej>        e$jE        dd/+          feF0          ej&        =                    dCejY        dDf          dE                         ZZej&        =                    d( ej>        d)e"d*+           ej>        e$jB        e"d,+           ej>        e$jC        e"d-+           ej>        e$jD        dd.+           ej>        e$jE        dd/+          feF0          ej&        =                    dCejY        dDf          dF                         Z[dG Z\ G dH dI          Z] G dJ dK          Z^ G dL dM          Z_e G dN dO                      Z`e G dP dQe                      ZadS )R    )annotationsN)version)dtypesduck_array_ops)assert_allcloseassert_duckarray_allcloseassert_equalassert_identicalrequires_daskrequires_matplotlib)PlotTestCase)_PAD_XR_NP_ARGSpintT)force_ndarray_likezerror::pint.UnitStrippedWarningc                8    d } ||            ||          k    S )Nc                z    t          | t          j        t          j        f          r| }nt          j        }|j        S N)
isinstanceunit_registryQuantityUnitdimensionlessdimensionality)obj	unit_likes     7lib/python3.11/site-packages/xarray/tests/test_units.pyr   z%is_compatible.<locals>.dimensionality.   s7    cM2M4FGHH 	4II%3I''     )unit1unit2r   s      r   is_compatibler!   -   s2    ( ( ( >%  NN5$9$999r   c                6    d t          | |          D             S )Nc                <    i | ]\  }\  }}|t          ||          S r   r!   ).0keyr   r    s       r   
<dictcomp>z'compatible_mappings.<locals>.<dictcomp>:   s<       C% 	]5%((  r   )zip_mappings)firstseconds     r   compatible_mappingsr+   9   s-     #/v#>#>   r   c                b    |                                  }|D ]}|                    |           |S r   )copyupdate)basemappingsresultms       r   merge_mappingsr3   @   s8    YY[[F  aMr   c               '     K    t          | d                   j        | dd           D ]!t          fd| D                       fV  "d S )Nr      c              3  (   K   | ]}|         V  d S r   r   )r%   r2   r&   s     r   	<genexpr>zzip_mappings.<locals>.<genexpr>J   s'      22A3222222r   )setintersectiontuple)r0   r&   s    @r   r(   r(   H   so      ,s8A;,hqrrl; 3 35222222222222223 3r   c                    t          | t          j        t          j        t          j        f          r| j        } 	 | j        S # t          $ r Y d S w xY wr   )r   xrVariable	DataArrayDatasetdataunitsAttributeError)r   s    r   array_extract_unitsrC   M   sW    #R\2:>?? hy   tts   A 
AAc                6    	 | j         S # t          $ r | cY S w xY wr   )	magnituderB   )arrays    r   array_strip_unitsrG   W   s3       s   	 c                    t          | t                    rt          d| d|            	 | |z  }n<# t          j        j        j        $ r  t          |t          j                  r | }Y nw xY w|S )Nzcannot attach unit z to quantity )	r   r   
ValueErrornpcore_exceptionsUFuncTypeErrorr   r   )r@   unitquantitys      r   array_attach_unitsrP   ^   s    $!! JHtHH$HHIII$;7-   dM.// 		 Os   2 6A+*A+c                L   t          | t          j                  rMd | j                                        D             }d | j                                        D             }i ||}nt          | t          j                  r@| j        t          |           i}d | j                                        D             }i ||}nbt          | t          j	                  rd t          | j
                  i}i |}n-t          | t                    rd t          |           i}i |}ni }|S )Nc                4    i | ]\  }}|t          |          S r   rC   r%   namevalues      r   r'   z!extract_units.<locals>.<dictcomp>o   s4     
 
 
1<uD%e,,
 
 
r   c                4    i | ]\  }}|t          |          S r   rS   rT   s      r   r'   z!extract_units.<locals>.<dictcomp>r   4     
 
 
1<uD%e,,
 
 
r   c                4    i | ]\  }}|t          |          S r   rS   rT   s      r   r'   z!extract_units.<locals>.<dictcomp>y   rX   r   )r   r<   r?   	data_varsitemscoordsr>   rU   rC   r=   r@   r   )r   
vars_unitscoords_unitsrA   s       r   extract_unitsr_   m   sW   #rz"" 
 
@C@S@S@U@U
 
 


 
@C
@P@P@R@R
 
 
 /:..	C	&	& h 3C 8 89

 
@C
@P@P@R@R
 
 
 /:..	C	%	% 	/99:
:	C	"	" /445
:Lr   c                P   t          | t          j                  r^d | j                                        D             }d | j                                        D             }t          j        ||          }n-t          | t          j                  rlt          | j        j	                  }d | j                                        D             }t          j        t          | j                  ||| j                  }nt          | t          j                  r+t          | j                  }|                     |          }nbt          | t           j                  r| j        }n@t          | t&          t(          f          r" t+          |           d | D                       S | }|S )Nc                N    i | ]"\  }}t          |          t          |          #S r   strip_unitsrT   s      r   r'   zstrip_units.<locals>.<dictcomp>   s>     
 
 
e {511
 
 
r   c                N    i | ]"\  }}t          |          t          |          #S r   rb   rT   s      r   r'   zstrip_units.<locals>.<dictcomp>   s;     
 
 
6AdEK{511
 
 
r   rZ   r\   c                    i | ]O\  }}t          |          t          |j        t                    r |j        t          |j        j                  fn|PS r   )rc   r   r@   r   dimsrG   variable_datarT   s      r   r'   zstrip_units.<locals>.<dictcomp>   sg     
 
 
 e ej(33.u~/CDDEE	
 
 
r   rU   r@   r\   rg   r@   c              3  4   K   | ]}t          |          V  d S r   rb   r%   elems     r   r7   zstrip_units.<locals>.<genexpr>   s*      ;;tT**;;;;;;r   )r   r<   r?   rZ   r[   r\   r>   rG   rh   ri   rc   rU   rg   r=   r@   r-   r   r   rE   listr:   type)r   rZ   r\   new_objr@   s        r   rc   rc      s   #rz""  
 
"}2244
 
 
	
 
EHZEUEUEWEW
 
 
 *y@@@	C	&	&  !344
 
  #z//11
 
 
 ,SX&&T&sx
 
 
 
C	%	%  **(((%%	C/	0	0 -	C$	'	' tCyy;;s;;;;;;Nr   c                   t          | t          j        t          j        t          j        f          s>                    dd           p                    d d           pdt          |           S t          | t          j                  rhfd| j                                        D             }fd| j	                                        D             }t          j        ||| j
                  }nt          | t          j                  r                    | j        d           p                    d d           pd}t          | j        |          }fd| j	                                        D             }| j        }| j
        }t          j        | j        ||||          }nY                    dd           p                    d d           pd}t          | j        |          }|                     |          }|S )	Nr@   r5   c                8    i | ]\  }}|t          |          S r   attach_unitsr%   rU   rV   rA   s      r   r'   z attach_units.<locals>.<dictcomp>   s6     
 
 
1<uD,ue,,
 
 
r   c                8    i | ]\  }}|t          |          S r   rt   rv   s      r   r'   z attach_units.<locals>.<dictcomp>   s6     
 
 
1<uD,ue,,
 
 
r   rZ   r\   attrsc           
         i | ]I\  }}||v r1|j         t          |j                            |          pd           fn|j         |j        fJS )r5   )rg   rP   r@   getrv   s      r   r'   z attach_units.<locals>.<dictcomp>   so     
 
 
 e 5== /
EIIdOO<PqQQRRj%*-	
 
 
r   rU   r@   r\   ry   rg   rk   )r   r<   r>   r?   r=   r{   rP   rZ   r[   r\   ry   rU   r@   rg   r-   )	r   rA   rZ   r\   rq   
data_unitsr@   rg   ry   s	    `       r   ru   ru      s   cBL"*bkBCC .		&$''E599T4+@+@EA!#u---#rz"" "&
 
 
 
@C@S@S@U@U
 
 
	
 
 
 
@C
@P@P@R@R
 
 
 *ysyQQQ	C	&	& &YYsx..L%))D$2G2GL1
!#(J77
 
 
 
  #z//11
 
 
 x	,V5t
 
 
 YYvt,,J		$0E0EJ
!#(J77(((%%Nr   c                    d                                  D             t           t          j                  rhfd j                                         D             }fd j                                         D             }t          j        || j                  }nWt           t          j                  r j        }	                    |d           p-	                    dd           p	                    d d           pd }t           j        d |i          } fd j                                         D             }t          j        ||| j         j                  }nt           t          j                  r,t           j                  }                     |          }nKt           t           j                  r/	                    d           }	|	                     |	          n }n }|S )	Nc                R    i | ]$\  }}|t          |t          j                  sd n|%S r   )r   r   r   r%   r&   rV   s      r   r'   z!convert_units.<locals>.<dictcomp>   sD     
 
 
C 	E=+=>>ITTE
 
 
r   c           
     l    i | ]0\  }}|t          |j        d                     |          i          1S r   convert_unitsrh   r{   r%   rU   rF   tos      r   r'   z!convert_units.<locals>.<dictcomp>   sJ     
 
 
e -rvvd||0DEE
 
 
r   c           
     l    i | ]0\  }}|t          |j        d                     |          i          1S r   r   r   s      r   r'   z!convert_units.<locals>.<dictcomp>   sJ     
 
 
e -rvvd||0DEE
 
 
r   rx   r@   c                    i | ]B\  }}|j         k    ||j        t          |j        d                     |          i          fCS r   )rU   rg   r   rh   r{   )r%   rU   rF   r   r   s      r   r'   z!convert_units.<locals>.<dictcomp>   sX     
 
 
esx 5:}U^dBFF4LL=QRRSr   r|   rk   )r[   r   r<   r?   rZ   r\   ry   r>   rU   r{   r   rh   rg   r=   r@   r-   r   r   r   )
r   r   rZ   r\   rq   rU   	new_unitsr@   new_datarA   s
   ``        r   r   r      s'   
 
((**
 
 
B #rz"" #
 
 
 
"}2244
 
 
	
 
 
 
"z//11
 
 

 *ysyQQQ	C	&	& x FF4T"&&"6"6T"&&t:L:LTPT 	 S\D)+<==
 
 
 
 
"z//11
 
 
 ,Dsysx
 
 
 
C	%	%  2..((())	C/	0	0 t#(#4#&&---#Nr   c                N    d}t          |           t          |          k    sJ d S )NT)r_   )ab__tracebackhide__s      r   assert_units_equalr     s/    }Q////////r   )paramsidsc                    | j         S r   )param)requests    r   dtyper     s
    =r   c                `    ddl m} t                      fd || |          D             S )Nr   )zip_longestc                &    g | ]\  }}|ur|n|S r   r   )r%   r)   r*   
fill_values      r   
<listcomp>zmerge_args.<locals>.<listcomp>  s;       E6 
**  r   )	fillvalue)	itertoolsr   object)default_argsnew_argsr   r   s      @r   
merge_argsr     sZ    %%%%%%J   ([x:VVV   r   c                  *    e Zd ZdZdddZd Zd ZdS )methodzwrapper class to help with passing methods via parametrize

    This is works a bit similar to using `partial(Class.method, arg, kwarg)`
    Nfallback_funcc               >    || _         || _        || _        || _        d S r   )rU   fallbackargskwargs)selfrU   r   r   r   s        r   __init__zmethod.__init__&  s"    	%	r   c                ,  
 ddl m} t          | j        |          }i | j        |}t
          j        t
          j        t
          j        t
          j	        j
        j        f}t          ||          sd

fd|                                D             }| j         || j        |          }nct          || j        d           }|t#          |          s&t          t$          | j                  }	 ||	|          }nt          || j                  } ||i |S )Nr   )partial)dimrg   c                $    i | ]\  }}|v	||S r   r   )r%   r&   rV   exclude_kwargss      r   r'   z#method.__call__.<locals>.<dictcomp>=  s4       Cn,, U,,,r   )	functoolsr   r   r   r   r<   r=   r>   r?   rK   groupbyGroupByr   r[   r   getattrrU   callablerJ   )r   r   r   r   r   all_args
all_kwargsxarray_classesfunc
numpy_funcr   s             @r   __call__zmethod.__call__,  s0   %%%%%%di....v.
 KLJGO#	
 #~.. 	+,N   ","2"2"4"4  J
 }(wt}c22sDIt44<x~~<!(TY!7!7J"7:s33D3	**DtX,,,,r   c                    d| j          S )Nmethod_rU   r   s    r   __repr__zmethod.__repr__P  s    $$$$r   __name__
__module____qualname____doc__r   r   r   r   r   r   r   r      s[         
 37     "- "- "-H% % % % %r   r   c                  *    e Zd ZdZdddZd Zd ZdS )functionzpwrapper class for numpy functions

    Same as method, but the name is used for referencing numpy functions
    Nfunction_labelc                   t          |          r||n|j        | _        || _        nD||n|| _        t	          t
          |          | _        | j        t          d| j         d          || _        || _        d S )Nz'module 'numpy' has no attribute named '')	r   r   rU   r   r   rJ   rB   r   r   )r   name_or_functionr   r   r   s        r   r   zfunction.__init__Z  s    $%% 	 "- %. I
 )DII,:,B((DI$455DIy $JdiJJJ   	r   c                \    t          | j        |          }i | j        |} | j        |i |S r   )r   r   r   r   )r   r   r   r   r   s        r   r   zfunction.__call__m  s;    di....v.
ty(1j111r   c                    d| j          S )N	function_r   r   s    r   r   zfunction.__repr__s  s    &49&&&r   r   r   r   r   r   r   T  s\         
 @D     &2 2 2' ' ' ' 'r   r   variantr@   rg   indexes don't support unitsreasonmarksr\   c                   t           j        ddfdt           j        dfddt           j        fd}|                    |           \  }}}t          j        t
          j        t          j        dggddi          }t          j	        ddd	          
                    |          |z  }t          j        d	          |z  }t          j	        ddd	          |z  }	t          j        |d|d|	fd
          }
t           |t          |
                    t          |
                    } ||
          }t!          ||           t#          ||           d S )Nr5   r@   rg   r\   xaxisinput_core_dimsr   r   
      r   u)r   r2   r{   r   r   r<   apply_ufuncrJ   meanlinspaceastypearanger>   ru   rc   r_   r   r
   )r   r   variants	data_unitdim_unit
coord_unitr   rF   r   r   
data_arrayexpectedactuals                r   test_apply_ufunc_dataarrayr   w  sL    !Q'MOQ'a) H
 '/ll7&;&;#Ix
3%&"  D K2r""))%009<E
	" A
B2+A5s#q;R;RSSSJDDZ!8!899=;T;TUUHT*Fx(((Xv&&&&&r   c                Z   t           j        ddfdt           j        dfddt           j        fd}|                    |           \  }}}t	          j        t          j        t          j	        dggddi          }t          j
        ddd	                              d
d                              |          |z  }t          j
        ddd
                              |          |z  }t          j        d
          |z  }	t          j        d          |z  }
t          j
        ddd          |z  }t          j        d|fd|fd|	|
d|fd          }t           |t!          |                    t#          |                    } ||          }t%          ||           t'          ||           d S )Nr5   r   r   r   r   r   r   r   2      r   yr   r   r   r   r   r   re   )r   r2   sr{   r   r   r<   r   rJ   r   r   reshaper   r   r?   ru   rc   r_   r   r
   )r   r   r   r   r   r   r   array1array2r   r   r   dsr   r   s                  r   test_apply_ufunc_datasetr     s    !Q'MOQ'a) H
 '/ll7&;&;#Ix
3%&"  D [B''//266==eDDyPF[B""))%009<F
	!xA
	" A
B2+A	#V,C=AAQc1X..
 
 
B
 DDR11=3D3DEEHT"XXFx(((Xv&&&&&r   
unit,errorr5   no_unitidr   incompatible_unitcompatible_unitidentical_unitr   rV   r   c           	     *    |dk    r?| t           j        k    st          |t          j                  rt          j        d           | t           j        k    rt          j        |          n| }t          j        }||fddfd||fdfdd||ffd}|	                    |          \  \   \  }}	\  }
}t          j        ddd                              dd	                              |          z  }t          j        dd
d                              dd	                              |           z  }t          j        d          |z  }t          j        d	          |z  }t          j        dd          |	z  }t          j        g d          |
z  }t          j        g d          |z  }||d}||d}|dk    rd|f|d<   d|f|d<   t!          j        ||d          }t!          j        ||d          }| z  }t%          t           j        d|          }|_| t           j        k    st          |t(                    r:t          j        |          5   |||           d d d            n# 1 swxY w Y   d S  fd|j                                        D             }t1          |          }t1          |          } |t3          |          t3          t5          ||                    fi |\  }}t7          ||          }t          |t(                    rt5          t7          ||          |          }nt7          ||          } |||          \  }}t9          ||           t;          ||           t9          ||           t;          ||           d S )Nr\   gfill_value is used for both data variables and coords. See https://github.com/pydata/xarray/issues/4165r   r5   r5   r   r   r      r            r   r  r  	   r  r  r	        r   r   y_ar@   r\   rg   outerjoinr   c                f    i | ]-\  }}|t          t          |d dk    rnd i                    .S Nr5   rc   r   r%   r&   rV   
data_unit1
data_unit2s      r   r'   z(test_align_dataarray.<locals>.<dictcomp>  Y        C 	[%$jAoo

4!PQQ
 
  r   )r   NAr   r   r   pytestxfailget_fill_valuer2   r{   rJ   r   r   r   r   rF   r<   r>   r   alignr   raisesr   r[   r_   rc   r   ru   r   r   )!rV   r   rN   errorr   r   original_unitr   	dim_unit1	dim_unit2coord_unit1coord_unit2r   r   r   y1y2u1u2coords1coords2data_array1data_array2r   stripped_kwargsunits_aunits_b
expected_a
expected_bactual_aactual_br  r  s!                                  @@r   test_align_dataarrayr4    s)   2 (j}/ABBC	
 	
 	
 	
 27&)1C1C&u---J!OM  &7-.76M4#89 H 	W	 ZI"k [B&&..q!44;;EBBZOF[Au%%--a33::5AAJNF
	!y A	1		!B	1a9	$B	///	"	"[	0B	###	$	${	2BBGBG(rr,F7LLLK,F7LLLKj(JBH7zBBBDevy00Jz84T4T0]5!! 	+ 	+Dk***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	     +++--	  O K((GK((G!TK  M+w7788   J

 j'22J&(## 7"<
G#D#DgNN

!*g66
k;77Hhz8,,,J)))z8,,,J)))))s   I**I.1I.c           	     6    |dk    r?| t           j        k    st          |t          j                  rt          j        d           | t           j        k    rt          j        |          n| }t          j        }||fddfd||fdfdd||ffd}|	                    |          \  \   \  }}	\  }
}t          j        ddd                              dd	                              |          z  }t          j        ddd                              dd	                              |           z  }t          j        d          |z  }t          j        d	          |z  }t          j        dd
          |	z  }t          j        g d          |
z  }t          j        g d          |z  }||d}||d}|dk    rd|f|d<   d|f|d<   t!          j        dd|fi|          }t!          j        dd|fi|          }| z  }t%          t           j        d|          }|_| t           j        k    st          |t(                    r:t          j        |          5   |||           d d d            n# 1 swxY w Y   d S  fd|j                                        D             }t1          |          }t1          |          } |t3          |          t3          t5          ||                    fi |\  }}t7          ||          }t          |t(                    rt5          t7          ||          |          }nt7          ||          } |||          \  }}t9          ||           t;          ||           t9          ||           t;          ||           d S )Nr\   r  r   r  r   r   r   r  r   r  r  r
  r   r   r   r   re   r  r  c                f    i | ]-\  }}|t          t          |d dk    rnd i                    .S r  r  r  s      r   r'   z&test_align_dataset.<locals>.<dictcomp>w  r  r   )r   r  r   r   r   r  r  r  r2   r{   rJ   r   r   r   r   rF   r<   r?   r   r  r   r  r   r[   r_   rc   r   ru   r   r   )!rV   rN   r   r  r   r   r   r   r!  r"  r#  r$  r   r   r   r%  r&  r'  r(  r)  r*  ds1ds2r   r-  r.  r/  r0  r1  r2  r3  r  r  s!                                  @@r   test_align_datasetr9  *  s4   2 (j}/ABBC	
 	
 	
 	
 27&)1C1C&u---J!OM  &7-.76M4#89 H 	W	 ZI"k [B&&..q!44;;EBBZOF[B&&..q!44;;EBBZOF
	!y A	1		!B	1a9	$B	///	"	"[	0B	###	$	${	2BBGBG(RyRy
*j&%9:7
K
K
KC
*j&%9:7
K
K
KCj(JBH7zBBBDevy00Jz84T4T0]5!! 	 	DcNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	     +++--	  O C  GC  G!TCM#w//00   J

 j'22J&(## 7"<
G#D#DgNN

!*g66
c3Hhz8,,,J)))z8,,,J)))))s   I00I47I4c                   t          j        ddd          t          j        z  }t          j        ddd          t          j        z  }t	          j        |d          }t	          j        |d          }t          |          }t          |          }t	          j        t          |          t          |                    \  }}t          ||          }t          t          ||          |          }t	          j        ||          \  }	}
t          ||	           t          ||	           t          ||
           t          ||
           d S )Nr   r   r  r  r   r@   rg   r   )rJ   r   r   Par<   r>   r_   	broadcastrc   ru   r   r   r
   )r   r   r   r   r   r.  r/  r0  r1  r2  r3  s              r   test_broadcast_dataarrayr>    s    [B""]%55F[B""]%55F
&s+++A
&s+++AAGAG\+a..+a..IIJ
j'22J|J@@'JJJa++Hhz8,,,Z***z8,,,Z*****r   c                   t          j        ddd          t          j        z  }t          j        ddd          t          j        z  }t          j        d          }t          j        d          }t          j        dd          }t          j        dd          }t          j        d|fd|fd	||d
          }t          j        d|                    t          j                  fd|                    t          j                  fd	||d
          }t          |          }	t          |          }
t          j
        t          |          t          |                    \  }}t          ||	          }t          ||
          }t          j
        ||          \  }}t          ||           t          ||           t          ||           t          ||           d S )Nr   r   r  r        r   r   r   r   re   )rJ   r   r   r<  r   r<   r?   r   hPar_   r=  rc   ru   r   r
   )r   r   r   x1r%  x2r&  r   otherr.  r/  r0  r1  r2  r3  s                  r   test_broadcast_datasetrF    s   [B""]%55F[B""]%55F	1B	1B	1aB	1aB	fS&M::RTCUCU
 
 
B Jvyy!2334vyy!2334
 
 b!!  E BGE""G\+b//;u;M;MNNJ
j'22Jj'22Jb%00Hhz8,,,Z***z8,,,Z*****r   c                   t           j        }||fddfd||fdfdd||ffd}|                    |           \  \  }}\  }}	\  }
}t          j        d|          |z  }t          j        d|          |z  }t          j        dd          dz  |z  }t          j        d          |z  }t          j        d	          |
z  }t          j        |          |z  }t          j        |          |z  }t          j        dd          dz  |	z  }t          j        dd          |	z  }t          j        d	d
          |z  }t          j        d|fd|fd||d|fd          }t          j        d|fd|fd||d|fd          }|Dt          j
        |          5  t          j        ||g           d d d            n# 1 swxY w Y   d S t          |          }t          t          j        t          |          t          t          ||                    g          |          }t          j        ||g          }t!          ||           t#          ||           d S )Nr  r   r  r  shaper   r5   r@  r   r  r  rA  r   r   r   r   r   re   )r   r2   r{   rJ   zerosr   	ones_liker<   r?   r  r  combine_by_coordsr_   ru   rc   r   r   r
   )r   rN   r  r   r   r   r  r  r!  r"  r#  r$  r   r   r   r   r   other_array1other_array2other_xother_yother_ur   rE  rA   r   r   s                              r   test_combine_by_coordsrT    s   0 "OM  &7-.76M4#89 H 	W	 ZI"k XF%000:=FXF%000:=F
	!Q"y(A
	!y A
	!{"A<''*4L<''*4Li1oo"Y.Gi1oo	)Gi1oo+G	#V,J3GHHQc1X..
 
 
B J#\2*l9STT7#w@@  E
 ]5!! 	. 	. "e---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	"E
__k-u*E*EFFG	
 	
 		 H !2u+..Fx(((Xv&&&&&s   F77F;>F;c           
     2   t           j        }||fddfd||fdfdd||ffd}|                    |           \  \  }}\  }}	\  }
}t          j        d|          |z  }t          j        d|          |z  }t          j        dd          dz  |z  }t          j        d          |z  }t          j        d	          |
z  }t          j        d
|fd
|fd||d|fd          }t          j        d
t          j        |          |z  fd
t          j        |          |z  fdt          j        d	          |	z  t          j        dd          |	z  dt          j        dd          |z  fd          }t          j        d
t          j	        |t          j
                  |z  fd
t          j	        |t          j
                  |z  fdt          j        d	d          |	z  t          j        dd          |	z  dt          j        d	d          |z  fd          }t          j        d
dt          j        |          z  |z  fd
dt          j        |          z  |z  fdt          j        dd          |	z  t          j        dd          |	z  dt          j        dd          |z  fd          }t          t          j        ddg          }|?t          j        |          5   |||g||gg           d d d            n# 1 swxY w Y   d S t          |          fd}t!           |t#          |           ||          g ||           ||          gg                    } |||g||gg          }t%          ||           t'          ||           d S )Nr  r   rH  rI  r5   r@  r   r  r  rK  r   r   r   r   zre   r   r   rA  r   r	  r  r   )
concat_dimc                >    t          t          |                     S r   r  r   rA   s    r   <lambda>z%test_combine_nested.<locals>.<lambda>s      ;}R/G/G#H#H r   )r   r2   r{   rJ   rL  r   r<   r?   rM  	full_likenanr   combine_nestedr  r  r_   ru   rc   r   r
   )r   rN   r  r   r   r   r  r  r!  r"  r#  r$  r   r   r   r   rW  r7  r8  ds3ds4r   convert_and_stripr   r   rA   s                            @r   test_combine_nestedre    si   0 "OM  &7-.76M4#89 H 	W	 ZI"k XF%000:=FXF%000:=F
	!Q"y(A
	!y A
	!{"A
*#V,J3GHHQc1X..  C *bl622Z?@bl622Z?@
 

 1	)1a9,ryQ''+56
 

 
 
C *bl6bfEEE
RSbl6bfEEE
RS
 

 1a9,1a9,ryA45
 

 
 
C *b2<#7#77*DEb2<#7#77*DE
 

 1a9,1a9,ryA45
 

 
 
C B%3*===D]5!! 	+ 	+D3*sCj)***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	#EHHHHS!!#4#4S#9#9:""3''):):3)?)?@	
 	
 	 H TC:Sz*++Fx(((Xv&&&&&s    K>>LLc                t   t           j        }||fddfd||fdfdd||ffd}|                    |           \  \  }}\  }}	\  }
}t          j        ddd                              |          |z  }t          j        ddd                              |          |z  }t          j        dd          |z  }t          j        d          |	z  }t          j        dd	d                              |          |
z  }t          j        ddd                              |          |z  }t          j        ||d
|fdd
          }t          j        ||d
|fdd
          }|Ft          j
        |          5  t          j        ||gd
           d d d            n# 1 swxY w Y   d S t          |          }t          t          j        t          |          t          t          ||                    gd
          |          }t          j        ||gd
          }t!          ||           t#          ||           d S )Nr  r   r   r   r      r5   r  r   r   r  r   )r   r2   r{   rJ   r   r   r   r<   r>   r  r  concatr_   ru   rc   r   r   r
   )r   rN   r  r   r   r   r  r  r!  r"  r#  r$  r   r   rC  rD  r'  r(  arr1arr2rA   r   r   s                          r   test_concat_dataarrayrm    s   0 "OM  &7-.76M4#89 H 	W	 ZI"k [Ar""))%00:=F[Q""))%00:=F	1b		I	%B	1		!B	Q2			%	%e	,	,{	:B	Q1			$	$U	+	+k	9B<V"C9,E,ECPPPD<V"C9,E,ECPPPD]5!! 	- 	-ItTl,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	$E
	M$,F,F G GHc	
 	
 	
 		 H Yd|---Fx(((Xv&&&&&s   1FFFc                   t           j        }||fddfd||fdfdd||ffd}|                    |           \  \  }}\  }}	\  }
}t          j        ddd                              |          |z  }t          j        ddd                              |          |z  }t          j        dd          |z  }t          j        d          |	z  }t          j        dd	d                              |          |
z  }t          j        ddd                              |          |z  }t          j        d
d|fi|d|fd          }t          j        d
d|fi|d|fd          }|Ft          j
        |          5  t          j        ||gd           d d d            n# 1 swxY w Y   d S t          |          }t          t          j        t          |          t          t          ||                    gd          |          }t          j        ||gd          }t!          ||           t#          ||           d S )Nr  r   r   r   r   rg  rh  r5   r  r   r   r   re   ri  )r   r2   r{   rJ   r   r   r   r<   r?   r  r  rj  r_   ru   rc   r   r   r
   )r   rN   r  r   r   r   r  r  r!  r"  r#  r$  r   r   rC  rD  r'  r(  r7  r8  rA   r   r   s                          r   test_concat_datasetro    s   0 "OM  &7-.76M4#89 H 	W	 ZI"k [Ar""))%00:=F[Q""))%00:=F	1b		I	%B	1		!B	Q2			%	%e	,	,{	:B	Q1			$	$U	+	+k	9B
*c6]3"CQS9<U<U
V
V
VC
*c6]3"CQS9<U<U
V
V
VC]5!! 	+ 	+IsCjc****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	#E
	;s##[sE1J1J%K%KLRUVVV H YSzs+++Fx(((Xv&&&&&s   7FF #F c           	       ! t           j        }||fddfd||fdfdd||ffd}|                    |           \  \  }}\  }}	\  }
}t          j        ddd                              dd                              |          |z  }t          j        d          |z  }t          j        d          |z  }t          j        dd	d          |
z  }t          j        dd	d          |
z  }t          j        ddd
                              dd                              |          |z  }t          j        dd          |	z  }t          j        d          |z  }t          j        d	dd          |z  }t          j        dd	d          |
z  }t          j        ddd                              dd                              |          |z  }t          j        dd          |	z  }t          j        dd
          |	z  }t          j        dd	d          |z  }t          j        dd	d          |z  }t          j	        d|||d|fd|fdd          }t          j	        d|||d|fd|fdd          }t          j	        d|||d|fd|fdd          }|Et          j        |          5  t          j        |||g           d d d            n# 1 swxY w Y   d S ||
|
|
|||d!!fd}t          t          j         ||           ||           ||          g          !          }t          j        |||g          } t          ||            t          ||            d S )Nr  r   r   r5   rA  r  r  r   r   r  r@        r   r   r   )r   r   r   vr   rj   rW  )r   rW  r   wr   rW  )r   rW  rs  rt  r   rW  )r   r   rs  rt  r   r   rW  c                >    t          t          |                     S r   r  )arrrA   s    r   r]  z&test_merge_dataarray.<locals>.<lambda>b  s    Kc50I0I$J$J r   )r   r2   r{   rJ   r   r   r   r   r<   r>   r  r  mergeru   r   r   )"r   rN   r  r   r   r   r  r  r!  r"  r#  r$  r   rC  r%  r'  v1r   rD  z2r(  w2array3y3z3v3w3rk  rl  arr3rd  r   r   rA   s"                                    @r   test_merge_dataarrayr  	  s   0 "OM  &7-.76M4#89 H 	W	 ZI"k [Au%%--a33::5AAJNF	1		!B	1		!B	RQ		+	-B	RQ		+	-B[Au%%--a33::5AAJNF	1a9	$B	1		!B	RQ		+	-B	RQ		+	-B[Au%%--a33::5AAJNF	1a9	$B	1a9	$B	RQ		+	-B	RQ		+	-B<bRyRyAA	  D <bRyRyAA	  D <bRyRyAA	  D ]5!! 	) 	)HdD$'(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	  E KJJJ
t$$&7&7&=&=?P?PQU?V?VW	
 	
 		 H XtT4())Fx(((Hf%%%%%s   !KK	K	c           
        t           j        }||fddfd||fdfdd||ffd}|                    |           \  \  }}\  }}	\  }
}t          j        d|          |z  }t          j        d|          |z  }t          j        dd          |z  }t          j        d          |z  }t          j        d          |
z  }t          j        d	|fd	|fd
||d|fd          }t          j        d	t          j        |          |z  fd	t          j        |          |z  fd
t          j        d          |	z  t          j        dd          |	z  dt          j        dd          |z  fd          }t          j        d	t          j	        |t          j
                  |z  fd	t          j	        |t          j
                  |z  fd
t          j        dd          |	z  t          j        dd          |	z  dt          j        dd          |z  fd          }t          t          j                  }|<t          j        |          5   ||||g           d d d            n# 1 swxY w Y   d S t          |          fd}t!           | ||           ||           ||          g                    } ||||g          }t#          ||           t%          ||           d S )Nr  r   rH  rI  r     r  r  rK  r   r   r   re   r@  rX  r   rA  c                >    t          t          |                     S r   r  r\  s    r   r]  z$test_merge_dataset.<locals>.<lambda>  r^  r   )r   r2   r{   rJ   rL  r   r<   r?   rM  r_  r`  r   ry  r  r  r_   ru   r   r   )r   rN   r  r   r   r   r  r  r!  r"  r#  r$  r   r   r   r   r   r7  r8  rb  r   rd  r   r   rA   s                           @r   test_merge_datasetr  q  s   0 "OM  &7-.76M4#89 H 	W	 ZI"k XF%000:=FXF%000:=F
	"bI%A
	!y A
	!{"A
*#V,J3GHHQc1X..  C *bl622Z?@bl622Z?@
 

 1	)1a9,ryQ''+56
 

 
 
C *bl626::ZGHbl626::ZGH
 

 1a9,1a9,ryA45
 

 
 
C BHD]5!! 	" 	"D#sC!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	#EHHHH$$&7&7&<&<>O>OPS>T>TUVV H T3S/""Fx(((Hf%%%%%s   II!$I!r   c                R   t           j        }|ddfd|dfdd|fd}|                    |          \  }}}t          j        ddd                              |          |z  }t          j        d          |z  }	t          j        ddd          |z  }
t          j        |d|	d|
fd          }t          |          }|
                    |j                   t           | t          |                    |          } | |          }t          ||           t          ||           d S )Nr5   r   r   r   r   r   r   )r   r2   r{   rJ   r   r   r   r<   r>   r_   poprU   ru   rc   r   r
   )r   r   r   rN   r   r   r   r   rF   r   r   r   rA   r   r   s                  r   test_replication_dataarrayr    s7    ?D q!D!a, H
 '/ll7&;&;#IxK2r""))%009<E
	" A
Aq"
*A5s#q;R;RSSSJ*%%E	IIjoDDZ!8!8995AAHT*Fx(((Xv&&&&&r   c                n   t           j        }t           j        t           j        fddfd|dfdd|fd}|                    |          \  \  }}}}t	          j        ddd                              |          |z  }	t	          j        ddd                              |          |z  }
t	          j        d                              |          |z  }t	          j        d                              |          |z  }t	          j        ddd          |z  }t          j	        d|	fd	|
fd
||d	|fd          fdt                                                    D             }t           | t                              |          } |           }t          ||           t          ||           d S )Nr5   r  r   r   r   r   r   r   r   r   r   re   c                .    i | ]\  }}|j         v||S r   rZ   )r%   rU   rN   r   s      r   r'   z,test_replication_dataset.<locals>.<dictcomp>  s6       D$r|## 	d###r   )r   r2   r<  r{   rJ   r   r   r   r<   r?   r_   r[   ru   rc   r   r
   )r   r   r   rN   r   r  r  r   r   r   r   r   r   r   rA   r   r   r   s                    @r   test_replication_datasetr    s    ?D  /=#34a;q!1d# H
 6>\\'5J5J2Zh
[B##**511J>F[B##**511J>F
	"U##h.A
	"U##h.A
Aq"
*A	fS&M::Qc1X..
 
 
B   '++1133  E DDR11599HT"XXFx(((Xv&&&&&r   z%can't copy quantity into non-quantityc                z   t           j        }|ddfd|dfdd|fd}|                    |           \  }}}t          j        ddd          |z  }t          j        d          |z  }t          j        ddd          |z  }	t          j        |d|d|	fd          }
dt           j        z  }t          |
          }|j
        ||
j        <   t          t          j        t          |
          t          |          	          |          }t          j        |
|	          }t          ||           t!          ||           d S )
Nr5   r   r   r   r   r   r   r   rY  )r   r2   r{   rJ   r   r   r<   r>   degKr_   rA   rU   ru   r_  rc   r   r
   )r   r   rN   r   r   r   r   rF   r   r   r   r   rA   r   r   s                  r   $test_replication_full_like_dataarrayr    sK     ?D q!D!a, H
 '/ll7&;&;#IxK1b!!I-E
	" A
Aq"
*A5s#q;R;RSSSJm((J*%%E'-E*/
[,,Z9P9PQQQSX H \*<<<Fx(((Xv&&&&&r   c                   t           j        }t           j        t           j        fddfd|dfdd|fd}|                    |           \  \  }}}}t          j        ddd                              |          |z  }t          j        ddd                              |          |z  }	t          j        d                              |          |z  }
t          j        d                              |          |z  }t          j        ddd          |z  }t          j
        d|fd	|	fd
|
|d	|fd          }dt           j        z  }i t          |          d |j        D             }t          t          j        t!          |          t!          |                    |          }t          j        ||          }t#          ||           t%          ||           d S )Nr5   r  r   r   r   r   r   r   r   r   r   re   r   c                (    i | ]}|t           j        S r   )r   r  )r%   rU   s     r   r'   z6test_replication_full_like_dataset.<locals>.<dictcomp>n  s    
=
=
=4#
=
=
=r   rY  )r   r2   r   r<  r{   rJ   r   r   r   r<   r?   r  r_   rZ   ru   r_  rc   r   r
   )r   r   rN   r   r  r  r   r   r   r   r   r   r   r   r   rA   r   r   s                     r   "test_replication_full_like_datasetr  G  s    ?D  /=#34a;q!1d# H
 6>\\'5J5J2Zh
[B##**511J>F[B##**511J>F
	"U##h.A
	"U##h.A
Aq"
*A	fS&M::Qc1X..
 
 
B
 m((J



=
=
=
=
=E 
[__Z1H1HIII5 H \"444Fx(((Xv&&&&&r   r   gffffff$@c                   t          j        ddd                              |          t          j        z  }t          j        |d          }|dt          j        z  k     }| |z  } |mt          j        |           rt          | t                    rDt          j        |          5  t          j        |||            d d d            n# 1 swxY w Y   d S t          t          j        |t          |          t          t          | d t          j        i                              t!          |                    }t          j        |||           }t#          ||           t%          ||           d S )Nr   r   r   r   r;  )rJ   r   r   r   r2   r<   r>   isnanr   r   r  r  whereru   rc   r   r_   r   r
   )	r   rN   r  r   rF   r   condr   r   s	            r   test_where_dataarrayr  y  s    K1b!!((//-/AE
%c***Aq=?""Dd"J
 %/
H%E%E  ]5!! 	* 	*HT1j)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	
NNj42IJJKK	
 	

 	a H XdAz**Fx(((Xv&&&&&s   $CCCc                Z   t          j        ddd                              |          t          j        z  }t          j        ddd                              |          t          j        z  }t          j        d|fd|fd          }|dt          j        z  k     }| |z  } |mt          j        |           rt          | t                    rDt          j        |          5  t          j        |||            d d d            n# 1 swxY w Y   d S t          t          j        |t          |          t          t          | d t          j        i                              t!          |                    }t          j        |||           }	t#          ||	           t%          ||	           d S )	Nr   r   r   rg  r   r   r  r  )rJ   r   r   r   r2   r<   r?   r  r   r   r  r  r  ru   rc   r   r_   r   r
   )
r   rN   r  r   r   r   r   r  r   r   s
             r   test_where_datasetr    s    [Ar""))%00=?BF[Q##**511MOCF	S&MfFF	G	G	GBA''Dd"J
 %/
H%E%E  ]5!! 	+ 	+HT2z***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	
OOj42IJJKK	
 	

 	b H XdB
++Fx(((Xv&&&&&s    DD
Dc                   t          j        ddd                              dd                              |           t          j        z  t          j        z  }t          j        ddd                              dd                              |           t          j        z  }t          j        |d          }t          j        |d	          }t          t          j
        t          |          t          |                    d t          j        i          }t          j
        ||          }t          ||           t          ||           d S )
Nr   r   r   r   r      r   r;  rv  )rJ   r   r   r   r   r2   r   r<   r>   ru   dotrc   r   r
   )r   r   r   r   rE  r   r   s          r   test_dot_dataarrayr    s!   
Ar6""**1b1188??
/	
/	  	BG$$,,R44;;EBB]_T  6
;;;JLf:666E
{:&&E(:(:;;dMO=T H VJ&&Fx(((Xv&&&&&r   c                     e Zd Zej                            d ed           ed           edd           edd           ed           ed	           ed
           ed           ed           ed           ed           ed           ed           ed           ed          fe          d             Zd Z	ej                            d ede
j                   ed           ed           eddd          fe          ej                            d ej        ded            ej        ej        ed!            ej        ej        ed"            ej        ej        d#d$            ej        ej        d#d%           f          d&                         Zej                            d ed'd(           ed)d(          fe          ej                            d ej        ded            ej        ej        ed!            ej        ej        ed"            ej        ej        d#d$            ej        ej        d#d%           f          d*                         Zej                            d ed+           ed,           ed-          fe          d.             Zej                            d ej        ded            ej        ej        ed!            ej        ej        ed"            ej        ej        d#d$            ej        ej        d#d%           f          d/             Zej                            d0 ej        dd            ej        ej        d!            ej        ej        d"            ej        ej        d$            ej        ej        d%           f          ej                            d1 ej        d2d3            ej        d4d5           f          ej                            d ed6           ej         ed7          ej                            d89          :          fe          d;                                     Zej                            d0 ej        dd            ej        ej        d!            ej        ej        d"            ej        ej        d$            ej        ej        d%           f          d<             Zej                            d=d2 ej        d4eg:          g          ej                            d>d?g ej         ej        d e
j        d@d(dA                    ddBidC            ej         ej        d e
j        d@d(dA                    dg dDidE            ej         ej        dF e
j        d@d(dG                              dBd(                    ddBdFdH            ej         ej        dF e
j        d@d(dG                              dBd(                    g dIg dJdFdK           f          dL                         Zej                            d ej        ded            ej        ej        ed!            ej        ej        ed"            ej        ej        d#d$            ej        ej        d#d%           f          ej                            d e dM dNO           e dP dQO           e dR dSO           e dT dO           e dU dVO           e dW dXO           e dY dZO          fe          d[                         Z!ej                            d ej        ded            ej        ej        ed!            ej        ej        ed"            ej        ej        d#d$            ej        ej        d#d%           f          ej                            d ed\           ed]          fe          d^                         Z"ej                            d_d`          da             Z#ej                            d edbdcdie
j$        d           ededfdggh           ej         edid          ej                            dj9          :           edkddi           ej         edlddmdn          ej        %                    do9          :           edpe
j&        d           edqd           edrddsi           edtdcd          f	e          du             Z'ej                            d ej        ded            ej        ej        ed!            ej        ej        ed"            ej        ej        d#d$            ej        ej        d#d%           f          dv             Z(dw Z)dx Z*ej                            d ej        ded            ej        ej        ed!            ej        ej        ed"            ej        ej        d#d$            ej        ej        d#d%           f          dy             Z+dz Z,d{ Z-ej                            d0 ej        dd            ej        ej        d!            ej        ej        d"            ej        ej        d$            ej        ej        d%           f          d|             Z.ej                            d}g d~          ej                            de/          d                         Z0ej                            d ej        ded            ej        ej        ed!            ej        ej        ed"            ej        ej        d#d$            ej        ej        d#d%           f          d             Z1d#S )TestVariabler   allanyargmaxr   ri  argminargsortcumprodcumsummaxr   medianminprodstdsumvarr   c                   |j         dk    rT|j        dk    rIt          j        t          j                  t          j        d          k     rt          j        d           t          j	        ddd          
                    |          |j         d	k    rt          j        nt          j        z  }t          j        d
|          }|j                                        }d|j        v r+|                    |                    d                    |d<   t)           ||fi |          }t+           |t-          |                    |          } ||          }t/          ||           t1          ||           d S )Nr  f0.19'nanprod is not by older `pint` versionsr   r   r5   r   r  r   r   r   )rU   kindr   parser   __version__r  r  rJ   r   r   r   r2   r   r<   r=   r   r-   get_axis_numr  r_   ru   rc   r   r   )	r   r   r   rF   rh   numpy_kwargsrA   r   r   s	            r   test_aggregationzTestVariable.test_aggregation  s^   . I
c!!d.//'-2G2GGGL IJJJJAq"%%,,U33#yI55MOO=;V
 ;sE**{''))DK#+#8#89I9I%9P9P#Q#QL dd599L99::[%:%: ; ;UCCh8V,,,&)))))r   c                   t          j        dddt          j        gt          j        z            }t          j        ddt          j        z            }|                                }t          ||           t          ||           d S )Nr   r5   y               @r   y      ?      ?)	r<   r=   rJ   r`  r   r2   r   r   r   )r   rh   r   r   s       r   test_aggregate_complexz#TestVariable.test_aggregate_complex  sm    ;sQBFOmo$EFF;rH#?@@8V,,,&)))))r   r   conj	conjugateclipr  r  r  r  r   r5   r   r   r   r   Nr   r   c                   t          j        ddd                              |          t          j        z  }t          j        d|          }fd|j        D             }fd|j        	                                D             }|C|j
        dv r:t          j        |          5   ||g|R i | d d d            n# 1 swxY w Y   d S d |D             }	d	 |	                                D             }
t           ||g|R i |          }t           |t          |          g|	R i |
|          } ||g|R i |}t!          ||           t#          ||           d S )
Nr   r5   r   r   c                b    g | ]+}t          |t          t          t          f          r|z  n|,S r   r   intfloatro   )r%   itemrN   s     r   r   z3TestVariable.test_numpy_methods.<locals>.<listcomp>6  sG     
 
 
 &dS%,>??ID4KKT
 
 
r   c           	     j    i | ]/\  }}|t          |t          t          t          f          r|z  n|0S r   r  r%   r&   rV   rN   s      r   r'   z3TestVariable.test_numpy_methods.<locals>.<dictcomp>:  sM     
 
 
U EC3E!F!FQE
 
 
r   )searchsortedr  c           	     `    g | ]+}t          t          |d t          j        i                    ,S r   rc   r   r   r2   )r%   r  s     r   r   z3TestVariable.test_numpy_methods.<locals>.<listcomp>E  s>     
 
 
JNKdT=?,CDDEE
 
 
r   c           
     h    i | ]/\  }}|t          t          |d t          j        i                    0S r   r  r   s      r   r'   z3TestVariable.test_numpy_methods.<locals>.<dictcomp>H  sG     
 
 
U ]542IJJKK
 
 
r   )rJ   r   r   r   r2   r<   r=   r   r   r[   rU   r  r  r_   ru   rc   r   r   r   r   rN   r  r   rF   rh   r   r   converted_argsconverted_kwargsrA   r   r   s     `           r   test_numpy_methodszTestVariable.test_numpy_methods  s+   . Aq"%%,,U33moE;sE**
 
 
 
	
 
 

 
 
 
"k//11
 
 

 .F!F!Fu%% 0 0X///////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F
 
RV
 
 

 
$llnn
 
 

 dd5:4:::6::;;DX&&LLLL;KLLe
 
 h0000008V,,,&)))))s   $B==CCr  r   r  c                   t          j        ddd                              |          t          j        z  }t          j        d|          }fdj        D             }fdj        	                                D             }|Ej
        dk    r:t          j        |          5   |g|R i | d d d            n# 1 swxY w Y   d S fd|D             }	fd	|	                                D             }
t           |g|R i |          }t           t          |          g|	R i |
|          } |g|R i |}t!          ||           t#          ||           d S )
Nr   r5   r   r   c                x    g | ]6}t          |t          t          t          f          rj        d k    r|z  n|7S r  r   r  r  ro   rU   )r%   r  r   rN   s     r   r   z7TestVariable.test_raw_numpy_methods.<locals>.<listcomp>i  s\     
 
 
  $eT 2338<	V8K8K 4KK
 
 
r   c           	         i | ]:\  }}|t          |t          t          t          f          rj        d k    r|z  n|;S r  r  )r%   r&   rV   r   rN   s      r   r'   z7TestVariable.test_raw_numpy_methods.<locals>.<dictcomp>o  sc     
 
 
 U %#ud!3449=f9L9L 
 
 
r   r  c           	     |    g | ]8}j         d k    r)t          t          |dt          j        i                    n|9S r  NrU   rc   r   r   r2   )r%   r  r   s     r   r   z7TestVariable.test_raw_numpy_methods.<locals>.<listcomp>|  sY     
 
 
  yF"" dT=?,CDDEEE
 
 
r   c           
         i | ]<\  }}|j         d k    r)t          t          |dt          j        i                    n|=S r  r  )r%   r&   rV   r   s      r   r'   z7TestVariable.test_raw_numpy_methods.<locals>.<dictcomp>  s`     
 
 
 U yF"" ]542IJJKKK
 
 
r   )rJ   r   r   r   r2   r<   r=   r   r   r[   rU   r  r  r_   ru   rc   r   r   r  s    ``           r   test_raw_numpy_methodsz#TestVariable.test_raw_numpy_methodsV  sQ     Aq"%%,,U33moE;sE**
 
 
 
 
 		
 
 

 
 
 
 
 #k//11	
 
 
 f!4!4u%% 0 0X///////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F
 
 
 
 	
 
 

 
 
 
 %llnn	
 
 
 dd5:4:::6::;;DX&&LLLL;KLLe
 
 h0000008V,,,!(F33333s   )CC	Cisnullnotnullcountc           	        t          j        ddt           j        dgt           j        dt           j        t           j        gdt           j        t           j        dgdt           j        ddgg          t          j        z  }t          j        d	|          } |t          |                    } ||          }t          ||           t          ||           d S )
Nffffff?ffffff@@ffffff#@ @ffffff@#@333333"@r   )
rJ   rF   r`  r   r  r<   r=   rc   r   r
   )r   r   rF   rh   r   r   s         r   test_missing_value_detectionz)TestVariable.test_missing_value_detection  s    
 H#rvs+VS"&"&1"&"&#."&#s+	   ! 	 ;z5114H--..h8V,,,6*****r   c           	        d}t          j        ddt           j        dgt           j        dt           j        t           j        gdt           j        t           j        dgdt           j        dd	gg          t          j        z  }t          j        d
|          }||z  }|Dt          j        |          5  |	                    |           d d d            n# 1 swxY w Y   d S t          t          |          	                    |                    t          j                  j                  t          |                    }|	                    |          }t          ||           t!          ||           d S )Nr   r  r  r  r  r  r  r  r  r   rV   )rJ   rF   r`  r   r2   r<   r=   r  r  fillnaru   rc   r   rE   r_   r   r
   )	r   rN   r  rV   rF   rh   r   r   r   s	            r   test_missing_value_fillnaz&TestVariable.test_missing_value_fillna  s    H#rvs+VS"&"&1"&"&#."&#s+	  o 	 ;z511T\
u%% 2 2j1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 F!!(( mmMO44> )   (##	
 
 z228V,,,6*****s   .CCCrN   convert_dataFno_conversionTwith_conversionequals	identicalz"behavior of identical is undecidedr   r   c                $   t          j        ddd                              |          }|t          j        z  }t          j        d|          }|r:t          t          j        |          r t          |t          j        z  d |i          }n||z  }t          j        d|          }	 |t          |          t          t          t          j        |          rt          |	t          |                    n|	                    }
|j        dk    r$|
t          |          t          |	          k    z  }
nL|
t          t          t          |          t          |	                                                              z  }
 |||	          }|
|k    sJ d S )Nr   r5   r	  r   r  )rJ   r   r   r   r2   r<   r=   r!   r   rc   r_   rU   r  r+   values)r   r   rN   r  r   rF   	quantity1rh   	quantity2rE  r   r   s               r   test_comparisonszTestVariable.test_comparisons  s   @ Aq!$$++E22MO+	;sI.. 	%M-/4@@ 	%%emo&=d|LLIIIC++4!! $77e]8%<%<=== 
 
 9##h//=3G3GGGHH#!(++]5-A-A &((  H h&&6!!!!!!r   c                Z   t           j        }t          j        d|          |z  }t	          ||          rd|z                      |          j        nd}t          j        d||          |z  }t          j	        d|          }t          j	        d|          }i t          |          t	          ||          ri nd d i}	t          |                              t          t          ||	                              t	          ||          z  }
|                    |          }|
|k    sJ d S )Nr  r  rI  r5   r  )rJ  r   r   r   r   )r   r2   rJ   onesr!   r   rE   fullr<   r=   r_   rc   broadcast_equalsr   )r   rN   r   	base_unit
left_arrayrV   right_arrayleftrightrA   r   r   s               r   test_broadcast_equalsz"TestVariable.test_broadcast_equals  s=    "O	W6777)C
2?i2P2PWQ]t$$..VW 	 gDU%HHH4O{:z22C--
D!!
"433Err$
 t$$55eU3344
 
$	**+ &&u--6!!!!!!r   daskrh   indexersr   r   r@  zsingle value-single indexerr   r  r	  r5   zmultiple values-single indexerr   r   zsingle value-multiple indexers)r   r5   r  )r   r  r@  z!multiple values-multiple indexersc                   |r$|                     d |j        D                       }t          j        |j        |j                            |          t          j        z            }t          t          |          
                    |          t          |                    }|
                    |          }t          ||           t          ||           d S )Nc                    i | ]}|d S r  r   )r%   r   s     r   r'   z*TestVariable.test_isel.<locals>.<dictcomp>R  s    &G&G&G#sA&G&G&Gr   )chunkrg   r<   r=   r@   r   r   r   ru   rc   iselr_   r   r
   )r   rh   r  r  r   
quantifiedr   r   s           r   	test_iselzTestVariable.test_isel6  s    6  	I~~&G&G&G&G&GHHH[M8=//66H
 

  
##((22M*4M4M
 
 **8V,,,6*****r   c                    | 
 S r   r   r   _s     r   r]  zTestVariable.<lambda>n      A2 r   
unary_plusr   c                    |  S r   r   r  s     r   r]  zTestVariable.<lambda>o  r  r   unary_minusc                     t          |           S r   )absr  s     r   r]  zTestVariable.<lambda>p  s    3q66 r   absolutec                    | |z   S r   r   r   s     r   r]  zTestVariable.<lambda>q  
    !a% r   c                    || z   S r   r   r   s     r   r]  zTestVariable.<lambda>r  r  r   commutative_sumc                    | |z  S r   r   r   s     r   r]  zTestVariable.<lambda>s  r  r   productc                    || z  S r   r   r   s     r   r]  zTestVariable.<lambda>t  r  r   commutative_productc                   t           j        }t          j        d                              |          |z  }t          j        d|          }t          j        d          }||z  }	|C|j        dv r:t          j
        |          5   |||	           d d d            n# 1 swxY w Y   d S t           |||	                    }
t          t          |
t          |	                                                              rt          |	|
          }n|	}t          t          |
t          |                                                              rt          ||
          }n|}t!           |t#          |          t#          |                    |
          } |||	          }t%          ||           t'          ||           d S )Nr   r   )r  r  )r   r2   rJ   r   r   r<   r=   r  rU   r  r  r_   r  r+   r  r   ru   rc   r   r   )r   r   rN   r  r   r  rF   rh   r  r   rA   converted_yconverted_variabler   r   s                  r   test_1d_mathzTestVariable.test_1d_math_  s   4 "O		!##E**Y6;sE**TM.H!H!Hu%% " "Xq!!!" " " " " " " " " " " " " " " Fdd5!nn--"5-*:*:;;BBDDEE 	'511KKK"5-*A*ABBIIKKLL 	*!.x!?!?!)D/00+k2J2JKKU
 
 h""8V,,,&)))))s   BB!$B!r  _getitem_with_maskc                |   t           j        }t          j        ddd                              |          |z  }t          j        d|          }t          j        ddgdz            }d|z  }	|;t          j	        |          5   ||||	           d d d            n# 1 swxY w Y   d S t           |t          |          |t          t          |	t          ||          rd |ind d i                              t          |                    }
 ||||	          }t          |
|           t!          |
|           d S )Nr   r   r   r   TFr   )r   r2   rJ   r   r   r<   r=   rF   r  r  ru   rc   r   r!   r_   r   r
   )r   r   rN   r  r   r  rF   rh   r  rE  r   r   s               r   test_maskingzTestVariable.test_masking  s     "O	Aq"%%,,U33i?;sE**xu)**T	u%% , ,XtU+++, , , , , , , , , , , , , , , FDH%%!(D99*y))"D\	    (##
 
 he,,8V,,,6*****s   BB #B r   r   r   rW  tr  c                   d}t          d          }t          t          ||                    }t          j        |          t
          j        z  }t          j        ||          }|dk    r|	                    |d          dk    rd|ini }t           t          |          j        di |t          |                    }	 |j        di |}
t          |	|
           t          |	|
           d S )	N)r  r5   r  r5   r5   r  abcdefrJ  r  r   r5   r   r   )ro   dictziprJ   r  r   r2   r<   r=   r{   ru   rc   squeezer_   r   r
   )r   r   r   rJ  namesdim_lengthsrF   rh   r   r   r   s              r   test_squeezezTestVariable.test_squeeze  s    "X3ue,,--e$$$}6;ue,,!$+//#q2I2IQ2N2N%TV)K!!)33F33]85L5L
 
 "!++F++8V,,,6*****r   coarsenr   )windowsr   quantile      ?      ?qrank$rank not implemented for non-ndarrayrollrolling_windowr  windowzconverts to ndarrayreduceroundshift	transposec                   t           j        }t          j        ddd                              dd                              |          |z  }t          j        d|          }t           |t          |                    t          |                    } ||          }t          ||           t          ||           d S )Nr   r   r   r   r   )r   r2   rJ   r   r   r   r<   r=   ru   rc   r_   r   r
   )r   r   r   r  rF   rh   r   r   s           r   test_computationzTestVariable.test_computation  s    , "O	Aq&))11!R88??FFR;z511[%:%: ; ;]8=T=TUUh8V,,,6*****r   c           	     <   t           j        }t          j        ddd                              |          |z  }t          j        d|          }d|z  }|Ct          j        |          5  |	                    |           d d d            n# 1 swxY w Y   d S t          |          	                    t          t          |d |i                              }|	                    |          }	t          ||	           t          j                            ||	           d S )Nr   r   r   r   )r   r2   rJ   r   r   r<   r=   r  r  r  rc   r   r   testingr   )
r   rN   r  r   r  rF   rh   rV   r   r   s
             r   test_searchsortedzTestVariable.test_searchsorted  sK    "O	Aq"%%,,U33i?;sE**Du%% - -%%e,,,- - - - - - - - - - - - - - - Fx((55edI->??@@
 
 &&u--8V,,,

""8V44444s   )BBBc                   t          j        ddd                              dd                              |          t          j        z  }t          j        d|          }t          t          |          
                    d          t          |                    }|
                    d          }t          ||           t          ||           d S )Nr   r   rq  r  r   r   rW  )rJ   r   r   r   r   r2   r<   r=   ru   rc   stackr_   r   r
   r   r   rF   rh   r   r   s         r   
test_stackzTestVariable.test_stack  s    Aq&))11!R88??FFX;z511!!''*'55}X7N7N
 
 *--8V,,,6*****r   c                   t          j        ddd                              |          t          j        z  }t          j        d|          }t          t          |          	                    ddd          t          |                    }|	                    ddd          }t          ||           t          ||           d S )	Nr   r   rq  rW  r  r   r   rE  )rJ   r   r   r   r2   r<   r=   ru   rc   unstackr_   r   r
   rG  s         r   test_unstackzTestVariable.test_unstack*  s    Aq&))0077-/I;sE**!!))!",=,=)>>h@W@W
 
 !!!"$5$5!668V,,,6*****r   c                n   t          j        ddd                              ddd                              |          t          j        z  }t          j        ddd                              ddd                              |          |z  }t          j        d	|          }t          j        d	|          }|Qt          j	        |          5  t          j        
                    ||gd
           d d d            n# 1 swxY w Y   d S t          |          }t          t          j        
                    t          |          t          t          ||                    gd
          |          }	t          j        
                    ||gd
          }
t          |	|
           t!          |	|
           d S )Nr   r   Z   r  rA  r   rq  r  rV  r   ri  )rJ   r   r   r   r   r2   r<   r=   r  r  rj  r_   ru   rc   r   r   r
   )r   rN   r  r   r   r   rh   rE  rA   r   r   s              r   test_concatzTestVariable.test_concat6  s    K1f%%--aA66==eDD}V 	 QF++33Aq!<<CCEJJTQ;77OV44u%% ? ?""He#4#">>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Fh''KX&&M%4O4O(P(PQ    
 
 ##Xu$53#??8V,,,6*****s   $C==DDc                   t          j        ddd                              dd                              |          t          j        z  }t          j        d|          }dddd	dd
}t          t          |          
                    |          t          |                    }|
                    |          }t          ||           t          ||           d S )Nr   r   rq  r  r   r   rA  r5   r@  )rW  r   r   r   r   )rJ   r   r   r   r   r2   r<   r=   ru   rc   set_dimsr_   r   r
   )r   r   rF   rh   rg   r   r   s          r   test_set_dimszTestVariable.test_set_dims^  s    Aq&))11!R88??FFX;z511QQQR88!!**400-2I2I
 
 ""4((8V,,,6*****r   c                   t          j        ddd                              |          t          j        z  }t          j        d                              |          t          j        z  }t          j        d|          }t          t          |                              t          |                    t          |                    }|                    |          }t          ||           t          ||           d S )Nr   r   r   r   rk   )rJ   r   r   r   r2   r   r   r<   r=   ru   rc   r-   r_   r   r
   )r   r   rF   rE  rh   r   r   s          r   	test_copyzTestVariable.test_copyk  s    Aq"%%,,U33moE	"$$U++mo=;sE**!!&&K,>,>&??uAUAU
 
 E**8V,,,6*****r   c                >   t           j        }t          j        g dt          j        ddgdt          j        dgg dg          |z  }t          j        t          j        dt          j        g          |z  }t          j        d|          }t          j        d|          }t          |                              t          t          |d t          ||          r|nd i                              t          ||          z  }|                    |          }	||	k    sJ d S )N)333333@333333?g?rV  g@g?)g\("@rV  gffffff?r   r   )r   r2   rJ   rF   r`  r<   r=   rc   no_conflictsr   r!   )
r   rN   r   r  r   r   rh   rE  r   r   s
             r   test_no_conflictszTestVariable.test_no_conflictsx  s0    "O	H$$$VS#&"&#&$$$	   	 263/0047;z622C((x((55D}Y/M/M"W))SWX  
 
 )T**+ &&u--6!!!!!!r   mode)
constantr   r  reflectedgelinear_rampmaximumminimum	symmetricwrapzxr_arg, np_argc                l   t          j        d                              ddd          t          j        z  }t          j        g d|          }t           t          |          j	        dd|i|t          |                    } |j	        dd|i|}t          ||           t          ||           d S )N   r@  r  r  rV  rY  r   )rJ   r   r   r   r2   r<   r=   ru   rc   padr_   r   r	   )r   rY  xr_argnp_argr@   rs  r   r   s           r   test_padzTestVariable.test_pad  s    " y##++Aq!44}FK..KNN33D3F33!
 
 ++D+F++8V,,,VX&&&&&r   c                l   t          j        ddd                              dd                              |          t          j        z  }t          j        d|          }d|z  }t          dd	d
d          }|;t          j
        |          5   |||           d d d            n# 1 swxY w Y   d S t          |          }t           |t          |          t          t          ||                              |          }	 |||          }
t          |	|
           t!          |	|
           d S )Nr   r   rq  r  r   r   ird  rZ  rH  )r5   r@  )rY  r   r   )constant_values)rJ   r   r   r   r   r2   r<   r=   r   r  r  r_   ru   rc   r   r   r
   )r   rN   r  r   rF   rh   r   r   rA   r   r   s              r   test_pad_unit_constant_valuez)TestVariable.test_pad_unit_constant_value  s    Aq&))11!R88??FFX;z511D[
e*&AAAu%% ; ;Xz::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; Fh''DH%% +M*e,L,L M M   
 
 h
;;;8V,,,6*****s   B((B,/B,)2r   r   r   r  markparametrizer   reprr  r  rJ   float32r   DimensionalityErrorr   r   r   cmr2   r  r  r  r  skipr  r   r   r<   r=   r   r   r	  r   r  r"  r-  r   r  r  r@  rC  rH  rK  rN  rQ  rS  rX  r   rg  rj  r   r   r   r  r    s       [F5MMF5MMF8%%%F8%%%F9F9F8F5MMF6NNF8F5MMF6NNF5MMF5MMF5MM	
" '   ** *+ **0* * * [F8RZ((F6NNF;F6qa(((		
   	 	 [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
 "* "* 	 	,"*H [""FF>1$=$=>D    [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
 +4 +4  +4Z [!!66)#4#4ffWooFD   + + +( [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
  +  +  +D [FLy)))FL4IIIFL-@AAAFL $   FL-=>>>		
  [FL?333FL"3444	
  [F8FL{##k&&.R&SS  	
   
 
" "
 
  >"@ [FLy)))FL4IIIFL-@AAAFL).?@@@FL-=>>>	
	 	" "	 	", [Ve\V\$}o-V-V-V%WXX[	Z FLCQ2!6!677a0  
 FLCQ2!6!677lll#3  
 FLJAq"(=(=(E(Ea(K(KLLa  3  
 FLJAq"(=(=(E(Ea(K(KLLiiiii006  !	
 2+ +3  YX4+ [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
  [H%%lCCCH%%mDDDH))*EEEH''>>>H''8IJJJH''	BBBH''8MNNN	
    * *  2*B [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
  [&&)=">">?T    +  +   +D [U$?@@+ + A@+  [F9sAhRW===F:$...FLv3'''k&&.T&UU   F6C8$$FL'a::k''/D'EE   F8RVS))F7AF7S"I&&F;S))	
" '   *
+ 
++ *
+ [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
 5 5 5,
+ 
+ 
+
+ 
+ 
+ [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
 + + +8+ + ++ + + [FLy)))FL4IIIFL-@AAAFL).?@@@FL-=>>>	
	 	" "	 	": [	
 	
 	
  [-??' ' @?  ' [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
 + + + + +r   r  c            !      7   e Zd Zej                            d ej        dej                            d                    ddf          d             Zej                            d	 ej        e	d
           ej        e
d          f          ej                            d ej        dej                            d                     ej        d           ej        d          f          d                         Zej                            d	 ed           ed           ej         ed          ej                            d                     ej         ed          ej                            d                     ed           ed           ej         ed          ej                            d                     ed           ed           ed           ed           ed           ed           ed           ed           ed           edd            edd            ed           ed           ed           ed           ed           ed           ed           ed           ed           ed          fe
!          d"             Zej                            d	 ej        ej        d#           ej        ed$           ej        ej        d%          f          d&             Zej                            d	 ej        d' d(           ej        d) d*           ej        d+ d,           ej        d- d.          f          d/             Zej                            d0 ej        ej        d1           ej        ej        d2           ej        ej        d3          f          ej                            d4 ej        d5ed6           ej        ej        ed7           ej        ej        ed8           ej        ej        d9d:           ej        ej        d9d;          f          d<                         Z ej                            d= ej        ej        d9d7           ej        ej        ed8           ej        ej!        d9d:          f          d>             Z"ej        #                    d?          ej                            d4 ej        d5ed6           ej        ej        ed7           ej        ej        ed8           ej        ej        d9d:ej        #                    d@          A           ej        ej        d9d;          f          dB                         Z$ej                            dCdD          dE             Z%ej                            d	 edF           edG           edH           ed%          fe
!          dI             Z&dJ Z'ej                            d4 ej        d5edK           ej        ej        ed7           ej        ej        ed8           ej        ej(        d9d:           ej        ej        d9d;          f          ej                            d	 edLdM           ej         edLdM          ej        #                    dN                    fe
!          dO                         Z)ej                            d	 edPdQdRS           ej         edPdQdRT          ej        #                    dN                    fe
!          ej                            d4 ej        d5edK           ej        ej        ed7           ej        ej        ed8           ej        ej(        d9d:           ej        ej        d9d;          f          dU                         Z*ej                            d	 edV           edW           edX          fe
!          dY             Z+ej        #                    dZ          ej                            d	 ed[           ed\          fe
!          d]                         Z,ej                            d4 ej        d5edK           ej        ej        ed7           ej        ej        ed8           ej        ej(        d9d:           ej        ej        d9d;          f          ej                            d^ ej        d_d`           ej         ej-        d_          da           ej         ej-        d_g          db          f          dc                         Z.dd Z/ej                            de ej        d5dK           ej        ej        d7           ej        ej        d8           ej        ej(        d:           ej        ej        d;          f          df             Z0ej                            ddg          ej                            d4 ej        d5edK           ej        ej        ed7           ej        ej        ed8           ej        ej(        d9d:           ej        ej        d9d;          f          dh                         Z1ej        #                    di          dj             Z2ej                            d4 ej        d5edK           ej        ej        ed7           ej        ej        ed8           ej        ej(        d9d:           ej        ej        d9d;          f          dk             Z3ej                            de ej        d5dK           ej        ej        d7           ej        ej        d8           ej        ej(        d:           ej        ej        d;          f          ej                            dldm ej        dnej                            d                    dof          ej                            d	 edp           ej         edq          ej                            dr                    fe
!          ds                                     Z4ej                            de ej        d5dK           ej        ej        d7           ej        ej        d8           ej        ej(        d:           ej        ej        d;          f          ej                            ddm ej        dnej                            d                    dof          dt                         Z5ej                            de ej        d5dK           ej        ej        d7           ej        ej        d8           ej        ej(        d:           ej        ej        d;          f          du             Z6dv Z7ej                            ddm ej        dnej                            d                    dof          ej                            d	 edwdx            edydz ej8        d{          ej        z  f|           ed}d~           edd           ej         edddi          ej                            d                     ej         edd ej9        d{dd          ej        z  id5          ej                            d                     edd           edd           ed           edej:                  f
e
!          d                         Z;ej                            de ej        d5dK           ej        ej        d7           ej        ej<        d          f          d             Z=ej                            d ej        dd           ej        g dd          f          d             Z>ej                            d          ej                            d ej        d{d           ej        g dd           ej         ej-        g d          d          f          ej                            d4 ej        d5e?d           ej        ej        e?d7           ej        ej!        e?d8           ej        ej@        e?d:           ej        ej        d9d;          f          d                                     ZAej                            d          ej                            d ej        d{d           ej        g dd           ej         ej-        g d          d          f          ej                            d4 ej        d5e?d           ej        ej        e?d7           ej        ej!        e?d8           ej        ej@        e?d:           ej        ej        d9d;          f          d                                     ZBej                            d          ej                            d ej        d{d           ej        g dd           ej         ej-        g d          d          f          ej                            d4 ej        d5e?d           ej        ej        e?d7           ej        ej!        e?d8           ej        ej@        e?d:           ej        ej        d9d;          f          d                                     ZCej                            dd          ej                            d ej        dd           ej        dd           ej        dd           ej        dd           ej        dd          f          d                         ZDej                            d	 edddQ           edddQ           edddQ          fe
!          d             ZEej                            dd          ej                            d	 ej         ed          ej        #                    d                     ed          fe
!          d                         ZFej                            d          ej                            d4 ej        d5edK           ej        ej        ed7           ej        ej        ed8           ej        ej(        d9d:           ej        ej        d9d;          f          ej                            d	 ed           ed          fe
!          d                                     ZGej                            dd          ej                            d	 ej         ed          ej        #                    d                     ed          fe
!          d                         ZHej                            d          ej                            d4 ej        d5edK           ej        ej        ed7           ej        ej        ed8           ej        ej(        d9d:           ej        ej        d9d;          f          ej                            d	 ed           ed          fe
!          d                                     ZIej                            d	 ed           edd           ed¦          fe
!          dÄ             ZJej                            d          dĄ             ZKej                            d	 eddzdd           eddǦ           eddɬʦ           edd̬ʦ           ej         edd           ej                            dά                     edddЬѦ           eddɦ          fe
!          dӄ             ZLej                            d ej        dnej                            d                    dof          ej                            d	 edejM        զ           edeNjO        զ           edeNjP        զ          fe
!          d؄                         ZQej                            ddm ej        dnej                            d                    dof          ej                            d	 edd            edddgݦ           edejR        dߦ           ej        d d          fe
!          d                         ZSej                            ddm ej        dnej                            d                    dof          ej                            d	 edd           eddzd           edd̬           ej         eddQ          ej        #                    d                     ej         eddQ          ej        #                    d                     ed eTjU         ej9        dd5d{          dz                    fe
!          d                         ZVd ZWej                            ddm ej        dnej                            d                    dof          ej                            d	 edyd ej8        dM          ej        z  f           ed           ed           edg dd          fe
!          d                         ZXd9S )TestDataArrayr   	with_dimsr   r   r   with_coordswithout_coordsc                   t          j        ddd|          t          j        z  }t          j        t          |                    t          j        z  }|                    t          j                  }d|idd|fii d}|d|	                    |          d}t          j        d
i |}t          |j        t                    sJ t          d	 |j                                        D                                                       sJ d S )Nr5   r  r   r   r   r   rt  ru  rv  r   c                J    i | ] \  }}|t          |j        t                    !S r   )r   r@   r   )r%   rU   coords      r   r'   z+TestDataArray.test_init.<locals>.<dictcomp> 	  s:       D% jX66  r   r   )rJ   r   r   r2   r   lenr   r   msr{   r<   r>   r   r@   r   r  r\   r[   r  )	r   r   r   rF   r   r   r   r   r   s	            r   	test_initzTestDataArray.test_init  s    Aq"E222]_DIc%jj!!MO3DD!"" q#q? 
 
  W8M8MNN\++F++
*/844444 #-#4#:#:#<#<   fhh	
 
 	
 	
 	
 	
 	
r   r   strr   rm  c                l   t          j        ddd|          t          j        z  }t          j        t          |                    t          j        z  }|                    t          j                  }d|idd|fii d}|d|	                    |          d}t          j        d	i |}	 ||	           d S )
Nr5   r  r   rx  r   r   ry  r   r   )rJ   r   r   r2   r   r|  r   r   r}  r{   r<   r>   )
r   r   r   r   rF   r   r   r   r   r   s
             r   	test_reprzTestDataArray.test_repr	  s     Aq"E222]_DIc%jj!!MO3DD!"" q#q? 
 
  W8M8MNN\++F++
 	Zr   r  r  r  zBcalling np.argmax as a function on xarray objects is not supportedr  zBcalling np.argmin as a function on xarray objects is not supportedr  r   r  z(median does not work with dataarrays yetr  r  r  r  r  r  r  r   ri  r   c                   |j         dk    rT|j        dk    rIt          j        t          j                  t          j        d          k     rt          j        d           t          j	        d          
                    |          |j         dk    rt          j        nt          j        z  }t          j        |d	          }|j                                        }d
|v r+|                    |                    d
                    |d<   t)           ||                    }t+           |t-          |                    |          } ||          }t/          ||           t1          ||           d S )Nr  r  r  r  r   r   r  r   r;  r   r   )rU   r  r   r  r   r  r  r  rJ   r   r   r   r2   r   r<   r>   r   r-   r  r  r_   ru   rc   r   r   )	r   r   r   rF   r   r  rA   r   r   s	            r   r  zTestDataArray.test_aggregation&	  sT   j I
c!!d.//'-2G2GGGL IJJJJ	"$$U++#yI55MOO=;V
 \u3777
{''))L  #-#:#:<;K;KE;R;R#S#SL  dd5kk**[%<%< = =uEEj!!8V,,,&)))))r   negater  r;  c                j   t          j        d                              |          t          j        z  }t          j        |          }t           ||                    }t           |t          |                    |          } ||          }t          ||           t          ||           d S Nr   rk   rJ   r   r   r   r2   r<   r>   r_   ru   rc   r   r
   r   r   r   rF   r   rA   r   r   s           r   test_unary_operationsz#TestDataArray.test_unary_operationss	  s     	"$$U++mo=\u---
dd5kk**[%<%< = =uEEj!!8V,,,6*****r   c                    d| z  S )Nr  r   r   s    r   r]  zTestDataArray.<lambda>	  
    1q5 r   multiplyc                    | | z   S r   r   r  s    r   r]  zTestDataArray.<lambda>	  r  r   addc                    | d         | z   S )Nr   r   r  s    r   r]  zTestDataArray.<lambda>	  s    1Q4!8 r   z
add scalarc                    | j         | z  S r   )Tr  s    r   r]  zTestDataArray.<lambda>	  s    137 r   zmatrix multiplyc                j   t          j        d                              |          t          j        z  }t          j        |          }t           ||                    }t           |t          |                    |          } ||          }t          ||           t          ||           d S r  r  r  s           r   test_binary_operationsz$TestDataArray.test_binary_operations	  s     	"$$U++mo=\u---
dd5kk**[%<%< = =uEEj!!8V,,,6*****r   
comparison	less_thangreater_equalequalr   r5   without_unitr   r   Nr   r   c           
        t          j        g d                              |          t          j        z  }t          j        |          }d}||z  }||t          j        urrt          j
        |          5   |||           d d d            n# 1 swxY w Y   t          j
        |          5   |||           d d d            n# 1 swxY w Y   d S  |||          }	d |                    |          rt          j        nd i}
|                    |           |t          |          t          t          ||
                              z  }t          ||	           t          ||	           d S )N)g333333$@g@g      @g       @gL5@gffffff@g?rk   r  )rJ   rF   r   r   r2   r<   r>   operatoreqr  r  checkrc   r   r   r
   )r   r  rN   r  r   rF   r   rV   to_compare_withr   expected_unitsr   s               r   test_comparison_operationsz(TestDataArray.test_comparison_operations	  s    , H:::;;BB5IIo 	 \u---
$, 8;!>!>u%% 3 3
5/2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 u%% 8 8
:7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 FJ885;;t3D3D N$O;;t$$zz
##o~FFGG(
 (
 

 	8V,,,6*****s$   7BBB/CCCzunits,errorc                   t          j        d                              |          |z  }t          j        |          }t          d          }|Bt          j        |          5  t          j        |           d d d            n# 1 swxY w Y   d S t           |t          t          |d t          j        i                              d t          j        i          } ||          }t          ||           t!          ||           d S )Nr   rk   sin)rJ   r   r   r<   r>   r   r  r  r  ru   rc   r   r   radiansr   r   r
   )	r   rA   r  r   rF   r   r   r   r   s	            r   test_univariate_ufuncz#TestDataArray.test_univariate_ufunc	  s;    	"$$U++e3\u---
u%% # #z"""# # # # # # # # # # # # # # # FD]:m>S7TUUVVWW=./
 
 j!!8V,,,6*****s   %BB
B
z2needs the type register system for __array_ufunc__z pint converts to the wrong units)r   r   c                   t           j        }t          j        d                              |          |z  }t          j        |          }|Ft          j        |          5  t          j	        |d|z             d d d            n# 1 swxY w Y   d S d |i}t          t          j	        t          |          t          t          d|z  |                              |          }t          j	        |d|z            }	t          ||	           t          ||	           t          j	        d|z  |          }	t          ||	           t          ||	           d S )Nr   rk   r5   )r   r2   rJ   r   r   r<   r>   r  r  r^  ru   rc   r   r   r
   )
r   rN   r  r   r   rF   r   r  r   r   s
             r   test_bivariate_ufuncz"TestDataArray.test_bivariate_ufunc	  s   & &	"$$U++m;\u---
u%% 1 1
:q4x0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 F.JJ''M!d(NCCDD  
 
 JD118V,,,6***AHj118V,,,6*****s   "BBBproperty)r  imagrealc                   t          j        d                              |          dt          j        ddd                              |          z  z                       dd          t
          j        z  }t          j        |d          }t          t          t          |          |          t          |                    }t          ||          }t          ||           t          ||           d S )	Nr   y              ?r   r   r   r   r   r;  )rJ   r   r   r   r   r   r   r<   r>   ru   r   rc   r_   r   r
   )r   r  r   rF   r   r   r   s          r   test_numpy_propertiesz#TestDataArray.test_numpy_properties
  s     If$$U++2;r1f--44U;;;<
'!R..=?+
 \u:>>>
K
++X66j8Q8Q
 
 X..8V,,,6*****r   r  r  r  c                Z   t          j        d                              |          t          j        z  }t          j        |d          }t           ||                    }t          t          |          |          } ||          }t          ||           t          ||           d S )Nr   r   r;  r  r  s           r   r  z TestDataArray.test_numpy_methods)
  s     	"$$U++mo=\u3777
dd5kk**J 7 7??j!!8V,,,6*****r   c                8   t          j        d                              |          t          j        z  }t          j        |          }t          dd          } |t          |                    t          j        z  } ||          }t          ||           d S )Nr   rk   r  r  )
rJ   r   r   r   r2   r<   r>   r   rc   r   )r   r   rF   r   r   r   r   s          r   	test_itemzTestDataArray.test_item9
  s    	"$$U++mo=\u---
fa  4J//00=?Bj!!!(F33333r   r   r  r   z,xarray does not implement __array_function__c                0   t          j        d                              |          t          j        z  }t          j        |          }t          t          ft          fd|j
        D                       }fd|j                                        D             }|:t          j        |          5   ||g|R i | d d d            n# 1 swxY w Y   d S t          |          t           ||g|R i |          }	fd|D             }
fd|                                D             }t!           |t#          |          g|
R i ||	          } ||g|R i |}t%          ||           t           j                            ||           d S )Nr   rk   c              3  "   K   | ]	}|z  V  
d S r   r   r%   rV   rN   s     r   r7   z2TestDataArray.test_searchsorted.<locals>.<genexpr>b
  '      88UEDL888888r   c                F    i | ]\  }}|t          |          r|z  n|S r   r   r%   r&   rV   scalar_typesrN   s      r   r'   z3TestDataArray.test_searchsorted.<locals>.<dictcomp>c
  F     
 
 
U *UL"A"AL%$,,u
 
 
r   c                J    g | ]}t          t          |                     S r   r  r%   rV   rA   s     r   r   z3TestDataArray.test_searchsorted.<locals>.<listcomp>p
  +    TTTe]5%%@%@AATTTr   c           	     R    i | ]#\  }}|t          t          |                    $S r   r  r%   r&   rV   rA   s      r   r'   z3TestDataArray.test_searchsorted.<locals>.<dictcomp>q
  A     
 
 
U ]5%8899
 
 
r   )rJ   r   r   r   r2   r<   r>   r  r  ro   r   r   r[   r  r  r_   ru   rc   r   rB  r   r   r   rN   r  r   rF   r   r   r   r  stripped_argsr-  r   r   r  rA   s     `           @@r   rC  zTestDataArray.test_searchsortedD
  s<   4 	"$$U++mo=\u---
U|8888di88888
 
 
 
 
"k//11
 
 

 u%% 2 2Z1$111&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Fj))&ttE'CD'C'C'CF'C'CDDTTTTtTTT
 
 
 
$llnn
 
 
  DZ((L=LLLOLL
 
 j242226228V,,,

""8V44444   7CCCr  r  r  r  )a_mina_maxc                   t          j        d                              |          t          j        z  }t          j        |          }t          t          ft          fd|j
        D                       }fd|j                                        D             }|:t          j        |          5   ||g|R i | d d d            n# 1 swxY w Y   d S t          |          t           ||g|R i |          }	fd|D             }
fd|                                D             }t!           |t#          |          g|
R i ||	          } ||g|R i |}t%          ||           t'          ||           d S )Nr   rk   c              3  "   K   | ]	}|z  V  
d S r   r   r  s     r   r7   z=TestDataArray.test_numpy_methods_with_args.<locals>.<genexpr>
  r  r   c                F    i | ]\  }}|t          |          r|z  n|S r   r  r  s      r   r'   z>TestDataArray.test_numpy_methods_with_args.<locals>.<dictcomp>
  r  r   c                J    g | ]}t          t          |                     S r   r  r  s     r   r   z>TestDataArray.test_numpy_methods_with_args.<locals>.<listcomp>
  r  r   c           	     R    i | ]#\  }}|t          t          |                    $S r   r  r  s      r   r'   z>TestDataArray.test_numpy_methods_with_args.<locals>.<dictcomp>
  r  r   )rJ   r   r   r   r2   r<   r>   r  r  ro   r   r   r[   r  r  r_   ru   rc   r   r
   r  s     `           @@r   test_numpy_methods_with_argsz*TestDataArray.test_numpy_methods_with_args~
  s4   4 	"$$U++mo=\u---
U|8888di88888
 
 
 
 
"k//11
 
 
 u%% 2 2Z1$111&1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Fj))&ttE'CD'C'C'CF'C'CDDTTTTtTTT
 
 
 
$llnn
 
 
  DZ((L=LLLOLL
 
 j242226228V,,,6*****r  r  r  r  c           	        t          j        ddt           j        dgt           j        dt           j        t           j        gdt           j        t           j        dgdt           j        ddgg          t          j        z  }t          j        |	          } |t          |                    } ||          }t          ||           t          ||           d S )
Nr  r  r  r  r  r  r  r  rk   )
rJ   rF   r`  r   r  r<   r>   rc   r   r
   r   r   r   rF   r   r   r   s          r   r  z*TestDataArray.test_missing_value_detection
  s    
 H#rvs+VS"&"&1"&"&#."&#s+	   ! 	 \u---
4J//00j!!8V,,,6*****r   z"ffill and bfill lose units in dataffillbfillc                   t          j        dt           j        dt           j        t           j        dg                              |          t          j        z  }t          j        t          |                    }t          j	        |d|id          }t           |t          |          d          t          |                    } ||d          }t          ||           t          ||           d S Nr  r  r  r   r  ri  )rJ   rF   r`  r   r   r  r   r|  r<   r>   ru   rc   r_   r   r
   )r   r   r   rF   r   r   r   r   s           r   test_missing_value_fillingz(TestDataArray.test_missing_value_filling
  s     Hc263<==DDUKK ! 	 Ic%jj!!\uc1XCHHH
DZ((c222M*4M4M
 
 jc***8V,,,6*****r   r   r   python_scalarnumpy_scalarnumpy_arrayc                   t           j        }t          j        dt          j        dt          j        t          j        dg                              |          |z  }t          j        |          }t          d          }||z  }	|;t          j
        |          5   |||	           d d d            n# 1 swxY w Y   d S t          |          }
t           |t          |          t          t          |	|
                              |
          } |||	          }t          ||           t!          ||           d S )Nr  r  r  rk   r  r  )r   r2   rJ   rF   r`  r   r<   r>   r   r  r  r_   ru   rc   r   r   r
   )r   r   rN   r  r   r   rF   r   r   rV   rA   r   r   s                r   test_fillnazTestDataArray.test_fillna
  s   * &Hc263<==DDUKK 	 \u---
hT!u%% . .Zu----. . . . . . . . . . . . . . . Fj))DJ''{=PU;V;V/W/W   	
 
 j...8V,,,6*****s   B44B8;B8c                   t          j        dt           j        dt           j        t           j        dg                              |          t          j        z  }t          j        t          |                    }t          j	        |d|idg          }t          |          }t          t          |                              d          |          }|                    d          }t          ||           t          ||           d S r  )rJ   rF   r`  r   r   r2   r   r|  r<   r>   r_   ru   rc   dropnar   r
   )r   r   rF   r   r   rA   r   r   s           r   test_dropnazTestDataArray.test_dropna  s    Hc263<==DDUKKo 	 Ic%jj!!\uc1XSEJJJ
j))J 7 7 > >3 > G GOO""s"++8V,,,6*****r   rN   c                   t          j        dt           j        dt           j        t           j        dg                              |          t          j        z  }t          j        |d          }t          j        dt           j        dg                              |          }||z  }d |                    |          rt          j        nd i}t          |          
                    t          t          ||                              |                    |          z  }|
                    |          }	t          ||	           t          ||	           d S )Nr  r  r  r   r;  )rJ   rF   r`  r   r   r2   r<   r>   r  rc   isinr   r   r
   )
r   rN   r   rF   r   
raw_valuesr  rA   r   r   s
             r   	test_isinzTestDataArray.test_isin   s'    Hc263<==DDUKKo 	 \u3777
XsBFC01188??
d"%++d*;*;E}Fz**//fe4455
 
KK ((8V,,,6*****r   maskingreplacing_scalarreplacing_arraydroppingc                   t           j        t          j        ddd                              |          z  t          j                  }|dz  k     }t          j        ddd                              |          z  }d|i|dz  d	||d	|d
dd}|                    |          }	fd|	                                D             }
|dvr=|;t          j
        |          5   |j        di |	 d d d            n# 1 swxY w Y   d S t           t          |          j        di |
t          |                    } |j        di |	}t          ||           t!          ||           d S )Nr   r5   r   rk         ?r=  r   r  r  rE  Tr  dropr  c                    i | ]<\  }}|t          t          |d                               rnd i                    =S r   )rc   r   r  )r%   r&   rV   rF   r   rN   s      r   r'   z,TestDataArray.test_where.<locals>.<dictcomp>[  sg      
  
  
 U D5;;t3D3D"N--$O   
  
  
r   r  r  r   )r   r2   rJ   r   r   r<   r>   r{   r[   r  r  r  ru   rc   r_   r   r
   )r   r   rN   r  r   r   	conditionrE  variant_kwargsr   kwargs_without_unitsr   r   rF   r   s     `          @@r   
test_wherezTestDataArray.test_where=  s     &Aq"%%,,U33mC\u---
}!44	BB''..u55<	*)2R$Y G G(1EBB!*D99	
 
  ##G,, 
  
  
  
  
  
 %llnn 
  
  
 111e6Gu%% + + 
 **6***+ + + + + + + + + + + + + + + F)K
##)AA,@AA*%%
 
 "!++F++8V,,,6*****s   ,DD
D
zuses numpy.vectorizec           
        t          j        dddt           j        dt           j        t           j        dg          t          j        z  }t          j        t          |                    }t          j        |d|id          }t          |          }t          t          |                              d          |          }|                    d          }t          ||           t          ||           d S )	Ng{Gzg?r  r  r  r   r  ri  )rJ   rF   r`  r   r2   r   r|  r<   r>   r_   ru   rc   interpolate_nar   r
   )r   rF   r   r   rA   r   r   s          r   test_interpolate_naz!TestDataArray.test_interpolate_nas  s     HeS#rvsBFBFCHIIo 	 Ic%jj!!\uc1XCHHH
j))J 7 7 F F3 F O OQVWW**s*338V,,,6*****r   c           
        t          j        d|          t          j        z  }t          j        |          |z  }t          j        |ddgddgddd	g
          }t          j        |ddgddgddd	g
          }|Ct          j        |          5  |	                    |           d d d            n# 1 swxY w Y   d S t          |          }t          t          |          	                    t          t          ||                              |          }	|	                    |          }
t          |	|
           t          |	|
           d S )Nr  rI  r   r   r   r   r   r   r   r  cr5   )rJ   rL  r   r2   rM  r<   r>   r  r  combine_firstr_   ru   rc   r   r   r
   )r   rN   r  r   rF   other_arrayr   rE  rA   r   r   s              r   test_combine_firstz TestDataArray.test_combine_first  s   * vU333moEl5))D0\c3Zr1g>>c3Z
 
 

 C:QF%C%C3PS*
 
 
 u%% 0 0((///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Fj))
##11M%7788  	
 
 ))%008V,,,6*****s   B33B7:B7	variationr@   rg   r\   r  r  z&the behavior of identical is undecidedc           
     |   d t          j        ddd                              |          }t          j        t	          |                                        |          }t
          j        }||dk    r|ndz  }||dk    r|ndz  }	||dk    r|ndz  }
|ddfd|dfdd|fd	}|                    |          \  }}}t          j	        ||	d
|
fdd
          }t          t          |          |||d          }t          |          t          |          t          fd                                D                       oIt          |                              t          t!          |t          |                                        }k    }|o|j        dk    p|} |||          }||k    sJ d S )Nc                ~    | | nd} ||nd}t          j        d          | z  }| |k    p|                    |          S )Nr5   r   )rJ   r   r  )r   r   rO   s      r   r!   z5TestDataArray.test_comparisons.<locals>.is_compatible  sI    ]A]Ay||a'H6.X^^A...r   r   r   r   r@   r5   rg   r\   r   r   r   r  )Nr   r   c              3  H   K   | ]} |         |                   V  d S r   r   )r%   rU   r!   other_unitsrA   s     r   r7   z1TestDataArray.test_comparisons.<locals>.<genexpr>  sI       
 
>BMM%+{4'899
 
 
 
 
 
r   r  )rJ   r   r   r   r|  r   r2   r{   r<   r>   ru   rc   r_   r  keysr  r   rU   )r   r   r  rN   r   r@   r{  r  rF   r   r   
variationsr   r   r   r   rE  equal_arraysequal_unitsr   r   r!   r  rA   s                        @@@r   r  zTestDataArray.test_comparisons  s%   @	/ 	/ 	/ {1a$$++E22	#d))$$++E22!O	Y&%8%8		a@)v"5"5YY1=)x"7"7YYQ? 1aLaL!Tl
 


 +5..*C*C'	8Z\u1C85L5LSVWWW

##IH:%V%V
 
 j))#E** 
 
 
 
 
 
FKjjll
 
 
 
 
 
 
##**M%z1J1JKKLL  	 {*MTY+%=%Lj%((6!!!!!!r   c                   t           j        }||fddfd||fdfdd||ffd}|                    |          \  \  }}\  }}	\  }
}t          j        ddd                              dd                              |          |z  }t          j        ddd                              dd                              |          |z  }t          j        d          |z  }t          j        d          |	z  }t          j        dg          |z  }t          j        d          |	z  }t          j        ddd          |
z  }t          j        ddd          |z  }t          j
        |||d|fd	d
          }t          j
        |||d|fd	d
          }t          t          |                              t          |                    t          |                    }|                    |          }t          ||           t!          ||           d S )Nr  r   r5   r  r   rA  r  r   r   r   r  )r   r2   r{   rJ   r   r   r   r   rF   r<   r>   ru   rc   broadcast_liker_   r   r
   )r   r   rN   r   r   r   r  r  r!  r"  r#  r$  r   r   rC  rD  r%  r&  r'  r(  rk  rl  r   r   s                           r   test_broadcast_likez!TestDataArray.test_broadcast_like  s(   * & $T*FF;mT2F;vt'<=
 
 LL!!		
$Z"Y	&[+ Q5))11!Q77>>uEE
RQ5))11!Q77>>uEE
RYq\\I%Yq\\I%Xqc]]Y&Yq\\I%[Aq!!K/[Aq!!K/|brb	 B B
 
 
 |brb	 B B
 
 
  ,,[->->??tATAT
 
 $$T**8V,,,6*****r   c                   t          j        d|          t          j        z  }t          j        d|          |z  }t	          j        |d          }t	          j        |d          }i t          |          |                    |          ri nd d i}t          |          	                    t          t          ||                              |                    |          z  }|	                    |          }	||	k    sJ d S )Nr  rI  r  r   r;  r   )rJ   r  r   r2   r<   r>   r_   r  rc   r  r   )
r   rN   r   r  r  r  r  rA   r   r   s
             r   r   z#TestDataArray.test_broadcast_equals=  s    W6777-/I
gD666=|*===+C888
D!!
%%d++=rr$
 t$$55eU3344
 
T""# &&u--6!!!!!!r   c                   t          j        ddd                              |          t          j        z  }t          j        |d          }t          |          }t          t          |          
                    d          |          }|
                    d          }t          ||           t          ||           d S )Nr   r   r   r   r;  rH  r  )rJ   r   r   r   r2   r<   r>   r_   ru   rc   rd  r   r	   )r   r   rF   r   rA   r   r   s          r   rg  zTestDataArray.test_padY  s    Aq"%%,,U33moE\u3777
j))J 7 7 ; ;f ; E EuMM&))8V,,,Xv&&&&&r   pipec                    | dz  S Nr   r   )das    r   r]  zTestDataArray.<lambda>r  
    b2g r   assign_coordsr   r   )rt  assign_attrsrV   attr1renamers  r   	swap_dimsr   expand_dimsrW  r   rr  )r   r   	drop_varsreset_coordsr+  r-   r   c                L   t           j        }|ddfd|dfdd|fd}|                    |          \  }}}t          j        ddd                              dd                              |          |z  }	t          j        |	j        d                   |z  }
t          j        |	j        d                   |z  }t          j        dd|	j        d                   |z  }t          j
        d|	|
d|f|d	d
          }d |j                                        D             }t          |          }t          |dd           |d<   t          |dd           |d<   t           |t!          |          fi ||          } ||          }t#          ||           t%          ||           d S )Nr5   r   r   r   r   r   r   r   )r   r   r   r   rj   c                4    i | ]\  }}|t          |          S r   )rG   r   s      r   r'   z;TestDataArray.test_content_manipulation.<locals>.<dictcomp>  s4     
 
 
.8c5C"5))
 
 
r   rA   r   rs  )r   r2   r{   rJ   r   r   r   r   rJ  r<   r>   r   r[   r_   r   ru   rc   r   r
   )r   r   r   r   rN   r   r   r   r   rO   r   r   r   r   r-  rA   r   r   s                     r   test_content_manipulationz'TestDataArray.test_content_manipulatione  s   J  1aLaL!Tl
 

 +3,,w*?*?'	8Z;q"f--55a<<CCEJJYVIhnQ'((83IhnQ'((83K1hnQ/00:=\#q22	
 
 


 
<@K<M<M<O<O
 
 
 j))Q..c
Q..c
[%<%< P P P PRWXXj!!8V,,,6*****r   	with_unitc                |   t          j        ddd|          t          j        z  }t          j        d          }t          j        |d          }t          t          |          	                    |          d |i          }|	                    ||z            }t          ||           t          ||           d S )Nr   r   r   rx  r   r;  rk   )rJ   r   r   pascalr   r<   r>   ru   rc   r-   r   r
   )r   rN   r   rO   r   r   r   r   s           r   rS  zTestDataArray.test_copy  s     ;q"b6669MM9R==\xc:::

##((h(77$
 
 ho668V,,,6*****r   indicesr@  single indexr  multiple indicesc                   t          j        d                              |          t          j        z  }t          j        |d          }t          t          |          	                    |          t          |                    }|	                    |          }t          ||           t          ||           d S )Nr   r   r;  r  )rJ   r   r   r   r   r<   r>   ru   rc   r  r_   r   r
   )r   r  r   rF   r   r   r   s          r   r	  zTestDataArray.test_isel  s     	"$$U++mo=\u3777

##((7(33]:5N5N
 
 7++8V,,,6*****r   r  single_valuer   r   r  list_of_valuesr	  r  r  rr  array_of_valuesno_unitsc                $   t          j        ddd                              |          t          j        z  }t          j        t          |                    t          j        z  }t          j        |d|id          }||z  }|ut          |t          t          f          r|                    |          sDt          j        |          5  |                    |           d d d            n# 1 swxY w Y   d S t!          t#          |                              t#          t%          |d |j        i                              t)          |                    }	|                    |          }
t+          |	|
           t-          |	|
           d S Nr   r   r   r   r  r  )rJ   r   r   r   r2   r   r|  r<   r>   r   r  r  r  r  r  selru   rc   r   rA   r_   r   r
   r   r  rN   r  r   rF   r   r   r  r   r   s              r   test_selzTestDataArray.test_sel  s   ( Ar2&&--e44}FIc%jj!!MO3\uc1XCHHH
d"zC<00 56WWT]]  u%% ) )((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) F
##''mFT5;4GHHII (   *%%	
 
 &))8V,,,6*****   
C--C14C1c                   t          j        ddd                              |          t          j        z  }t          j        t          |                    t          j        z  }t          j        |d|id          }||z  }|nt          |t          t          f          r|                    |          s=t          j        |          5  |j        d|i          d d d            n# 1 swxY w Y   d S t!          t#          |          j        dt#          t%          |d |j        i                    i         t)          |                    }	|j        d|i         }
t+          |	|
           t-          |	|
           d S )Nr   r   r   r   r  )rJ   r   r   r   r2   r   r|  r<   r>   r   r  r  r  r  r  locru   rc   r   rA   r_   r   r
   r$  s              r   test_loczTestDataArray.test_loc  s   ( Ar2&&--e44}FIc%jj!!MO3\uc1XCHHH
d"zC<00 56WWT]]  u%% . .V}--. . . . . . . . . . . . . . . F
##'k-u{8K"L"LMMN *%%	
 
 f.8V,,,6*****s   
C&&C*-C*c                $   t          j        ddd                              |          t          j        z  }t          j        t          |                    t          j        z  }t          j        |d|id          }||z  }|ut          |t          t          f          r|                    |          sDt          j        |          5  |                    |           d d d            n# 1 swxY w Y   d S t!          t#          |                              t#          t%          |d |j        i                              t)          |                    }	|                    |          }
t+          |	|
           t-          |	|
           d S r"  )rJ   r   r   r   r2   r   r|  r<   r>   r   r  r  r  r  r  drop_selru   rc   r   rA   r_   r   r
   r$  s              r   test_drop_selzTestDataArray.test_drop_sel2  s   ( Ar2&&--e44}FIc%jj!!MO3\uc1XCHHH
d"zC<00 56WWT]]  u%% . .##f#---. . . . . . . . . . . . . . . F
##,,mFT17ODDEE -   *%%	
 
 $$v$..8V,,,6*****r&  r   r#  rJ  r   r   nothing_squeezabler   r   r5   last_dimension_squeezabler   r5   r   middle_dimension_squeezabler5   r   r   first_dimension_squeezabler5   r   r5   r   #first_and_last_dimension_squeezablec           
     V   d}t          t          ||                    }d}t          j        d                              |                              |          t          j        z  }t          j	        |t          |d t          |                                       }|dk    r|                    |d          dk    rd|ini }t           t          |          j        di |t!          |                    }	 |j        di |}
t#          |	|
           t%          |	|
           d S )	Nxyztr  r;  r  r   r5   r   r   )r(  r)  rJ   r   r   r   r   Jr<   r>   r:   r|  r{   ru   rc   r*  r_   r   r
   )r   rJ  r   r   r+  r,  rF   r   r   r   r   s              r   r-  zTestDataArray.test_squeeze_  s'    3ue,,--	'""))%0088??-/Q\u5|U|9L3M3MNNN
!$+//#q2I2IQ2N2N%TV+K
##+55f55}Z7P7P
 
 $#--f--8V,,,6*****r   headr  r   tailthinc                \   t          j        ddd                              dd          t          j        z  }t          j        |d          }t           |t          |                    t          |                    } ||          }t          ||           t          ||           d S )Nr5   r  r   r   r   r   r;  )rJ   r   r   r   r  r<   r>   ru   rc   r_   r   r
   r  s          r   test_head_tail_thinz!TestDataArray.test_head_tail_thin{  s     Aq&))11"a88=;MM\u:>>>
DZ(())=+D+D
 
 j!!8V,,,6*****r   r@   r\   interp
uses scipyreindexc                L   t           j        dfdt           j        fd}|                    |          \  }}t          j        ddd                              |          |z  }t          j        d          |z  }t          j        d          }	t          j        d          dz   }
t          j        ||	d|fdd          }t          |          }t           |t          |          |
	          |          } |||
	          }t          ||           t          ||           d S )
Nr5   r?  r  r   r  r   r   r\   rg   r  )r   r2   r{   rJ   r   r   r   r<   r>   r_   ru   rc   r   r   )r   r   r   r   r   r   r   rF   r   r   new_xr   rA   r   r   s                  r   test_interp_reindexz!TestDataArray.test_interp_reindex  s"    #_a(-/*
 
 !)W 5 5	:Aq"%%,,U33i?IbMMJ&IbMM	"#\%asAh0G0GcRRR
j))[%<%< F F FNNjE***8V,,,&)))))r   c                   t          j        ddd                              |          }t          j        d          t          j        z  }t          j        d          dz   |z  }t          j        |d|id          }|;t          j	        |          5   |||           d d d            n# 1 swxY w Y   d S t          |          }	t           |t          |          t          t          |d t          j        i                              |	          }
 |||          }t          |
|           t          |
|           d S )Nr5   r  r   r  r   rD  r  )rJ   r   r   r   r   r2   r<   r>   r  r  r_   ru   rc   r   r   r
   )r   r   rN   r  r   rF   r   rE  r   rA   r   r   s               r   test_interp_reindex_indexingz*TestDataArray.test_interp_reindex_indexing  s   & Aq"%%,,U33IbMMMO+2$,\%asCCC
u%% * *Z5))))* * * * * * * * * * * * * * * Fj))DJ''mED-/3JKKLL   
 
 jE***8V,,,6*****s   B..B25B2interp_likereindex_likec                   t           j        dfdt           j        fd}|                    |          \  }}t          j        ddd                              |          |z  }t          j        d          |z  }t          j        d          }	t          j        dd          dz   }
t          j        ||	d|fdd	          }t          j        t          j	        |
          d|
id	          }t          |          }t           |t          |          |          |          } |||          }t          ||           t          ||           d S )
Nr5   r?  r  r   r=  r  r   r   rD  )r   r2   r{   rJ   r   r   r   r<   r>   
empty_liker_   ru   rc   r   r   )r   r   r   r   r   r   r   rF   r{  r   rE  r   rE  rA   r   r   s                   r   test_interp_reindex_likez&TestDataArray.test_interp_reindex_like  sE    #_a(-/*
 
 !)W 5 5	:Aq"%%,,U33i?	"
*IbMM	"a  3&\%asEl0K0KRUVVV
R]5113,SQQQj))[%<%<e D DeLLj%((8V,,,&)))))r   c                   t          j        ddd                              |          }t          j        d          t          j        z  }t          j        dd          dz   |z  }t          j        |d|id          }t          j        t          j        |          d|id          }	|:t          j
        |          5   |||	           d d d            n# 1 swxY w Y   d S t          |          }
t           |t          |          t          t          |	d t          j        i                              |
          } |||	          }t          ||           t!          ||           d S )	Nr5   r  r   r=  r  r   rD  rg   )rJ   r   r   r   r   r2   r<   r>   rL  r  r  r_   ru   rc   r   r   r
   )r   r   rN   r  r   rF   r   rE  r   rE  rA   r   r   s                r   !test_interp_reindex_like_indexingz/TestDataArray.test_interp_reindex_like_indexing  s   & Aq"%%,,U33IbMMMO+2q!!C'4/\%asCCC
R]511C<cJJJu%% ( (Z'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( Fj))DJ''M%$1HIIJJ  
 
 j%((8V,,,6*****s    CC CrJ  reset_indexreorder_levelsc                p   t          j        ddd                              dd                              |          t          j        z  }t          j        |j        d                   }t          j        |j        d                   }t          j	        d|||dd          }|
                    d	          }t           |t          |                    dt          j        i          } ||          }	t          ||	           |j        d
k    rt          ||	d           d S t          ||	           d S )Nr   r   r   r   r5   r@   r   rj   rE  rQ  Fcheck_default_indexes)rJ   r   r   r   r   r2   r   rJ  r<   r>   rF  ru   rc   r   rU   r
   )
r   r   r   rF   r   r   r   stackedr   r   s
             r   test_stacking_stackedz#TestDataArray.test_stacking_stacked'  s-    K2v&&..q"55<<UCCmoU 	 Iek!n%%Iek!n%%\e!!,<,<:
 
 

 ""Z"00[%9%9 : :V]_<UVVg8V,,,9%%XvUKKKKKKXv.....r   c                "   t          j        ddd                              dd                              |          t          j        z  }t          j        |j        d                   t          j        z  }t          j        |j        d                   t          j	        z  }t          j        |||dd                              d          }t          d	d
          }t           |t          |                    d|j        it#          t%          |j        |j        gt)          |          z                                                    d |D                       } ||          }t-          ||           t/          ||           d S )Nr   r   r   r   r5   r   r  rE  to_unstacked_datasetrW  ri  r   c                    i | ]
}|j         |S r   )rE   rm   s     r   r'   z;TestDataArray.test_to_unstacked_dataset.<locals>.<dictcomp>S  s    5554$.$555r   )rJ   r   r   r   r   r  r   rJ  r2   r   r<   r>   rF  r   ru   rc   rA   r(  r)  rE   r|  r
  r   r
   )	r   r   rF   r   r   r   r   r   r   s	            r   test_to_unstacked_datasetz'TestDataArray.test_to_unstacked_datasetA  sw    K2v&&..q"55<<UCC"# 	 Iek!n%%7Iek!n%%7\QQ//j
 
 

%*%

 	 ,#666DZ(())!'LT#akEK=3q663I"J"JKKL
 
 &551555
6
6 	 j!!8V,,,6*****r   r>  rF  r   	set_indexrD  r  r<  r  r5  r6  r7  Fr   roll_coordssortbyc           	        t          j        ddd                              ddd                              |          t          j        z  }t          j        |j        d                   }t          j        |j        d                   }t          j        |j        d                   }t          j        dd|j        d                   d d d         }t          j	        d||||d	|fd
d          }t           |t          |                    d t          j        i          }	 ||          }
t          |	|
           t          |	|
           d S )Nr   r   d   r  r   r5   r   r@   r   r   r   rW  rD  rV  rj   )rJ   r   r   r   r   r2   r   rJ  r<   r>   ru   rc   r   r
   )r   r   r   rF   r   r   rW  rD  r   r   r   s              r   test_stacking_reorderingz&TestDataArray.test_stacking_reorderingY  s:   $ K2z**221a<<CCEJJo 	 Iek!n%%Iek!n%%Iek!n%%[Au{1~..ttt4\3)<< 	
 
 

  [%<%< = =mo?VWWj!!8V,,,6*****r   differentiater   	integratecumulative_integratec                v   t           j        }t           j        }d|dfdd|fd}|                    |          \  }}}	t	          j        ddd                              dd                              |          |z  }
t	          j        |
j	        d                   |z  }t	          j        |
j	        d                   |z  }t	          j        dd|
j	        d                   |	z  }t          j        |
||d|fd	d
          }t          |          }|                    t           ||j        t          ||          j        d                               t!           |t#          |          t#          |                    |          } |||          }t%          ||           t'          ||           d S )Nr   r5   r   )rg   r\   r   r   r   r   r   r   r  )r   r{  )r   r2   r   r{   rJ   r   r   r   r   rJ  r<   r>   r_   r.   r@   r   ru   rc   r   r
   )r   r   r   r   r   rN   r   r{  r   r   rF   r   r   r   r   rA   r   r   s                     r   test_differentiate_integratez*TestDataArray.test_differentiate_integrate  s   & "O	 $NAtn
 
 '/ll7&;&;#xAr6**221b99@@GG)SIek!n%%0Iek!n%%0K1ek!n--
:\QQc1X>>Z
 
 

 j))OJ..3   	
 	
 	
  DZ((E0B0BCCC
 
 j...8V,,,6*****r   diffr0  r1  r2  r3  r:  r   r   c                ,    |                      |           S r   )r  r  s    r   r]  zTestDataArray.<lambda>  s    15588 r   
method_dotc           	     l   t           j        }|ddfd|dfdd|fd}|                    |          \  }}}t          j        ddd                              dd                              |          |z  }	t          j        |	j        d                   |z  }
t          j        |	j        d                   |z  }t          j        dd|	j        d                   |z  }t          j
        |	|
|d|fdd	
          }t          |          }t          |t          t          f          s>|                    t           ||	                    d                                         t!           |t#          |                    |          } ||          }t%          ||           t'          ||           d S )Nr5   r   r   r   r   r   r   r   r   r  r   )r   r2   r{   rJ   r   r   r   r   rJ  r<   r>   r_   r   r   r   r.   ru   rc   r   r
   r   r   r   r   rN   r   r   r   r   rF   r   r   r   r   rA   r   r   s                    r   r@  zTestDataArray.test_computation  s   *  1aLaL!Tl
 

 +3,,w*?*?'	8ZAr6**221b99@@GG)SIek!n%%0Iek!n%%0K1ek!n--
:\QQc1X>>Z
 
 


 j))$6 233 	ALLttEMM",=,='>'>??@@@[%<%< = =uEEj!!8V,,,6*****r   r   groupby_binsbinsr.  )r   rollingz6numpy.lib.stride_tricks.as_strided converts to ndarrayrolling_exp+numbagg functions are not supported by pintweightedr   r;  c                   t           j        }|ddfd|dfdd|fd}|                    |          \  }}}t          j        ddd                              dd                              |          |z  }	t          j        g d          |z  }
t          j        |	j	        d                   dz  |z  }t          j        ddd          |z  }t          j        |	|
|d	|fd
d          }t          |          }t           |t          |                                                    |          } ||                                          }t!          ||           t#          ||           d S )Nr5   r   r   r   r   r   )r   r   r5   r  r  r  r   r   r   r  )r   r2   r{   rJ   r   r   r   rF   r   rJ  r<   r>   r_   ru   rc   r   r   r   rp  s                    r   test_computation_objectsz&TestDataArray.test_computation_objects  s|   B  1aLaL!Tl
 

 +3,,w*?*?'	8ZAr6**221b99@@GG)SH___%%0Iek!n%%)H4K1a  :-\QQc1X>>Z
 
 

 j))[%<%< = = B B D DeLLj!!&&((8V,,,&)))))r   c                   t          j        ddd                              |          t          j        z  }t          j        dt          |          d          }t          j	        |d|id          }t          |          }t          d	d
          }t           |t          |                                                    |          } ||                                          }t          ||           t!          ||           d S )Nr   r   r   
10-09-20101yperiodsfreqtimer  resample6mr  )rJ   r   r   r   r2   pd
date_ranger|  r<   r>   r_   r   ru   rc   r   r   r
   )	r   r   rF   r  r   rA   r   r   r   s	            r   test_resamplezTestDataArray.test_resample+  s    Aq"%%,,U33moE}\3u::DIII\ufd^&QQQ
j))jt,,,[%<%< = = B B D DeLLj!!&&((8V,,,6*****r   rE  r)   lastr1  r  r2  r4  r   c                n   t           j        }|ddfd|dfdd|fd}|                    |          \  }}}t          j        ddd                              dd                              |          |z  }	t          j        |	j        d                   |z  }
t          j        |	j        d                   dz  |z  }t          j        dd|	j        d                   |z  }t          j
        |	|
|d|fd	d
          }i t          |          t           j        d d}d |j                                        D             }t           |t!          |                              d          fi ||          } ||                    d                    }t%          ||           t'          ||           d S )Nr5   r   r   r   r   r   r  r   r   r   r  )rW  r4  c                    i | ]C\  }}|t          |t                    st          |          nt          d  |D                       DS )c              3  4   K   | ]}t          |          V  d S r   rb   rm   s     r   r7   zCTestDataArray.test_grouped_operations.<locals>.<dictcomp>.<genexpr>g  s*      ??;t,,??????r   )r   r:   rc   r   s      r   r'   z9TestDataArray.test_grouped_operations.<locals>.<dictcomp>c  sh     
 
 
 U !%//@E"""???????	
 
 
r   r   )r   r2   r{   rJ   r   r   r   r   rJ  r<   r>   r_   r   r   r[   ru   rc   r   r   r
   )r   r   r   r   rN   r   r   r   r   rF   r   r   r   r   rA   r-  r   r   s                     r   test_grouped_operationsz%TestDataArray.test_grouped_operations:  s   *  1aLaL!Tl
 

 +3,,w*?*?'	8ZAr6**221b99@@GG)SIek!n%%0Iek!n%%)H4K1ek!n--
:\QQc1X>>Z
 
 

 S=,,RmoD0Q0QR
 
 #k//11
 
 
  DZ((0055IIII5
 
 j((--..8V,,,6*****r   )Yr   r   r   r  rk  rl  r   rq  r~  r  rm  r  r   r   r  r  negr  rJ   r;  r  r  ltger  rI   r   r   ro  r   mmr2   r  degreer  r  r  r  r  r  rp  rC  r  r  r  rF   r  r  r  r  r  r  r  r  r   rg  r   r   rn  r  r  rS  r	  KeyErrordmr%  r)  r,  r-  r>  rF  rH  rM  rP  rW  r[  rd  gradientr   cumulative_trapezoidtrapzrj  r  r@  r<   r>   ry  r  r  r   r   r   rs  rs    s#       [FLk&&.K&LL   	

 

 

 

. [ce,,,lfl4F.K.K.KL  [FLk&&.K&LL   FL''FL)**	

 
 
 
 $ [HUOOHUOOFL""k&&  '     FL""k&&  '     HUOOHVFL""k&&E '     HUOOHVHUOOHUOOHUOOHXHYF5MMF5MMF8%%%F8%%%F5MMF6NNF8F5MMF6NNF5MMF5MMF5MMF8F9[.	
^ c  2 2f* *g2 2f*4 [FL(333FL,,,FLg...	
 	+ 	+ 	+ [FLZ888FLU333FL++===FL**/@AAA		
 	+ 	+ 	+ [FL555FL999FL111	
  [FLJ>:::FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
 + +  (+> [FL4dOOOFL*=BUVVVFL-t8IJJJ	
 + + +* [RSS[FL/NCCCFL+-@_   FL*=BUVVVFL $k''/Q'RR	   FL$3CDDD	
 "+ +#  TS$+8 [Z)>??+ + @?+  [		**FF;,?,?Q   
	+ 	+ 
	+	4 	4 	4 [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
  [F>1%%FL++k''I (    	
    5 5  25B [F6qa(((FLq222k''I (    	
     [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
 + +  2+@ [!!66)#4#4ffWooFD   + + +( [BCC[VffWoovvg%GTRR+ + SR DC+  [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
  [FL000FL".999FL2$M:::	
 + +  (+:+ + + [FLy)))FL4IIIFL-@AAAFL).?@@@FL-=>>>	
	 	+ +	 	+& [Q  [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
 %+ %+  %+N [455+ + 65+ [FL/I>>>FL+-@_   FL*=BUVVVFL $  
 FL#  	
 (+ +) (+: [FLy)))FL4IIIFL-@AAAFL).?@@@FL-=>>>	
	 	 [FLfk..6S.TT   	
	 	 [F8FL{##k&&.V&WW  	
   
 
," ,"
 
	 		 	>,"\ [FLy)))FL4IIIFL-@AAAFL).?@@@FL-=>>>	
	 	 [FLfk..6S.TT   	
	 	&+ &+	 		 	(&+P [FLy)))FL4IIIFL-@AAAFL).?@@@FL-=>>>	
	 	" "	 	"$
' 
' 
' [FLfk..6S.TT   	
	 	 [F6--..F?sIBIbMMM<L,L&MNNNF>111F8s###FL{S#J//k&&.K&LL   FL!kbk"b"55GH  
 k&&.K&LL   F;$$F>---F6NNF8RZ(()	
, 1   4!+ !+5 	 	H!+F [FLy)))FL4IIIFL+<<<	
 + + + [FL~...FL*<===	
 + + + [:;;[FL///FL)9:::FL---005FGGG	
  [FLH444FL4h?SSSFL-x<OPPPFL)88IJJJFL$3CDDD	
	 	+ +	 	  <;&+4 [:;;[FL///FL)9:::FL---005FGGG	
  [FLH444FL4h?SSSFL-x<OPPPFL)88IJJJFL$3CDDD	
	 	+ +	 	  <;&+4 [:;;[FL///FL)9:::FL---005FGGG	
  [FLH444FL4h?SSSFL-x<OPPPFL)88IJJJFL$3CDDD	
	 	+ +	 	  <;&+4 [U$?@@[FL&:;;;FL)DEEEFL)FGGGFL)EFFFFL,QRRR	
	 	+ +	 	 A@+" [	!q	!	!	!66&A#;#;#;VVFaST=U=U=UV   
+ + 
+ [Y(:;;[FLx  (9(9(9(N(N   F9		
   	 	* *	 	 <;** [:;;[FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
  [			66),,-   
+ +   <;$+2 [Y(:;;[FL}%%V[->->l->-S-S   F>""		
   	 	* *	 	 <;*, [:;;[FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
  [			~ 6 67   
+ +   <;$+6 [				FF=#66?O8P8PQ   
/ / 
/* [:;;+ + <;+. [F;S#..F7j)))F;$'''F7a   FLv3'''k&&.T&UU   F6QE222F8T""	
     + +!  +. [FLfk..6S.TT   		
  [F?"+>>>F;n.QRRRF)9MNNN	

    '+ '+  $'+R [FLfk..6S.TT   	
	 	 [F6s###F:$...F8"&c222FL++===		
   	 	+ +	 		 	(+@ [FLfk..6S.TT   	
	 	 [F9c""F>3Q///F9"""FLyA&&&k''S (     FL}***k''H (     F:|r|Q21F1FSQQQRR!	
$ )   ,* *- 	 	@*8+ + + [FLfk..6S.TT   	
	 	 [F?sIBIaLL=?,J&KLLLF7OOF6NNF:!2!2!2<<<		
   	 	#+ #+	 		 	(#+ #+ #+r   rs  c                  0   e Zd Zej                            d ej        dej        d           ej        e	j
        ej        d           ej        e	j        ej        d           ej        e	j        dd           ej        e	j        dd	          f          ej                            d
d ej        dej                            d                    df          d                         Zej                            d ej        ed           ej        ed          f          ej                            dd ej        dej                            d                    df          d                         Zej                            d ed           ed           edd           edd           ed           ed           ed            ed!           ed"           ed#           ed$           ed%           ed&           ed'          fe(          d)             Zej                            d*d+          d,             Zej                            d ed-e           ed.           ed/           ed0           ed1          fe(          d2             Zej                            d ed3d4d56          fe(          ej                            d ej        ded           ej        e	j
        ed           ej        e	j        ed           ej        e	j        dd           ej        e	j        dd7          f          d8                         Zej                            d ed9           ed:           ed;          fe(          d<             Zej                            d=          ej                            d ed>           ed?          fe(          d@                         Zej                            d ej        ded           ej        e	j
        ed           ej        e	j        ed           ej        e	j        dd           ej        e	j        dd7          f          ej                            dA ej        dBdC           ej         ej        dB          dD           ej         ej        dBg          dE          f          dF                         Z dG Z!ej                            dH ej        dd           ej        e	j
        d           ej        e	j        d           ej        e	j        d           ej        e	j        d	          f          dI             Z"ej                            ddJ          ej                            d ej        ded           ej        e	j
        ed           ej        e	j        ed           ej        e	j        dd           ej        e	j        dd	          f          dK                         Z#ej                            dL          dM             Z$ej                            d ej        ded           ej        e	j
        ed           ej        e	j        ed           ej        e	j        dd           ej        e	j        dd	          f          ej                            dd ej        dej                            d                    f          dN                         Z%ej                            dH ej        dd           ej        e	j
        d           ej        e	j        d           ej        e	j        d           ej        e	j        d7          f          ej                            dd ej        dej                            d                    df          ej                            d edO           ej         edP          ej                            dQ                    fe(          dR                                     Z&ej                            dH ej        dd           ej        e	j
        d           ej        e	j        d           ej        e	j        d           ej        e	j        d7          f          ej                            dd ej        dej                            d                    f          dS                         Z'ej                            dH ej        dd           ej        e	j
        d           ej        e	j        d           ej        e	j        d           ej        e	j        d7          f          dT             Z(dU Z)ej                            d edV           edWdX           edY          fe(          ej                            dd ej        dej                            d                    f          dZ                         Z*ej                            d[          d\             Z+ej                            d ed]d^dd_d`           edadbc           edddef           edgdhf           ej         edid          ej                            dj                     edkdhdlm           ednde          fe(          do             Z,ej                            dp ej        dqdr           ej        g dsdt          f          du             Z-ej                            d          ej                            dv ej        dwdx           ej        g dydz           ej         ej        g d{          d|          f          ej                            d ej        de.d}           ej        e	j
        e.d           ej        e	j/        e.d           ej        e	j        e.d           ej        e	j        dd7          f          d~                                     Z0ej                            d          ej                            dv ej        dwdx           ej        g dydz           ej         ej        g d{          d|          f          ej                            d ej        de.d}           ej        e	j
        e.d           ej        e	j/        e.d           ej        e	j        e.d           ej        e	j        dd7          f          d                                     Z1ej                            d          ej                            dv ej        dwdx           ej        g dydz           ej         ej        g d{          d|          f          ej                            d ej        de.d}           ej        e	j
        e.d           ej        e	j/        e.d           ej        e	j        e.d           ej        e	j        dd7          f          d                                     Z2ej                            d eddd4d           eddd4d           eddd4d          fe(          ej                            dd ej        dej                            d                    df          d                         Z3ej                            dd          ej                            d ej        dd           ej        dd           ej        dd           ej        dd           ej        dd          f          d                         Z4ej                            dd          ej                            d ej         ed          ej                            d                     ed          fe(          d                         Z5ej                            d          ej                            d ej        ded           ej        e	j
        ed           ej        e	j        ed           ej        e	j        dd           ej        e	j        dd7          f          ej                            d ed           ed          fe(          d                                     Z6ej                            dd          ej                            d ej         ed          ej                            d                     ed          fe(          d                         Z7ej                            d          ej                            d ej        ded           ej        e	j
        ed           ej        e	j        ed           ej        e	j        dd           ej        e	j        dd7          f          ej                            d ed           ed          fe(          d                                     Z8ej                            d edd           edd           edd           edddg           edej9        d           edej:                  fe(          ej                            dd ej        dej                            d                    df          d                         Z;ej                            d edd           edddh           eddhf           ej         edd4f          ej                            d                     ej         edd4f          ej                            d                     ed ej<         ej=        ddd          d^                    fe(          ej                            dd ej        dej                            d                    df          d                         Z>ej                            dd ej        dej                            d                    df          d             Z?ej                            d edd            edd ej@        d          e	j        z  f           ed           ed           edg dd¦          fe(          ej                            dd ej        dej                            d                    df          dÄ                         ZAej                            d eddń            eddƄ Ǧ           edd^ ej@        dq          e	j        z  fȦ           eddʬ˦           eddͬΦ           eddЬ           eddҬf           edddi           ej         ed ej=        dwddצ          e	j        z  dئ          ej                            d                     edd           eddۦ           eddݬަ           eddeަ           ed          fe(          ej                            dd ej        dej                            d                    df          d                         ZBej                            d ej        dej        d           ej        e	j
        ej        d           ej        e	j        ej        d           ej        e	j        ej        d           ej        e	j        dd7          f          ej                            dd ej        dej                            d                    df          d                         ZCdS )TestDatasetr   r5   r   r   r   r   Nr   	same_unitsharednothingrg   r   r   r   r\   c                D   t           j        }t           j        }t          j        ddd                              |          t           j        z  }t          j        ddd                              |          t           j        z  }t          j        |j	        d                   }	|	|z  }
|

                    |          }t          j        |j	        d                   }||z  }t                               ||          r||k    r|
                    |          n|dz  }i i fd|
id|if|	d|fd|d|fdfd}|                    |          \  }}|d	k    rdnd
\  }}t          j        |||          }t          j        |||          }|L|d	k    rFt          j        |          5  t          j        ||d           d d d            n# 1 swxY w Y   d S t          j        ||d          }t%          t'          |                    d                    t'          |                    d                              }t+          t          j        t-          |          t-          |          d          |          }t/          ||           t1          ||           d S )Nr   r5   r   r   i  r   r   )r  rg   r\   r  )r   r   r  r   r  r   r   )r   r2   r  rJ   r   r   r<  r  r   rJ  r   is_compatible_withr{   r<   r>   r  r  r?   r3   r_   r
  ru   rc   r   r	   )r   r  rN   r  r   r   scaled_unitr   r   values_adim_acoord_avalues_bdim_bcoord_br   coords_acoords_bdims_adims_br   rA   r   s                          r   r~  zTestDataset.test_initu  s   . &#&K1b!!((//-2BBKAr""))%00=3EE9QWQZ((=(((;''9QWQZ((4 //{CC## HH[!!! 	 	 Bx5\C<0c7^44c7^44
 
 &\\&11('-':':
Lav>>>Lav>>>9!4!4u%% 7 7
11%5%566667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 FAA&6&6777!((3--((-*F*F
 
  J{1~~KNN!K!KLLLe
 
 	8V,,,Xv&&&&&s   &GGGr   r  rm  r   r@   c                   |dk    rt           j        t           j        fnd\  }}t          j        ddd|          |z  }t          j        ddd|          |z  }t          j        t          |                    t           j        z  }|                    t           j	                  }	d|id	d|	fii d
}
t          j        d|fd|fd|
                    |                    } ||           d S )Nr@   r  r5   r  r   rx  r   r   r   )rg   r\   r@   r   re   )r   r<  r  rJ   r   r   r|  r   r   r}  r<   r?   r{   )r   r   r   r   r   r    r   r   r   r   r   r   s               r   r  zTestDataset.test_repr  s     7>6G6G]}122V 	u Q2U333e;Q2U333e;Ic&kk""]_4DD!"" !HS!Ho
 
 Z &Mf>><<((
 
 
 	Rr   r  r  r  r   ri  r  r  r  r   r  r  r  r  r  r  r  r   c                n   |j         dk    rT|j        dk    rIt          j        t          j                  t          j        d          k     rt          j        d           |j         dk    rt          j	        t          j
        fnt          j        t          j        f\  }}t          j        ddd	                              |          |z  }t          j        d
dd	                              |          |z  }t          j        d|fd|fd          }d|j        v r|j                                        }|                    d          }	|j                            |	          }
|j                            |	          }|                                }|
|d<   |                                }||d<   ni }i }t/           ||fi |          }t/           ||fi |          }||d} ||          }t1           |t3          |                    |          }t5          ||           t7          ||           d S )Nr  r  r  r  r   r  r   r5   r   r   r   r   r   r   )rU   r  r   r  r   r  r  r  r   r<  r  r   rJ   r   r   r<   r?   r   r-   r  r   r  r   rC   ru   rc   r   r   )r   r   r   unit_aunit_br   r   r   r  r   axis_aaxis_bnumpy_kwargs_anumpy_kwargs_br.  r/  rA   r   r   s                      r   r  zTestDataset.test_aggregation  s7   , I
c!!d.//'-2G2GGGL IJJJJ yI%% }122-}/JK 	 K1b!!((//&8KAr""))%0069ZsAhc1X6677DK;++--L""5))CT&&s++FT&&s++F)..00N%+N6")..00N%+N6""NN%dd1&?&?&?&?@@%dd1&?&?&?&?@@G,,b[__ 5 5u==8V,,,&)))))r   r  )r  r  c                   t          j        ddd          t          j        z  }t          j        ddd          t          j        z  }t          j        d|fd|fd          }t          |          }t          ||          }t          t          t          |          |          |          }t          ||           t          ||           d S )	Nr   r5   r   r   rh  r   r   r   )rJ   r   r   r<  r  r<   r?   r_   r   ru   rc   r   r	   )	r   r  r   r   r   r   rA   r   r   s	            r   r  z!TestDataset.test_numpy_properties(  s    K1b!!M$44KAr""]%77ZsAhc1X6677b!!X&&B B BEJJ8V,,,Xv&&&&&r   r   r  r  r  r;  c                   t          j        ddd          t          j        z  }t          j        ddd          t          j        z  }t          j        d|fd|fd          }t           ||                    }t           ||                    }||d} ||          }	t           |t          |                    |          }
t          |
|	           t          |
|	           d S )Nr5   r   r   rh  r   r   r   )rJ   r   r   r<  r  r<   r?   rC   ru   rc   r   r	   )r   r   r   r   r   r   r.  r/  rA   r   r   s              r   r  zTestDataset.test_numpy_methods5  s     K2r""]%55KAr""]%77ZsAhc1X6677%dd1gg..%dd1gg..G,,b[__ 5 5u==8V,,,Xv&&&&&r   r  r  r  r  r   c                   t           j        t          j        ddd          t           j        z  }t          j        ddd          t           j        z  }t	          j        d|fd|fd	          }t          |          }fd
|j                                        D             }	|7t          j
        |          5   ||fi |	 d d d            n# 1 swxY w Y   d S fd|	                                D             }
 ||fi |	}t           |t          |          fi |
|          }t          ||           t          ||           d S )Nr   r   rh  r=  rr  r   r   r   r   c                8    i | ]\  }}|t          |          S r   )rP   r  s      r   r'   z<TestDataset.test_numpy_methods_with_args.<locals>.<dictcomp>c  s7     
 
 
5?S%C#E400
 
 
r   c           
     V    i | ]%\  }}|t          t          |d i                    &S r   r  )r%   r&   rV   r   s      r   r'   z<TestDataset.test_numpy_methods_with_args.<locals>.<dictcomp>m  sF     
 
 
U ]542CDDEE
 
 
r   )r   r2   rJ   r   r<   r?   r_   r   r[   r  r  ru   rc   r   r	   )r   r   rN   r  r   r   r   r   rA   r   r-  r   r   r   s     `          @r   r  z(TestDataset.test_numpy_methods_with_argsO  s    "O	K2r""]_4KB##mo5ZsAhc1X6677b!!
 
 
 
CG;CTCTCVCV
 
 
 u%% # #R""6"""# # # # # # # # # # # # # # # F
 
 
 
$llnn
 
 

 b##F##[__ H H H H%PP8V,,,Xv&&&&&s   :
CCCr  r  r  c           
        t          j        ddt           j        dgt           j        dt           j        t           j        gdt           j        t           j        dgdt           j        ddgg          t          j        z  }t          j        t           j        d	d
dgt           j        dt           j        dgdt           j        ddgdt           j        dt           j        gddt           j        t           j        gg          t          j        z  }t          j        d|fd|fd          } |t          |                    } ||          }t          ||           t          ||           d S )Nr  r  r  r  r  r  r  r  g@g      (@g(@g@皙#@rU  g @g333333@r   )rW  r   r   )rJ   rF   r`  r   r  r<  r<   r?   rc   r   r	   )r   r   r   r   r   r   r   r   s           r   r  z(TestDataset.test_missing_value_detectionx  sG   
 H#rvs+VS"&"&1"&"&#."&#s+	   ! 	 HVS$,VT263/"&#s+"&#rv.#rvrv.  	 	 Zz62*f9MNNOO4B((b8V,,,Xv&&&&&r   zffill and bfill lose the unitr  r  c                P   t          j        dt           j        dt           j        t           j        dg                              |          t          j        z  }t          j        dddt           j        dt           j        g                              |          t          j        z  }t          j        d|fd	|fd
          }t          |          }t           |t          |          d          |          } ||d          }t          ||           t          ||           d S )Nr  r  r  333333@r        @ffffff @r   r   r   ri  )rJ   rF   r`  r   r   r  r<  r<   r?   r_   ru   rc   r   r	   )	r   r   r   r   r   r   rA   r   r   s	            r   r  z&TestDataset.test_missing_value_filling  s    Hc263<==DDUKK ! 	
 Hc3RVS"&9::AA%HH 	
 ZsFm3-@@AAb!![__# > > >FFbc"""8V,,,Xv&&&&&r   r   r   r  r  r  c                X   t          j        dt           j        dt           j        t           j        dg                              |          t          j        z  }t          j        dddt           j        dt           j        g                              |          t          j        z  }t          j        d|fd|fd	          }||z  }t          |          }	|Dt          j
        |          5  |                    |
           d d d            n# 1 swxY w Y   d S |                    |
          }
t          t          |                              t          t          |d t          j        i                    
          |	          }t          ||
           t!          ||
           d S )Nr  r  r  r  r  r  r  r   r   r  )rJ   rF   r`  r   r   r2   r<   r?   r_   r  r  r  ru   rc   r   r   r	   )r   r   rN   r  r   r   r   r   rV   rA   r   r   s               r   r  zTestDataset.test_fillna  s   4 Hc263<==DDUKKo 	
 Hc3RVS"&9::AA%HHo 	 ZsFm3-@@AAT!b!!u%% ' '			&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' F''OO""!-mo7N"O"OPP #   	
 
 	8V,,,Xv&&&&&s   ,DDDc                t   t          j        dt           j        dt           j        t           j        dg                              |          t          j        z  }t          j        dddt           j        dt           j        g                              |          t          j        z  }t          j        d|fd|fd	          }t          |          }t          t          |                              d
          |          }|                    d
          }t          ||           t          ||           d S Nr  r  r  r  r  r  r  r   r   ri  )rJ   rF   r`  r   r   r  r<  r<   r?   r_   ru   rc   r  r   r	   r   r   r   r   r   rA   r   r   s           r   r  zTestDataset.test_dropna  s   Hc263<==DDUKK ! 	
 Hc3RVS"&9::AA%HH 	 ZsFm3-@@AAb!!B 6 63 6 ? ?GGs##8V,,,Xv&&&&&r   rN   c                   t          j        dt           j        dt           j        t           j        dg                              |          t          j        z  }t          j        dddt           j        dt           j        g                              |          t          j        z  }t          j        d|fd|fd	          }t          j        dt           j        dg                              |          }||z  }t          |t          j                  rt          |d t          j        i          n|}t          |                              t          |                    }	t          |t          j                  sd
|	j        d d <   d
|	j        d d <   |                    |          }
t          |	|
           t          |	|
           d S )Nr  r  r  r  r  r  r  r   r   F)rJ   rF   r`  r   r   r2   r<   r?   r!   r   rc   r  r   r   r   r	   )r   rN   r   r   r   r   r  r  converted_valuesr   r   s              r   r  zTestDataset.test_isin  s    Hc263<==DDUKKo 	
 Hc3RVS"&9::AA%HHo 	 ZsFm3-@@AAXsBFC01188??
d" T=?33M&4"9::: 	 r??''4D(E(EFF T=?33 	"!HJqqqM!HJqqqM8V,,,Xv&&&&&r   r  c                N   t           j        t          j        ddd                              |          z  }t          j        ddd                              |          z  }t          j        d|fd|fd          }t          |          }|dz  k     }	t          j        ddd                              |          |z  }
d	|	i|	d|z  d
|	|
d
|	ddd}|                    |          }|dvr=|;t          j
        |          5   |j        di | d d d            n# 1 swxY w Y   d S fd|                                D             }t           t          |          j        di ||          } |j        di |}t          ||           t!          ||           d S )Nr   r5   r   r   r   r   r  r=  r  r  Tr  r  r  c           
     V    i | ]%\  }}|t          t          |d i                    &S r   r  )r%   r&   rV   r   s      r   r'   z*TestDataset.test_where.<locals>.<dictcomp>I  sF      
  
  
U ]542GHHII 
  
  
r   r   )r   r2   rJ   r   r   r<   r?   r_   r{   r  r  r  r[   ru   rc   r   r	   )r   r   rN   r  r   r   r   r   rA   r  rE  r  r   r  r   r   r   s                   @r   r  zTestDataset.test_where#  s=     &Q2&&--e44}DRB''..u55EZsFm3-@@AAb!!},,	BB''..u55<	*)2R$Y G G(1EBB!*D99	
 
  ##G,,111e6Gu%% # #""6"""# # # # # # # # # # # # # # # F 
  
  
  
$llnn 
  
  

  !KOO!99$899
 
 ##F##8V,,,Xv&&&&&s   	D##D'*D'z#interpolate_na uses numpy.vectorizec                t   t          j        dt           j        dt           j        t           j        dg                              |          t          j        z  }t          j        dddt           j        dt           j        g                              |          t          j        z  }t          j        d|fd|fd	          }t          |          }t          t          |                              d
          |          }|                    d
          }t          ||           t          ||           d S r  )rJ   rF   r`  r   r   r  r<  r<   r?   r_   ru   rc   r  r   r	   r  s           r   r  zTestDataset.test_interpolate_naW  s    Hc263<==DDUKK ! 	
 Hc3RVS"&9::AA%HH 	 ZsFm3-@@AAb!!OO**s*33
 
 ""s"++8V,,,Xv&&&&&r   c           
        t           j        |ddfddt           j        |fd}|                    |          \  }}}}	t          j        dt          j        dt          j        t          j        dg                              |          |z  }
t          j        dddt          j        d	t          j        g                              |          |z  }t          j        t          |
                    |z  }t          j
        d
|
fd
|fdd
|i          }t          |          }t          j        |
          |z  }t          j        |d          |z  }t          j        |
j        d                   dz   |	z  }t          j
        d
|fd
|fdd
|i          }|Ct          j        |          5  |                    |           d d d            n# 1 swxY w Y   d S t%          t'          |                              t'          t)          ||                              |          }|                    |          }t+          ||           t-          ||           d S )Nr5   r;  r  r  r  r  r  r  r  r   r   re   r   rY  r   r   )r   r2   r{   rJ   rF   r`  r   r   r|  r<   r?   r_   rM  r_  rJ  r  r  r  ru   rc   r   r   r	   )r   r   rN   r  r   r   r   other_data_unit	dims_unitother_dims_unitr   r   r   r   rA   rO  rP  rQ  rE  r   r   s                        r   r  zTestDataset.test_combine_firstm  s   0 #_dAq1=?D1
 
 BJgAVAV>	?I Hc263<==DDUKKiW 	 Hc3RVS"&9::AA%HH9T 	 Ic&kk""Y.Z &Mf>>8
 
 
 b!!|F++o=|Fr:::_L9V\!_--1_D
 ,/sL6IJJ>
 
 

 u%% ( (  '''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( FOO))+mE56Q6Q*R*RSS
 
 !!%((8V,,,Xv&&&&&s   *GGGr  r  z!behaviour of identical is unclearc                H   t          j        ddd                              |          }t          j        ddd                              |          }t          j        t	          |                                        |          }t
          j        ddfdt
          j        dfddt
          j        fd}|                    |          \  }	}
}||	z  }||	z  }||
z  }||z  }t          j	        d|fd|fd|d|fd	
          }t          |          }|ddfd|dfdd|fd}|                    |          \  }}}||||d}d t          ||          D             }t          t          t          ||                    |          }t          |          }t          d t          ||          D                       o<t          |                              t          t          ||                              }||k    }|o|j        dk    p|} |||          }||k    sJ d S )Nr   r   r   rg  r5   r   r   r   r   re   )r   r   r   r   c                D    i | ]\  }\  }}|t          ||          r|nd S r   r$   )r%   r&   rN   	references       r   r'   z0TestDataset.test_comparisons.<locals>.<dictcomp>  sF     
 
 
&&dI tY77AT
 
 
r   c              3  B   K   | ]\  }\  }}t          ||          V  d S r   r$   )r%   r  rN   
other_units       r   r7   z/TestDataset.test_comparisons.<locals>.<genexpr>  sI       
 
%%D* $
++
 
 
 
 
 
r   r  )rJ   r   r   r   r|  r   r2   r{   r<   r?   r_   r(   ru   rc   r   r  r  rU   )r   r   r   rN   r   r   r   r{  r   r   r   r   r   r   r   r   r   rA   other_variantsr  other_dim_unitother_coord_unitr  
to_convertrE  equal_dsr  r   r   s                                r   r  zTestDataset.test_comparisons  s   @ Q2&&--e44RB''..u55	#f++&&--e44 #_a++!]_-
 

 +3,,w*?*?'	8ZYYHJZ !HC844#q**
 
 
 b!! 1aLaL!Tl
 

 =K<N<Nw<W<W9)9 ! !	
 

 
*6uk*J*J
 
 


 [r:)F)FGGUU#E**  
 
)5e[)I)I
 
 
 
 
 Q 2%%k-u2M2M&N&NOO 	 {*Ik!9!H[b%6!!!!!!r   c                   t           j        |fdfdt           j        |ffd}|                    |          \  \  }}\  }}t          j        ddd                              dd                              |          |z  }	t          j        ddd                              dd                              |          |z  }
t          j        d          |z  }t          j        d          |z  }t          j        dg          |z  }t          j        d          |z  }t          j
        dd	|	fi||d	
          }t          j
        dd	|
fi||d	
          }t          t          |                              t          |                    t          |                    }|                    |          }t          ||           t!          ||           d S )Nr  r;  r5   r  r   rA  r  r   r   re   )r   r2   r{   rJ   r   r   r   r   rF   r<   r?   ru   rc   r  r_   r   r	   )r   r   rN   r   r   r  r  r!  r"  r   r   rC  rD  r%  r&  r7  r8  r   r   s                      r   r  zTestDataset.test_broadcast_like  s   , $ot,f5mot45
 
 <D<<;P;P8 Z"89iQ5))11!Q77>>uEE
RQ5))11!Q77>>uEE
RYq\\I%Yq\\I%Xqc]]Y&Yq\\I%jZ01:L:L
 
 
 jZ01:L:L
 
 
  ++K,<,<==}S?Q?Q
 
 ##C((8V,,,Xv&&&&&r   c                   t          j        d|          t          j        z  }t          j        d|          t          j        z  }t          j        d          |z  }t          j        d          |z  }t          j        d|fd|fd	          }t          j        d
|fd|fd	          }t          t          |          t          ||          ri nd d d	          }	t          ||          o<t          |                              t          t          ||	                              }
|                    |          }|
|k    sJ d S )NrH  rI  )r  rA  r  r'  )r  r   rv  r   r   r   )rJ   r  r   r2   rL  r<   r?   r3   r_   r!   rc   r  r   )r   rN   r   left_array1left_array2right_array1right_array2r  r  rA   r   r   s               r   r   z!TestDataset.test_broadcast_equals=  s^    gF%888=?JhV5999MOKwT***T1xd+++d2z{+:{2KLL
 
 
#|!4C;NOOPP$T22NBBd8N8N
 
 !d33 E9
 9


;}UE'B'BCC
D
D 	 &&u--6!!!!!!r   c                    t          j        ddd                              |          t          j        z  }t          j        ddd                              |          t          j        z  }t          j        d|fd|fd          }t          |          }t          t          |                              d          |          }|                    d          }t          ||           t          ||           d S )	Nr   r   r   rg  r   r   rH  r  )rJ   r   r   r   r<  r  r<   r?   r_   ru   rc   rd  r   r	   )r   r   r   r   r   rA   r   r   s           r   rg  zTestDataset.test_pad_  s    K1b!!((//-2BBKAr""))%00=3EEZsAhc1X6677b!!B 3 3f 3 = =uEE&!!8V,,,Xv&&&&&r   rJ  rQ  rs  rR  c                   t           j        dfdt           j        fd}|                    |          \  }}t          j        ddd                              dd                              |          |z  }t          j        ddd                              ddd	                              |          |z  }t          j        |j        d                   |z  }	t          j        |j        d                   |z  }
t          j        |j        d
                   |z  }t          j
        d|fd|fd|	|
|d          }t          |          }|                    d          }t           |t          |                    |          } ||          }t          ||           |j        dk    rt#          ||d           d S t#          ||           d S )Nr5   r;  r   r   r   r   i  rh  r  r   rV  r   re   rs  rQ  FrT  )r   r2   r{   rJ   r   r   r   r   rJ  r<   r?   r_   rF  ru   rc   r   rU   r	   )r   r   r   r   r   r   r   r   r   r   r   rW  r   rA   rV  r   r   s                    r   rW  z!TestDataset.test_stacking_stackedl  s   " #_a((
 
 'll733	8QF++33Ar::AA%HH9TKQ,,44QB??FFuMM 	
 Ifl1o&&1Ifl1o&&1Ifl1o&&1Z'07PQQ++
 
 
 b!!((Z((([%9%9 : :EBBg8V,,,9%%6GGGGGG6*****r   zDstacked dimension's labels have to be hashable, but is a numpy.arrayc                   t          d          t          j        z  }fd|D             }t          j        d |                                D                       }t          j        t          j        d}t          ddddg	          } ||                              d           }t           |t          |                                        d           |          }t          ||           t          ||           d S )
Nr   c                ~    i | ]9}|t          j        d dd                                        t          j        z  :S )r   r5   r   )rJ   r   r   r   r2   )r%   rU   r   s     r   r'   z5TestDataset.test_to_stacked_array.<locals>.<dictcomp>  sN     
 
 
 "+aB''..u55G
 
 
r   c                    i | ]
\  }}|d |fS r  r   )r%   rU   rF   s      r   r'   z5TestDataset.test_to_stacked_array.<locals>.<dictcomp>  s"    NNNeU|NNNr   )Nr   to_stacked_arrayrW  r   r   )variable_dimsample_dims)ranger   r   r<   r?   r[   r2   r   r
  ru   rc   r   r	   )	r   r   labelsarraysr   rA   r   r   r   s	    `       r   test_to_stacked_arrayz!TestDataset.test_to_stacked_array  s    qMO+
 
 
 

 
 

 ZNNv||~~NNNOO$]_==(#CcUSSSb&&DR!!((..
 

 	8V,,,Xv&&&&&r   r>  r   z1r{  rF  r   r  r]  rD  r  r<  r  r5  r6  r7  Fr^  r`  c           	        t          j        ddd                              ddd                              |          t          j        z  }t          j        ddd                              ddd                              |          t          j        z  }t          j        |j        d                   }t          j        |j        d                   }t          j        |j        d                   }t          j        |j        d                   }t          j        dd|j        d                   d d d	         }	t          j
        d
|fd|fd||||d|	fd          }
t          |
          }t           |t          |
                    |          } ||
          }t          ||           t          ||           d S )Nr   r   rb  r  r      rh  r5   r   )r   r   r  )r   r   r{  r   r   )r   r   r  r{  rD  re   )rJ   r   r   r   r   r<  r  r   rJ  r<   r?   r_   ru   rc   r   r	   )r   r   r   r   r   r   r   r  r{  rD  r   rA   r   r   s                 r   rd  z$TestDataset.test_stacking_reordering  s   $ K2z**221a<<CCEJJ 	
 K2z**221a<<CCEJJ ! 	
 Ifl1o&&Ifl1o&&Yv|A''Yv|A''[Av|A//"5Z&/&/  "BsBiHH
 
 
 b!![__ 5 5u==b8V,,,Xv&&&&&r   r  r@  r  r  r  c                   t          j        d                              |          t          j        z  }t          j        ddd                              |          t          j        z  }t          j        d|fd|fd          }t          |          }t          t          |                              |          |          }|                    |          }t          ||           t          ||           d S )Nr   r   r5   r   r   r  r  )rJ   r   r   r   r   r   r<  r<   r?   r_   ru   rc   r  r   r	   )	r   r  r   r   r   r   rA   r   r   s	            r   r	  zTestDataset.test_isel  s     2%%e,,}>Q2&&--e44}7GGZfS&M"J"JKKKb!!B 4 4w 4 ? ?GG7##8V,,,Xv&&&&&r   r  r   r  r  r  r  r  r   c                   t          j        ddd                              |          t          j        z  }t          j        ddd                              |          t          j        z  }t          j        t          |                    t          j        z  }t          j
        t          j        |d          t          j        |d          dd|i          }||z  }	|Dt          j        |          5  |                    |		           d d d            n# 1 swxY w Y   d S t          t!          |                              t!          t#          |	d t          j        i                    	          t%          |                    }
|                    |		          }t'          |
|           t)          |
|           d S 
Nr   r   r   r   r   r;  r   re   r  )rJ   r   r   r   r  r<  r   r|  r2   r<   r?   r>   r  r  r#  ru   rc   r   r_   r   r	   r   r  rN   r  r   r   r   r   r   r  r   r   s               r   r%  zTestDataset.test_sel  s   ( QB''..u558JJQ2&&--e44}7GGIc&kk""]_4Z\vC888\vC888  8
 
 
 d" u%% ! !   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! FOOmFT=?4KLLMM     "	
 
 &!!8V,,,Xv&&&&&   9DD #D c                   t          j        ddd                              |          t          j        z  }t          j        ddd                              |          t          j        z  }t          j        t          |                    t          j        z  }t          j
        t          j        |d          t          j        |d          dd|i          }||z  }	|Dt          j        |          5  |                    |		           d d d            n# 1 swxY w Y   d S t          t!          |                              t!          t#          |	d t          j        i                    	          t%          |                    }
|                    |		          }t'          |
|           t)          |
|           d S r  )rJ   r   r   r   r  r<  r   r|  r2   r<   r?   r>   r  r  r+  ru   rc   r   r_   r   r	   r  s               r   r,  zTestDataset.test_drop_sel.  s   ( QB''..u558JJQ2&&--e44}7GGIc&kk""]_4Z\vC888\vC888  8
 
 
 d" u%% & &f%%%& & & & & & & & & & & & & & & FOO$$mFT=?4KLLMM %   "	
 
 v&&8V,,,Xv&&&&&r  c                b   t          j        ddd                              |          t          j        z  }t          j        ddd                              |          t          j        z  }t          j        t          |                    t          j        z  }t          j
        t          j        |d          t          j        |d          dd|i          }||z  }	|=t          j        |          5  |j        d|	i          d d d            n# 1 swxY w Y   d S t          t!          |          j        dt!          t#          |	d t          j        i                    i         t%          |                    }
|j        d|	i         }t'          |
|           t)          |
|           d S )	Nr   r   r   r   r   r;  r   re   )rJ   r   r   r   r  r<  r   r|  r2   r<   r?   r>   r  r  r(  ru   rc   r   r_   r   r	   r  s               r   r)  zTestDataset.test_locc  s   ( QB''..u558JJQ2&&--e44}7GGIc&kk""]_4Z\vC888\vC888  8
 
 
 d" u%% & &V}%%& & & & & & & & & & & & & & & FOOk-}8O"P"PQQR "	
 
 f&8V,,,Xv&&&&&s   9DDDr:  r  rA  rV  r;  r<  c                   t           j        t           j        fddfdt           j        dfddt           j        fd}|                    |          \  \  }}}}t          j        ddd                              dd          |z  }	t          j        ddd                              dd	          |z  }
t          j        d          |z  t          j        d          |z  t          j        d	          |z  d
t          j        ddd          |z  fdt          j        ddd          |z  fdt          j        ddd	          |z  fd}t          j
        t          j        |	d          t          j        |
d          d|          }t           |t          |                    t          |                    } ||          }t          ||           t!          ||           d S )Nr5   r  r   r  r   r   r   P   r  r   r   r   rW  r   )r   r   rW  r   rs  rt  r   r;  ru  r   re   )r   r  r<  r2   r{   rJ   r   r   r   r<   r?   r>   ru   rc   r_   r   r	   )r   r   r   r   r   r  r  r   r   r   r   r\   r   r   r   s                  r   r>  zTestDataset.test_head_tail_thin  s   * $(-*:;QB]_a0q-/2
 

 2:g1F1F.(JQ6**222q99FBQ6**222q99FB 2)1(1(r{1a,,z9:r{1a++j89r{2q!,,z9:
 
 Z\vJ???\vJ???  
 
 
  [__ 5 5}R7H7HIIb8V,,,Xv&&&&&r   r   r#  rJ  r-  znothing squeezabler/  zlast dimension squeezabler1  zmiddle dimension squeezabler3  zfirst dimension squeezabler5  z#first and last dimension squeezablec           
     <   d}t          t          ||                    }t          j        ddd                              |                              |          t          j        z  }t          j        ddd                              |                              |          t          j        z  }t          j
        t          |d t          |                             |ft          |d t          |                             |fd          }t          |          }	|dk    r|                    |d          dk    rd	|ini }
t           t!          |          j        d
i |
|	          } |j        d
i |
}t%          ||           t'          ||           d S )Nr8  r   r5   r  r  r   r  r  r   r   )r(  r)  rJ   r   r   r   r   r  r<  r<   r?   r:   r|  r_   r{   ru   rc   r*  r   r	   )r   rJ  r   r   r+  r,  r   r   r   rA   r   r   r   s                r   r-  zTestDataset.test_squeeze  s    3ue,,--K1g&&--e44<<UCCmFXX 	 K1g&&--e44<<UCCmFVV 	 ZE,CJJ,/00&9E,CJJ,/00&9 
 
 
 b!!!$+//#q2I2IQ2N2N%TV 7B 7 A A& A A5II%%f%%8V,,,Xv&&&&&r   r?  r@  rA  rB  c                   t           j        dfdt           j        fd}|                    |          \  }}t          j        ddd                              |          |z  }t          j        ddd                              |          |z  }t          j        d          |z  }	t          j        d          }
t          j        d          dz   }t          j        d|fd|fd	|
d|	fd
          }t          |          }t           |t          |          |          |          } |||          }t          ||           t          ||           d S )Nr5   r?  r   r   r   r  r  r   r   r   r\   r  )r   r2   r{   rJ   r   r   r   r<   r?   r_   ru   rc   r   r	   )r   r   r   r   r   r   r   r   r   r   r   rE  r   rA   r   r   s                   r   rF  zTestDataset.test_interp_reindex  s^    #_a(-/*
 
 !)W 5 5	:RB''..u55	AQ2&&--e44y@IbMMJ&IbMM	!s"Z-sFm441CQR8=T=T
 
 
 b!![__ > > >FFbE"""8V,,,Xv&&&&&r   c                   t          j        ddd                              |          }t          j        ddd                              |          }t          j        d          t          j        z  }t          j        d          dz   |z  }t          j        d|fd|fdd|i	          }	t          |	          }
|;t          j
        |          5   ||	|
           d d d            n# 1 swxY w Y   d S t           |t          |	          |
          |
          } ||	|
          }t          ||           t          ||           d S )Nr   r   r   r5   r  r  r   r   r  r  )rJ   r   r   r   r   r2   r<   r?   r_   r  r  ru   rc   r   r	   )r   r   rN   r  r   r   r   r   rE  r   rA   r   r   s                r   rH  z(TestDataset.test_interp_reindex_indexing  s    RB''..u55Q2&&--e44IbMMMO+1#t+ZsFm3-@@#qRRRb!!u%% " "R5!!!!" " " " " " " " " " " " " " " F[__ > > >FFbE"""8V,,,Xv&&&&&s   C,,C03C0rI  rJ  c                   t           j        dfdt           j        fd}|                    |          \  }}t          j        ddd                              |          |z  }t          j        ddd                              |          |z  }t          j        d          |z  }	t          j        d          }
t          j        d          dz   }t          j        d|fd|fd	|
d|	fd
          }t          |          }t          j        ddt          j
        |          fid|i          }t           |t          |          |          |          } |||          }t          ||           t          ||           d S )Nr5   r?  r   r   r   r  r  r   r   r   r  r   )r   r2   r{   rJ   r   r   r   r<   r?   r_   rL  ru   rc   r   r	   )r   r   r   r   r   r   r   r   r   r   r   rE  r   rA   rE  r   r   s                    r   rM  z$TestDataset.test_interp_reindex_like<  s    #_a(-/*
 
 !)W 5 5	:RB''..u55	AQ2&&--e44y@IbMMJ&IbMM	!s"Z-sFm441CQR8=T=T
 
 
 b!!
C#r}U';';!<=sElSSS[__e < <eDDb%8V,,,Xv&&&&&r   c                   t          j        ddd                              |          }t          j        ddd                              |          }t          j        d          t          j        z  }t          j        d          dz   |z  }t          j        d|fd|fdd|i	          }	t          |	          }
t          j        d
dt          j	        |          fid|i	          }|:t          j        |          5   ||	|           d d d            n# 1 swxY w Y   d S t           |t          |	          |          |
          } ||	|          }t          ||           t          ||           d S )Nr   r   r   r5   r  r  r   r   r  r   )rJ   r   r   r   r   r2   r<   r?   r_   rL  r  r  ru   rc   r   r	   )r   r   rN   r  r   r   r   r   rE  r   rA   rE  r   r   s                 r   rP  z-TestDataset.test_interp_reindex_like_indexingc  s   " RB''..u55Q2&&--e44IbMMMO+1#t+ZsFm3-@@#qRRRb!!
C#r}U';';!<=sElSSSu%%    R                              F[__e < <eDDb%8V,,,Xv&&&&&s    DD Drk  re  ri  rf  r0  r1  r2  r3  r:  rl  mapc           
        t           j        t           j        fddfdt           j        dfddt           j        fd}|                    |          \  \  }}}}t          j        ddd                              dd                              |          |z  }	t          j        ddd	                              dd
                              |          |z  }
t          j	        d          |z  }t          j	        d          |z  }t          j	        d
          |z  }t          j        t          j        |	d          t          j        |
d          d|||dt          j	        d          |z  fd          }t          |          }t           |t          |                    |          } ||          }t!          ||           t#          ||           d S )Nr5   r  r   rg  r   r   r@  r   rr  r  r   r;  ru  r   r   r   r   rW  r&  re   )r   r  r<  r2   r{   rJ   r   r   r   r   r<   r?   r>   r_   ru   rc   r   r	   )r   r   r   r   r   r   r    r   r   r   r   r   r   rW  r   rA   r   r   s                     r   r@  zTestDataset.test_computation  s   0 $(-*:;QB]_a0q-/2
 

 08||G/D/D,*RE**221a88??FFNRU++33Aq99@@GG%OIaLL8#IaLL8#IaLL8#Z\vJ???\vJ???  3	!z8Q2RSS
 
 
 b!![__ 5 5u==b8V,,,Xv&&&&&r   r   rq  rr  r.  rt  zstrips unitsru  rv  rw  r   r   r;  c           
        t           j        t           j        fddfdt           j        dfddt           j        fd}|                    |          \  \  }}}}t          j        ddd                              dd                              |          |z  }	t          j        ddd	                              dd
                              |          |z  }
t          j	        d          |z  }t          j	        d          |z  }t          j	        d
          |z  }t          j        d|	fd|
fd|||dt          j	        d          |z  fd          }t          |          }|j        dk    rg ndg}i }t            |t          |                    j        |i ||          }  ||          j        |i |}t#          ||           t%          ||           d S )Nr5   r  r   rg  r   r   r@  r   rr  r  r   ru  r   r   r  re   r   )r   r  r<  r2   r{   rJ   r   r   r   r   r<   r?   r_   rU   ru   rc   r   r   r   )r   r   r   r   r   r   r    r   r   r   r   r   r   rW  r   rA   r   r   r   r   s                       r   ry  z$TestDataset.test_computation_objects  s   > $(-*:;QB]_a0q-/2
 

 08||G/D/D,*RE**221a88??FFNRU++33Aq99@@GG%OIaLL8#IaLL8#IaLL8#Z'0
F7KLL3	!z8Q2RSS
 
 
 b!!Y)++rr#  :[__ 5 5 :D KF K KUSSb///8V,,,&)))))r   c                   t           j        t           j        fddfdt           j        dfddt           j        fd}|                    |          \  \  }}}}t          j        ddd                              dd                              |          |z  }t          j        ddd	                              dd
                              |          |z  }	t          j
        d|j        d         d          }
t          j        d          |z  }t          j        d
          |z  }t          j        ddd          |z  }t          j        d|fd|	fd|
||d|fd          }t          |          }t!          dd          }t#           |t%          |                                                    |          } ||                                          }t)          ||           t+          ||           d S )Nr5   r  r   rg  r   r   r   r   r  r  r{  r   r|  r}  r   )r  r   )r  rW  r   r   )r  r   rW  r   re   r  r  r  )r   r  r<  r2   r{   rJ   r   r   r   r  r  rJ  r   r<   r?   r_   r   ru   rc   r   r   r	   )r   r   r   r   r   r    r   r   r   r   r$  r   rW  r   r   rA   r   r   r   s                      r   r  zTestDataset.test_resample  s    $(-*:;QB]_a0q-/2
 

 08||G/D/D,*RF++33B::AA%HH5PRV,,44R;;BB5IIEQM,QdKKKIaLL8#IaLL8#KAq!!J.Z*F3=&:QRRAAS!H==
 
 
 b!!jt,,,[__ 5 5 : : < <eDDb8V,,,Xv&&&&&r   assignc                    d| j         z  S r  r   r   s    r   r]  zTestDataset.<lambda>(  s    "rt) r   )r  r  r  r)   r  r  r  c                >   t           j        t           j        fddfdt           j        dfddt           j        fd}|                    |          \  \  }}}}t          j        ddd                              dd                              |          |z  }	t          j        ddd	                              ddd
                              |          |z  }
t          j	        d          |z  }t          j	        d          |z  }t          j	        d
          |z  }t          j        ddd          |z  }t          j        d|	fd|
fd|||d|fd          }|t           j        d}t          t          |          |          }d |j                                        D             }t#           |t%          |                              d          fi ||          } ||                    d                    }t)          ||           t+          ||           d S )Nr5   r  r   rg  r   r   r@  r   <   r  r   r   r   rV  r   r   )r   r   rW  r   re   )r  rs  c                4    i | ]\  }}|t          |          S r   rb   rT   s      r   r'   z7TestDataset.test_grouped_operations.<locals>.<dictcomp>R  s3     
 
 
)4uD+e$$
 
 
r   )r   r  r<  r2   r{   rJ   r   r   r   r   r<   r?   r   r3   r_   r   r[   ru   rc   r   r   r	   )r   r   r   r   r   r   r    r   r   r   r   r   r   rW  r   r   assigned_unitsrA   r-  r   r   s                        r   r  z#TestDataset.test_grouped_operations%  s'   . $(-*:;QB]_a0q-/2
 

 08||G/D/D,*RE**221a88??FFNRY//771a@@GGNNQVVIaLL8#IaLL8#IaLL8#KAq!!J.Z'07PQQ#q::
 
 

  %=?;;}R00.AA
 
8<8I8I8K8K
 
 
  DR((--AAAA5
 
 bjjoo&&8V,,,Xv&&&&&r   r  c                    | dz  S r  r   r  s    r   r]  zTestDataset.<lambda>`  r  r   c                    | j         dz  S r  r  r  s    r   r]  zTestDataset.<lambda>a  s    "$) r   )d)r&  r  rV   r  r
  x_mm)rD  rename_varstemperaturerename_dimsoffset_xr  r   r  r   rr  )rs  r   r  	drop_dimsrW  
set_coordsr  r  r  r-   c                   t           j        dz  t           j        t           j        fddfdt           j        dfddt           j        fd}|                    |          \  \  }}}}}	t          j        ddd                              dd                              |          |z  }
t          j        d	dd
                              ddd                              |          |z  }t          j        dd	d                              |          |z  }t          j	        d          |z  }t          j	        d          |z  }t          j	        d          |z  }t          j        ddd          |	z  }t          j        d|
fd|fd|fd|||d|fd          }t           j        |	t           j        ||d}t          t          |          |          }d |j                                        D             }t#           |t%          |          fi ||          } ||          }t'          ||           |j        dk    rt+          ||d           d S t+          ||           d S )Nr  r5   )r5   r5   r5   r   rg  r   r   r@  r   r  r   r   r   rV  r   )r   r   r  rc  re   )r&  r
  r  r	  r  c                4    i | ]\  }}|t          |          S r   rb   r   s      r   r'   z9TestDataset.test_content_manipulation.<locals>.<dictcomp>  s3     
 
 
(2UCU##
 
 
r   r  FrT  )r   r2   r<  r  r{   rJ   r   r   r   r   r<   r?   r  r3   r_   r   r[   ru   rc   r   rU   r	   )r   r   r   r   r   r   r    unit3r   r   r   r   r}  r   r   rW  rD  r   r   rA   r-  r   r   s                          r   r  z%TestDataset.test_content_manipulation]  s   L !#]%5}7IJ
 3 !]_5
 
 7?ll76K6K3uxRE**221a88??FFNRY//771a@@GGNNQVVQA&&--e44u<IaLL8#IaLL8#IaLL8#[Q""Z/Z &)%v.6] 
 3)<<
 
 
  "% 
 
	 }R00)<<
 
6:k6G6G6I6I
 
 
  [__ H H H H%PPb8V,,,9%%6GGGGGG6*****r   c                t   t           j        ddfdt           j        dfddt           j        fd}|                    |          \  }}}|ddfd|dfdd|fd}	|	                    |          \  }
}}t          j        d                              |          |z  }t          j        dd                              |          |
z  }t          j        dd          |z  }t          j        dd          |z  }t          j        dd	          |z  }t          j        d
d          |z  }t          j        dd|fi|d|fd          }t          j        dd|fi|d|fd          }t          |          }|Ct          j
        |          5  |                    |           d d d            n# 1 swxY w Y   d S t          ||          }t          t          |                              t          |                    |          }|                    |          }t          ||           t!          ||           d S )Nr5   r   r   rg  r   r   rh  r  r   ir   r   r   re   )r   r2   r{   rJ   r   r   r<   r?   r_   r  r  ry  r   ru   rc   r   r	   )r   r   rN   r  r   left_variantsleft_data_unitleft_dim_unitleft_coord_unitright_variantsright_data_unitright_dim_unitright_coord_unitr  r  left_dim	right_dim
left_coordright_coordr  r  rA   	convertedr   r   s                            r   
test_mergezTestDataset.test_merge  s   0 #_a++!]_-
 
 :G9J9J79S9S6 1aLaL!Tl
 

 =K<N<Nw<W<W9)9Yr]]))%00>A
iA&&--e44F9R$$}4Ia$$~5	YsA&&8
iR((+;;zS*-.!j(9::
 
 
 
S+./"#{);<<
 
 

 d##u%% " "

5!!!" " " " " " " " " " " " " " " F!%//	D 1 1 7 7I8N8N O OQVWWE""8V,,,Xv&&&&&s   F))F-0F-)Dr   r   r   r  rk  rl  r   r<   
MergeErrorr   r   r   r  r2   rq  r~  r  rm  r  r   r  r  r  r  ro  rp  r  r  r  r  rJ   rF   r  r  r  r  r  r  r  r  r   rg  rW  r  rd  r	  r  r  r%  r,  r)  r>  r-  rF  rH  rM  rP  r  fabsr@  r>   r   ry  r  r   r  r  r"  r   r   r   r  r  t  sy       [FLBMi888FL+R]   FL"-<OPPPFL)44EFFFFL$;???	
  [FLfk..6S.TT   	
	 	3' 3'	 	 ,3'j [ce,,,lfl4F.K.K.KL  [FLk&&.K&LL   	

 
 
 
 4 [F5MMF5MMF8%%%F8%%%F5MMF5MMF6NNF8F5MMF6NNF5MMF5MMF8F9	
  %   (** **) (**X [Z)9::
' 
' ;:
' [F8U##F6NNF9F;F7OO	
   
 
' '
 
' [VffV&B&B&B%D$OO[FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
 ' '  PO'8 [!!66)#4#4ffWooFD   ' ' 'B [=>>[VffWoovvg%GTRR' ' SR ?>'& [FL/I>>>FL+-@_   FL*=BUVVVFL $  
 FL$3CDDD	
   [FL000FL".999FL2$M:::	
 ' ' ! 0'<' ' '$ [FLy)))FL4IIIFL-@AAAFL).?@@@FL[999	
	 	' '	 	'@ [Q  [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$;???	
 #' #'  #'J [CDD' ' ED'* [FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$;???	
  [FLk&&.K&LL  	
	 	)' )'	 	 ,)'V [FLy)))FL4IIIFL-@AAAFL).?@@@FL-=>>>	
	 	 [FLfk..6S.TT   	
	 	 [F8FL{##k&&'JKK  	
   
 
9" 9"
 
	 		 	>9"| [FLy)))FL4IIIFL-@AAAFL).?@@@FL-=>>>	
	 	 [FLk&&.K&LL  	
	 	' '	 		 	('< [FLy)))FL4IIIFL-@AAAFL).?@@@FL-=>>>	
	 	" "	 	"0' ' ' [				FF=#66?O8P8PQ   
 [FLk&&.K&LL  	
	 	 +  +	 	  +D [U   ' ' '* [F;S$55F7j)))F;$'''F7a   FLv3'''k&&.T&UU   F6QE222F8T""	
     ' '!  '@ [FL~...FL*<===	
 ' ' ' [:;;[FL///FL)9:::FL---005FGGG	
  [FLH444FL4h?SSSFL-x<OPPPFL)88IJJJFL$3CDDD	
	 	 '  '	 	  <;& 'D [:;;[FL///FL)9:::FL---005FGGG	
  [FLH444FL4h?SSSFL-x<OPPPFL)88IJJJFL$3CDDD	
	 	 '  '	 	  <;& 'D [:;;[FL///FL)9:::FL---005FGGG	
  [FLH444FL4h?SSSFL-x<OPPPFL)88IJJJFL$3CDDD	
	 	 '  '	 	  <;& 'D [F6Q!q)))F6Q!q)))F6Q!q)))	

     [FLfk..6S.TT   	
	 	 '  '	 	 & 'D [U$?@@[FL&:;;;FL)DEEEFL)FGGGFL)EFFFFL,QRRR	
	 	' '	 	 A@'6 [Y(:;;[FLx  (9(9(9(N(N   F9		
   	 	' '	 	 <;'4 [:;;[FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
  [VffX&6&6y8I8I%JPTUU' ' VU  <;', [Y(:;;[FL}%%V[->->l->-S-S   F>""		
   	 	' '	 	 <;'8 [:;;[FL/I>>>FL+-@_   FL*=BUVVVFL)44EFFFFL$3CDDD	
  [&&~(>(>?T   ' '   <; '0 [F6s###F?#...F;c***F:$...F8"&c222F5"'""	
     [FLfk..6S.TT   	
	 	' '	 	 ,'< [F9c""F>3Q///F9"""FLyA&&&fk.?.?~.?.V.V   FL}***k''H (     F:|r|Q11E1ECPPPQQ	
 #   & [FLfk..6S.TT   	
	 	* *	 	' :*> [FLfk..6S.TT   	
	 	' '	 	'@ [F833444F?sIBIaLL=?,J&KLLLF7OOF6NNF:!2!2!2<<<	
   
 
 [FLfk..6S.TT   	
	 	!' !'	 	
 
*!'F [F6--..F833444F?YRYq\\M<L-L'MNNNF>111F8'''F=M222F=J///F;c
++FL![R[R%<%<}%NUV   k&&.K&LL	   F;$$F;$$F<s+++F>...F6NN'	
* /   2 [FLfk..6S.TT   	
	 	2+ 2+	 	3 F2+h [FLBMi888FL+R]   FL"-<OPPPFL)2==NOOOFL$3CDDD	
  [FLfk..6S.TT   	
	 	/' /'	 	 ,/' /' /'r   r  c                      e Zd Zej                             ej        ej	                   ej        d          k    d          d             Z
dS )TestPintWrappingDaskz0.21z-pint didn't support dask properly before 0.21r   c                   dd l }|j                            g d          }t                              |d          }t	          j        |d          }|                                                                }d |_        t	          j        t                              t          j        d          d                    }t          ||           t          |j                  t          |j                  k    sJ d S )Nr   )r5   r  r  r2   )rA   r   rO  g       @)
dask.arrayrF   r   r   r<   r>   r   computerU   rJ   r   rp   r@   )r   r  r	  r4  r  r   r   s          r   test_duck_array_opsz(TestPintWrappingDask.test_duck_array_ops  s    
 	JYYY''""1C"00\!#&&&""$$< 6 6rx}}C 6 P PQQ8V,,,HM""d6;&7&7777777r   N)r   r   r   r  rk  skipifr   r  r   r  r*  r   r   r   r&  r&    sm        [d&''=7=+@+@@>   8 8	 8 8 8r   r&  c                  <   e Zd Zej                            ddddif ej        ej        i ej        	                    d                    g          d             Z
ej                            ddddif ej        ej        i ej        	                    d                    g          d	             Zej                            ddddif ej        ej        i ej        	                    d
                    g          d             Zd Zd Zd Zd ZdS )	TestPlotszcoord_unit, coord_attrsr5   rA   meterr   r   r   c                   t          j        ddd          t          j        z  }t          j        ddd          |z  }t	          j        |d|          }t	          j        |dd|id          }|j                                         t          j	                    }|
                                dk    sJ |                                d	k    sJ d S )
Nr5   r   r  r   )rg   ry   pressure)r@   rg   r\   rU   pressure [pascal]z	x [meter])rJ   r   r   r<  r<   r>   plotlinepltgca
get_ylabel
get_xlabel)r   r   coord_attrsrx  	coord_arrx_coordr  axs           r   test_units_in_line_plot_labelsz(TestPlots.test_units_in_line_plot_labels  s     k!R##m&66K1a((:5	,ys+FFF\sc7^*UUU
WYY}}"55555}}+------r   c                   t          j        dt          j        ddgddgg          t	          dt          j        ddg          |z  |fd	t          j        d
dg          |z  |f          d          }|                    d                              d           t          j                    	                                dk    sJ d S )Nvar_ar5   r  r  r@  r   r   rA  r   r  r  r   rj   r\  omarkera = 5 [meter])
r<   r>   rJ   rF   r(  r#  r2  r4  r5  	get_titler   r   r8  rx  s       r   (test_units_in_slice_line_plot_labels_selz2TestPlots.test_units_in_slice_line_plot_labels_sel+  s     lAq6Aq6*++!Q((:5{C!Q((:5{C   
 
 
 	!%%%wyy""$$777777r   zpint.errors.UnitStrippedWarningc                   t          j        dt          j        ddgddgg          t	          dt          j        ddg          |z  |fd	t          j        d
dg          f          d          }|                    d                              d           t          j                    	                                dk    sJ d S )Nr>  r5   r  r  r@  r   r   rA  r   r  r  r   r   rj   r   r  r?  r@  rB  )
r<   r>   rJ   rF   r(  r  r2  r4  r5  rC  rD  s       r   )test_units_in_slice_line_plot_labels_iselz3TestPlots.test_units_in_slice_line_plot_labels_iselD  s     lAq6Aq6*++!Q((:5{C!Q(()   
 
 
 	1#&&&wyy""$$777777r   c                   t          j        d          t          j        z  }t	          j        |ddgd          }t          j        dd          \  }\  }}|j        	                    ||d	          }|
                                d
k    sJ d S )NrH  r   r   r0  r@   rg   rU   r5   r  T)r;  cbar_axadd_colorbarr1  )rJ   r  r   r<  r<   r>   r4  subplotsr2  contourfr6  )r   rx  r  figr;  caxs         r   $test_units_in_2d_plot_colorbar_labelz.TestPlots.test_units_in_2d_plot_colorbar_label\  s    gfoo 00\s#s*EEEa++Yb#WStDD~~#6666666r   c                2   t          j        d          t          j        z  }t	          j        |ddgd          }t          j        dd          \  }\  }}|j        	                    dd          }|j
        d	                                         d
k    sJ d S )NrH  r   r   r0  rI  r5   r  )r   col)r   r   r1  )rJ   r  r   r<  r<   r>   r4  rL  r2  r3  axsr6  )r   rx  r  rN  r;  rO  fgrids          r    test_units_facetgrid_plot_labelsz*TestPlots.test_units_facetgrid_plot_labelse  s    gfoo 00\s#s*EEEa++Yb#s,,y))++/BBBBBBBr   c                    t          j        d          t          j        z  }t	          j        |g dd          }|j                            ddd           d S )	N)r  r  r@  r   )r   r   rW  rt  r0  rI  r   r   rt  r   r   rR  )rJ   r  r   r<  r<   r>   r2  imshow)r   rx  r  s      r   3test_units_facetgrid_2d_imshow_plot_colorbar_labelsz=TestPlots.test_units_facetgrid_2d_imshow_plot_colorbar_labelsn  sV    gl##m&66\s)=)=)=JOOO
-----r   c                6   t          j        d          t          j        z  }t	          j        |g dd          }t          j        dd          \  }\  }}}}|j        	                    ddd	
          }|j
        j                                        dk    sJ d S )N)r  r  r@  rV  r0  rI  r5   r@  r   r   rW  rW  r1  )rJ   r  r   r<  r<   r>   r4  rL  r2  rM  cbarr;  r6  )	r   rx  r  rN  ax1ax2ax3rO  rT  s	            r   5test_units_facetgrid_2d_contourf_plot_colorbar_labelsz?TestPlots.test_units_facetgrid_2d_contourf_plot_colorbar_labelst  s    gi  =#33\szJJJ$'LA$6$6!!c3S  3#3 77z}''))-@@@@@@@r   N)r   r   r   r  rk  rl  r   r   r2   r  r<  rE  rG  rP  rU  rY  r_  r   r   r   r-  r-    s       [!'"#FLk''/L'MM  	

 

. 
.
 

. [!'"#FLk''/L'MM  	

 
8 8
 
8 [!'"#FLk''/P'QQ  	

 
8 8
 
87 7 7C C C. . .A A A A Ar   r-  )b
__future__r   r   r  numpyrJ   pandasr  r  	packagingr   xarrayr<   xarray.corer   r   xarray.testsr   r   r	   r
   r   r   xarray.tests.test_plotr   xarray.tests.test_variabler   matplotlib.pyplotpyplotr4  ImportErrorimportorskipr   errorsro  UnitRegistryr   r   rk  filterwarnings
pytestmarkr!   r+   r3   r(   rC   rG   rP   r_   rc   ru   r   r   fixturer   r  r  r  r   r   r   rl  r   rq  r   r   r   r   r  r2   rm  r  r4  r9  r>  rF  rT  re  rm  ro  r  r  
zeros_likerM  r  r  r  r  r  r`  r  r  r  r  rs  r  r&  r-  r   r   r   <module>rs     s   " " " " " "                         . . . . . . . .                0 / / / / / 6 6 6 6 6 6	####### 	 	 	D	 v6""k5 
 !!T!::! K@AA

	: 	: 	:    3 3 3
        ># # #L) ) )X+ + +\0 0 0
 #7SAAA  BA  1% 1% 1% 1% 1% 1% 1% 1%h '  '  '  '  '  '  '  'F &+**2O*PP	
 	
 	
 		 	' '	 	'. &+**2O*PP	
 	
 	
 		 	' '	 	'@ Q+	:::')<	
 	
 	
 	]_&9>QRRR]%t0ABBB]_d/?@@@ 	    &+**2O*PP	
 	
 	
 		 	 2vy/22M* M* 32	 	 0M*` Q+	:::')<	
 	
 	
 	]_&9>QRRR]%t0ABBB]_d/?@@@ 	    &+**2O*PP	
 	
 	
 		 	 2vy/22M* M* 32	 	 0M*`+ + +,!+ !+ !+H Q+	:::')<	
 	
 	
 	]_&9>QRRR]%t0ABBB]_d/?@@@ 	    &+**2O*PP	
 	
 	
 		 	3' 3'	 	 .3'l Q+	:::')<	
 	
 	
 	]_&9>QRRR]%t0ABBB]_d/?@@@ 	    &+**2O*PP	
 	
 	
 		 	P' P'	 	 .P'f Q+	:::')<	
 	
 	
 	]_&9>QRRR]%t0ABBB]_d/?@@@ 	    &+**2O*PP	
 	
 	
 		 	*' *'	 	 .*'Z Q+	:::')<	
 	
 	
 	]_&9>QRRR]%t0ABBB]_d/?@@@ 	    &+**2O*PP	
 	
 	
 		 	(' ('	 	 .('V Q+	:::')<	
 	
 	
 	]_&9>QRRR]%t0ABBB]_d/?@@@ 	    &+**2O*PP	
 	
 	
 		 	N& N&	 	 .N&b Q+	:::')<	
 	
 	
 	]_&9>QRRR]%t0ABBB]_d/?@@@ 	    &+**2O*PP	
 	
 	
 		 	@& @&	 	 .@&F &+**2O*PP	
 	
 	
 		 	 "-!>??' ' @?	 	'2 &+**2O*PP	
 	
 	
 		 	 "-!>??' ' @?	 	'D &+**2O*PP	
 	
 	
 	+##+R#SS	
 	
 	
	 ' ' '< &+**2O*PP	
 	
 	
 	+##+R#SS	
 	
 	
	 "' "' "'J Q+	:::')<	
 	
 	
 	]_&9>QRRR]%t0ABBB]_d/?@@@ 	    ~66' ' 76 ': Q+	:::')<	
 	
 	
 	]_&9>QRRR]%t0ABBB]_d/?@@@ 	    ~66' ' 76 '<' ' ',z+ z+ z+ z+ z+ z+ z+ z+zN+ N+ N+ N+ N+ N+ N+ N+b4E' E' E' E' E' E' E' E'P4 8 8 8 8 8 8 8 8* hA hA hA hA hA hA hA hA hA hAs   
A AA