
    d             "      "   d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZmZmZm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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% d dl&m'Z' d dl(m)Z)m*Z*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD 	 d dlEmFZF n# eG$ r	 d dlHmFZF Y nw xY wejI        J                    d          ejI        J                    d          gZK G d d          ZL G d d          ZMejI        N                    g d ejO         ejP        g d          dddd           ejO         ejP        g d          dddd           ejO         ejP        d ejQ        d!ejQ        d"d#d!g          ddd$d%           ejO         ejP        d ejQ        d!ejQ        d"d#d!g          R                    d&          ddd$ejI        J                    d'          d()           ejO         ejP        ejQ        ejQ        g          ejQ        ejQ        d d*           ejO         ejP        g d+d,-          d d$dd.          g           G d/ d0eM                      ZSejI        N                    g d ejO         ejP        g dg d1g d2g          g d3g d4g d5d           ejO         ejP        g d6d#ejQ        d!ejQ        d"d#d!gejQ        gd7z  g          dd ejQ        gd dejQ        gg d8d%           ejO         ejP        g d6d#ejQ        d!ejQ        d"d#d!gejQ        gd7z  g          R                    d&          dd ejQ        gd dejQ        gg d8ejI        J                    d9          d()           ejO         ejP        g d+g d:g d;gd,-          g d<g d=g d5d.          g           G d> d?eM                      ZTejI        N                    d@ ejO         ejP        g dAg dBgg dCg dCgg dDg dEgg          dF ejP        g dGg dHg          idI ejP        g dJg dKg dLg          idM ejP        d d$gd d gdd$gg          i ejP        g dH           ejP        g dJ          dN ejP        dd g           ejP        dd$g          dO ejP        g dP           ejP        g d=          dQ ejP        d           ejP        d            ejP        d          dRdF ejP        g dSg dTg          idI ejP        g dKg dKg dUg          idM ejP        ddgd d gdVd gg          i ejP        g dW           ejP        g dX          dN ejP        ddg           ejP        dVd g          dO ejP        g d<           ejP        g dY          dQ ejP        d           ejP        d$           ejP        d           dRdF ejP        g dZg dZg          idI ejP        g dZg dZg dZg          idM ejP        ddgddgddgg          i ejP        g dZ           ejP        g dZ          dN ejP        ddg           ejP        ddg          dO ejP        g d5           ejP        g d5          dQ ejP        d           ejP        d           ejP        d          dRd           ejO         ejP        g d[g d\gd#ejQ        d!ejQ        gg d\gejQ        gd]z  ejQ        gd]z  gg          dF ejP        g dXg dKg          idI ejP        g dJg d^ejQ        ejQ        ejQ        ejQ        gg          idM ejP        dVd$gd d$gejQ        ejQ        gg          i ejP        g dX           ejP        g d_          dN ejP        d$d g           ejP        d d$g          dO ejP        d$d ejQ        g           ejP        d$d ejQ        g          dQ ejP        d            ejP        d$           ejP        d$          dRdF ejP        g dKg dKg          idI ejP        g dKg d`ejQ        ejQ        ejQ        ejQ        gg          idM ejP        d dgddgejQ        ejQ        gg          i ejP        g dK           ejP        g dK          dN ejP        d d g           ejP        ddg          dO ejP        d d ejQ        g           ejP        d dejQ        g          dQ ejP        d            ejP        d            ejP        d           dRdF ejP        g dag dbg          idI ejP        g dZg dcg dKg          idM ejP        ddgd$dgd d gg          i ejP        g da           ejP        g dK          dN ejP        d$dg           ejP        d$d g          dO ejP        g dd           ejP        g d8          dQ ejP        d$           ejP        d            ejP        d$          dRd%           ejO         ejP        g d[g d\gd#ejQ        d!ejQ        gg d\gejQ        gd]z  ejQ        gd]z  gg          R                    d&          dF ejP        g dXg dKg          idI ejP        g dJg d^ejQ        ejQ        ejQ        ejQ        gg          idM ejP        dVd$gd d$gejQ        ejQ        gg          i ejP        g dX           ejP        g d_          dN ejP        d$d g           ejP        d d$g          dO ejP        d$d ejQ        g           ejP        d$d ejQ        g          dQ ejP        d            ejP        d$           ejP        d$          dRdF ejP        g dKg dKg          idI ejP        g dKg d`ejQ        ejQ        ejQ        ejQ        gg          idM ejP        d dgddgejQ        ejQ        gg          i ejP        g dK           ejP        g dK          dN ejP        d d g           ejP        ddg          dO ejP        d d ejQ        g           ejP        d dejQ        g          dQ ejP        d            ejP        d            ejP        d           dRdF ejP        g dag dbg          idI ejP        g dZg dcg dKg          idM ejP        ddgd$dgd d gg          i ejP        g da           ejP        g dK          dN ejP        d$dg           ejP        d$d g          dO ejP        g dd           ejP        g d8          dQ ejP        d$           ejP        d            ejP        d$          dRd(           ejO         ejP        dedfgdgdhggdfdfgdfdfggdidjgdkdjgggd,-          dF ejP        ddgddgg          idI ejP        d d$gd d gd d gg          idM ejP        d d$gd d gd$d$gg          i ejP        ddg           ejP        d d g          dN ejP        ddg           ejP        d$d$g          dO ejP        g dl           ejP        g d<          dQ ejP        d           ejP        d            ejP        d$          dRdF ejP        d$d gd$d$gg          idI ejP        d$d gd d gd$d gg          idM ejP        d$d gd d gd d gg          i ejP        d$d g           ejP        d d g          dN ejP        d d$g           ejP        d$d g          dO ejP        g d<           ejP        g dP          dQ ejP        d            ejP        d            ejP        d$          dRdF ejP        ddgddgg          idI ejP        ddgddgddgg          idM ejP        ddgddgddgg          i ejP        ddg           ejP        ddg          dN ejP        ddg           ejP        ddg          dO ejP        g d5           ejP        g d5          dQ ejP        d           ejP        d           ejP        d          dRd.          g           G dm dneM                      ZU G do dpeM          ZVejI        N                    dqdrdst          ddw            ZWddxZXejI        J                    dy          ddz            ZYdd{ZZ G d| d}          Z[dd~Z\ddZ]ddZ^ddZ_ddZ`ddZaddZbddZc G d d          Zd G d d          Ze G d d          ZfdS )    )annotationsN)Hashable)deepcopy)dedent)AnyFinalLiteralcast)Version)	DataArrayDatasetIndexVariableVariablealign	broadcastset_options)CFDatetimeCoder)
from_cdms2)dtypes)	full_like)IndexPandasIndexfilter_indexes_from_coords)QueryEngineOptionsQueryParserOptions)	is_scalar)InaccessibleArray
ReturnItemassert_allcloseassert_array_equalassert_chunks_equalassert_equalassert_identicalassert_no_warningshas_daskraise_if_dask_computesrequires_bottleneckrequires_cupyrequires_daskrequires_irisrequires_numexprrequires_pintrequires_scipyrequires_sparsesource_ndarray)UndefinedVariableErrorzerror:Mean of empty slicez&error:All-NaN (slice|axis) encounteredc                     e Zd Z ej        d          d             Zd4dZd4dZd4dZd4d	Z	d4d
Z
d4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZed4d            Zd4dZed4d            Zd4dZd4dZd4dZd4dZd4dZd4dZ d4d Z!d4d!Z"d4d"Z#d4d#Z$d4d$Z%d4d%Z&d4d&Z'ed4d'            Z(d4d(Z)d4d)Z*ej+        ,                    d*          d4d+            Z-d4d,Z.d4d-Z/d4d.Z0d4d/Z1ej+        2                    d0d1g ej3         e4j5        g d2d34           e6d5d6          d37           ej3         e4j5        g d2d84           e6d5d6          d87           ej3         e4j5        g d2d84          d9gd:7          f          d4d;            Z7d4d<Z8d4d=Z9d4d>Z:d4d?Z;d4d@Z<d4dAZ=d4dBZ>d4dCZ?d4dDZ@d4dEZAd4dFZBd4dGZCd4dHZDd4dIZEd4dJZFd4dKZGd4dLZHd4dMZId4dNZJd4dOZKd4dPZLd4dQZMd4dRZNd4dSZOd4dTZPd4dUZQd4dVZRd4dWZSd4dXZTd4dYZUd4dZZVd4d[ZWd4d\ZXd4d]ZYd4d^ZZd4d_Z[d4d`Z\d4daZ]ej+        2                    dbe^j_        d9dcd9d5ddg          d4de            Z`ej+        2                    dfeaebg          d4dg            Zcd4dhZdd4diZed4djZfd4dkZgd4dlZhd4dmZid4dnZjd4doZkd4dpZld4dqZmd4drZnd4dsZod4dtZpd4duZqd4dvZrd4dwZsd4dxZtd4dyZud4dzZvd4d{Zwd4d|Zxd4d}Zyd4d~Zzd4dZ{d4dZ|d4dZ}d4dZ~d4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZd4dZed4d            Zd4dZd4dZej+        2                    dg d          ej+        2                    dddgddgg          ej+        2                    d edddgdd5ggdddgddgg                    d4d                                    Zej+        2                    dddg          d4d            Zej+        2                    dddg          d4d            Zd4dZd4dZej+        2                    dd d e4j        eg          d4d            Zd4dZd4dZd4dZd4dZd4dZej+        2                    d ed           ed5gdd5gfg           ed9d6gdd9d6gfg          g ed9d6gdd9d6gfg           ed5gdd5gfg           ed          gg          d4d            Zd4dZd4dZd4dZd4dZd4dZd4dÄZd4dĄZd4dńZd4dƄZd4dǄZd4dȄZd4dɄZd4dʄZd4d˄Zd4d̄Zed4d̈́            Zd4d΄Zd4dτZd4dЄZed4dф            Zed4d҄            Zd4dӄZd4dԄZÐd4dՄZej+        2                    dddg          ej+        2                    dg d٢          ej+        2                    dddg          d5d݄                                    ZŐd4dބZƐd4d߄Zǐd4dZȐd4dZej+                             ee4j                   ed          k    pej        dd9         dk    d          d4d            Zej+                             ee4j                   ed          k    pej        dd9         dk    d          d4d            Zej+                             ee4j                   ed          k    pej        dd9         dk    d          d4d            Zѐd4dZҐd4dZӐd4dZԐd4dZՐd4dZ֐d4dZאd4dZej+        2                    dg d          ej+        2                    dd9efe^j_        efg          d4d                        Zېd4dZܐd4dZݐd4dZej+                            e          ej+        2                    dd ej         ej        d e4j5        d5d9g                    dd5d9gidg          gd ej         ej        d e4j5        dd9g                    ddd9gidg          gg          d4d                        Zd4dZd4dZd4dZd4d Zd4dZd4dZd4dZd4dZd4dZd4dZd4dZed4d            Zej+        2                    dddg          ej+        2                    d	ddg          ej+        ,                    d
          d4d                                    Zd4dZd4dZej+        2                    dd          ej+        2                    ddd6ddddf          d4d                        Zej+        2                    ddd6ddddf          d4d            Zej+        2                    dd          ej+        2                    dd          d4d                        Zej+        2                    g d ej3        dd5d9dd5d9dd7           ej3        dd5d9di d 7           ej3        dd5d9dd5d9dd!7          g          d4d"            Zej+        2                    d#d$d%g          ej+        2                    d&d%d ej3        d'eg(          g          ej+        2                    d)d* ej3        d+eg(          g          d6d.                                    Zeej+        2                    dddg          d4d/                        Zd4d0Zeej+        2                    dddg          d7d1                        Zeej+        2                    dddg          d7d2                        Zeej+        2                    dddg          d7d3                        ZdS (8  TestDataArrayTautousec                   ddd| _         t          j                            d          | _        t	          ddg| j                  | _        t	          ddg| j        | j                   | _        t          d| j        i          | _        | j        d         | _	        t          j                            dd	gd
dggd          | _        t          g dd| j        id          | _        d S )Nvalue1q  attr1attr2
      xyfooab      level_1level_2namesr   rC   rD      coordsdims)attrsnprandomr>   r   vvar   dsdvpd
MultiIndexfrom_productmindexr   mdaselfs    ;lib/python3.11/site-packages/xarray/tests/test_dataarray.pysetupzTestDataArray.setupE   s    '$77
!!(++3*df--C:tvtz::5$&/**'%.m003Z!Q (> 1 
 
 \\\32D3OOO    returnNonec                   t          ddgg dg dgddi          }t          j        dt          j                  t          j        d	          d
}t	          ||d          }t          d          }|t          |          k    sJ d S )Ntimer>   rC   rD   rK            r@   barrK   dtyper   )r>   othermy_variablenameaC              <xarray.DataArray 'my_variable' (time: 2, x: 3)>
            array([[1, 2, 3],
                   [4, 5, 6]])
            Coordinates:
              * x        (x) int64 0 1 2
                other    int64 0
            Dimensions without coordinates: time
            Attributes:
                foo:      bar)r   rP   arangeint64r   r   repr)r\   rR   rM   
data_arrayexpecteds        r]   	test_reprzTestDataArray.test_reprS   s    fc]YYY			$:UENKKy"(333bhqkkJJq&}===
	!
 
 4
++++++++r_   c                X    t          d          }|t          | j                  k    sJ d S )Nz            <xarray.DataArray (x: 4)>
            array([0, 1, 2, 3])
            Coordinates:
              * x        (x) object MultiIndex
              * level_1  (x) object 'a' 'a' 'b' 'b'
              * level_2  (x) int64 1 2 1 2)r   rr   rZ   )r\   rt   s     r]   test_repr_multiindexz"TestDataArray.test_repr_multiindexe   s7    .
 
 4>>))))))r_   c                    t           j                            g dg dgd          }t          t	          t          d                    d|id          }t          d          }|t          |          k    sJ d S )	NrA   rB   cd)rC   rD   rK   rf   rg   rh         rE   rH       r>   rL   a              <xarray.DataArray (x: 32)>
            array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
                   17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])
            Coordinates:
              * x        (x) object MultiIndex
              * level_1  (x) object 'a' 'a' 'a' 'a' 'a' 'a' 'a' ... 'd' 'd' 'd' 'd' 'd' 'd'
              * level_2  (x) int64 1 2 3 4 5 6 7 8 1 2 3 4 5 6 ... 4 5 6 7 8 1 2 3 4 5 6 7 8)rV   rW   rX   r   listranger   rr   )r\   mindex_longmda_longrt   s       r]   test_repr_multiindex_longz'TestDataArray.test_repr_multiindex_longq   s    m00!!!#;#;#;<( 1 
 
 T%))__c;5GcRRR`	
 	
 4>>))))))r_   c                   t          | j        j        | j                   t	          | j        j        | j        j                   dD ]0}t          | j        |          t          | j        |          k    sJ 1t          | j                  t          | j                  k    sJ t          | j        j        | j                   t          | j        j	                  t          | j
        j	                  k    sJ | j        j	                                        D ]%\  }}t	          || j
        j	        |                    &t          j        t                    5  | j        j         d d d            n# 1 swxY w Y   t!          | j
        d                                         t$          j                  sJ t          j        t(          d          5  | j
        d                                          d d d            n# 1 swxY w Y   t          j        t                    5  | j        | j        _        d d d            d S # 1 swxY w Y   d S )N)rN   rk   shapesizenbytesndimrO   r>   zmust be 1-dimensionalmatchr@   )r"   rU   variablerR   r    valuesgetattrlensetrM   rT   itemspytestraisesAttributeErrordataset
isinstanceto_indexrV   r   
ValueError)r\   attrkrR   s       r]   test_propertieszTestDataArray.test_properties   s   TW%tv...47>46=999Q 	C 	CD47D))WTVT-B-BBBBBB47||s46{{****TW%tv...47>""c$'.&9&99999GN((** 	5 	5DAqq$'."34444]>** 	 	GOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$'#,//1128<<<<<]:-EFFF 	& 	&GEN##%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&]>** 	& 	&#vDG	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s6   E..E25E2 G99G= G=H<<I I c                   t          t          j        d                    }|                                }t          j        d          |_        t          t          j        d          |j                   dt          j        d          z  |_        t          dt          j        d          z  |j                   t          |j        |j                   d S )NrK   rf   rD   )r   rP   zeroscopyonesr   r    data)r\   arrayactuals      r]   test_data_propertyz TestDataArray.test_data_property   s    "(6**++276??FM:::"'&//)1rwv.<<<6;66666r_   c                *   t          t          j        d          dddgfdg dfg          }t          j        ddg          t          j        g d          d}d |                                D             }|j                                        |                                k    sJ |j                                        |                                k    sJ t          d	 |j        
                                D                       sJ t          d
 |j        
                                D                       sJ |D ]R}|j        |                             ||                   sJ |j        |                             ||                   sJ Sd S )NrD   rK   r>   r   rC   r?   rA   rB   rz   r>   r?   c                6    i | ]\  }}|t          ||          S  )r   ).0r   idxs      r]   
<dictcomp>z.TestDataArray.test_indexes.<locals>.<dictcomp>   s5     
 
 
'-q#A{3""
 
 
r_   c                B    g | ]}t          |t          j                  S r   )r   rV   r   r   r   s     r]   
<listcomp>z.TestDataArray.test_indexes.<locals>.<listcomp>   s$    PPP#JsBH--PPPr_   c                8    g | ]}t          |t                    S r   )r   r   r   s     r]   r   z.TestDataArray.test_indexes.<locals>.<listcomp>   s"    NNNsJsE**NNNr_   )r   rP   r   rV   r   r   xindexeskeysindexesallr   equals)r\   r   expected_indexesexpected_xindexesr   s        r]   test_indexeszTestDataArray.test_indexes   s   "(6**cAq6]S///<R,STT!#1a&!1!18Q8QRR
 
1A1G1G1I1I
 
 
 ~""$$(9(>(>(@(@@@@@}!!##'7'<'<'>'>>>>>PP9M9M9O9OPPPQQQQQNNen6K6K6M6MNNNOOOOO! 	@ 	@A>!$++,=a,@AAAAA=#**+;A+>??????	@ 	@r_   c                   t          t          j        d          dddgiddg          }|                    d                              t          j        ddg                    sJ |                    d                              t          j        g d                    sJ t          j        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr   r>   rA   rB   r?   rL   r   rC   rD   z)
r   rP   r   	get_indexr   rV   r   r   r   KeyErrorr\   r   s     r]   test_get_indexzTestDataArray.test_get_index   s   "(6**C#s3DCQT:VVVs##**28S#J+?+?@@@@@s##**28III+>+>?????]8$$ 	! 	!OOC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s    C##C'*C'c                
   t          t          j        d          dg          }|                    d          }t	          j        g t          j                  }|                    |          sJ |j        |j        k    sJ d S )Nr   r>   rN   rj   )	r   rP   r   r   rV   r   rq   r   rk   )r\   r   r   rt   s       r]   test_get_index_size_zeroz&TestDataArray.test_get_index_size_zero   sx    "(4..u555%%8Bbh///}}X&&&&&|x~------r_   c                   t          j        g dddt          fg          }t          g ddgd|i          }t          g ddgd|i          }||z
  }t          g d	dgd|i          }t	          ||           t          j        g d
ddt          fg          }t          g ddgd|i          }||z
  }t          ddgdgd|ddg         i          }t	          ||           t          j        ddt           j        fdgddt          fg          }t          g ddgd|i          }||z
  }t          ddgdgd|ddg         i          }t	          ||           dS )z{
        This test checks subtraction of two DataArrays for the case
        when dimension is a structured array.
        )Abe   )Stacy   Dick   )ro   z|S256heightrj   )P   8   x   participantrN   rM   )Q   4   s   )rC   )r   )r      r   rC   r   r   rD   r   r   r   N)rP   r   objectr   r#   nan)r\   p_data	weights_0	weights_1r   rt   
p_data_alt
p_data_nans           r]   test_struct_array_dimsz$TestDataArray.test_struct_array_dims   s    999$x&89
 
 
 MM8O
 
 
	 MM8O
 
 
	 Y&KK}o}f6M
 
 
 	*** X999$x&89
 
 

 MM
8S
 
 
	 Y&G=/=&!Q.2Q
 
 
 	*** XGRV,m<$x&89
 
 

 MM
8S
 
 
	 Y&G=/=&!Q.2Q
 
 
 	*****r_   c                6   | j         }|j        dk    sJ |                                }d|_        |j        dk    sJ t          ||           t	          t          ddg                    }d|_        t	          dgddgfgd          }t          ||           d S )Nr@   ri   r>   rK   r?   rn   )rU   ro   r   r"   r   r   r#   )r\   arrcopiedr   rt   s        r]   	test_namezTestDataArray.test_name   s    gx5    x5    VS!!!=qc2233aSC!:,S999*****r_   c                    | j         }|j        dk    sJ t          j        t          d          5  d|_        d d d            d S # 1 swxY w Y   d S )Nr   zyou cannot assignr   )wr   )rU   rN   r   r   r   r\   r   s     r]   	test_dimszTestDataArray.test_dims  s    gx:%%%%]>1EFFF 	" 	"!CH	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   AA	A	c                &   t          t          j        d          ddg          }|j        dddk    sJ t	          |j                  |j        k    sJ t          j        t                    5  d|j        d	<   d d d            d S # 1 swxY w Y   d S )
Nr   r>   r?   r   rK   rf   r   rg   r@   )	r   rP   r   sizestuplerN   r   r   	TypeErrorr   s     r]   
test_sizeszTestDataArray.test_sizes	  s    "(6**#s<<<{AA......U[!!UZ////]9%% 	# 	#!"EK	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   .BB
B
c                    ddi}d| j         j        d<   || j         j        k    sJ ddi}|| j         _        || j         j        usJ d S )Nr@   ri   bazr   )rU   encoding)r\   rt   	expected2s      r]   test_encodingzTestDataArray.test_encoding  s_    5>"'47+++++AJ	$ 0000000r_   c                ,   | j         }ddi}||_        ||d         _        |j        |k    sJ |d         j        |k    sJ |                                }|j        |k    sJ |d         j        |k    sJ |j        i k    sJ |d         j        i k    sJ d S )Nscale_factorr<   r>   )rZ   r   reset_encoding)r\   r   r   r   s       r]   test_reset_encodingz!TestDataArray.test_reset_encoding  s    "B'!&c
~))))Sz"h....%%'' ~))))Sz"h.... "$$$$c{#r))))))r_   c                   t           j                            d          }t          |          }t          d ddg|fi          d          }t	          ||           t          |ddgg dg          }t          ddg|fdddgfdg dfd          d          }t	          ||           t          |t          j        ddgd	          t          j        g dd
	          g          }t          dd
g|fdddgfd
g dfd          d          }t	          ||           ddgg dg}t          ||dd
g          }t	          ||           t          j        ddgd	          t          j        g dd	          g}t          ||dd
g          }t	          ||           ddgg dd}t          ||dd
g          }t	          ||           t          ||          }t	          ||           dddgfd
g dfg}t          ||          }t	          ||           t          dd
g|fdddgfd          d          }t          |dddgidd
g          }t	          ||           t          |dd
g          }t          d dd
g|fi          d          }t	          ||           t          |dd
gd          }t          ddd
g|fi          d         }t	          ||           t          |d	          }t          dddg|fi          d         }t	          ||           t          |dd
gddi          }t          d dd
g|ddifi          d          }t	          ||           t          |dd
g          }t          d dd
g|i ddifi          d          }t	          ||           t          g ddg di          }t          g ddg dfg          }t	          ||           d S )Nr   dim_0dim_1rA   rB   )Nr   r   r>   rn   r?   )Nr>   r?   ABr   )Nr>   r   r@   rN   ro   ri   rD   rN   rO   rd   r   rM   )rP   rQ   r   r   r#   rV   r   )r\   r   r   rt   coords1coords2coords3coords4s           r]   test_constructorzTestDataArray.test_constructor,  s   y'' 4DGW#5t"<=>>tD6***43*lll!;<<)40!C:.!<<<0 
 
  	6*** 28S#JS11128LLLs3S3S3ST
 
 #J%S3*,=S,,,DWXX
 

 	6*** :|||,43*556*** 8S#JS11128LLLs3S3S3ST43*556*** c
6643*556*** 4))6*** #s$sLLL&9:4))6*** C:t"4C#s;LMMNNtT4#Sz!2S#J??6*** 4sCj111DC:t"4566t<6*** 4sCju===ES#J#5677>6*** 4e,,,EWg$6#=>??F6*** 4sCj
CCCDC:teQZ"@ABB4H6*** 4sCj111DC:tR%"DEFFtL6*** 999c999-=>>>YYYiii0@/ABBB6*****r_   c           	     "   t           j                            dd          }t          j        t
          d          5  t          |g dgddg           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          |dg did	d
g           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          |dg di           d d d            n# 1 swxY w Y   t          j        t          d          5  t          |dd g           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          g ddddgfg           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          ddgddgddgfdd           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          t           j                            dd          d| j	        fd| j	        fg           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          t           j                            dd          d| j	        fdt          d          fg           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          |ddiddg           d d d            d S # 1 swxY w Y   d S )NrK   rD   zcoords is not dict-liker   r   r>   r?   znot a subset of the .* dimrA   rB   zis not a stringr   zconflicting sizes for dimrd   r   rC   r  r   rL   zconflicting MultiIndexrf   rF   zmatching the dimension size)rP   rQ   randnr   r   r   r   r   randrY   r   r\   r   s     r]   test_constructor_invalidz&TestDataArray.test_constructor_invalid  se   yq!$$]:-GHHH 	5 	5dYYYK#s444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 ]:-JKKK 	: 	:dS))),sCj999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:]:-JKKK 	. 	.dS))),---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. ]9,>??? 	. 	.d#t----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. ]:-IJJJ 	9 	9iii#1v8888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]:-IJJJ 	O 	Oq!fAq6qc
%C%C#NNNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O ]:-FGGG 	V 	VbinnQ**c4;-?#t{AS,TUUU	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V]:-FGGG 	Y 	YbinnQ**c4;-?)USTXXAV,WXXX	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y ]:-KLLL 	> 	>dC83*====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   AA#&A#B))B-0B-C00C47C4D66D:=D:FFF'GGG6?III'AJ::J>J> LLLc           	     T   ddgddgg}t          |ddgddgd	d
dgdddi          }t          |          }t          ||           t          |j        |j                  }t	          ||           t          j        |t          j        ddgd
          t          j        ddgd                    }t          |          }t	          ||           t          j        |d         t          j        ddgd                    }t          |          }t	          |d         	                    d
d          |           t          |ddgddgdd
ddgfdd
dg          }t          |          }t          ||           t          |j        |j                  }t          ||           t          ddddgfi          d         }t          t          j        ddgd                    }t          ||           t          t          dddg                    }t          ||           d S )N皙   r   rD   rA   rB   r   r   r   r>   r?   foobarri   rM   rN   ro   rO   rn   )indexcolumnsr  Tdropg            ?)r>   r?   rA   r   rL   r@   )r   r#   r   rM   r"   rV   	DataFramer   Seriesreset_coordsr   r   )r\   r   rt   r   frameseriess         r]   $test_constructor_from_self_describedz2TestDataArray.test_constructor_from_self_described  sU   r
QF#s2r(33s!*
 
 
 8$$6***8?FM::Xv&&&(C:C000Hb"XC000
 
 

 5!!Xv&&&47"(B8#*F*F*FGGG6""Xa[--c-==vFFFs2r(#c{ASTTs
 
 

 8$$6***8?HO<<6***EEC:#6788?28S#JU;;;<<6***=c
;;<<6*****r_   c                    t          ddgddggddgddgd	d
dgdddi                                          }t          |          }t          ||           t          ||           d S )Nr  r  r   rD   rA   rB   r   r   r   r>   r?   r  ri   r  )r   chunkr#   r!   r\   rt   r   s      r]   ,test_constructor_from_self_described_chunkedz:TestDataArray.test_constructor_from_self_described_chunked  s    BZ!Q s2r(33s!*
 
 
 %'' 	 8$$6***Hf-----r_   c                v    t          d g dfi          d          }t          d          }t          ||           d S Nr   )r   r   r#   r   s      r]   test_constructor_from_0dz&TestDataArray.test_constructor_from_0d  s=    D2q'?++D116*****r_   c                "   dd l m} |                    dd          }|j                            dd          dz   }t	          |||dd	d
g          }t          j        d          }t	          |||dd	d
g          }t          ||           d S )Nr   r}   rf   chunks)r}   r}   rf   rf   rC   r   r>   r?   rL   )
dask.arrayr   rp   rQ   r   rP   r"   )r\   dacoordr   r   ecoordrt   s          r]   test_constructor_dask_coordsz*TestDataArray.test_constructor_dask_coords  s     	 		!D	))yv66:4e%(@(@SzRRR1TV*D*DCQT:VVVVX&&&&&r_   c                   t          t          j        d          ddid          }|}|                                }|                    |          sJ |                    |          sJ |                    d          }|                    |          sJ |                    |          rJ |                    ddi          }|                    |          rJ |                    |          rJ |                                }d|j        d	<   |                    |          sJ |                    |          rJ |                                }dt          j        d
           f|d<   |                    |          rJ |                    |          rJ |                    d          }|                    |          rJ |                    |          rJ |                                }t          j	        |d<   |                                }|                    |          sJ |                    |          sJ t          j	        |d d <   |                    |          rJ |                    |          rJ |                                }d|d<   |                    |          rJ |                    |          rJ d S )N      @rA   *   r>   r   r   xxxri   r@   rg   Tr  r   i )
r   rP   rp   r   r   	identicalrenamerO   r  r   )r\   origrt   r   s       r]   test_equals_and_identicalz'TestDataArray.test_equals_and_identical  s   3#r===v&&&&&!!&)))))''v&&&&&%%f-----#u..??6*****%%f-----#Uv&&&&&%%f-----RYq\\M*s??6*****%%f-----&&D&11??6*****%%f-----Fq	;;==v&&&&&!!&)))))Fqqq	??6*****%%f-----s??6*****%%f-------r_   c                   t          t          j        d          ddid          }|                    t          j        d                    rJ |                    d          rJ |                    dd	i          rJ d S )
Nr0  rA   r1  r>   r   rg   {   rC   rD   )r   rP   rp   r   r3  broadcast_equals)r\   r5  s     r]   test_equals_failuresz"TestDataArray.test_equals_failures  s~    3#r===;;ry||,,,,,>>#&&&&&((!Q0000000r_   c                   t          ddgddid          }t          ddgddddgfid          }|                    |          sJ |                    |          sJ |                    |          rJ |                    |          rJ t          dgddid          }|                    |          rJ |                    |          rJ d S )Nr   r?   r>   r   rL   )r   r9  r   r3  )r\   rA   rB   rz   s       r]   test_broadcast_equalsz#TestDataArray.test_broadcast_equals  s    q!fsAhS111q!fsS1a&M2===!!!$$$$$!!!$$$$$88A;;;;q>>!!!qc3(555%%a(((((%%a(((((((r_   c                   t          | j        | j        d                    | j        d         }| j        d         }t          | j        d         |           t          | j        d         |           t                      }|d d          |d         ||j                 ||j                 ||         |||f         ||j        dk             ||j        dk             ||dk             ||dk    |dk    f         f
D ]"}t          | j        | j        |                    #|d         |d d df         |d dd df         ||j        d d                  ||j        d d                  ||d d                  ||d d         |d d	         f         ||j        dk             ||j        dk             ||dk             ||dk    |dk    f         fD ](}t          | j        |         | j        |                    )d S )
Nr@   r>   r?   .r   r   rK   rD   rf   )	r#   rU   rT   r   r   r   r"   r    rR   )r\   r>   r?   r   is        r]   test_getitemzTestDataArray.test_getitem(  s   $'%.111GCLGCLq)))q)))llFHM
OF1I2
R BKBB
 	. 	.A $'!*----F1IBQBK!
2A2"1"J"1"q!u1
QAJAq1u
 	6 	6A tvay$'!*5555	6 	6r_   c                    | j         t          d          dd         }| j                             t          d          d          }t          ||           d S )NrK   r   r   )rU   sliceiselr#   )r\   r   rt   s      r]   test_getitem_dictzTestDataArray.test_getitem_dictM  sO    uQxxa0017<<%((a<006*****r_   c                   t          dgdggddgdgdddd	gfd
dgfd
dgddggfddd
g          }t          ||d d                     t          ||d d d d f                    t          ||d                    t          ||d dd df                    t          ||ddgdgf                    |d         }t          dddddddd          }t          ||           |dd d f         }t          dgddgddd
dgfd
dgfdd
          }t          ||           |d d df         }t          ddgddgddddd	gfddddgfdd          }t          ||           d S )Nr<   r=   rC   rD   rK   rf   r>   rA   rB   r?   rz   r{   e)r>   r?   r   x2y2xyr   .r   r   r   r   r#   r\   r5  r   rt   s       r]   test_getitem_coordsz!TestDataArray.test_getitem_coordsR  s   TB4LVSS#J'SElSzS#J<0  s
 
 
 	tAAAw'''tAAAqqqDz***tCy)))tBQBF|,,,tQFQCK0111daaas#SII
 
 	6***adDSSElSEl  
 
 
 	6***aaadHVS#J'S#J'  
 
 
 	6*****r_   c                *   t          t          j        d                              d          ddg          }t          ddgddggddg          }||         }t	          ||j        ddgddggd d f                    t          t          j        d                              d          ddgg d	g d
d          }t          j         ddgddggddg          }||         }|j        ddgddggd d f         }t	          ||           |j        dk    sJ t          j         g ddg          }t          ||         |ddgd d f                    t          ||         |ddg                    t          ||         ||j                            d S )N   r   r>   r?   r   r   rC   r   r   ry   r   r   XY)rO  rP  r?   )TTF)	r   rP   rp   reshaper    r   xrrN   r"   )r\   r+  indr   rt   s        r]   test_getitem_dataarrayz$TestDataArray.test_getitem_dataarray  s   ry}},,V44C:FFF!Q!Q(Sz:::C629q!fq!f-=qqq-@#ABBBIbMM!!&))s")=)=)=>>
 
 

 lQFQF+3*===C9q!fq!f-qqq0168,,,{o---- l...cU;;;RWb!Qm,,,RWb!Qj)))RWbn-----r_   c                   t          t          j        d                              d          ddg          }t	          |dg i         t          t          j        d          ddg                     t	          |j        dg i         t          t          j        d          ddg                     t	          |g          t          t          j        d          ddg                     d S )NrN  r   r>   r?   r   )r   rf   )rK   r   )r   rP   rp   rQ  r#   r   locr\   r+  s     r]   test_getitem_empty_indexz&TestDataArray.test_getitem_empty_index  s    ry}},,V44C:FFFS"I	"(62B2B#s(T(T(TUUUFC9y&)9)9c
KKK	
 	
 	
 	B28F+;+;3*!M!M!MNNNNNr_   c                
   ddt          d d           ft          d d           t          d d           ft          d d           dfddgt          d d           ft          d d           ddgfg}|D ]}t          j        d                              dd          }t	          t          j        d                              dd          g ddd	gd
dg dfdddgfdddg          }d||<   d||<   t          |j        |           d S )NrI  r   rC   rh   rK   rD   rd   rA   rB   rf   r>   r   r?   r{   rE  )r>   r?   r   rF  rG  r   )rA  rP   rp   rQ  r   r    r   )r\   tuplestrt   r5  s        r]   test_setitemzTestDataArray.test_setitem  sF    dD!!"4dD 1 124"VU4&&'4A'
  	6 	6Ay||++Aq11H	!$$Q**"s0c
+  3Z
 
 
D DGHQKt{H5555	6 	6r_   c                (   t          t          j        d          ddg          }t          dgddg          }d|t	          ||          <   t          ddgddgddggddg          }t          ||           t          d	d          |t	          ||          <   t          ddgddgddggddg          }t          ||           t          dgd
dg          |t	          ||          <   t          d
dgddgddggddg          }t          ||           t          t          j        d          ddg          }t          ddggddg          }t          ddggddg          }d|t	          ||          <   t          ddgddgddggddg          }t          ||           t          t          j        d          ddg          }t          dgddg          }d||<   t          ddgddgddggddg          }t          ||           d S )NrK   rD   r>   r?   r   rA   r   rC   r   r   rD   rK   rB   )r   rP   r   r   dictr#   )r\   r+  rS  rt   ind_xind_ys         r]   test_setitem_fancyz TestDataArray.test_setitem_fancy  s`   rwvc3Z888uq!f%%!"4#q!fq!fq!f5S#JGGG2&&&!)"a4#q!fq!fq!f5S#JGGG2&&&!)3%!Q!8!84#q!fq!fq!f5S#JGGG2&&& rwvc3Z888Aq6(#s444Aq6(#s444%&4%5!!!"q!fq!fq!f5S#JGGG2&&&rwvc3Z888uq!f%%3q!fq!fq!f5S#JGGG2&&&&&r_   c           	     X   d } |            }t          t          j        dd          dgdt          j                            d          i          }t          j        t          d          5  d	|t          |
          <   d d d            n# 1 swxY w Y   t          t          j        dd          dgdt          j        dd          i          }d	|t          |
          <   t          j	        |t          |
                   j
        d	          sJ t          |d          |            d                    t          |d          |            d                     |            }t          j         t          j        d          g dg ddg dfd          }t          j        t          d          5  ||t          |
          <   d d d            n# 1 swxY w Y   t          j         t          j        d          g dg ddg dfd          }||t          |
          <   t          j	        |t          |
                   j
        d	          sJ t          |d          |            d                    t          |d          |            d                    t          j         t          j        d          g dg ddg dfd          }||t          |
          <   t          j         t          j        d          g dg ddg dfd          }t          j        t          d          5  ||t          |
          <   d d d            n# 1 swxY w Y   t          j         t          j        d          g dg ddg dfd          }||t          |
          <   d S )Nc            	         t          t          j        d          g dt          j        d          g ddg dfd          S 	Nrf   rK   rD   r>   r?   r   rf   r   r>   )rC   rK   rf   rD   )r>   r?   non-dimr   r   rP   r   rp   r   r_   r]   get_dataz6TestDataArray.test_setitem_dataarray.<locals>.get_data  U    	""$__1( #\\\2    r_   rC   rf   r>   rK   r   dimension coordinate 'x'r   r   r>   rh  rK   rK   rD   rg  r   r   rD   rf   r>   rh  rd   )r   rP   rp   rQ   r	  r   r   
IndexErrorr_  allcloser   r#   rR  r   r\   rj  r+  rS  values        r]   test_setitem_dataarrayz$TestDataArray.test_setitem_dataarray  sn   		 		 		 XZZ	!QseS")//RSBTBT<UVVV]:-HIII 	  	 Btc{{{O	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	!QseS")Aq//<RSSS4#;;;{2dSkkk?1155555C((**S/222I

9(=>>>XZZHY "YYY/?@@
 
 

 ]:-HIII 	$ 	$#Btc{{{O	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ HY "YYY/?@@
 
 

  4#;;;{2dSkkk?1155555C((**S/222I

9(=>>> HY "YYY/?@@
 
 

  4#;;; HY "YYY/?@@
 
 

 ]:-HIII 	$ 	$#Btc{{{O	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ HY "YYY/?@@
 
 

  4#;;;s6   .BBB8GGG8MMMc                @    t          ddg          }d|v sJ d|vsJ d S )NrC   rD   rK   )r   )r\   rs   s     r]   test_containszTestDataArray.test_contains*  s7    1v&&
J
""""""r_   c                    t          t          j                            d          d          }t          j        t          j        |                    }t          ||           d S )NrK   rK   )idrc   r   )r   rP   rQ   pickleloadsdumpsr#   )r\   r   roundtrippeds      r]   test_picklezTestDataArray.test_pickle/  sS    ))&11GGG|FL$6$677|,,,,,r_   c                >   t          t          j        d                    }|j        J |                                }|j        dk    sJ |j        j        }|                    d          }|j        dk    sJ |j        j        |k    sJ |                    d          }|j        dk    sJ |j        j        |k    sJ |                    d          j        j        |                    d          j        j        k    sJ |                                j        J dd lm	} |                    d	
          }t          |j        |j                  sJ d	|j        j        v sJ |                    dd          }|j        dk    sJ |j        j        |k    sJ d S )Nr   )rK   r&  )rD   rC   rD   rD   r'  ry  )r  )rK   rC   rD   r   	testname_)name_prefixrK   )r   r   )r   rP   r   r(  r  r   ro   loadr*  r   r   Array)r\   	unblockedblockedfirst_dask_namer+  s        r]   
test_chunkzTestDataArray.test_chunk4  s   bgfoo..	'''//##~----!,+//)9/::~!11111| O3333///00~////| O3333 q!!&+yq/A/A/F/KKKKK||~~$,,, 	 //k/::',11111gl///// ///33~////| O333333r_   c           	        t          | j        d         | j                            d                     t          | j        | j                            t          d                                t          | j        d d         | j                            t          d                               t          | j        d dd df         | j                            t          d          t          d                               t	          j        t          d          5  | j                            d           d d d            n# 1 swxY w Y   t	          j        t          d          5  | j                            dd	
           d d d            n# 1 swxY w Y   t          | j        | j                            dd
                     d S )Nr   rm  rK   rg   r   zKDimensions {'not_a_dim'} do not exist. Expected one or more of \('x', 'y'\)r   )	not_a_dimwarn)r  missing_dimsignore)	r#   rU   rB  rA  r   r   r   warnsUserWarningr[   s    r]   	test_iselzTestDataArray.test_iselW  s   TW\\A\%6%6777$',,t,"="=>>>!dgllU1XXl&>&>???!RaR$',,qU1XX,*N*NOOO]+
 
 
 	& 	&
 GLL1L%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& \4
 
 
 	; 	;
 GLL16L:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	$',,,"R"RSSSSSs$   #EEE1FF!Fc                l   t          g dd          }t          |                    t          j        dgd                    |                    t          j        dg                               t          |                    t          j        dgd                    |                    t          j        dg                               t          |                    t          j        dgd	                    |                    t          j        dg                               d S )
Nrd   r>   r   r   uint64rj   rm  uint32rq   )r   r#   rB  rP   r   rW  s     r]   test_isel_typeszTestDataArray.test_isel_typesj  s   yyys+++GGbhs(333G44bgg!g6N6N	
 	
 	
 	GGbhs(333G44bgg!g6N6N	
 	
 	
 	GGbhs'222G33RWWrx}}W5M5M	
 	
 	
 	
 	
r_   zignore::DeprecationWarningc                   d}t           j                            |          }t          |g ddt          j        ddd          i          }dd	g}d	dg}|j        d d ||f         }|                    d
|fd
|f          }|j        d         j        t          |          fk    sJ t          |j                  dgk    sJ |j
        dk    sJ t           j                            ||           |                    dddgfdddgfdd	dgf           t           j                            |                    ddgfddgfddgf          j                                        |d                                                    |                    dddgf           ddg}ddg}|j        d d ||f         }|                    d|fd|f          j        }	t           j                            |	|           t          |                    d|fd|f          |                    d|fd|f                     t!          j        t$          d          5  |                    dddgfdg df           d d d            n# 1 swxY w Y   t'                      }
dg df|
d<   dg df|
d<   dg df|
d <   |                    |
d         |
d                    }d|j        v sJ d|j
        v sJ t          |d         |
d                    t!          j        t(          d!          5  |                    t          g d"ddg d"i          t          g d"ddg d#i                     d d d            n# 1 swxY w Y   t'                      }
d$g df|
d%<   d&ddgf|
d'<   d(ddgdd	gd	dggf|
d<   d$g df|
d <   |                    |
d         |
d                    }d%|j        v sJ d%|j
        v sJ d'|j        v sJ d'|j
        v sJ t          |d%         |
d%                    t          |d'         |
d'                    |j        d d |
d          j        |
d         j        f         }t-          ||           d S ))N)r<   r|   rh   )rc   r?   r>   rc   r   d   r<   r   rC   rK   )
test_coordr?   r>   r  )rc   r  )pointsrD   rf   )rc   r>   r?   )p)rC   rf   rD   rc   r   r   r   zDimensions of indexers mismatchr   rd   )station)r   r   Cr  dim1s)rf   rg   rC   dim2szconflicting values/indexes on r   r   rC   rK   rA   rA   )rB   rB   rA   rB   )rP   rQ   r   rp   r   rB  rM   r   r   r   rN   testingr"   r   squeezer#   r   r   rq  r   r   r   r    )r\   r   np_arrayr+  r?   r>   rt   r   r   actual2stationsactual3actual4	expected4s                 r]   test_isel_fancyzTestDataArray.test_isel_fancyz  s   9##E**---vryCQS?T?T6U
 
 
 FF9QQQ1W%OQ/OQ3GHH}\*0SVVI====FM""vh....{44444

111 	1v&;A*?KRSUVQWCX 	 	
 	
 	
 	
""GGqc]vsm}   WWYYW%%''		
 	
 	
 	kAq6*+++GGIaaaAg&	''[!,a0@'AAH

333 	GG{A&;*:G;;GG{A&;*:G;;	
 	
 	
 ]:-OPPP 	I 	IGG{QF+YYY/GGHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 99+___=)9995)9995''HW-'1B'CCGN****GL((((+Xi-@AAA]:-NOOO 	 	GGIIIIy)))>TUUUIIIIy)))>TUUU    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 991!Q('1a&1a&1a&)AB#YYY/''HW-'1B'CCgn$$$$gl""""gn$$$$gl""""x}555x}555KAAx )8G+<+EE
	 	7I.....s%    I>>JJ"AM22M69M6c           	     \   dt          j        t          d                    f| j        d<   | j        d         }t	          ||                    t          d                                t	          |d         |                    d                     t	          |d d         |                    t          d                               t	          |d d         |                    g d	                     t	          |d d d d
f         |                    | j        d         d
k                          t          d          }t	          |d         |                    |                     t	          |dg         |                    t          ||                               d S )Nr>   
abcdefghijr@   rm  rC   rB   rK   rz   r   rf   r?   r?   )rP   r   r   rT   r#   selrA  r   )r\   r+  rB   s      r]   test_selzTestDataArray.test_sel  s_   RXd<&8&899:WU^RVVeDkkV22333A...BQB%**!5!5666BQB///!:!:;;;AAArrEBFFdgclQ.>F$@$@AAAcNNA,,,QC"&&5A;;&"7"788888r_   c                    dt          j        t          d                    f| j        d<   | j        d         }t	          g ddg          }|                    |          }t          ||                    g d                     t	          g ddg          }|                    |          }t          ||                    g d                     d|j	        v sJ t	          g ddgdg di	          }|                    |          }t          ||                    g d                     d|j	        v sJ d|j
        v sJ t          |d                             d          |d                    d S )
Nr>   r  r@   r   r   rm  r   new_dimr   )rP   r   r   rT   r   r  r#   rB  r    rN   rM   r"   	drop_vars)r\   r+  rS  r   s       r]   test_sel_dataarrayz TestDataArray.test_sel_dataarray  s   RXd<&8&899:WU^se444#999!5!5666 yk:::#6277YYY7#7#7888FK'''' OO9+y)))6L
 
 
 #6277YYY7#7#7888FK''''FM))))VI&0055s9~FFFFFr_   c                ,   t          t          j        d          dt          j        d          fg          }t          j        t
          d          5  |                    t          |j                             d d d            d S # 1 swxY w Y   d S )Nr<   r>   zcannot use non-scalar arraysr   rm  )	r   rP   rp   r   r   r   r  rA  r>   r   s     r]   test_sel_invalid_slicez$TestDataArray.test_sel_invalid_slice  s    ")B--3	"*>)?@@]:-LMMM 	( 	(IIegI'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   )B		BBc                   t          j        ddd          }t          t          j        d          d|fg          }|                    t          |j        d         |j        d                             }t          ||           t          t          j        d          d	||d         z
  fg          }|                    t          |j	        d         |j	        d                   
          }t          ||           d S )N
2000-01-01Dim  freqperiodsrc   r   r   r  delta)r  )
rV   
date_ranger   rP   rp   r  rA  rc   r"   r  )r\   timesr   results       r]   !test_sel_dataarray_datetime_slicez/TestDataArray.test_sel_dataarray_datetime_slice  s    lcBBB")C..FE?*;<<ejmUZ^ D DEEVU###")C..GUU1X5E+F*GHHu{1~u{2!G!GHHVU#####r_   coord_valuesindices        g"~j?g"~j?gZd;O?float64rj   rC   rK   rz  float32rD   scalarc                    t          j        d          }t          |d|id          }|                    ||                   }t          ||         d||         id          }t	          ||           d S )Nrf   r>   rL   rm  )rP   rp   r   r  r"   )r\   r  r  data_valuesr   r   rt   s          r]   test_sel_floatzTestDataArray.test_sel_float  s    & illS,,?cJJJ<011 #|G/D)EC
 
 
 	VX&&&&&r_   c                   t          j        d          }t          j        g dd          }t          dd          }d}t	          j        t          |          5  t          |d	|id	
          }d d d            n# 1 swxY w Y   t	          j        t          |          5  t          ||         d	||         id	
          }d d d            n# 1 swxY w Y   |                    ||                   }t          ||           d S )Nrf   r  float16rj   rC   rK   z5`pandas.Index` does not support the `float16` dtype.*r   r>   rL   rm  )
rP   rp   r   rA  r   r  DeprecationWarningr   r  r"   )r\   r  r  r  messager   rt   r   s           r]   test_sel_float16zTestDataArray.test_sel_float16   s   illx : : :)LLL1++I\,G<<< 	O 	OKl0C#NNNC	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O\,G<<< 	 	 G$c<3H-IPS  H	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 <011VX&&&&&s$   A;;A?A?!!CCCc                <   g d}t          j        g dt           j                  }t          j        g ddd|fd|fd          }|                    dd	g
          }|                    dd          }|                    d
          }t          ||           d S )NrA   rA   rB   rB   )皙?皙?333333?g?rj   rC   rD   rK   rf   r>   lvl1lvl2r   r  r  rm  rA   r  r   )	rP   r   r  rR  r   	set_indexr  rB  r"   )r\   r  r  r+  r   rt   s         r]   test_sel_float_multiindexz'TestDataArray.test_sel_float_multiindex2  s     $##x,,,BJ???\LLsS$K#t+U+U
 
 
 \\VV,\--Ss++77Q7<<VX&&&&&r_   c                   t          t          j        d          d          }t          |d         |                    d                     t          |d d         |                    t          d                               t          |ddg         |                    ddg                     t          ||dk              |                    |dk                          d S )Nr<   r>   r   r   rm  rg   r   )r   rP   rp   r#   r  rA  r   s     r]   test_sel_no_indexzTestDataArray.test_sel_no_indexA  s    ")B--c222q599q9>>222rrEIIaI$9$9:::2waW)=)=>>>uqy)599	9+C+CDDDDDr_   c                $   t          t          j                            dd          dg dfdt	          d          fg          }t          j        t          d          5  |                    d	
           d d d            n# 1 swxY w Y   |                    ddg
          }|                    d	dgd          }t          ||           |                    ddg          }|                    ddgdd          }t          ||           d S )NrK   rf   r>   r   r?   abcdzTry setting the `method`r   abr  rA   rB   bapad)r?   methodrC   rD   rm  g?gffffff?backfill)r>   r  	tolerance)
r   rP   rQ   r	  r   r   r   r   r  r#   )r\   r   rt   r   s       r]   test_sel_methodzTestDataArray.test_sel_methodH  sC   A..#yyy1ACfCV0WXX]8+EFFF 	 	HHtH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 88sCj8))T4L776***88q!f8%%S#JzQGG6*****s   BB	Bc                   t          g ddg dfg          }t          d          }|                    dd          }t          ||           t          dddi          }|                    dd          }t          ||           t          g ddg	          }t          d          }|                    dd          }t          ||           d S )
Nrd   r>   r   rC   r   Tr>   r  Fr   )r   r  r#   r\   r   rt   selecteds       r]   test_sel_dropzTestDataArray.test_sel_dropV  s    c999%5$677Q<<88ad8++8,,,Qa))88ae8,,8,,,#///Q<<88ad8++8,,,,,r_   c                   t          g ddg dfg          }t          d          }|                    dd          }t          ||           t          dddi          }|                    dd          }t          ||           d S )	Nrd   r>   r   rC   r   Tr  F)r   rB  r#   r  s       r]   test_isel_dropzTestDataArray.test_isel_drope  s    c999%5$677Q<<99qt9,,8,,,Qa))99qu9--8,,,,,r_   c                d   t          | j                            t          d                    | j                            d                     t          | j                            t          d                    | j                            d                     t          | j                            d | j        j        D                       | j                            d                     t          | j                            d | j        j        D                       | j                                                   t          j        t          d          5  | j                            d	g           d d d            n# 1 swxY w Y   t          j        t          d
          5  | j                            d           d d d            n# 1 swxY w Y   t          j        t          d          5  | j                            d           d d d            d S # 1 swxY w Y   d S )Nrg   rm  r   c                .    i | ]}|t          d           S )rh   rA  r   dims     r]   r   z+TestDataArray.test_head.<locals>.<dictcomp>s       @@@C#uQxx@@@r_   rh   c                .    i | ]}|t          d           S rg   r  r  s     r]   r   z+TestDataArray.test_head.<locals>.<dictcomp>v  r  r_    either dict-like or a single intr   rK   expected integer type@expected positive intr   )
r"   rU   rB  rA  headrN   r   r   r   r   r[   s    r]   	test_headzTestDataArray.test_heado  s   TW\\E!HH\--tw||a|/@/@AAATW\\E!HH\--tw||a|/@/@AAAGLL@@47<@@@AA47<<PQ??	
 	
 	
 	GLL@@47<@@@AA47<<>>	
 	
 	
 ]9,OPPP 	 	GLL!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,DEEE 	  	 GLL3L	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:-EFFF 	 	GLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   !F		FF/GGG=H%%H),H)c                f   t          | j                            t          dd                     | j                            d                     t          | j                            t          d                    | j                            d                     t          | j                            d | j        j        D                       | j                            d                     t          | j                            d | j        j        D                       | j                                                   t          j        t          d	          5  | j                            d
g           d d d            n# 1 swxY w Y   t          j        t          d	          5  | j                            d           d d d            n# 1 swxY w Y   t          j        t          d	          5  | j                            d           d d d            d S # 1 swxY w Y   d S )Nr   rm  rg   r   c                0    i | ]}|t          d d          S )iNr  r  s     r]   r   z+TestDataArray.test_tail.<locals>.<dictcomp>  "    GGG3#uRGGGr_   rh   c                0    i | ]}|t          d d          S )r   Nr  r  s     r]   r   z+TestDataArray.test_tail.<locals>.<dictcomp>  r  r_   r  r   rK   r  r  r  r   )
r"   rU   rB  rA  tailrN   r   r   r   r   r[   s    r]   	test_tailzTestDataArray.test_tail  s   TW\\E"dOO\44dgllQl6G6GHHHTW\\E!HH\--tw||a|/@/@AAAGLLGG$',GGGHHGLLOO	
 	
 	
 	GLLGG$',GGGHH$',,..	
 	
 	
 ]9,OPPP 	 	GLL!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,DEEE 	  	 GLL3L	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:-EFFF 	 	GLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   "F

FF0GGG>H&&H*-H*c           	        t          | j                            t          d d d                    | j                            d                     t          | j                            d | j        j        D                       | j                            d                     t          j        t          d          5  | j                            dg           d d d            n# 1 swxY w Y   t          j        t          d          5  | j                            d	           d d d            n# 1 swxY w Y   t          j        t          d
          5  | j                            d           d d d            n# 1 swxY w Y   t          j        t          d          5  | j                            d           d d d            d S # 1 swxY w Y   d S )Nrg   rm  c                2    i | ]}|t          d d d          S )Nrh   r  r  s     r]   r   z+TestDataArray.test_thin.<locals>.<dictcomp>  s&    LLL#uT433LLLr_   rh   r  r   rK   r  r  r  r   zcannot be zeror   r  )
r"   rU   rB  rA  thinrN   r   r   r   r   r[   s    r]   	test_thinzTestDataArray.test_thin  s   TW\\E$a$8$8\9947<<!<;L;LMMMGLLLLtw|LLLMMGLLOO	
 	
 	
 ]9,OPPP 	 	GLL!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,DEEE 	  	 GLL3L	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:-EFFF 	 	GLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:->??? 	! 	!GLLaL   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!sH   C))C-0C-D77D;>D;FFF*GGGc                   dt          j        t          d                    f| j        d<   | j        d         }t	          |d d         |j        d d                    t	          |d         |j        d                    t	          |d         |j        ddi                    t	          |d         |j        d                    t	          |d d         |j        g d	                    t	          |d dd d
f         |j        g d	t          j        d
          f                    t	          |d d d d
f         |j        d d | j        d         d
k     f                    d S )Nr>   r  r@   rK   rz   rC   rB   )rB   .r   rf   r?   )rP   r   r   rT   r#   rV  rp   rW  s     r]   test_loczTestDataArray.test_loc  sA   RXd<&8&899:WU^BQB...As,,,ASz 2333Ax 0111BQB!8999BQBFRVOOORYq\\,I%JKKKAAArrEBF111dgclQ.>+>$?@@@@@r_   c                    t          j        ddgd          }t          t          j        |j                  d|f          }t          |j        d|d         i         |d                    d S )	Nz2017-09-05T12z2017-09-05T15datetime64[ns]rj   r  r   rc   r   )rP   r   r   r   r   r#   rV  )r\   r[  r   s      r]   test_loc_datetime64_valuez'TestDataArray.test_loc_datetime64_value  sg    Ho7?OPPP"'!'**A4HHHFAaD>2E!H=====r_   c                   dt          j        t          d                    f| j        d<   | j        d         }d|j        dd<   t          j        |j        dk              sJ d|j        dt          dd          i<   t          j        |j        dk              sJ d|j        dt          dd          i<   t          j        |j        dk              sJ t          t          j	        d          
                    d	d
          ddg          }d|j        d<   |j        d         dk    sJ |j        d         dk    sJ t          t          j	        d          
                    d	d
          ddg          }d|j        d<   t          j        |j        d         t          j        d
          k              sJ |j        d         dk    sJ d S )Nr>   r  r@   r   rA   jrD   rN  rK   rf   r?   r   rI  )r   rC   )rC   r   )rP   r   r   rT   rV  r   r   rA  r   rp   rQ  r   rW  s     r]   test_loc_assignzTestDataArray.test_loc_assign  s   RXd<&8&899:WU^ s3wvbi1n%%%%%)*U3__%&vbi1n%%%%%)*U3__%&vbi1n%%%%% ry}},,Q22#sDDDty!####y!####ry}},,Q22#sDDDq	vbilbhqkk122222y!######r_   c           	     p   d } |            }t          t          j        dd          dgdt          j                            d          i          }t          j        t          d          5  d	|j        t          |
          <   d d d            n# 1 swxY w Y   t          t          j        dd          dgdt          j        dd          i          }d	|j        t          |
          <   t          j
        |t          |
                   j        d	          sJ t          |d          |            d                    t          |d          |            d                     |            }t          j         t          j        d          g dg ddg dfd          }t          j        t          d          5  ||j        t          |
          <   d d d            n# 1 swxY w Y   t          j         t          j        d          g dg ddg dfd          }||j        t          |
          <   t          j
        |t          |
                   j        d	          sJ t          |d          |            d                    t          |d          |            d                    d S )Nc            	         t          t          j        d          g dt          j        d          g ddg dfd          S re  ri  r   r_   r]   rj  z9TestDataArray.test_loc_assign_dataarray.<locals>.get_data  rk  r_   rC   rf   r?   rK   r   zdimension coordinate 'y'r   r   rm  r>   rh  rn  rg  r   ro  rp  rl  rd   )r   rP   rp   rQ   r	  r   r   rq  rV  r_  rr  r   r#   rR  r   rs  s        r]   test_loc_assign_dataarrayz'TestDataArray.test_loc_assign_dataarray  s   		 		 		 XZZ	!QseS")//RSBTBT<UVVV]:-HIII 	$ 	$"#BF4#;;;	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	!QseS")Aq//<RSSStc{{{{2dSkkk?1155555C((**S/222I

9(=>>>XZZHY "YYY/?@@
 
 

 ]:-HIII 	( 	("'BF4#;;;	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( HY "YYY/?@@
 
 

 $tc{{{{2dSkkk?1155555C((**S/222I

9(=>>>>>s$   .BBBG''G+.G+c                ~    t          ddgddgg          }|j        d         dk    sJ |j        d         dk    sJ d S )Nr   rC   TFr  )r   rV  r  s     r]   test_loc_single_booleanz%TestDataArray.test_loc_single_boolean  sR    !Q$888x~""""x!######r_   c                    t          j        ddgddggddgddgddgd	
          }t          j                            |j        t          ddgdg	                   dgdgg           d S )Nr   rC   dim1r  r>   r?   rA   rB   )r  r  r   )rR  r   rP   r  r    rV  r_  rW  s     r]   +test_loc_dim_name_collision_with_sel_paramsz9TestDataArray.test_loc_dim_name_collision_with_sel_params  s    \VaV(# #J3*==
 
 

 	
%%F4c3Z66671#s	
 	
 	
 	
 	
r_   c                   t           j                            ddgddgddggd          }t          t	          d	          d
|fg          	 d!d"fd} |dd            |dd            |dddgdd            |dt	          d          d            |dt	          d          d            |ddgddg            |t          dd          t	          d	                      |t          dd          t	          d                      |ddddd            |dddddgdd            |ddit	          d          d           t          j        d                             d                     t          j        d                             d                     t          j        ddid f                             ddi                     t          j
        t                    5  j        d          d d d            n# 1 swxY w Y   t                              ddd                              dd                     d S )#NrA   rB   rC   rD   r   r   )onetwothreerH   r}   r>   Fr`   ra   c                Z                        |           }                    |          }|st          ||           d S |r*|j        d         |k    sJ |                    |di          }t          |j        |j                   |d                             |d                   rJ d S )Nrm  r   r>   )r  rB  r#   rN   r4  r   r   )lab_indexerpos_indexerreplaced_idxrenamed_dimr+  expected_damdatas         r]   r  z9TestDataArray.test_selection_multiindex.<locals>.test_sel  s     [))B**{*33K < [11111 771:4444K#566B k.BCCCc7>>+c*:;;;;;;;r_   )rA   rC   r   r   )rB   rD   r   rA   rC   Tr  )r!  r"  r  rf   )r!  r|   )rB   rC   rh   )r  r  r  rm  )r%  ..)FNr`   ra   )rV   rW   rX   r   r   rA  r#   rV  r  r   r   rq  )r\   rY   r  r$  s      @r]   test_selection_multiindexz'TestDataArray.test_selection_multiindex  s   ++3Z!Q"b*2I , 
 
 %((c6]O44 GK	< 	< 	< 	< 	< 	< 	< 	q!!!r"""Aq6'JJJJq5555eAhhT2222,-1v666sC%((+++x**E!HH555Q44a888Q''!QdPWXXXX%uQxxd;;;;3S)9)9:::=1599x93H3HIIIE3<#45uyyE3<y7P7PQQQ]:&& 	  	 Ih	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	S%;%;<<eiiCUVi>W>WXXXXXs   >HHHc                   t          j        t          j        d                              dd          ddgt          j        d          t          j        d          d          }|                    ddg          }|                    |d         d	k               }t          j        t                    5  |
                    d
           d d d            n# 1 swxY w Y   |                                }|                    d                              |d         d	k               }|                    ddg                                          }t          ||           d S )N(   r}   rg   r>   r?   r   r   rH  rf   rm  rH  )rR  r   rP   rp   rQ  stackrB  r   r   r   r  unstackreset_indexr  r#   )r\   rT   ds_iselr   rt   s        r]   'test_selection_multiindex_remove_unusedz5TestDataArray.test_selection_multiindex_remove_unused.  sy   \IbMM!!!Q''s1BIaLL99
 
 

 XX#sX$$''RWq['))]8$$ 	 	KK!K	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 "">>$'',,3!,<<%%#s%44<<>>6*****s   8CC"Cc                   t          ddgdgddgdd          }t          ddgdgddgd	d          }t          j        ||gd
                              ddg          }|j        dk    sJ |                    d          }|                    ddg                              d                              d          }t          ||           d S )Nr   rC   r>   rA   r   r   rD   rK   rB   r  r?   r*  r  rH  )
r   rR  concatr  rN   r  rB  r,  r  r"   )r\   r+  dbr   r   rt   s         r]   $test_selection_multiindex_from_levelz2TestDataArray.test_selection_multiindex_from_level?  s    1vSEAS2I2IJJJ1vSEAS2I2IJJJy"bs+++55#s5DDyG####C99A9''//55==cBBVX&&&&&r_   c                    t          t          j        d          d          }t          t          d          dd          }t	          ||d                    t	          ||j        d                    d S )Nr  r>   r   rg   r   )r   rP   r   r   r#   rM   )r\   r   rt   s      r]   test_virtual_default_coordsz)TestDataArray.test_virtual_default_coordsI  sg    "(4..s333U1XXCc:::5:...5<#455555r_   c                    t          j        dd          }t          t          j        dd          d|fg          }t          |d         |j                   t          |j        d         |j                   d S )Nr  r<   r  rC      rc   ztime.dayofyear)rV   r  r   rP   rp   r    r   rM   )r\   datesr+  s      r]   test_virtual_time_componentsz*TestDataArray.test_virtual_time_componentsO  sp    lB777ryB''65/):;;2./;;;29%56	BBBBBr_   c                   t          dt          j        ddgd                    t          dt          j        g dd                    g}t          t          j                            dd          |d	
          }t          |j                  dk    sJ t          |j                  ddgk    sJ |d         	                    |j        d                   sJ |d         	                    |j        d                   sJ d|j        v sJ d|j        vsJ d	|j        vsJ t          j        t                    5  |j        d          d d d            n# 1 swxY w Y   t          j        t                    5  |j        d	          d d d            n# 1 swxY w Y   t          d          }t          |j                  }||k    sJ |j        j        t          j        d          t          j        d          dk    sJ |j        d= t#          |j        t'          |j                            |_        t          |j        dg diddgd	          }t-          ||           t          j        t.          d          5  dt          j        d          f| j        d<   dt          j        d          f| j        j        d<   d d d            d S # 1 swxY w Y   d S )Nr>   r   r   rq   r?   r   rD   rK   r@   rn   r   rC   z^        Coordinates:
          * x        (x) int64 -1 -2
          * y        (y) int64 0 1 2r   r   .cannot set or update variable.*corrupt.*index r   rf   rF   )r   rP   r   r   rQ   r	  r   rM   r   r3  r   r   r   r   rr   r   rk   r   r   r   _indexesr   r#   r   rp   rZ   )r\   rM   r+  expected_reprr   rt   s         r]   test_coordszTestDataArray.test_coordsV  s    #rxR'::;;#rx			7;;<<
 ryq!,,f5AAA 29~~"""" BI3*,,,,ay""29S>22222ay""29S>22222bi	!!!!BI%%%%]8$$ 	 	IaLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]8$$ 	 	Ie	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 (
 
 bi&&&& y'):):'ARAR#S#SSSSSIcN0c")nnMMRYiii(8SzPUVVVX&&&]O
 
 
 	= 	= $'	!"5DHY*-ry||)<DHOI&		= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s7   ;EEE9FFF?AKKKc                   t          t          j        d          dddgfdt          d          fg          }t	          j        t          d          5  |d	         j                                         d d d            n# 1 swxY w Y   t          j
        g d
d          }|d         j                                        }|                    |          sJ t          j                            ddgg d
gddg          }|j                                        }|                    |          sJ t          j                            g d
ddggddg          }|j                            ddg          }|                    |          sJ t	          j        t          d          5  |j                            dg           d d d            d S # 1 swxY w Y   d S )Nr   r>   rC   rD   r?   abczno valid indexr   rI  r   rn   r   rH   zordered_dims must match)r   rP   r   r   r   r   r   rM   r   rV   r   r   rW   rX   )r\   r+  rt   r   s       r]   test_coords_to_indexz"TestDataArray.test_coords_to_index  sU   rx''3A-#tE{{9K)LMM]:->??? 	' 	'tHO$$&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 8OOO#666A&&((v&&&&&=--V___%c3Z . 
 
 ##%%v&&&&&=--__q!f%c3Z . 
 
 ##S#J//v&&&&&]:-GHHH 	& 	&Iu%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s$    A??BB(GGGc                   t          ddgddgdddgfdd	d
          }|j        d         }t          ddgddddgfddgddd          }t          ||           |j        d= t          |                    dd          |           dddgf|j        d<   t          ddgddddgfddgddd          }t          ||           d S )Nr<   r=   rC   rD   r>   rA   rB   rf   )r>   rF  r   r   )r   rF  r>   r   rF  Tr  x3)r   rE  r>   )r   rM   r#   r  rK  s       r]   test_coord_coordszTestDataArray.test_coord_coords  s$   HQF3c
*;!DD3
 
 
 S!F!C#s#4Aq6BBSV
 
 
 	6***M$..t$.??HHH"S#J/dF!C#s#4Aq6BBSV
 
 
 	6*****r_   c                   t          t          j        d          dg dfdt          d          ft          d          dddgd          }|                                }t          ddgt          j        d          fdg dfdt          d          ft          d          d	          }t          ||           |                    d
dg          }t          ||           |                    d
          }t          ddgt          j        d          fdg dfddt          d          ft          d          d          }t          ||           |                    d
g          }t          ||           |                    d          }t          t          j        d          dt          d          iddgd          }	t          ||	           |                                                    d          }
t          |
|	           |                    d
d          }t          t          j        d          dt          d          ft          d          dddgd          }t          ||           t          j	        t          d          5  |                    dd           d d d            n# 1 swxY w Y   t          j	        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j	        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j                            ddgddggd          }t          g dd|idd          }t          j	        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r>   r   r?   rf   )ri   r   r?   r@   r   )r@   ri   r   r?   ri   r   )r@   ri   )r   r?   Tr  )rM   rN   ro   cannot be foundr   	not_foundzcannot remove indexrA   rB   r   rC   r  rH   r  r  )r   rP   r   r   r  r   r#   r   r   r   r   rV   rW   rX   )r\   r   actual1	expected1r  r  	expected3r  actual5	expected5actual6actual7	expected7midxs                 r]   test_reset_coordszTestDataArray.test_reset_coords  s   HV///*Cq?qRRs	
 
 
 ##%%c
BHV$4$45___-U1XX1XX	 
 
	 	),,,##UEN33),,,##E**3Z&!1!12C;QRR%((O%((33
 
	 	),,,##UG,,),,,###..HVc588_C:E
 
 
	 	),,,))++***55),,,##E#55HV%((O%((33s	
 
 
	 	),,,]:-?@@@ 	0 	0e$///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0]:-?@@@ 	+ 	+k***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]:-CDDD 	# 	#c"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# }))C:1v*>FV)WWsDk%PPP]:-CDDD 	& 	&f%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&sH   J88J<?J<L  LL&MMM,OOOc                   t          d          }|                    d          }t          dddi          }t          ||           t          j        t
          d          5  | j                            dt          d          f	           d d d            n# 1 swxY w Y   t          j         g d
d          }t          j        t
                    5  g d|d<   d d d            n# 1 swxY w Y   t          j        t
                    5  g d|j	        d<   d d d            n# 1 swxY w Y   t          j        t
                    5  dg df|j	        d<   d d d            d S # 1 swxY w Y   d S )Nr<   r1  rz   rz   r=  r   r>   rf   )rF   r   r   rJ   r?   rd   )
r   assign_coordsr#   r   r   r   rZ   r   rR  rM   )r\   r   r   rt   r+  s        r]   test_assign_coordsz TestDataArray.test_assign_coords  se   "$$r$**R#r++***]O
 
 
 	< 	< H""Cq?";;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< \)))#...]:&& 	# 	#"llBsG	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#]:&& 	* 	*)\\BIcN	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*]:&& 	. 	.!999-BIcN	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.sH   #+BB!BC**C.1C.D''D+.D+E''E+.E+c                    | j         }t          j        t          d          5  |                    t          d                     d d d            d S # 1 swxY w Y   d S )Nz Updating MultiIndexed coordinater   rf   rm  )rZ   r   r  FutureWarningrV  r   r  s     r]   &test_assign_coords_existing_multiindexz4TestDataArray.test_assign_coords_existing_multiindex  s    x\-/RSSS 	+ 	+q***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   $AAAc                    t          g ddg dfg          }t          g ddg dfg          }||j        d<   t          g ddt          j        ddgfg ddd	          }t	          ||           d S )
Nrd   r>   r   rD   rK   rf   rhsrD   rK   )r]  r>   rL   )r   rM   rP   r   r#   )r\   lhsr]  rt   s       r]   test_coords_alignmentz#TestDataArray.test_coords_alignment  s    			S)))$4#566			S)))$4#566
5IIsRVQN&;)))LLSV
 
 
 	h'''''r_   c                    t          g ddg dfg          }g d|j        d<   |j        d                                                             t          j        g d                    sJ d S )Nrd   r>   r   )r   rM   r   to_pandas_indexr   rV   r   )r\   r   s     r]   test_set_coords_update_indexz*TestDataArray.test_set_coords_update_index  sr    999YYY'7&899,__cs#3355<<RXooo=V=VWWWWWWWr_   c                    t          j        t          d          5  t          d          | j        d<   d d d            d S # 1 swxY w Y   d S )Nr=  r   rf   rF   )r   r   r   r   rZ   r[   s    r]    test_set_coords_multiindex_levelz.TestDataArray.test_set_coords_multiindex_level  s    ]O
 
 
 	+ 	+ #(((DHY	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   AAAc                    t          g ddg          }t          g ddgg dg          }||d<   t          g ddg dfg          }t          ||           d S )Nr   rB  r   rd   r   r  rJ  )r\   r   	new_coordrt   s       r]   !test_coords_replacement_alignmentz/TestDataArray.test_coords_replacement_alignment"  s{    			000iiiugyyykJJJ	E
YYY			0B/CDDDh'''''r_   c                    t          dddi          }|j        d         }t          dddid          }t          ||           d S )Nr   rC   rD   r  rM   ro   )r   rM   r#   r\   r   r   rt   s       r]   test_coords_non_stringz$TestDataArray.test_coords_non_string*  sQ    1a&)))AQ1vA666*****r_   c                |    t          t          j        d          ddddgi          }|j        d= d|j        vsJ d S )NrD   r>   r   rC   r   )r   rP   r   rM   r   r   s     r]   "test_coords_delitem_delete_indexesz0TestDataArray.test_coords_delitem_delete_indexes0  sH    Cq!fFFFJsO#,&&&&&&r_   c                    t          j        t          d          5  | j        j        d= d d d            d S # 1 swxY w Y   d S )Nz)cannot remove coordinate.*corrupt.*index r   rF   )r   r   r   rZ   rM   r[   s    r]   $test_coords_delitem_multiindex_levelz2TestDataArray.test_coords_delitem_multiindex_level6  s    ]J
 
 
 	+ 	+ 	*	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   7;;c                B   t          t          j        d          ddgddgg dd          }t          t          j        d	          ddgg dddgd          }t          ||          \  }}|                    |          }|                    |          }t          ||           t          ||           t          t          j                            d
          dt          d
          fg          }t          t          j                            d          dt          d          fg          }t          ||          \  }	}
t          |                    |          |		                    dd                     t          |                    |          |
           d S )Nr   r>   r?   rA   rB   r   r   r   r^  rg   rh   )
r   rP   r   r   broadcast_liker#   rQ   r	  r   	transpose)r\   arr1arr2orig1orig2new1new2orig3orig4new3new4s              r]   test_broadcast_likez!TestDataArray.test_broadcast_like<  s   GFOOss///::
 
 

 GFOOs(Sz::
 
 

 !t,,u""4((""4((%%%%%%")//!,,U1XX.?@@")//!,,U1XX.?@@ue,,
d--e44dnnS#6N6NOOO--e44d;;;;;r_   c                   t          t          j                            dd          dt	          d          fdt	          d          fg          }|d dd df         }t          |                    |          |           |                                }t          j        |d d <   ||d dd df<   t          |                    |          |           d S )Nrg   rh   r>   r?   rD   )	r   rP   rQ   r	  r   r#   reindex_liker   r   )r\   r@   ri   rt   s       r]   test_reindex_likezTestDataArray.test_reindex_likeU  s    	1--eAhh#uQxx/QRR"1"bqb&k))#..44488::f!RaR))#..99999r_   c                T   t          t          j                            dd          ddg          }t	          ||                    |                     |d d         }t          j        t          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )	Nrg   rh   r>   r?   r   rf   zdifferent size for unlabeledr   )	r   rP   rQ   r	  r#   r  r   r   r   )r\   r@   ri   s      r]   test_reindex_like_no_indexz(TestDataArray.test_reindex_like_no_index_  s    	1--S#J???c..s33444"1"g]:-LMMM 	" 	"S!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   :BB!$B!c                6   t          t          j                            d          dt	          d          fg          }t          t          j        d          d          }t          j        t                    5  |	                    |           d d d            n# 1 swxY w Y   t          j
        g dt                    }t          |g d	g          }t          g d
g dg          }|                    |d          j        }|j        |k    sJ d S )Nrg   rc   r  time2r   r  rd   rj   )r  r  r  )rD   rg   rh   r|   r}   )皙gzG?gףp=
?g=
ףp=?gRQ?r  r  )r   rP   rQ   r	  r   rp   r   r   r   reindexr   complexr  rk   )r\   r+  r  xnpr>   r?   re_dtypes          r]   test_reindex_regressionsz&TestDataArray.test_reindex_regressionsg  sG   ryq))FE!HH3E2FGGG")A,,W555]:&& 	# 	#JJEJ"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# hyyy000c???"3444ooo/M/M/M.NOOO>>!E>228w(""""""s   ;BB"%B"c                @   t          ddgddddgi          }g d}|                    |dd	
          }t          dt          j        t          j        gd|fg          }t	          ||           |                    |dg d
          }t          dt          j        t          j        gd|fg          }t	          ||           t          d|i          }|                    |d          }t          ddt          j        gd|fg          }t	          ||           d S )Nr<   r=   r?   r   rC   r   )r  r  皙?r  r  )r?   r  r  r  )r  r  g{Gz?r  )r   r  rP   r   r#   r   r  )r\   r>   r?   r   rt   alts         r]   test_reindex_methodz!TestDataArray.test_reindex_methodt  s%   r2hS#1v???QzSAAb"&"&1C8*EEE6***Qz=M=M=MNNb"&"&1C8*EEE6***sAhJ77b"bf-QxjAAA6*****r_   
fill_value       @)Nuc           	     b   t          ddgdddgdddgfd          }g d	}|t          j        k    rt          j        x}}n*t          |t                    r|d          }|d
         }n|x}}|                    ||          }t          dd|gd|ddd|gfd          }t          ||           d S )Nr<   r=   r?   r   rC   rD   )r?   r  r   r   r  )r?   r  )	r   r   NArP   r   r   r_  r  r#   )r\   r  r>   r?   fill_value_varfill_value_ur   rt   s           r]   test_reindex_fill_valuez%TestDataArray.test_reindex_fill_value  s    r2hS1vS1a&M1R1RSSSII"" -/F2N\\
D)) 	7'-N%c?LL,66N\Q:66^$#1l';!<==
 
 

 	6*****r_   rk   c           	         t          ddgddt          j        ddg|          i          }|                    |j                  }|}t          ||           |j        |j        k    sJ d S )	NrC   rD   r>   rA   rB   rj   r   rm  )r   rP   r   r  r>   r#   rk   )r\   rk   r   r   rt   s        r]   test_reindex_str_dtypez$TestDataArray.test_reindex_str_dtype  s    Fc28S#Je+L+L+L%M
 
 
 ''6***|x~------r_   c                    t          j        g ddg i                              d          }|                    ddg          }|j        |j        k    s
J d            |j        t
          j        k    s
J d            d S )	Nrm  r>   r   r        ?r  zIDtype of reindexed DataArray should match dtype of the original DataArrayz2Dtype of reindexed DataArray should remain float32)rR  r   astyper  rk   rP   r  )r\   r>   r?   s      r]   test_reindex_empty_array_dtypez,TestDataArray.test_reindex_empty_array_dtype  s     L&#r;;;BB9MMIIc
I## GqwV  Grz!!!? "!!!!r_   c           	        t          j        g dddddg dfi          }|                    d          }|j        dk    sJ |                                }d|_        t          ||           |                    d           }|j        J |                                }d |_        t          ||           |                                }|j        J t          ||           |                    ddi          }|j        d	k    sJ t          j        g dddddg dfi          }t          ||           |                    d
          }|j        d	k    sJ t          ||           |                    ddi          }	d|	j        v sJ t          j        g dddddg dfi          }
t          |	|
           |                    d          }d|j        v sJ t          ||
           |                    ddd          }|j        d	k    sJ d|j        v sJ t          j        g dddddg dfi          }t          ||           |                    dd          }|j        d	k    sJ d|j        v sJ t          ||           |                    ddd          }|j        dk    sJ |j        d	k    sJ d|j        v sJ t          j        g dddddg dfi          }t          ||           d S )Nrd   r  ro   r,  rg   rh   r|   )rN   ro   rM   name_newdim_new)r  r1  	coord_new)r,  )r  r,  )rR  r   r4  ro   r   r#   rN   rM   )r\   r+  renamed_nameexpected_namerenamed_nonameexpected_nonamer"  expected_dimrenamed_dimkwrenamed_coordexpected_coordrenamed_coordkwrenamed_bothexpected_bothrenamed_bothkwrenamed_allexpected_alls                    r]   test_renamezTestDataArray.test_rename  s   \IIE%AS7T
 
 

 yy,, J....		'}555 4"***''))#999"***999 ii	 233<////|IIi34	
 
 
 	l333 		i	00!\1111555 		7K"899m22222IIEeYYYEW7X
 
 
 	777 ))+)66o44444.999 yy[!I!IJJ L0000l11111II)YYY!78	
 
 
 	}555 yDD"l2222n33333777 ii
	iMM:----<////k00000|II)YYY!78	
 
 
 	l33333r_   c                   t          ddgddddgfid          }t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j         ddgddddgfid          }t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr   r>   r?   rC   rL   z,rename 'x' to 'y' does not create an index.*r   rm  )r   r   r  r  r4  rR  rW  s     r]   $test_rename_dimension_coord_warningsz2TestDataArray.test_rename_dimension_coord_warnings  sq    1vsS1a&M&:EEE\M
 
 
 	 	 III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 \1a&#aV})=CHHH\M
 
 
 	 	 III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AA ACC	Cc                   t          t          j        dd          ddgt          d          t          d          g          }t          dddgt          d          t          d          g          }t	          ||           t          t          j        dd          g d	t          j        d
          ddgd          }t          d|j        |j                  }t	          ||           t          t          j        dt          j                  dt          j        d
          fdddgfg          }t          dt          j        d
          fdddgfg          }t	          ||           t          j
        t          d          5  t          t          j        d          dt          j        d
          idg           d d d            n# 1 swxY w Y   t          j
        t          d          5  t          t          j        d          dt          j        d
          fg           d d d            d S # 1 swxY w Y   d S )Nr   rK   r>   r?   rf   r   )rC   r<   rD   r   )r   r>   r?   r<   northsouthr   )r<   rD   rA   rB   r  zdifferent number of dimr   rC   rL   zdoes not match the 0 dim)r   rP   fullr   r#   rp   rN   rM   r   r   r   r   r   r   s      r]   test_init_valuezTestDataArray.test_init_value  s   GFAc3Zq5888L
 
 
 1C:uQxxq6JKKK6***GJ"" 2gw-?@@
 
 

 18=III6***GGRV$$sBIbMM.BS3PS*DU-V
 
 
 C2#7#Sz9J"KLLL6***]:-GHHH 	L 	Lbhqkk3	"*>cUKKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L]:-HIII 	B 	BbhqkkC2+?*@AAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs$   :GGG79H==IIc                   t          t          j                            d          dt	          d          id          }t          |j        ddt	          d          fid          }|                    ddi          }t          ||           t                      	                    |j
                                        |j
                                                  D ]/}|j
        |                             |j
        |                   sJ 0t          t          j                            d          dt	          d          id          }t          |j        ddt	          d          fid          }|                    d          }t          ||           t                      	                    |j
                                        |j
                                                  D ]/}|j
        |                             |j
        |                   sJ 0t          j                            t	          d          t	          d          gd	d
g          }t          t          j                            d          dd|fid          }t          |j        d|id          }|                    ddi          }t          ||           t                      	                    |j
                                        |j
                                                  D ]/}|j
        |                             |j
        |                   sJ 0d S )NrK   r>   rB  r?   r   rm  aabyzzy1rG  rH   )r   rP   rQ   r	  r   r   	swap_dimsr#   r   unionr   r   r   rV   rW   from_arrays)r\   r   rt   r   dim_namer   s         r]   test_swap_dimszTestDataArray.test_swap_dims/  s   ")//!,,sDKK.@#FFU\C#tE{{1C+D3OOO#s,,6***H$5$:$:$<$<fo>R>R>T>TUU 	Q 	QH?8,33H4Eh4OPPPPPP ")//!,,sDKK.@#FFU\C#tE{{1C+D3OOO3''6***H$5$:$:$<$<fo>R>R>T>TUU 	Q 	QH?8,33H4Eh4OPPPPPP m''ed5kk(B4QU,'WW")//!,,sS#J.?EEU\C:s;;#s,,6***H$5$:$:$<$<fo>R>R>T>TUU 	Q 	QH?8,33H4Eh4OPPPPPP	Q 	Qr_   c           
        t          t          j                            dd          ddgdt          j        ddd          iddi	          }t          j        t          d
          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    ddgg d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    dg           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    ddg           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    ddgddg           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    ddgddg           d d d            n# 1 swxY w Y   t          j        t                    5  |                    ddgddg           d d d            n# 1 swxY w Y   t          j        t                    5  |                    ddgddg           d d d            n# 1 swxY w Y   |                    ddgddg           |                    ddgddg           t          t          j                            dd          ddgdt          j        ddd          iddi	          }t          j        t                    5  |                    ddi           d d d            n# 1 swxY w Y   t          j        t                    5  |                    ddid           d d d            d S # 1 swxY w Y   d S ) NrK   rf   r>   r   r  r  keyentryrN   rM   rO   zdim should be Hashable orr   r   zlengths of dim and axisrA   rB   rd   r  axiszDimension x alreadyr1  zduplicate valuesr?   r   rC   rD   r   r   r   r  g	@r{   )rE  )r   rP   rQ   r	  linspacer   r   r   expand_dimsr   rq  r   s     r]   test_expand_dims_errorz$TestDataArray.test_expand_dims_errorH  s2   IOOAq!!wS#q112'"	
 
 
 ]9,HIII 	! 	!a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!]:-GHHH 	> 	>3*999===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> ]:-CDDD 	) 	)3%(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) ]:-@AAA 	. 	.3*---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]:-@AAA 	; 	;3*Aq6:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;]:-@AAA 	< 	<3*Ar7;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< ]:&& 	; 	;3*Aq6:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;]:&& 	< 	<3*Ar7;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	sCj2w777sCj1v666IOOAq!!wS#q112'"	
 
 
 ]9%% 	0 	0y#.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 ]:&& 	- 	-sAh!,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   'B		BB/CCC=D!!D%(D%E,,E03E0F::F>F> HHH,III8J  J$'J$M))M-0M-N44N8;N8c           
        t          t          j                            dd          ddgdt          j        ddd          iddi	          }|                    d
          }t          t          j        |j        d          g ddt          j        ddd          iddi	          }t          ||           |                    d
d          }t          ||           |                    d
dg          }t          t          j        t          j        |j        d          d          g ddt          j        ddd          iddi	          }t          ||           |                    d
dgd          }t          ||           |                    dd
gddg          }t          t          j        t          j        |j        d          d          g ddt          j        ddd          iddi	          }t          ||           |j	        d         dk    sJ |                    dd
gd          }t          ||           |                    d
dgddg          }t          t          j        t          j        |j        d          d          g ddt          j        ddd          iddi	          }t          ||           |j	        d         dk    sJ |                    d
dgd          }t          ||           d S )NrK   rf   r>   r   r  r  r  r  r  r?   r1  r   )r?   r>   r   Tr  r   )r?   r   r>   r   rD   rC   r  )r>   r?   r   r   r   r   )r>   r   r   r?   )
r   rP   rQ   r	  r  r  r   r#   r  rO   r\   r   r   rt   r~  s        r]   test_expand_dimszTestDataArray.test_expand_dimsv  s8   IOOAq!!wS#q112'"	
 
 
 ""s"++N5<++$$$S#q112'"	
 
 
 	6***~~c~55--- ""Sz"22N2>%,::A>>)))S#q112'"	
 
 
 	6***~~sCjt~<<--- ""SzA"??N2>%,::A>>)))S#q112'"	
 
 
 	6***|E"g----~~sCjt~<<--- ""SzR"AAN2>%,;;R@@)))S#q112'"	
 
 
 	6***|E"g----~~sCjt~<<-----r_   c           	        t          t          j                            dd          ddgt          j        ddd          dddd	i
          }|                    d          }t          t          j        |j        d          g dt          j        ddd          t          j        d          ddd	i
          }t          ||           |	                    dgd          }t          ||           d S )NrK   rf   r>   r   r  r  r>   r   r  r  r  r   r1  r   )r   r>   r   rC   Fr  )
r   rP   rQ   r	  r  r  r   r   r#   r  r  s        r]   'test_expand_dims_with_scalar_coordinatez5TestDataArray.test_expand_dims_with_scalar_coordinate  s    IOOAq!!wS#q11<<'"	
 
 
 ""s"++N5<++$$$S#q11

CC'"	
 
 
 	6***~~se%~88-----r_   c           	     F   t          t          j                            dd          ddgt          j        ddd          dddd	i
          }|                    ddg dd          }ddgdgg dt          j        ddd          t          d          d}t          |j        t          j        g d          z  |t          |
                                          dd	i                              ddg          }t          ||           |                    g d          }t          |j        t          j        g d          z  g dt          j        ddd          t          d          ddg ddd	i                              d          }t          ||           d S )NrK   rf   r>   r   r  r  r  r  r  r  rD   rC   r   )r?   r   r   r   )r?   r   r   r>   r   )rD   rC   rK   rK   rf   )rM   rN   rO   r?   )r   )rK   rK   rf   )r   r>   r   r   )r   r>   r   )r   rP   rQ   r	  r  r  r   r   r   r   r   r  r#   )r\   r   r   expected_coordsrt   	other_wayother_way_expecteds          r]   &test_expand_dims_with_greater_dim_sizez4TestDataArray.test_expand_dims_with_greater_dim_size  s   IOOAq!!wS#q11<<'"	
 
 
 ""___#M#MNN Q$__Q1%%1XX
 
 L27???333"o**,,--'"	
 
 

 )S'N
#
# 	 	6*** %%OOO%<<	&L27999---([Aq))q	  )(('"

 

 

 )G

 	 	+Y77777r_   c                     fd j         j        D             }d |D             }t           j        j        |d          } j                                        }dg df}||d<   ||d<   |                     j         j                  }t          ||           |                    dd	          }|                    g d
          }t          ||           |                    g d
          }t          ||           t          t          j	        
                    dd          dddgfdddgfdd          }t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nc                D    g | ]}j                             |          S r   rY   get_level_valuesr   nr\   s     r]   r   z0TestDataArray.test_set_index.<locals>.<listcomp>  )    NNNq4;//22NNNr_   c                "    i | ]}|j         d |fS rm  rn   r   s     r]   r   z0TestDataArray.test_set_index.<locals>.<dictcomp>       :::3#(S#J:::r_   r>   rL   r  level_3rm  T)r>   append)rF   rG   r  rD   r   rC   r?   )r>   levelr   zdimension mismatchr   r  z.*variable\(s\) do not existlevel_4)rY   rI   r   rZ   r   r   r  r#   rP   rQ   r
  r   r   r   )r\   r   rM   r   rt   r  objarray2ds   `       r]   test_set_indexzTestDataArray.test_set_index  sg   NNNNDK<MNNN::':::$(/&sCCC8==??%"i%oo 1o22h'''mmim55??%F%F%F?GGh'''"C"C"CDD)))INN1a  1v#1v??
 
 

 ]:-BCCC 	) 	)(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) ]:-LMMM 	' 	'MMIM&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's$   E;;E?E?!GG	G	c                :     fd j         j        D             }d |D             }t           j        j        |d          } j                            d          }t          ||d           t          |j                  dk    sJ  j                             j         j                  }t          ||d           t          |j                  dk    sJ  j                            ddg          }t          ||d           t          |j                  dk    sJ d j         	                    d          fd j         
                    d          fd	}t           j        j        |d          } j                            dg          }t          ||d           t          |j                  dgk    sJ t          |j        d                   t          u sJ t           j        j        d
          } j                            dd          }t          ||d            j                                        }|                    dgd          }t          ||d           t          ddgdddgid          }|                    d          }t          |j        j                   t          |j        j                   t%          |j        j        |j        j                                                   t          |j                  dk    sJ d S )Nc                D    g | ]}j                             |          S r   r  r  s     r]   r   z2TestDataArray.test_reset_index.<locals>.<listcomp>  r  r_   c                "    i | ]}|j         d |fS rm  rn   r   s     r]   r   z2TestDataArray.test_reset_index.<locals>.<dictcomp>  r  r_   r>   rL   F)check_default_indexesr   rF   )r>   rF   r   Tr  rC   rD   rA   rB   )rY   rI   r   rZ   r   r-  r#   r   r   	droplevelr  r   typer   r   printr>   r   r"   to_base_variable)r\   r   rM   rt   r  r   s   `     r]   test_reset_indexzTestDataArray.test_reset_index
  s
   NNNNDK<MNNN::':::TX_V#FFFh""3''heDDDD3<  A%%%%h""4;#455heDDDD3<  A%%%%h""C#344heDDDD3<  A%%%% t{,,Y778T[99)DDE
 
 TX_V#FFFh""I;//heDDDDCL!!cU****CL%&&+5555TX_3777h""3T"22heDDDD!!3%d!33FFFF 1a&#Sz):EEE$$cenegSU^UW%5%F%F%H%HIII3<  A%%%%%%r_   c                    t          ddgdgddi          }t          ddg|g          }|                    d          }|j        j        |j        j        k    sJ t	          |j                  dk    sJ d S )NrC   rD   coord_1rO   Tr  r   )r   r-  r  rO   r   r   )r\   r  r+  r  s       r]   test_reset_index_keep_attrsz)TestDataArray.test_reset_index_keep_attrs3  s    QF)WdOLLL1vy))nnY''{ BJ$444443<  A%%%%%%r_   c                2   | j                             ddg          }t          | j        j        d|id          }| j                            ddg          }t          ||           t          ddgd          }t          j        t                    5  |                    ddg           d d d            n# 1 swxY w Y   d	dg|d<   t          j        t          d
          5  |                    ddg           d d d            d S # 1 swxY w Y   d S )NrG   rF   r>   rL   rm  rC   rD   r   r   zhas no MultiIndexr   )
rY   reorder_levelsr   rZ   r   r#   r   r   r   r   )r\   rR  rt   r  r   s        r]   test_reorder_levelsz!TestDataArray.test_reorder_levels:  s   {))9i*@AATX_c4[sKKKh%%I(>%??h'''1a&s+++]8$$ 	; 	;  Iy#9 :::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; Vc
]:-ABBB 	; 	;  Iy#9 :::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;s$   B99B= B=&DDDc                    t          g dddg dfid          } G d dt                    }|                    d|d	          }d|j        v sJ t	          |j        d         d
          dk    sJ d S )Nr  r@   r>   r  rL   c                  *    e Zd Zd Zed             ZdS )7TestDataArray.test_set_xindex.<locals>.IndexWithOptionsc                    || _         d S Nopt)r\   r  s     r]   __init__z@TestDataArray.test_set_xindex.<locals>.IndexWithOptions.__init__O  s    r_   c                $     | |d                   S )Nr  r   )cls	variablesoptionss      r]   from_variableszFTestDataArray.test_set_xindex.<locals>.IndexWithOptions.from_variablesR  s    s75>***r_   N)__name__
__module____qualname__r  classmethodr  r   r_   r]   IndexWithOptionsr  N  s>           + + [+ + +r_   r  rC   r  r  )r   r   
set_xindexr   r   )r\   r+  r  indexeds       r]   test_set_xindexzTestDataArray.test_set_xindexI  s    LL%#/C/C/C)D!EC
 
 
	+ 	+ 	+ 	+ 	+u 	+ 	+ 	+ --'7Q-??(((((w'.66!;;;;;;r_   c                J    | j         d         }t          || j                   d S )Nr@   )rT   r#   rU   )r\   rU   s     r]   test_dataset_getitemz"TestDataArray.test_dataset_getitemZ  s%    WU^TW%%%%%r_   c                   t          t          j        | j                  | j                   t          | j                            t                    | j                            t                               t          | j                                        | j                                                   t          | j        	                    dd          | j        	                    dd                     t          | j                  }t          j        | j                  |d         d d <   t          |d         t          j        | j                             t          | j        t          j        | j        | j                             t          ddgt          j        d                    }t          | j        t          j        | j        |                     d S )NrD   rK   r@   r>   r?   r;   )r    rP   asarrayrU   r>   r  floatrR   argsortclipr   rT   sinr"   maximumr   r   )r\   rt   ri   s      r]   test_array_interfacez"TestDataArray.test_array_interface^  sR   2:dg..77747>>%00$&--2F2FGGG47??,,dfnn.>.>???47<<1--tv{{1a/@/@AAADG$$VDF^^Xe_bfTWoo66647BJtvtw$?$?@@@Sz28H#5#566TWbj#6677777r_   c                N   | j                                         | j                                        | j                                        fD ]Y}d|j        d<   |j        |                    t                    j        k    sJ |                    t          d          j        rJ Zd S )Nri   r@   F
keep_attrs)rS   r   rZ   rT   rO   r  r  )r\   rR   s     r]   test_astype_attrszTestDataArray.test_astype_attrsl  s    ',,..$(--//47<<>>B 	? 	?A"AGEN7ahhuoo33333xx%x88>>>>>	? 	?r_   c                   t          g d          }|                    t                    }t          ||           t	          j        |j        t          j                  sJ t	          j        |j        t          j                  sJ d S )N)r   rC   rD   rK   i  )	r   r  r  r    rP   
issubdtyperk   integerfloatingr\   original	converteds      r]   test_astype_dtypezTestDataArray.test_astype_dtyper  su    00011OOE**	8Y///}X^RZ88888}Y_bk:::::::r_   c                    t          ddgddgg          }|                    dd          }t          ||           |j        j        d         sJ |j        j        d	         sJ d S )
NrC   rD   rK   rf   r{   F)orderC_CONTIGUOUSF_CONTIGUOUS)r   r  r"   r   flagsr  s      r]   test_astype_orderzTestDataArray.test_astype_ordery  st    q!fq!f-..OOCsO33	Xy)))$^4444%n555555r_   c                    G d dt           j                  }t           |t          j        d                              }|                    dd          }|                    dd          }t          |j        |          st          j        d           t          |j        t           j                  sJ t          |j        |          rJ t          |j        |          sJ d S )	Nc                      e Zd ZdS )8TestDataArray.test_astype_subok.<locals>.NdArraySubclassNr  r  r  r   r_   r]   NdArraySubclassr*            Dr_   r,  rK   r{   F)subokTz<DataArray cannot be backed yet by a subclasses of np.ndarray)	rP   ndarrayr   rp   r  r   r   r   xfail)r\   r,  r  converted_not_subokconverted_suboks        r]   test_astype_subokzTestDataArray.test_astype_subok  s    	 	 	 	 	bj 	 	 	 __RYq\\::;;&ooco??"//#T/::(-99 	YLWXXX-2BJ?????16HHHHH/.@@@@@@@r_   c                (   t           j                            d                              dd          }t           j        ||dk     <   t          |t          j        d           t          j        d          gddg          }t          t          j        |          t          j        d           t          j        d          gddg          }t          ||                                           t          | |
                                           d S )Nr1  rg   rh   r   r>   r?   )rP   rQ   RandomStater	  r   r   rp   rV   isnullr#   notnull)r\   r>   r  rt   s       r]   test_is_nullzTestDataArray.test_is_null  s    I!!"%%++Aq116!a%Q")A,,	! =SzJJRYq\\RYq\\M29Q<<+H3PS*UU8??#4#4555(H$4$4$6$677777r_   c                   | j         }| j        }| j        }t          ||
            t          ||dz              t          |d|z              t          ||d|z  z              t          |d|z  |z              t          ||d|z  z              t          |d|z  |z              t          ||d|z  z              t          |d|z  |z              d S r#  )r>   rR   rU   r"   )r\   r>   rR   rA   s       r]   	test_mathzTestDataArray.test_math  s    FFG 	QQAQAQAE	"""QA	"""QAE	"""QA	"""QAE	"""QA	"""""r_   c                0   t          t          d          dt          d          fg          }t          t          d          dt          dd          fg          }t          t          j        d          dg dfg          }t	          ||z
  |           d S )Nrg   r>   rC   rh   rf   r  )r   r   rP   r   r#   )r\   rA   rB   rt   s       r]   test_math_automatic_alignmentz+TestDataArray.test_math_automatic_alignment  s    eAhh#uQxx 122eAhh#uQ{{!3 455RWQZZ3*=)>??Q)))))r_   c                &   t          t          d          dt          d          fg          }|                    t          d                    |                    t          dd                     z   }t	          |d                   dk    sJ d S )Nrg   r>   rD   rm  r   )r   r   rB  rA  r   r\   rA   r  s      r]   3test_non_overlapping_dataarrays_return_empty_resultzATestDataArray.test_non_overlapping_dataarrays_return_empty_result  s{    eAhh#uQxx 122%((##affuQ~~f&>&>>6#;1$$$$$$r_   c                f    t          g           }||z  }t          |d                   dk    sJ d S )Nr   r   r   )r   r   r>  s      r]   )test_empty_dataarrays_return_empty_resultz7TestDataArray.test_empty_dataarrays_return_empty_result  s>    2Q6'?##q((((((r_   c                    | j         }| j        }|j        }|}|dz  }||u sJ |j        |u sJ t          |j        |           t          |j                  |u sJ d S )NrC   )r>   rU   r   r    r   r/   )r\   r>   rA   rR   rB   s        r]   test_inplace_math_basicsz&TestDataArray.test_inplace_math_basics  st    FGJ	QAvvvvzQ18Q'''ah''1,,,,,,r_   c                   t           j                            d          }t          j        d          }t	          ||gdg          }|                                }t          j        t          d          5  |j	        dxx         dz  cc<   d d d            n# 1 swxY w Y   t          |j	        d         |           d S )Nrf   rc   rL   z(Values of an IndexVariable are immutabler   rC   )rP   rQ   r
  rp   r   r   r   r   r   rM   r    )r\   r   r  r@   rB   s        r]   test_inplace_math_errorz%TestDataArray.test_inplace_math_error  s    y~~a  	!eWF8<<<JJLL]H
 
 
 	$ 	$ Jv!#	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
 	3:f-q11111s   7BB Bc                   t          t          d          dt          d          fg          }t          t          dd          dt          dd          fg          }t          j        t          j        d          5  ||z  }d d d            n# 1 swxY w Y   t          j        t          j        d          5  ||z  }d d d            d S # 1 swxY w Y   d S )Nrg   r>   rC   rh   z$Automatic alignment is not supportedr   )r   r   r   r   rR  
MergeError)r\   rA   rB   s      r]   %test_inplace_math_automatic_alignmentz3TestDataArray.test_inplace_math_automatic_alignment  sF   eAhh#uQxx 122eAqkkS%1++$6#788]2=0VWWW 	 	FA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]2=0VWWW 	 	FA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   =BBB:CCCc                d   | j         }|
 j        dk    sJ |dz   j        dk    sJ ||                    d           z   j        J ||                    d          z   j        J ||z   j        dk    sJ |d         
 j        dk    sJ |d         dz   j        dk    sJ ||d         z   j        J d S )Nr@   r   ri   r>   )rU   ro   r4  )r\   rA   s     r]   test_math_namezTestDataArray.test_math_name  s    
 GyE!!!!A|u$$$$AHHTNN"(000AHHUOO#)111A|u$$$$3~$$$$#
 C''''AcF
 (((((r_   c                   ddgg dddgg dg dgfdd	}t          t          j                            d
d          |ddg          }|dz   }t          |j        dz   |j                  }t          ||           d|z   }t          ||           ||d         z   }d |                                D             }t          |j        |j        d         z   |ddg          }t          ||           |d         |z   }t          ||           |d         |d         z   }t          |j        d         |j        d         z   ddi          }t          ||           |d d df         |dd d f         z   }|d d df         j        d d d f         |dd d f         j        d d d f         z   }t          ||ddg          }t          ||           |dd d f         |d d df         z   }t          |                    d          |           ||                    d          z
  }t          t          j	        d          |j                  }t          ||           |                    d          |z
  }t          |                    d          |           t          ddgddgdddd          }||z   }|dz   }d|j        d<   |j        d= t          ||           ||z   }t          ||           d S )Nr   r   r  cdefr>   r?   rd   r   r>   r?   latrz   rD   rK   r   rC   rI  c                &    i | ]\  }}|d k    ||S )rR  r   r   r   rR   s      r]   r   z7TestDataArray.test_math_with_coords.<locals>.<dictcomp>  s#    DDDtq!ear_   )r   r   rz   r   Ttranspose_coordsr   r@   i+  )r>   rz   r{   r{   )
r   rP   rQ   r	  r   rM   r#   r   rs  r   )r\   rM   r5  r   rt   
exp_coords
exp_valuesr  s           r]   test_math_with_coordsz#TestDataArray.test_math_with_coords  s@   b####JLLL 9:	
 
 A..c3ZHHHT[1_dk::6***T6***T
"DDv||~~DDD
K$+d++ZsCj
 
 
 	6***dd"6***dd6l*T[.V1DDsDkRR6***aaadd1aaa4j(!!!Q$Z&qqq$w/$q!!!t*2CD!!!G2LL
Z3*EEE6***add111a4j(++T+BBFKKK===RXf--t{;;6***66=++T+BBFKKKAr2hU E EsKK!8"OC 6***t6*****r_   c                T   t          t          d          dd          }|dz   }t          dt          j        d          z   dd          }t	          ||           |d         |k     }t          g ddd          }t	          ||           ||d         k    }t	          ||           d S )NrK   r>   r   rC   r   )FTT)r   r   rP   rp   r#   rK  s       r]   test_index_mathzTestDataArray.test_index_math	  s    q#666Q1-CcBBB6*** a4000sEEE6***Q6*****r_   c           	     H   t          dt          j        d          fddt          j        d          z   fdddt          j        d          z  fdt          dd          fd          }d	|d
         z  }t	          d	dt          j        d          z   z  |j        d
          }t          ||           |d
         |d         z
  }t	          dt          j        d          z  |j                  }t          ||           t          ddt          j        d          z   fddt          j        d          z   fddt          j        d          z  fd          }|d         |d         z
  }t	          t          j        d          |j        d          }t          ||           |d          |d         z   }	t          |	|           |d                                         }
|
|d         z  }
t          |
|           |                                }|d         |d         z
  |d<   t          dt          j        d          fd|d
         j	        fd|j                  }t          ||           |                                }|dxx         |d         z  cc<   t          ||           d S )Nr>   rg   r<   )tmintmaxr  r   rK   )r>   rV  rD   r^  rn   r]  rC   r9  )r]  r^  r>   )
r   rP   rp   r   r   rM   r#   r   r   r   )r\   obsrJ  rK  r  r   simr  rL  r  rM  rO  	expected6rP  s                 r]   test_dataset_mathzTestDataArray.test_dataset_math(	  s   29Q<<(3RYq\\8I2JKKbill*+S%A,,4GHH
 

 c&k/a2	!#45szOOO	),,,f+F+b271::osz::	),,,a")A,,./b29Q<</031-.	 
 
 f+F+bgajj#*6BBB	),,,v;,V,),,,f+""$$3v;),,,((**f+F3271::&c&k6H0IJJCJ
 
	 	),,,((**3v;&),,,,,r_   c           	        t          ddgddggddgddi          }t          ||                                           |d dd df                             d	
          j        d         }t          j        t          j        g t          j	                  t          j        dgt          j	                  gg g gddg          }t
          j
                            ||           |                    ddg                              d                              ddg          }t          ||           |                    dg                              d                              ddg          }t          ||           g d}dgddgg dddgdgd}t          j         t          j                            ddddd          ||          }|                    ddgddg          }|                    ddg          }t          | |j        |            |                                }t          | |j        |            d S )Nr   rC   rD   rK   r>   r?   r@   r  r   r1  r  )levelscodesrI   r   r   .)rA   rB   rz   r{   rE  )rK   rf   rg   rh   r|   r}   rL   rA   rB   rz   r{   )r  rN  r  rN  )r   r#   r,  r+  r   rV   rW   r   rP   rq   r  assert_index_equalr  rR  rQ   r
  rs  )	r\   r5  rA   rB   r   rN   rM   stacked	unstackeds	            r]   test_stack_unstackz TestDataArray.test_stack_unstackV	  sO   VaVs!*
 
 

 	t||~~... !RaRL:..6u=MHR**BHaS"(,C,CDr(*
 
 

 	
%%a+++sCj))11#66@@#sLLv&&&se$$,,S11;;S#JGGv&&&(((QQ
 
 |BINN1aAq99&tTTT**c
Sz*::OOT4L11	2y2D9:::OO%%	2y2D9:::::r_   c           
     2   t          t          j                            dd          dt          j        d          t          j        ddd          d          }|                    dd	g
          }|                    d          }t          ||           d S )NrK   rf   r  r   r   r   r   r?   r>   )	allpointsrl  )r   rP   rQ   r
  rp   r+  r,  r#   )r\   r5  rh  r   s       r]   (test_stack_unstack_decreasing_coordinatez6TestDataArray.test_stack_unstack_decreasing_coordinate~	  s    INN1a  1BIaB,?,?@@
 
 

 **Sz*22--v&&&&&r_   c                @   t          j        t          d          g dg dd          }|                    ddg          d         }t	          |                                d          }t	          |d	
                              d	          }t          ||           d S )NrK   )rA   rB   rB   r   r   rC   )r@   r>   r?   r>   r?   r@   rn   r   r   )rV   r  r   r  r   r,  r#   )r\   dfsrt   r   s        r]   test_unstack_pandas_consistencyz-TestDataArray.test_unstack_pandas_consistency	  s    \%((yyyQQRRLL#s$$U+QYY[[u55513'''//446*****r_   c                    |                     dd          }|                    ddg          }t          |                                                                d          }t	          ||           d S )	Nr   T)rc   r  rA   r>   rf  r   r   )rB  r+  r   	to_pandasr#   r\   r+  r   rt   s       r]    test_stack_nonunique_consistencyz.TestDataArray.test_stack_nonunique_consistency	  sj    WW!$W''S#J''R\\^^1133#>>>6*****r_   c                    t          ddgddddgi          }t          j        t          d          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr   rC   r>   r   z'x' is not a stacked coordinater   )r   r   r   r   to_unstacked_datasetr  s     r]   ,test_to_unstacked_dataset_raises_value_errorz:TestDataArray.test_to_unstacked_dataset_raises_value_error	  s    !Qc3A-@@@]:-NOOO 	. 	.%%c1---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   AAAc                   t          t          j                            ddd          dt	          d          t	          d          t	          d          dt          j                            dd          fd          }|                    d	          }t          |j        j        d
|j                  }t          ||           |                    dddd	          }t          |j        j        d
|j
        j        |j        j        |j        j        d|j        j        j        fd          }t          ||           |                    dddd	          }t          ||           |                    dddddd          }t          ||           t          j        t                     5  |                    dd           d d d            n# 1 swxY w Y   t          j        t                     5  |                    dddd           d d d            n# 1 swxY w Y   t          j        t$                    5  |                    ddddd           d d d            d S # 1 swxY w Y   d S )NrK   rf   rg   rg  r   )r>   r?   r   rH  r   FrU  )r   r?   r>   r   r?   r>   Tr  .r  r  )rV  r  r  )r  )r   rP   rQ   r	  r   rs  r   TrM   r"   r>   r?   r   rH  r   r   r   r  r  ru  s       r]   test_transposezTestDataArray.test_transpose	  s"   IOOAq!$$ 1XX1XX1XX!29??1a#8#89	 	
 	
 	
 u55RY[ryQQQXv&&&c3dCCIK T[T[T[!25<>2	 	
 	
 	
 	Xv&&& c3dCCXv&&& c;H  
 
 	Xv&&&]:&& 	# 	#LLc"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# ]:&& 	5 	5LLc3444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 \+&& 	J 	JLLc3&LIII	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js6   +GGG2HHH;I##I'*I'c                    t          | j        j                                        | j                                        j                   d S r  )r"   rU   r   r  r[   s    r]   test_squeezezTestDataArray.test_squeeze	  s8    TW%--//1B1B1KLLLLLr_   c                   t          dgddgfg          }t          d          }|                    d          }t          ||           t          dddi          }|                    d          }t          ||           t          ddgggg d	
          }t          ddggddg
          }|                    d          }t          ||           t          ddggggg d
          }t          ddggddg
          }|                    d          }t          ||           t          ddgggg d	
          }t          j        t
                    5  |                    dd           d d d            d S # 1 swxY w Y   d S )NrC   r>   r   Tr  Fr  r  )r   r   dim_2r   r   r  r  )r   r   r  dim_3r  r   rD   )r  r  )r   r  r#   r   r   r   r\   r   rt   r   s       r]   test_squeeze_dropzTestDataArray.test_squeeze_drop	  s   1#qc
|,,Q<<D))6***Qa))E**6***S#J<./J/J/JKKKsCj\'0BCCCA&&6***c3ZL>*1U1U1UVVVsCj\'0BCCCF++6***S#J<./J/J/JKKK]:&& 	/ 	/MMqgM...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   E??FFc                   t          t          j                            dd          ddg          }|                                }d|j        d<   |                    d          }t          ||           t          j	        t                    5  |                    d           d d d            n# 1 swxY w Y   |                    dd	          }t          ||           t          j	        t          d
          5  |                    d           d d d            n# 1 swxY w Y   |                    dd	          }t          ||           |                    d          }t          j	        t          d
          5  |                    d           d d d            n# 1 swxY w Y   |                    dd	          }t          ||           d S )NrD   rK   r>   r?   r   r   z	not foundr  errorsrH  r   r   r@   )r   rP   rQ   r	  r   rM   r  r#   r   r   r   r4  )r\   rt   r   r   renameds        r]   test_drop_coordinatesz#TestDataArray.test_drop_coordinates	  si   RY__Q22#sDDDmmoo
3s##6***]:&& 	' 	'MM+&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' ##K#AA***]:-?@@@ 	 	MM#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ##C#99*****U##]:-?@@@ 	% 	%e$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% ""5"::)))))s6   B00B47B4=DD#&D#F##F'*F'c                    | j                             g d          }t          j        t                    5  | j                             d          }d d d            n# 1 swxY w Y   t          ||           d S )Nr>   rF   rG   rF   )rZ   r  r   r  r  r#   r   s      r]   test_drop_multiindex_levelz(TestDataArray.test_drop_multiindex_level 
  s    8%%&A&A&ABB\,-- 	3 	3X''	22F	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	36*****s   AA!$A!c                b    g d}| j                             |          }|D ]}||j        vsJ d S )Nr  )rZ   r  r   )r\   
dim_levelsr   r  s       r]   test_drop_all_multiindex_levelsz-TestDataArray.test_drop_all_multiindex_levels
  sQ    000
##J// 	. 	.Cfo-----	. 	.r_   c                l   t          t          j                            dd          dg diddg          }|                    ddg	          }|d d dd f         }t          ||           t          j        t          t          fd
          5  |                    g d	          }d d d            n# 1 swxY w Y   |                    g dd          }t          ||           t          j
        t                    5  |                    g ddd           d d d            d S # 1 swxY w Y   d S )NrD   rK   r?   r   r>   rL   r   rC   r  znot .* in axisr   r  r  )r?   r  )r  r  )r   rP   rQ   r	  drop_selr#   r   r   r   r   r  r  r  rj  s       r]   test_drop_index_labelsz$TestDataArray.test_drop_index_labels
  s   	1--sIII6FcSVZXXXA''qqq!""u:***]Hj19JKKK 	/ 	/\\III\..F	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 			(;;***\,-- 	: 	:HHYYYCH999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s$   B44B8;B8D))D-0D-c                    t          t          j                            dd          ddg          }|                    ddg          }|d d dd f         }t          ||           d S )	NrD   rK   r>   r?   r   r   rC   r  )r   rP   rQ   r	  	drop_iselr#   rj  s       r]   test_drop_index_positionsz'TestDataArray.test_drop_index_positions
  sj    	1--S#J???!Q((qqq!""u:*****r_   c                    t          g dddg dfid          }|                    d          }d|j        vsJ |                    dd          }t          ||           d S )Nrd   r>   rL   not_a_coordr  r  )r   drop_indexesr   r#   )r\   r   r   s      r]   test_drop_indexeszTestDataArray.test_drop_indexes#
  s|    			3iii0@*ALLL!!#&&&/))))!!-!AA%%%%%r_   c                   t           j                            dd          }t           j        |d d ddf<   t	          |ddg          }|                    d          }|dd d         }t          ||           |                    dd	          }t          ||           |                    dd
          }t          ||           |                    dd
          }|d d dd f         }t          ||           d S )Nrf   rD   r   rA   rB   r   rC   r   )how)threshrK   )rP   rQ   r	  r   r   dropnar#   )r\   r>   r   r   rt   s        r]   test_dropnazTestDataArray.test_dropna+
  s    IOOAq!!F##A#q&	c
+++Cqt!t9***CU++%%%C**%%%C**qqq!""u:*****r_   c                    t          t          j        d          d          }|                    t	          d                    }|                    |j        dk     d          }t          ||           d S )Nrf   r>   r   rD   rm  Tr  )r   rP   rp   r  rA  wherer>   r#   r\   r   rt   r   s       r]   
test_wherezTestDataArray.test_where>
  sf    	!3///77U1XX7&&3519400*****r_   c                    t          t          j        d          d          }|                    t	          d                    }|                    d d          }t          ||           d S )	Nrf   r?   r   rD   r  c                    | j         dk     S NrD   r  rm  s    r]   <lambda>z1TestDataArray.test_where_lambda.<locals>.<lambda>G
  s    QS1W r_   Tr  )r   rP   rp   r  rA  r  r#   r  s       r]   test_where_lambdazTestDataArray.test_where_lambdaD
  sd    	!3///77U1XX7&&,,488*****r_   c                    t          ddg          }t          t          j        dt          j        gt                              }|                    ddg          }t          ||           d S )NrA   rB   rj   TF)r   rP   r   r   r   r  r#   r  s       r]   test_where_stringzTestDataArray.test_where_stringJ
  s`    3*%%RXsBFm6BBBCCdE]++*****r_   c                   ddgg dddgg dg dgfdd	}t          g d
g dg|ddg          }|                                }t          g dg dg|ddg          }t          ||           |                    d          }t          g d
g dg|ddg          }t          ||           |                    d          }t          g dg dg|ddg          }t          ||           |                    d          }t          g d
g dg|ddg          }t          ||           |                    d          }t          g dg dg|ddg          }t          ||           d S )Nr   r   rM  r>   r?   rd   r   rP  rQ  r   r   rC   r   r   rK   r   )r   r   r   )r   r   r   )r   r   rf   )r   r   r   rK   r   rK   )r   r   r   )r   r   r   )r   cumsumr#   cumprodr\   rM   r5  r   rt   s        r]   test_cumopszTestDataArray.test_cumopsP
  s   b####JLLL 9:	
 
 ***jjj16c
KKKkkk;;;7sCjQQQ6***S!!jjj***5vS#JOOO6***S!!kkk;;;7sCjQQQ6***c""jjj)))4fC:NNN6***c""jjj***5vS#JOOO6*****r_   c                j   ddgg dddgg dg dgfdd	}t          g d
g dg|ddg          }|                                }t          dddi          }t          ||           |                    ddg          }t          ||           |                    d          }t          g d|d         ddd          }t          ||           |                    dg          }t          ||           |                    d          }t          ddg|d         ddd          }t          ||           t          | j                            t          j        d          j        | j                            t          j        d                     t          ddt          j	        gg dg|ddg          }|
                                }t          dddi          }t          ||           t          t          j        d                              dd                              d          ddg          }|j        j        dk    sJ |                    dd          }t          |j                            t"                    ddg                              d          }t          ||           d S )Nr   r   rM  r>   r?   rd   r   rP  rQ  r  r  r   r   rz   )r   r   rD   )r?   rz   )r>   rz   rC   r  rg   rh   rK   rD   uintr  Tr  skipna)r   meanr#   r"   rU   reducerP   r   rR   r   countrp   rQ  r  rk   kindr   intr  s        r]   test_reducezTestDataArray.test_reducem
  s   b####JLLL 9:	
 
 ***jjj16c
KKKQd,,6***C:&&6***3ZZZvc{)F)FLL6***C5!!6***3aV6#;T%B%BCHH6***TW^^BGS11:DFMM"'SV<W<WXXX1a.)))4fC:NNNQd,,6*** 1--a33::6BB#sTTTz#%%%%s400T[//44C:FFFKKCPPVX&&&&&r_   c                |   ddgg dddgg dg dgfdd	}t          g d
g dg|ddg          }|                    d          }t          |j                            d          |j        d |                                D                       }t          ||           |j        d         dk    sJ |j        d         dk    sJ |                    dd          }t          |j                            dd          |j        d |                                D                       }t          ||           d S )Nr   r   rM  r>   r?   rd   r   rP  rQ  r  r  r   Tkeepdimsc                "    i | ]\  }}|d v 	||S )rU  r   rT  s      r]   r   z6TestDataArray.test_reduce_keepdims.<locals>.<dictcomp>
  s#    BBBTQqEzzAqzzzr_   r   rC   )r  r  c                "    i | ]\  }}|d v	||S ))r?   rR  r   rT  s      r]   r   z6TestDataArray.test_reduce_keepdims.<locals>.<dictcomp>
  s(    MMMTQq7L7LAq7L7L7Lr_   )r   r  r   rN   r   r"   r   r  s        r]   test_reduce_keepdimsz"TestDataArray.test_reduce_keepdims
  ss   b####JLLL 9:	
 
 ***jjj16c
KKK D))INNDN))BBV\\^^BBB
 
 

 	VX&&&|C A%%%%|C A%%%% 3..INNDN11MMV\\^^MMM
 
 

 	VX&&&&&r_   c                    dd l }ddgg dddgg dg dgfd	d
}t          g dg dg|ddg          }|                    |j        d          }|                    d          }t          ||           d S )Nr   r   r   rM  r>   r?   rd   r   rP  rQ  r  r  r   Tr  )
bottleneckr   r  nanmeanr  r"   )r\   r  rM   r5  r   rt   s         r]   test_reduce_keepdims_bottleneckz-TestDataArray.test_reduce_keepdims_bottleneck
  s     b####JLLL 9:	
 
 ***jjj16c
KKK Z/$??99d9++VX&&&&&r_   c                "   ddgg dddgg dg dgfdd	}t          g d
g dg|ddg          }t          j        t          j        t          j        fD ];}|                    t                                        |          j        |k    sJ <d S )Nr   r   rM  r>   r?   rd   r   rP  rQ  r  r  r   rj   )	r   rP   r  r  r  r  r  r  rk   )r\   rM   r5  rk   s       r]   test_reduce_dtypezTestDataArray.test_reduce_dtype
  s    b####JLLL 9:	
 
 ***jjj16c
KKKj"*bj9 	G 	GE;;u%%***77=FFFFF	G 	Gr_   c                "   ddgg dddgg dg dgfdd	}t          g d
g dg|ddg          }t          j        t                    5  |                    t          j        |j                             d d d            d S # 1 swxY w Y   d S )Nr   r   rM  r>   r?   rd   r   rP  rQ  r  r  r   )out)r   r   r   r   r  rP   r   r   )r\   rM   r5  s      r]   test_reduce_outzTestDataArray.test_reduce_out
  s    b####JLLL 9:	
 
 ***jjj16c
KKK]9%% 	/ 	/II"'$*--I...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   	.BBBr  )TFNq      ?r        ?z	axis, dimNr   r>   r?   c                   | j                             d          }t          j        |d<   t	          |                              ||d|          }|dv rt          j        nt          j        } ||j        t          j	        |          dz  |          }t          j
                            |j        |           t          |          rd|j        vsJ nd|j        v sJ |j        | j        k    sJ d S )	NTdeeprI  )r  r  r  )TNr  r  quantile)rS   r   rP   NaNr   r  nanpercentile
percentiler   r   r  r   r   rN   rO   )	r\   r  r  r  r  rS   r   _percentile_funcrt   s	            r]   test_quantilezTestDataArray.test_quantile
  s     W\\t\$$642''stF'SS/5/E/E2++2=##BIrx{{S/@tLLL

""6=(;;;Q<< 	-V[00000,,,,|tz))))))r_   r  midpointlowerc                   g d}t          | j                                      ||          }t          t          j                  t          d          k    r4t	          j        | j        j        t	          j	        |          |          }n3t	          j        | j        j        t	          j	        |          |          }t          j
                            |j        |           d S )Nr  r  r  r  z1.22.0interpolation)r   rS   r  r   rP   __version__nanquantilerU   r   r   r  r   )r\   r  r  r   rt   s        r]   test_quantile_methodz"TestDataArray.test_quantile_method
  s    47##,,Qv,>>2>""gh&7&777~dgnbhqkk&QQQHH~dgnbhqkkQWXXXH

""6=(;;;;;r_   c                >   t          | j                  }g d}t          j        t          d          5  |                    ||          }d d d            n# 1 swxY w Y   |                    ||          }t          j                            |j	        |j	                   t          j        d          5  t          j        t          d          5  |                    |||	           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nr  z<`interpolation` argument to quantile was renamed to `method`r   r  r  T)recordz!interpolation and method keywords)r  r  )r   rS   r   r  rY  r  rP   r  r   r   warningscatch_warningsr   r   )r\   r  r+  r  r   rt   s         r]   &test_quantile_interpolation_deprecatedz4TestDataArray.test_quantile_interpolation_deprecated
  s   tw\P
 
 
 	: 	: [[&[99F		: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: ;;q;00

""6=(/BBB$D111 	D 	Dy0STTT D DAfFCCCD D D D D D D D D D D D D D D	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	DsG   AAA9DC:.D:C>	>DC>	DDDc                8   | j                                         }t          |j                  dk    sJ |j        i k    sJ | j                             d          }t          |j                  t          | j                  k    sJ |j        | j        k    sJ d S )Nr   Tr  )rS   r  r   rO   )r\   vms     r]   test_reduce_keep_attrsz$TestDataArray.test_reduce_keep_attrs  s    W\\^^28}}!!!!x2~~~~ W\\T\**28}}DJ////x4:%%%%%%r_   c                   t          g t          dd                    }d|j        d<   d|j        d<   t          g           }t          g                               dd          }t	          ||           |j        i k    sJ d|j        d<   |                    ddi          }t	          ||           |j        dddk    sJ d S )	NrC   rD   r  rO   rA   rB   rK   rz   )r   r_  rO   assign_attrsr#   )r\   rt   newr   
new_actuals        r]   test_assign_attrszTestDataArray.test_assign_attrs  s    Rta1~~~666ssmm2++a1+55***yBs((#q22
X...|QQ////////r_   funcc                .    |                      dd          S )Nr   rC   )r  rm  s    r]   r  zTestDataArray.<lambda>*  s    166!Q<< r_   c                0    t          j        d          | z  S )Nr  )rP   r  rm  s    r]   r  zTestDataArray.<lambda>*  s    2:c??Q3F r_   c                l   t          | j                  } ||          j        |j        k    sJ t          d          5   ||          j        i k    sJ 	 d d d            n# 1 swxY w Y   t          d          5   ||          j        |j        k    sJ 	 d d d            d S # 1 swxY w Y   d S )NFr  T)r   rS   rO   r   )r\   r  r+  s      r]   test_propagate_attrsz"TestDataArray.test_propagate_attrs)  sM    tw tBxx~))))E*** 	( 	(488>R'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( D))) 	. 	.488>RX-----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s$    A$$A(+A(?B))B-0B-c                   t          t          j        dt          j        dgdt          d          id          }|                    d          }t          g ddt          d          id          }t          ||           t          t          d          dt          d          id          }|                    |          }|                                }t          ||           |                    t          d                    }t          ||           |                    |d d                   }t          ||           |                    |d d                   }t          ||           t          j        t          d	
          5  |                    ddi           d d d            n# 1 swxY w Y   t          j        t          d
          5  |                    ddg           d d d            d S # 1 swxY w Y   d S )NrC   rK   r>   rf   rL   r   )r   rC   r   rK   r   zfillna on a DataArrayr   r   rD   )r   rP   r   r   fillnar#   r   r   r   r   r   )r\   rA   r   rt   rB   s        r]   test_fillnazTestDataArray.test_fillna8  sE   rvq"&!,c588_3OOO"^^^S%((O#NNN6***eAhhU1XXSAAA!66886***%((##6***!BQB%6***!BQB%F###]9,DEEE 	 	HHaV	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]:\::: 	 	HHaV	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   F44F8;F8G??HHc                    t          t          j                            d          dt          d          iddg          }t	          ||d d         d          \  }}t          ||d d                    t          ||d d                    d S )	N)rh   r}   r>   abcdefr?   rL   rg   innerjoin)r   rP   rQ   r   r   r#   )r\   r   array1array2s       r]   
test_alignzTestDataArray.test_alignR  s    IV$$c4>>-B#s
 
 
 ueBQBig>>>rr+++rr+++++r_   c                   t          j        d          }t          j        dd          }t          t           j                            d                              t           j                  d|fg          }t          t           j                            d                              t           j                  d|fg          }t          ||d          \  }}|j        t           j        k    sJ d S )N   rg   #   )r   r>   outerr  )rP   rp   r   rQ   r  r  r   rk   )r\   x1rF  rA   rB   rz   r{   s          r]   test_align_dtypezTestDataArray.test_align_dtypeZ  s    Yr]]Yq"bi&&u--44RZ@@C9+NNbi&&u--44RZ@@C9+NNQ(((1w"*$$$$$$r_   c                   t          g ddg dfg          }t          ddgdddgfg          }|}t          dt          j        dgdg dfg          }t          ||dd	          \  }}t	          ||           t	          ||           t          |j                  t          |j                  u sJ t          ||dd
	          \  }}t	          ||           t	          ||           t          |j                  t          |j                  usJ t          g ddg dfg          }t          |d          \  }t	          ||           t          |j                  t          |j                  u sJ t          |d
          \  }t	          ||           t          |j                  t          |j                  usJ d S )Nrd   rA   r  rC   rD   rK   r  F)r  r   Tr   )r   rP   r   r   r#   r/   r   r\   r>   r?   expected_x2expected_y2rF  rG  s          r]   test_align_copyzTestDataArray.test_align_copyc  s   iii#yyy)9(:;;;q!fsQFm_555BFAiii8H7IJJJq!'666Bb)))b)))bg&&.*@*@@@@@q!'555Bb)))b)))bg&&nQV.D.DDDDD iii#yyy)9(:;;;ae$$$Bbg&&.*@*@@@@@ad###Bbg&&nQV.D.DDDDDDDr_   c                   t          g dddg di          }t          t          j        d                              d          ddgg dg dd	          }t          t          j        d                              d
d
          ddgg dg dd	          }t	          ||d          \  }}t          ||           t          ||           t	          ||dd          \  }}t          ||           t          ||           t          j        |                    dd          |dd          \  }}t          |                    dd          |           t          ||           t          j	        t          d          5  t	          |                    d                              d          |d           d d d            d S # 1 swxY w Y   d S )Nrd   r>   r   r   	   ry  r?   )r  r  g @r   rK   overrider  )excluder  r   Tr  'cannot align.*join.*override.*same sizer   rm  )r   rP   rp   rQ  r   r#   rR  rB  r   r   r   r  )r\   leftrightexpected_rightnew_left	new_rights         r]   test_align_overridez!TestDataArray.test_align_override~  sW   c9995EFFFIaLL  ((s(yyy99
 
 
 #IaLL  A&&s"33
 
 
 $D%jAAA)x(((N333#D%:NNN)x(((	*** hIII%%uc

 
 
) 	QT22H===	***]H
 
 
 	K 	K $))a)..,,S115zJJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   :GGGdarraysc                    t          j        t          d          5  t          j        |ddi d d d            d S # 1 swxY w Y   d S )Nr  r   r  r  )r   r   r   rR  r   )r\   r  s     r]   test_align_override_errorz'TestDataArray.test_align_override_error  s      ]H
 
 
 	0 	0 Hg/J///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   ;??c                   t          ddgddggdddgfdddgfg	          }t          ddgddggddd
gfdddgfg	          }t          dgdgd
gdd          }t          |||ddg          \  }}}t          ddgddgt          j        t          j        ggdg dfdddgfg	          }t          t          j        t          j        gddgddggdg dfdddgfg	          }t          t          j        t          j        dgdgg ddd          }	t	          ||           t	          ||           t	          |	|           d S )NrC   rD   rK   rf   rA   r   r   rB   r  r=   rg   rh   r|   r  r   r  )r  r  r   r   r=   r   r   rP   r   r#   
r\   r>   r?   r   rF  rG  z2r  r	  expected_z2s
             r]   test_align_excludez TestDataArray.test_align_exclude  s   1v1v&r2h#1v/OPPP1v1v&r2h#1v/OPPPqcRDq.A.ABBB1a3%@@@
BVaVbfbf-.,,,'#1v7
 
 
  fbf1v1v.,,,'#1v7
 
 
  VRVQse,,,Q4O4O
 
 
 	b)))b)))b)))))r_   c                   t          g ddg dfg          }t          ddgdddgfg          }t          ||d	dg d
i          \  }}t          g ddg d
fg          }t          t          j        ddgdg d
fg          }t	          ||           t	          ||           t          |d	dg di          \  }t          dt          j        ddgdg dfg          }t	          ||           d S )Nrd   rA   )r   r<   r   r  rC   rD   r   r   r  )r<   r   r   )r  r   )rD   rC   rK   )r   r|   r<   r   rK   r  )r\   r>   r?   rF  rG  r  r	  s          r]   test_align_indexesz TestDataArray.test_align_indexes  s.   iii#|||)<(=>>>q!fsRHo%6777q!'C3FGGGB			C3F2GHHHAlll8K7LMMMb)))b)))ag___/EFFFBFAq 1C;Q:RSSSb)))))r_   c                    t          g ddg          t          ddgdg          g}t          |ddgi\  }}t          ||d                    t          ||d                    d S )Nrd   r>   r   rC   rD   r  r   r   r   r#   )r\   arraysresult0result1s       r]   "test_align_without_indexes_excludez0TestDataArray.test_align_without_indexes_exclude  sy    IIISE222Iq!fC54Q4Q4QR &83%88&),,,&),,,,,r_   c                0   t          ddgdg          }t          ddgdddgfg          }t          ||          \  }}t          ||           t          ||           t          ||dg          \  }}t          ||           t          ||           d S )	NrC   rD   r>   r   rA   rB   r  r  r#  )r\   array_no_coordarray_with_coordr%  r&  s        r]   test_align_mixed_indexesz&TestDataArray.test_align_mixed_indexes  s    "Aq6666$aVcC:5F4GHHH 1ABB"2333"2333 1AC5QQQ.111"233333r_   c           
        t          j        t          d          5  t          t	          g ddg          t	          ddgdg                     d d d            n# 1 swxY w Y   t          j        t          d          5  t          t	          g ddg          t	          ddgdddgfg	                     d d d            d S # 1 swxY w Y   d S )
Nz.cannot.*align.*dimension.*conflicting.*sizes.*r   rd   r>   r   rC   rD   r   r  )r   r   r   r   r   r[   s    r]   !test_align_without_indexes_errorsz/TestDataArray.test_align_without_indexes_errors  s   ]C
 
 
 	S 	S )IIISE222Iq!fC54Q4Q4QRRR		S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S 	S ]C
 
 
 	 	 )))3%0001a&3A-999  		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   5AA!$A!9C		CCc                   t          ddgdgdddgi          }t          ddgdgdddgi          }t          ddt          j        gdgdg d	i          }t          t          j        ddgdgdg d	i          }t          j        ||d
          \  }}t          ||           |j        j        |j        j        k    sJ t          ||           |j        j        |j        j        k    sJ d S )Nr   rC   r>   rA   rB   r   rD   rz   r   r  r  )r   rP   r  rR  r   r#   r>   rk   )r\   rA   rB   
expected_a
expected_bactual_aactual_bs          r]   test_align_str_dtypez"TestDataArray.test_align_str_dtype  s   q!fC5#Sz1BCCCq!fC5#Sz1BCCC26N#___/E
 
 

 VQN#___/E
 
 

  Xa999(X...|!XZ%55555X...|!XZ%5555555r_   c                   t          ddgdddgfgd          }t          ddgdd	d
gfgd          }t          ||          \  }}dddgfdd	d
gfg}t          ddgddgg|d          }t          ddgddgg|d          }t          ||           t          ||           t          t          j                            dd	          ddg          }t          t          j                            d	d          ddg          }t          ||          \  }}|}|j        }t          ||           t          ||           d S )NrC   rD   rA   r   r   r>   ri  rB   rK   rf   r?   rn   r   )r   r   r#   rP   rQ   r	  r{  )r\   r>   r?   rF  rG  r  r  r	  s           r]   test_broadcast_arraysz#TestDataArray.test_broadcast_arrays  sc   q!fsRHo%6SAAAq!fsQFm_3???1aB"b?S1a&M:!Q!Q 0/LLL!Q!Q 0/LLLb)))b)))biooa++3*===biooa++3*===1aBcb)))b)))))r_   c                   t          ddgddggdddgfdddgfg	          }t          ddgddd
gfg	          }t          ddgddgt          j        t          j        ggdg dfdddgfg	          }t          t          j        t          j        gddgddggdg dfdddgfg	          }t          ||          \  }}t	          ||           t	          ||           d S )NrC   rD   rK   rf   rA   r   r   rB   r  r=   r  )r   rP   r   r   r#   r  s          r]    test_broadcast_arrays_misalignedz.TestDataArray.test_broadcast_arrays_misaligned  s"   1v1v&r2h#1v/OPPPq!fsRHo%6777VaVbfbf-.,,,'#1v7
 
 
  fbf1v1v.,,,'#1v7
 
 
 1aBb)))b)))))r_   c                   t          ddgdddgfgd          }t          dd	
          }t          ddgdddgfgd          }t          ddgdddgfgd	          }t          ||          \  }}t          ||           t          ||           t          |j                  t          |j                  u sJ t          |          \  }t          ||           t          |j                  t          |j                  u sJ d S )NrC   rD   rA   r   r   r>   ri  rK   r?   rn   )r   r   r#   r/   r   r  s          r]   test_broadcast_arrays_nocopyz*TestDataArray.test_broadcast_arrays_nocopy-  s    q!fsRHo%6SAAAac"""Ar2h/@sKKKAr2h/@sKKK1aBb)))b)))bg&&.*@*@@@@@ !Bbg&&.*@*@@@@@@@r_   c                   t          ddgddggdddgfdddgfg	          }t          ddgddd
gfg	          }t          dddi	          }t          |||dg          \  }}}t          ddgddgt          j        t          j        ggdg dfdddgfg	          }t          t          j        ddgdg dfg	          }t          g ddgg ddd          }	t	          ||           t	          ||           t	          |	|           d S )NrC   rD   rK   rf   rA   r   r   rB   r  r=   rg   r)  r  )rg   rg   rg   r  r   )r   r   rP   r   r#   r  s
             r]   test_broadcast_arrays_excludez+TestDataArray.test_broadcast_arrays_exclude?  s`   1v1v&r2h#1v/OPPPq!fsRHo%6777aa)))q!Q666
BVaVbfbf-.,,,'#1v7
 
 
  Alll8K7LMMMIISE1*E*E
 
 
 	b)))b)))b)))))r_   c                   t          dddgt          j        d          fi          }t          |j        |j        |j                  \  }}}t          |j        |           t          j        t          j	        d          t          j	        d          d          \  }}t          |ddgd	          }t          |ddgd	          }t          ||           t          ||           d S )
NrA   r>   r?   )rg   rh   rg   rh   ij)indexingr   )r   rP   r   r   r>   r?   rA   r#   meshgridrp   r   )	r\   rT   x_bcy_bca_bcrO  rP  exp_xexp_ys	            r]   test_broadcast_coordinatesz(TestDataArray.test_broadcast_coordinatesQ  s    cS#J89::$RT2466dDt$$${29Q<<1EEE1!3*3777!3*3777%%%%%%%%r_   c           
        t          d                                          }t          j        d          }t	          ||           t          j                            d          }t          j        g dd          }t          ||g          }|                                }t	          |j	        |           t	          |j
        |           t	          |j
        j        d           t          j                            dd          }t          |dg dfdd	d
gfgd          }|                                }t	          |j	        |           t	          |j
        g d           t	          |j        d	d
g           dD ]}t          d          d t          |                   }t          t          j        j        | |          }t          |                                                              |          }t!          ||           t#          j        t&          d          5  t          t          j                            d
dddd                                                     d d d            d S # 1 swxY w Y   d S )Nr1  rK   r   r>   rn   r  rD   r?   r   rC   r@   ri  )r  r   rB  r   zCannot convertr   rf   rg   )r   rt  rP   r   r    rQ   r	  rV   r   r   r  ro   r  r   r   r  r#   r   r   r   )	r\   r   rt   r   r  r+  r   rN   r~  s	            r]   test_to_pandaszTestDataArray.test_to_pandas]  s   2((**8B<<68,,, ##s333vug...6=&1116<///6<,c222 A&&S///2S1a&MB
 
 
 6=&1116<9996>Aq6222 $ 	/ 	/E;;|U|,D29?E2>>>B$R\\^^44>>tDDLR....]:->??? 	B 	BbiooaAq!4455??AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   $AI44I8;I8c                   t           j                            dd          }t          |dg dfdt	          d          fgd          }|                                }|                                d         }t          |j        |j                   t          |j	        |j	                   t          |j
        j        |j
        j                   |                    ddg	          d         }t          |                                                    d
          |j                   dg df|j        d<   |                                                                }d
gdz  dgdz  z   dgdz  z   |d<   |ddg         }|                                }t          |j        |j                   t          |j        j        |j        j                   t          |j
        j        |j
        j                   t!          j        t$          d          5  |                    g d	           d d d            n# 1 swxY w Y   t!          j        t$          d          5  |                    dd                                           d d d            n# 1 swxY w Y   d |_	        t!          j        t$          d          5  |                                 d d d            d S # 1 swxY w Y   d S )NrK   rf   r   rd   r   cdefr@   rn   	dim_orderr   r   r  r   r   $does not match the set of dimensionsr   r   r   r  zcannot convert a scalarrz   rD   )r   r   unnamed)rP   rQ   r	  r   r   	to_seriesto_dataframer    r   ro   r  rs  rQ  rM   to_framer  r   r   r   r  r\   arr_npr   rt   r   s        r]   test_to_dataframezTestDataArray.test_to_dataframe  sY   A&&#yyy!1Cf3F GeTTT==??!!##E*8?FM:::8=&+6668>0&,2EFFF!!S#J!77>6++--55b996=III -
3==??++--qB4!8+rdQh6S%L)!!##8?FM:::8+2FN4IJJJ8>0&,2EFFF]:-STTT 	8 	8777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 ]:-GHHH 	/ 	/GGcQG,,...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ ]:Z888 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   H11H58H5*JJJ:KK #K c                ~   t           j                            dd          }t          j                            ddgt          d          gddg          }t          |d	|fd
g dfgd          }|                                }t          |d         j
        |                                           t          |j        j        t          d                     t          |j        j        d         ddg           t          |j        j        d         ddg           t          |j        j        d         g d           d S )Nrf   rK   rC   rD   r  r   r   rH   MIr  r  r@   rn   ABCr   rA   rB   )rP   rQ   r	  rV   rW   rX   r   r   rQ  r    r   flattenr  rI   rd  r\   rT  rY   r   r   s        r]   test_to_dataframe_multiindexz*TestDataArray.test_to_dataframe_multiindex  s   A&&++aVT$ZZ,@c
+SS$#yyy1A BOOO!!##6%=/1A1ABBB6<-tE{{;;;6<.q1Aq6:::6<.q1C:>>>6<.q1999=====r_   c                ~   t           j                            dd          }t          j                            ddgt          d          gddg          }t          |d	|fd
g fgd          }|                                }t          |          dk    sJ t          |j        j        t          d                     d S )Nrf   r   rC   rD   r  r   r   rH   rW  r  r@   rn   rX  )rP   rQ   r	  rV   rW   rX   r   r   rQ  r   r    r  rI   rZ  s        r]   test_to_dataframe_0lengthz'TestDataArray.test_to_dataframe_0length  s    A&&++aVT$ZZ,@c
+SS$#r ;%HHH!!##6{{a6<-tE{{;;;;;r_   c                v   t          j        d                              dd          }t          |dg dfdt	          d          fgd	          }|                                }|                                d         }t          |j        |j                   |                    ddg
          d         }t          |	                                                    d          |j                   dg df|j
        d<   |                                                                }dgdz  dgdz  z   dgdz  z   |d<   |ddg         }|                                ddg         }t          |j        |j                   t          |j        j        |j        j                   t          j        t          d          5  |                    g d
           d d d            n# 1 swxY w Y   d |_        t          j        t          d          5  |                                 d d d            d S # 1 swxY w Y   d S )NrN  rK   rf   r   rd   r   rJ  r@   rn   rK  r   r   r  r   r   rM  r   rN  z#Cannot convert an unnamed DataArray)rP   rp   rQ  r   r   rP  to_dask_dataframer    r   rs  rM   rR  r  r   r   r   ro   rS  s        r]   test_to_dask_dataframez$TestDataArray.test_to_dask_dataframe  s   5!!))!Q//#yyy!1Cf3F GeTTT==??&&((/6=(/:::&&#s&<<UC6++--55b996=III -
3==??++--qB4!8+rdQh6S%L)&&((#u68?FM:::8+2FN4IJJJ]:-STTT 	= 	=!!OOO!<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= ]7
 
 
 	$ 	$ !!###		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s$   :GG#&G#H..H25H2c                x   t          g ddd          }|                                }t          g d|j                   t          g d|j        j                   d|j        k    sJ d|j        j        k    sJ |                                }|                                }|                    |          sJ d S )Nrd   r>   r   r   )	r   rP  r    r   r  ro   rQ  rR  r   )r\   r   r  r  rt   s        r]   &test_to_pandas_name_matches_coordinatez4TestDataArray.test_to_pandas_name_matches_coordinate  s    			#666999fm444999fl&9:::fk!!!!fl'''''  ""??$$u%%%%%%%r_   c                4   | j                                         d         }| j                                         }t          |j        |j                   t          |j        j        |j        j                   d|j        k    sJ t          | j         t          j	        |          
                    ddg                     d |_        | j                             d           }t          |t          j	        |          
                    ddg                     d S )Nr@   r>   r?   )rU   rQ  rP  r    r   r  ro   r#   r   from_seriesr  r4  )r\   rt   r   r#  s       r]   test_to_and_from_seriesz%TestDataArray.test_to_and_from_series  s    7''))%0""$$8?FM:::8>0&,2EFFF####)"7"?"?"I"I3PS*"U"UVVVgnnT**.v66@@#sLL	
 	
 	
 	
 	
r_   c                   t          j        g dg dd          }|                    d                              dd          }|                    d                                          }|                    d	          g dk                                    sJ |                    d
	          g dk                                    sJ d S )Nrd   re   )r   r   numalpharC   r  r   )rh  r   )rV   r  rename_axisr+  	to_xarrayr  r   )r\   rp  r   s      r]   test_from_series_multiindexz)TestDataArray.test_from_series_multiindex  s    \						::;;^^E""..wQ.??'"",,..


%%27799999


%%2779999999r_   c                .   dd l }t          j        ddgddg          }t          j        |d          }t          j        |d	          }t          |j        |j                  sJ |j                                        |_        t          ||           d S )
Nr   rC   rD   r%  )rB   rD   r  TsparseF)
rn  rV   r  r   rd  r   r   COOtodenser#   )r\   rn  r  actual_sparseactual_denses        r]   test_from_series_sparsez%TestDataArray.test_from_series_sparse  s    Aq6(H)=>>>!-fTBBB ,VEBBB-,fj99999*/779955555r_   c                   dd l }t          j                            t	          j        d          t	          j        d          gddg          }t          j        t          j                            d                              t          |                    |          
                    dd          }t          j        |d	
          }|j                            |j        t          j                  j        }t$          j                            |d
          }|j        j        }t          j                            ||           d S )Nr   rK   rg   rA   rB   rH   r  )r  random_stateFrm  T)rn  rV   rW   rX   rP   rp   r  rQ   r5  r   sampler   rd  ro  
from_numpyr   r   rM   rR  r  r"   )r\   rn  r   r  denser  rq  actual_coordss           r]   "test_from_multiindex_series_sparsez0TestDataArray.test_from_multiindex_series_sparse  s    	m((")A,,	!)EcSVZ(XX290033::3s88DDCPPPWWa X 
 
 %fU;;; *//
BFCCJ000EE%*1

?????r_   c                    t          t          j        dd                    }t          j        |ddg          }|j        dk    sJ t          |d          rJ d S )	Nry  uint8rj   r>   r?   r   r  r   )r   rP   r   rR  r   r   hasattr)r\   r   r+  s      r]   test_nbytes_does_not_load_dataz,TestDataArray.test_nbytes_does_not_load_data!  se    !"(6"A"A"ABB\%sCj111 yA~~~~
 5(+++++++r_   c                   t          j        g t          j                  }t	          j        |          }t          |          dk    sJ |                                }t          |          dk    sJ |                    |          sJ d S )Nrj   r   )	rV   r  rP   r  r   rd  r   rP  r   )r\   rt   r+  r   s       r]   test_to_and_from_empty_seriesz+TestDataArray.test_to_and_from_empty_series0  s}    9Rrz222"8,,2ww!||||6{{av&&&&&&&r_   c                *   t          t          d          st          j        d           t          j        t          j        d          t          j        t          d                              }t          |          }dt          |          v sJ d S )NCategoricalIndexz%requires pandas with CategoricalIndexrg   aabbcr  z'a')r}  rV   r   skipr  rP   rp   r  r   r   rr   )r\   rq  r   s      r]   test_series_categorical_indexz+TestDataArray.test_series_categorical_index9  s|    r-.. 	AK?@@@Ibill"*=d7mm*L*LMMMllS		!!!!!!r_   use_daskFr   )r   r   Tr   boolbool | Literal['list', 'array']c           	        |rt           st          j        d           ddi}t          t          j                            dd          dddgidd	gd
          }||_        |                                }t	          j	        ddg          }|dk    s|du r(|
                                }|
                                }d
d|i dd|i did}|r||d<   t           r|                                }	n|}	|dk    s|du r>t                      5  |	                    ||          }
d d d            n# 1 swxY w Y   n|	                    ||          }
t          j                            ||
           t!          |	t          j        |
                     d
d|	j        
                                ddddgdid}t!          |	t          j        |                     d
d|	j        d}t!          |	                    d          t          j        |                     d|	j        ddddgiid}t          j        t*          d          5  t          j        |           d d d            n# 1 swxY w Y   ddi}t          j        t*          d          5  t          j        |           d d d            n# 1 swxY w Y   |                                }|d= |d          d         d= t.          j        d!k    rd"nd#}|d          d                             |d$d%           |                    d&d'd%           |	                    d|(          }||k    sJ d S ))Nrequires daskri   spamrD   rK   r>   rA   rB   r?   r@   rn   r   Tr   rm  )rN   r   rO   )ro   rN   r   rO   rM   r   r   F)r   r   )rN   r   )ro   rN   r   rM   )ro   rN   r   r   )rN   r   rM   z:cannot convert dict when coords are missing the key 'dims'r   rN   r[  z*cannot convert dict without the key 'data'rM   littlez<U1z>U1rm  )rk   r   r  r   )r   r   )r%   r   r  r   rP   rQ   r	  r   to_numpyr   tolistr  r&   to_dictr  r"   r#   	from_dictr   r  r   r   r   sys	byteorderupdate)r\   r   r   r  encoding_datar   return_datacoords_datart   r+  r   r{   expected_no_data
endiantypeactual_no_datas                  r]   test_to_and_from_dictz#TestDataArray.test_to_and_from_dictB  s     	)H 	)K(((IOOAq!!C#s#4sCju
 
 
 'nn&&hSz**6>>TT\\%,,..K%,,..K V[2NNO$
 $
  	1#0HZ  	BBB7??demm')) B BXDAAB B B B B B B B B B B B B B B ZZZ==F 	
&111 	Y088999 I$$&&S3*==>	
 
 	Y033444 J	BBc**I,?,B,BCCC IVc3Z01
 

 ]O
 
 
 	# 	# """		# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# SM]K
 
 
 	# 	# """	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# $==??V$X&s+F3!mx77UUU
"3'..d/S/STTT)f E EFFFBB>111111s6   D++D/2D/I$$I(+I(J//J36J3c                   t           j                            dd          }t          j        dd          }g d}t          |||dddg	          }t          j        |                                          }t          ||           d S )
Nr<   rK   20130101r8  glS@gT@L   r[  rR  r[  rR  r   )	rP   rQ   r	  rV   r  r   r  r  r#   )r\   r>   r[  rR  r+  r~  s         r]   #test_to_and_from_dict_with_time_dimz1TestDataArray.test_to_and_from_dict_with_time_dim  s    IOOB""M*b111q#..c5\BBB *2::<<88\*****r_   c                t   t           j                            dd          }t           j        |d<   t	          j        t	          j        dd                    }t           j        |d<   g d}t          |||ddd	g
          }t          j        |	                                          }t          ||           d S )Nr<   rK   rD   r  r8  r  r  r[  rR  r   )rP   rQ   r	  r   rV   r  r  r   r  r  r#   )r\   r?   r[  rR  r+  r~  s         r]   "test_to_and_from_dict_with_nan_natz0TestDataArray.test_to_and_from_dict_with_nan_nat  s    IOOB""v!IbmJ;;;<<v!q#..c5\BBB *2::<<88\*****r_   c                   t           j                            dd          }t          d          }g d}t          j        d          t          j        g d          dd}t          |||d	d
dg|          }|d                                         |d                                         dd}|	                                }||d         k    sJ d S )Nr<   rK   r  r  i  )%   gfffff[r  ri   )createdrM   
maintainerr  r[  rR  r  r  rM   rO   )
rP   rQ   r	  r   r  r   r   itemr  r  )r\   r>   r[  rR  rO   r+  expected_attrsr   s           r]   test_to_dict_with_numpy_attrsz+TestDataArray.test_to_dict_with_numpy_attrs  s    IOOB""z$''h00011
 

 q#..c5\OOOY',,..Ho,,..
 

  000000r_   c                   t           j                            d          }|                    d          }t           j                            |dk     |          }t          |          }|                                }t          |          }t          ||           t          ||           |                    d          }t          |t           j        j                  sJ t          |j        |j                   t          |j        |                    t           j                             t          ||                    t           j                             |                    d          }d|d	<   |d	         dk    sJ |d	         j        dk    sJ |j        |j        u sJ t          |t           j        j                  sJ d
t           j        dddfD ]F}	t          |	          }|                                }
t          |
t           j        j                  sJ Gd
}t#          |          }	t          |	          }|                                }
t%          |
j                  |k    sJ d S )N,   r;   r   r  Tr  Fg      $@rI  rf   4four)rP   rQ   r5  random_samplemamasked_wherer   to_masked_arrayr    r"   r   MaskedArraymaskr   filledr   baser   r   )r\   rsr>   x_maskedr+  
x_masked_2da_2da_masked_arraymasked_arrayrR   r  Ns               r]   test_to_masked_arrayz"TestDataArray.test_to_masked_array  s>   Y""2&&(++5%%a#gq11x   ''))
$$8Z000R,,$,77/25+<=====?/???29hoobf&=&=>>>?HOOBF,C,CDDD ))u)55!TD!T))))$x$&&&& BI----,(9::::: RVT3/ 	5 	5A1B##%%Bb"%"3444444 !HHq\\!!27||q      r_   z1.24)rK   r<   zKcdms2 is unmaintained and does not support newer `numpy` or python versions)reasonc           	        t          j        d           t          t          j        d                              dd          dddgddifd	t          j        d
d          fgdddi          }t          dddg          t          d	g d          g}t          j	        d          5  |
                                }ddd           n# 1 swxY w Y   t          |                                |           |j        |j        k    sJ t          |                                          |j        k    sJ t%          |                                |          D ],\  }}|j        |j        k    sJ t          ||j                   -|j        |j        d         k    sJ |                    d                                          }t3          |          dk    sJ t5          |d                   dk    sJ t          j	        d          5  t          j        |          }ddd           n# 1 swxY w Y   t9          ||           t7          |          }|j        |j        k    sJ |j                                        |j                                        k    sJ |j                                        D ](}	t          |j        |	         |j        |	                    )dS )zClassic with 1D axescdms2rh   rD   rK   distancer   unitsmetersrc   r  r8  r@   r   r8  ro   rO   r   .*cdms2r   NrC   r   z2000-1-1 0:0:0.0)r   importorskipr   rP   rp   rQ  rV   r  r   deprecated_callto_cdms2r    asmarz  ro   r   
getAxisIdsrN   zipgetAxisListr   r   rO   getAxisasComponentTimer   strr   r#   rM   r   )
r\   r  r  r   r  r,  component_timesr~  back
coord_names
             r]   test_to_and_from_cdms2_classicz,TestDataArray.test_to_and_from_cdms2_classic  s`    	G$$$IaLL  A&&b!Ww&9:|Q???@ #,
 
 
 *r1g..&))),,
 #)444 	) 	)&&((F	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)6;;==(333yHM))))V&&(())X]::::v1133_EE 	3 	3KD%7ej((((tU\2222zX^E22222 ..++;;==?##q((((?1%&&*<<<<<#)444 	8 	8$/77L	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8<000&!!}	))))##%%)9)9););;;;;"/..00 	U 	UJxz:DK
<STTTT	U 	Us$   (C		CCH((H,/H,c           
     F   t          j        d           t          j        ddddf         }t	          |d         ddgd	          }t	          |d
         ddgd	          }t	          t          j        |j        d                   dgd	          }t	          t          j        |j        d
                   dgd	          }t	          |                    d
          ddgt          ||||          d          }t          j	                    5  |
                                }ddd           n# 1 swxY w Y   t          |                                          |j        k    sJ t          |j        d         |                                                                           t          |j        d         |                                                                           t'          |          }|j        |j        k    sJ t)          |j                                                  t)          |j                                                  k    sJ t          |j        d         |j        d                    t          |j        d         |j        d                    dS )zhCurvilinear (structured) grid

        The rectangular grid case is covered by the classic case
        r  NrK   rf   rC   r?   r>   lonr   r   rR  r  )r>   r?   r  rR  sstrN   rM   ro   )r   r  rP   mgridr   rp   r   sumr_  r  r  r   r  rN   r    rM   getLongituder  getLatituder   r   r   )	r\   lonlatr  rR  r>   r?   r  r   r  s	            r]   test_to_and_from_cdms2_sgridz*TestDataArray.test_to_and_from_cdms2_sgrid  s    	G$$$"1"bqb&!q	c
???q	c
???bi	!--SEDDDbi	!--SEDDDJJAJs!qcs333	
 
 
 #%% 	) 	)&&((F	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)V&&(())X]::::8?5163F3F3H3H3M3M3O3OPPP8?5163E3E3G3G3L3L3N3NOOO&!!}	))))8?''))**c$+2B2B2D2D.E.EEEEE8?514;u3EFFF8?514;u3EFFFFFs   D//D36D3c                   t          j        d           t          t          j                            d          dgd          }t          t          j                            d          dgd          }t          t          j        d          dgd          }t          t          j        d          dg|||d	          }t          j        d
          5  |                                }ddd           n# 1 swxY w Y   t          |
                                          |j        k    sJ t          |j        d         |                                                                           t          |j        d         |                                                                           t#          |          }t%          |j                  t%          |j                  k    sJ t%          |j                                                  t%          |j                                                  k    sJ t          |j        d         |j        d                    t          |j        d         |j        d                    dS )zUnstructured gridr  rg   r  cellr  r   rR  )r  rR  r  r   r  r   N)r   r  r   rP   rQ   uniformrp   r  r  r   r  rN   r    rM   r  getValuer  r   r   r   )r\   r  rR  r  r  r   r  s          r]   test_to_and_from_cdms2_ugridz*TestDataArray.test_to_and_from_cdms2_ugrid;  se    	G$$$	))q)11uMMM	))q)11uMMM1VH6BBBIaLLxCQU0V0V
 
 
 #)444 	) 	)&&((F	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)V&&(())X]::::8?5163F3F3H3H3Q3Q3S3STTT8?5163E3E3G3G3P3P3R3RSSS&!!8=!!S^^33338?''))**c$+2B2B2D2D.E.EEEEE8?514;u3EFFF8?514;u3EFFFFFs   C;;C?C?c                   t          ddgd          }t          j        t          d          5  |                                 d d d            n# 1 swxY w Y   |                    d          }t          ddddgfi          }t          ||           t          ddgddd	d
i          }|                                }t          ddddgd	d
ifi          }t          ||           |                    d          }t          ddddgd	d
ifid	d
i          }t          ||           t          j        t                    5  |                    d          }d d d            d S # 1 swxY w Y   d S )NrC   rD   r>   r   zunable to convert unnamedr   r@   rn   r?   testattr)rN   ro   rO   T)promote_attrsr  ri   )r   r   r   r   
to_datasetr   r#   r   )r\   rO  r   rt   nameds        r]   test_to_dataset_wholez#TestDataArray.test_to_dataset_wholeU  s   QF---]:-IJJJ 	! 	!   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! ###//EC!Q=1226***1a&ssJ>OPPP!!##EC!Q#z1B#CDEE6*** !!!55S1a&3
"345c:=N
 
 
 	6***]9%% 	- 	-%%e,,F	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s#   AAAE''E+.E+c                <   t          g ddt          d          fgddi          }t          dddd	ddi
          }|                    d          }t	          ||           t          j        t                    5  |                    dd           d d d            n# 1 swxY w Y   |                    d          }t	          ||           t          g dd          }t          dddd          }|                    d          }t	          ||           d S )Nrd   r>   rB  rA   rC   rM   rO   rD   rK   r   r  r@   rn   r1  r   r   )	r   r   r   r  r#   r   r   r   to_array)r\   r   rt   r   r~  s        r]   test_to_dataset_splitz#TestDataArray.test_to_dataset_splitm  sh   )))c4;;-?,@aQQQ33C8DDD!!#&&6***]9%% 	. 	.Su---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 3//---)))#...qQ1--..!!#&&6*****s   <B  B$'B$c                    dd l fdt          dd          D             }t          g dd|fgddi          }|                    d                              d	          }t          ||           d S )
Nr   c                >    g | ]}                     d d|          S )i  rC   )date)r   r{   datetimes     r]   r   z>TestDataArray.test_to_dataset_retains_keys.<locals>.<listcomp>  s)    @@@qtQ**@@@r_   rC   rf   rd   r>   rA   r  r1  )r  r   r   r  r  r"   )r\   r:  r   r  r  s       @r]   test_to_dataset_retains_keysz*TestDataArray.test_to_dataset_retains_keys~  s    @@@@E!QKK@@@)))c5\N3(KKK !!#&&//C/88UF#####r_   c           	     $   t          t          j        d          g dt          d          t          d          t          d          d          }d|                                k    sJ d|                    d	
                                          k    sJ |                    dd	                                          }d|k    sd|k    sJ t          t          j        d          ddg          }d|                                k    sJ d S )Nrf  r   rf   rK   rD   r    zc = 0r   rU  rC   )rB   rz   zb = 1, c = 0zc = 0, b = 1)rf   rC   rA   rB   r   )r   rP   r   r   _title_for_slicerB  )r\   r   titlea2s       r]   test__title_for_slicez#TestDataArray.test__title_for_slice  s   GI qauQxx@@
 
 

 U++------%**q*//::<<<<<<

Q!
$$5577&&.E*A*A*A*Arwvc3Z888R((********r_   c                    t          t          j        d                    }d|j        d<   d|j        d<   d}|                    |          }|t          |          k    sJ |                    d          sJ d S )	Nrf   daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarA   dbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbrB   r   )truncatez...)r   rP   r   rM   r  r   endswith)r\   r   ncharr  s       r]   test__title_for_slice_truncatez,TestDataArray.test__title_for_slice_truncate  s    "'!**%%%S%S&&&66E

""""~~e$$$$$$$r_   c                
   t          t          j                            dd          ddg          }|                    d          }t          t          j        |j        d          ddg          }t          ||           d S )NrK   rf   r>   r?   r   rC   r  )r   rP   rQ   r	  diffr   r"   ru  s       r]   test_dataarray_diff_n1z$TestDataArray.test_dataarray_diff_n1  st    ryq!,,C:>>>RWRYQ777sCjIIIXv&&&&&r_   c                   t          t          ddd          dgt          d          g          }|j        d         }t          dgdz  dgt          dd          gd	          }|                    d          }t	          ||           d S )
Nr   r=   rD   r  r<   r   rC   r  r  )r   r   rM   r  r"   )r\   r   r  rt   r   s        r]   test_coordinate_diffz"TestDataArray.test_coordinate_diff  s    aQuguRyykJJJjaS1WE7E!RLL>PUVVV%Xv&&&&&r_   offset)r   r   rC   rD   zfill_value, dtypec                   t          g dd          }|                    d|          }|t          j        k    rt          j        }t          |ddgd          }t          ||           |j        |k    sJ t          g ddg dfg          }t          |                                                    |                    }|                    |          }t          ||           d S )	Nrd   r>   r   rC   )r>   r  rD   r   rm  )	r   shiftr   r  rP   r   r#   rk   rt  )r\   r  r  rk   r   r   rt   s          r]   
test_shiftzTestDataArray.test_shift  s     			,,,Q:66"" Jj!Q/c:::6***|u$$$$			S///$:#;<<S]]__226::;;V$$6*****r_   c                    t          g ddt          d          id          }|                    dd          }t          g ddg d	fg
          }t          ||           d S )Nrd   r>   rK   rL   rC   T)r>   roll_coordsrK   rC   rD   )rD   r   rC   r  r   r   rollr#   rj  s       r]   test_roll_coordszTestDataArray.test_roll_coords  sq    			3a/DDDA400YYYiii0@/ABBB6*****r_   c                    t          g ddt          d          id          }|                    d          }t          g ddg dfg	          }t          ||           d S )
Nrd   r>   rK   rL   rC   rm  r  r   r  r  rj  s       r]   test_roll_no_coordsz!TestDataArray.test_roll_no_coords  sm    			3a/DDDAYYYiii0@/ABBB6*****r_   c                H   t          t          j                            d          dddidddgid	
          }t          j        d                              dd          }|                    |          }|                                }||_        t          ||           d S )Nr  r  r   r9   r6   r>   rf   rK   
helloworldrN   rO   rM   ro   rD   rA  )r   rP   rQ   rp   rQ  r   r   r#   )r\   r5  new_datar   rt   s        r]   test_copy_with_dataz!TestDataArray.test_copy_with_data  s    I&))H%!Q=
 
 
 9Q<<''1--))99;; 6*****r_   )r   zdeep, expected_origrA   rL     c           	        t          j        t          j        g d          ddgddgddgdg d          }|                    |          }d	|d
         j        d<   t          j        t          j        d
t          j        d	dg                    d
d	dgid
g          }t          |d
         |           t          |d
         |           dS )zThe test fails for the shallow copy, and apparently only on Windows
        for some reason. In windows coords seem to be immutable unless it's one
        dataarray deep copied from another.)rD   rD   rD   rC   rD   r>   r?   r   r   rL   r  rA   N)	rR  r   rP   r   r   r   r   r   r#   )r\   r  expected_origr+  da_cpexpected_cps         r]   test_copy_coordszTestDataArray.test_copy_coords  s    4 \GIIIQsCj1v>> 
 
 

  c
lS"(C8"4"455#q?
 
 

 	s[111C-00000r_   c                    t          d          }t          |j        t          d                     t          |j        t          d                     d S )Ny      ?       @rC   rD   )r   r#   realimagr   s     r]   test_real_and_imagz TestDataArray.test_real_and_imag	  sE    &!!Yq\\222Yq\\22222r_   c                   t          dddiddi          }t          j        t          d          5  d	|_        d d d            n# 1 swxY w Y   t          j        t          d          5  d	|_        d d d            n# 1 swxY w Y   t          j        t          d          5  d	|_        d d d            d S # 1 swxY w Y   d S )
Nr   r  rC   r@   ri   r  zcannot set attrr   rD   )r   r   r   r   r  r@   rl   r   s     r]   test_setattr_raisesz!TestDataArray.test_setattr_raises  s   !XqM%HHH]>1CDDD 	 	EL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]>1CDDD 	 	EI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]>1CDDD 	 	EK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   AA
A
,B  BB&B;;B?B?c                j   t          t          j                            d          dddidddgid	
          }t          |d          }|                    d          }t          j        ddgddgg          |_        t          ||           t          |dt                    }t          j        ddgddgg          |_        |j	        t          k    sJ t          ||           t          j        t          d          5  t          |ddt          i           d d d            d S # 1 swxY w Y   d S )Nr  r  r   r9   r6   r>   rf   rK   r  r  rD   Tr  r  )r  rk   z'dtype' cannot be dict-liker   )r   rP   rQ   r   r   r   r   r#   r  rk   r   r   r   )r\   r+  r   expects       r]   test_full_likezTestDataArray.test_full_like  s   I&))H%!Q=
 
 
 2q!!d##3*sCj!9::((( 2$d;;;4,t!=>>|t####(((]:-JKKK 	> 	>bT#t====	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   D((D,/D,c                   t          j        ddd          }t          j        ddd          }t          d          }t          j        d                              d          }t          ||||gg d	          }t          d          }t          ||gd
g	          }|                    |          }t          j        ||d          }	t          |	||gddg	          }
t          |
|           |                    |          }t          j        ||g dg df          }t          |          }t          ||           t          j        d                              d          }t          j        ddd          }t          ||||gg d	          }|                    |          }t          j        ||ddgddgf          }t          |||gddg	          }t          ||           |                    |d          }|                    |          }t          ||           |                    |d          }|                    |d          }t          ||           t          j
        t                    5  |                    |                    d                     d d d            n# 1 swxY w Y   t          j
        t                    5  |                    |j                   d d d            d S # 1 swxY w Y   d S )Nr   rK   rh   rg   rf   r   rh   rg   rf   rg  rL   r   rD   r   r>   r?   r   axes  r=   rg   rf   r=   r  r?   r   rC   rD   r  .r   )r  r>   r?   r   dmrn   )rP   r  r   rp   rQ  r   dot	tensordotr"   r   r   NotImplementedErrorr  r   r   )r\   r>   r?   r   da_valsr+  dm_vals1dm1rJ  expected_vals1rK  r  expected_vals2r   dm_vals3r  dm3r  expected_vals3rL  r  r  rM  rN  s                           r]   test_dotzTestDataArray.test_dot/  sa   KAq!!KAq!!!HH)I&&..y99w1ayGGG88!C5999 &&++gx@@naV3*MMM	Y((( &&**gwiii=STTTn--	Y((( 9Z((00<<KAr""!QIII&&++gx1v1v>NOOOnaV3*MMM	Y((( &&#&&&FF2JJ	Y((( &&3&''FF3%9F::	Y(((].// 	. 	.FF3>>t>,,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]9%% 	 	FF3:	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   >*J44J8;J8L  LLc                   t          j        ddd          }t          j        ddd          }t          d          }t          j        d                              d          }t          ||||gg d	          }t          d
d          }t          d          }t          ||gdg	          }t          j        d          5  t          j	        t          d          5  |                    |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        ||d          \  }	}
|                    |          }t          j        |	j        |
j        d          }t          |||	j        gddg	          }t!          ||           t          j        d                              d          }t          j        ddd          }t          ||||gg d	          }t          j        ||d          \  }	}
|                    |          }t          j        |	j        |
j        dd
gdd
gf          }t          |||gddg	          }t!          ||           d S )Nr   rK   rh   rg   rf   r   r&  rg  rL   rD   r   exactarithmetic_join&cannot align.*join.*exact.*not equal.*r   r  r  r'  r>   r?   r*  r+  r=   r,  rC   r(  r  )rP   r  r   rp   rQ  r   rR  r   r   r   r   r.  r   r/  r   r?   r"   )r\   r>   r?   z_ar1  r+  z_mr2  r3  
da_aligned
dm_alignedrJ  r4  rK  dm_vals2r  dm2r  r5  r   s                       r]   test_dot_align_coordsz#TestDataArray.test_dot_align_coords]  s    KAq!!KAq!!Ahh)I&&..y99w1c{IIIAqkk88#cU;;;^G444 	 	"K     s              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 "$"c!@!@!@
J &&++j&79JFSSna5FcSVZXXX	Y((( 9Z((00<<KAr""!Q???KKK!#"c!@!@!@
J&&++z0AA7G
 
 
 naV3*MMM	Y(((((s6   DD 4D D	DD	DDDc                L   t          j        ddd          }t          j        ddd          }t          d          }t          j        d                              d          }t          ||||gg d	          }||z  }|                    |          }t          ||           d S )
Nr   rK   rh   rg   rf   r   r&  rg  rL   )rP   r  r   rp   rQ  r   r.  r#   )r\   r>   r?   r   r1  r+  r  rt   s           r]   test_matmulzTestDataArray.test_matmul  s    KAq!!KAq!!!HH)I&&..y99w1ayGGGb66"::*****r_   c                   t          j        d          }t          j        dd          }t          j        d          }t          ||gdg          }t          ||gdg          }||z  }|                    |          }t	          ||           t          j        d          5  t          j        t          d	          5  ||z   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nrh   rD   r}   r>   rL   r;  r<  r>  r   )
rP   rp   r   r.  r#   rR  r   r   r   r   )r\   x_ax_br1  da_ada_br  rt   s           r]   test_matmul_align_coordsz&TestDataArray.test_matmul_align_coords  s{    illi1oo)A,,#cU;;;#cU;;; 88D>>***^G444 	 	"K     t              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   %C+CC+C	C+C	C++C/2C/c                J   t          j        | j        j        d                   | j        d<   | j        j        d         }| j        dz  j        d         }||u sJ | j        dk    j        d         }||u sJ | j        dz  j        d         }| j        j        d         }||u sJ d S )Nr>   r<   rD   )rP   rp   rU   r   r   rZ   r   s      r]    test_binary_op_propagate_indexesz.TestDataArray.test_binary_op_propagate_indexes  s    ys!3447#C('B,(-6!!!!'B,(-6!!!! (a-)#.8$S)6!!!!!!r_   c                   d}d}g dg d}}t          j        |||fg          }t          j        |||fg          }t          j        |          5  ||z   }d d d            n# 1 swxY w Y   t          j        |||          \  }}	t          j        t          j        ddt          j        g|g d	fg          }
t          ||
           d S )
Nr>   r  r   rd   r<  r  rD   rf   rJ   )rR  r   r   r   rP   r   r"   )r\   r  
align_typecoords_lcoords_r	missing_3	missing_0r   missing_0_alignedmissing_3_alignedrt   s              r]   test_binary_op_join_settingz)TestDataArray.test_binary_op_join_setting  s%   #
&YY			(LS(O+<==	LS(O+<==	^J777 	+ 	+*F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+/1xyz0
 0
 0
,, <Arv 6#|||9L8MNNVX&&&&&s   A$$A(+A(c                   t          ddgddggdddgfdddgfg          }t          ddgddggdddgfdddgfg          }t          d	gdd
gfg          }|                    |          }t          ddt          j        gg dt          j        ddggdg dfdg dfg          }t	          ||           |                    |          }t          ddt          j        gg dt          j        ddggdg dfdg dfg          }t	          ||           |                    |          }t          ddgddgd	d	ggdg dfdddgfg          }t	          ||           d S )Nr   r>   rA   rB   r?   r   rC   rz   rD   r{   ro  r   r  )r   rC   rC   )rA   rB   r{   )r   combine_firstrP   r   r"   )r\   ar0ar1ar2r   rt   s         r]   test_combine_firstz TestDataArray.test_combine_first  s   !Q!Q(C#s+<sRGn*MNN!Q!Q(C#s+<sQFm*LMMsSEl^,,""3''BF^YYYA7???#c:::%67
 
 	VX&&&""3''BF^YYYA7???#c:::%67
 
 	VX&&&""3''VaVaV$___'=b!W~&N
 
 	VX&&&&&r_   c                h   t          ddgddgddggdg dfd	dd
gfg          }t          ddgddgddggdg dfd	dd
gfg          }t          ddgddgddggdg dfd	d
dgfg          }|}t          g ddg dfg          }|                    |          }t          ||           |                    |d          }t          ||           t          ddgdddgfg          }|                    |          }t          ||           |}t          g ddg dfg          }t          ddgd	dd
gfg          }|                    ||g          }t          ||           |}|                    d          }t          ||           |}|                    dd	g          }t          ||           d S )NrC   rD   rK   rf   rg   rh   r>   rz   rB   rA   r?   r   r   )r  c   b   F)	ascendingrb  a   rB   rA   Z   r   )r   sortbyr"   )	r\   r+  sorted1dsorted2drt   daxr   	dax_shortdays	            r]   test_sortbyzTestDataArray.test_sortby  s'   VaVaV$___'=aV}&M
 
 VaVaV$___'=aV}&M
 
 VaVaV$___'=aV}&M
 
 ooo(>'?@@3VX&&& 3%00VR    r2h#Sz):(;<<	9%%VX&&& ooo(>'?@@RC!Q=/22C:&&VX&&&3VX&&&C:&&VX&&&&&r_   c                   t          ddt          j        dgg          }t          ddt          j        dgg          }t          ddt          j        dgg          }t          |                    d          |           t          |                    d          |           t          g d          }t          |                    d          |           t          g d          }t          |                    d          |           t          d	d
t          j        ddgd          }t          ddt          j        dd
gd          }t          |                    dd          |           d S )NrK   rf   rC   rD   r   r   )rK   rD   rC   r`  g      @r  r  g      @rf  r   r  r  r  r   T)pct)r   rP   r   r"   rank)r\   arexpect_0expect_1r>   r?   s         r]   	test_rankzTestDataArray.test_rank  sG    Arvq)*++q!RVQ/011q!RVQ/011RWWW%%x000RWWW%%x000iii  QVVG__a(((ooo&&QVVG__a(((sCc2@@@tT26346BBBQVVCTV**A.....r_   use_datetimez'ignore:overflow encountered in multiplyc           	     @   |rt           st          j        d           t          j        t          j        ddd          dd          }t          j        j        	                    |d          }|s|}t	          t          j        dd	|z  z   d
|dz  z  z   dd|z  z   d|dz  z  z   f          d|ddgd          }|r|                    ddi          }n|}|                    dd          }t	          g dg dgdg dddgd          j        }t          |j        |d           t#          j                    5  t#          j        dt          j                   |                    ddd          }|j                                                                        sJ 	 d d d            n# 1 swxY w Y   t          j        |ddd f<   |r|                    ddi          }n|}|                    dddd!          }t          |j        |d           d"|v sJ |                    dddd#          }t          |j        |d           |j        d k    sJ t          j                            |j        ddg           t#          j                    5  t#          j        dt          j                   |                    dd$d          }t          j                            |j                                        dd%g           d d d            d S # 1 swxY w Y   d S )&Nr  z
1970-01-01r  r<   r  rm  r>   r   V瞯<`P/:rD   r   +=G^Z9)r{   r>   r   rC   )r>   r{   r   r{   )rw  rv  r<   )ry  rx  r   )r{   degree)rD   rC   r   )rz  r{   MbP?rtolr  rN  T)r  rK   )r  covpolyfit_covariance)r  r  r}   F)r%   r   r  rR  r   rV   r  coremissingget_clean_interp_indexrP   r+  r  polyfitr{  r   polyfit_coefficientsr  r  simplefilterRankWarningpolyfit_residualsr6  r   r   x_matrix_rankr  assert_almost_equalr    )	r\   r  rt  xcoordr>   da_rawr+  r  rt   s	            r]   test_polyfitzTestDataArray.test_polyfit  s     	)H 	)K(((M,S"===FQT
 
 
 GO2263?? 	FHeai%!Q$,.UQYA0MN  q!f--
 
 
  	sAh''BBBjja  !3!3!34 'iiq!f55
 
 
 	 	
 	0(FFFF $&& 	8 	8!(BN;;;**S"4*00C(//1155777777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 q!A#v 	sAh''BBBjja$j770(FFFF#s**** jja4j880(FFFF A%%%%

&&s'<q!fEEE$&& 	Y 	Y!(BN;;;**S!$*//CJ))#*?*F*F*H*H4QV-XXX	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Ys&   <A%F..F25F2A1LLLc           	        t          t          j        d                              ddd                    }|                    d          }t          t          j        t          j        d                              ddd                              t          j                  ddt          j        	                    }|j        d
k    sJ t          ||           t          j         dgd          }|                    d          }t          j         t          j        dt          j        gd          }t          ||           |                    dd          }t          j         g dd          }t          ||           t          j        t          d          5  |                    dt          j                   d d d            d S # 1 swxY w Y   d S )N<   rK   rf   rg   rC   rK   )r   constantr  rI  rI  mode	pad_widthconstant_values)r|   rf   rg   r  r>   r   rC   rm  g82?r>   r  )rC   r  rC   z#cannot convert float NaN to integerr   )r   rP   rp   rQ  r  r  r  r   r   r#   rR  r  r   r   r   r\   rp  r   rt   s       r]   test_pad_constantzTestDataArray.test_pad_constantU  s   ry++33Aq!<<==f%%F	)$$,,Q155<<RZHH2 "	  
 
 |y((((***\1#C(((!<BF 3#>>>***!W55<			444***]:-RSSS 	0 	0FFQF///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   !"GGGc           
        t          t          j        d                              ddd          dt          j        d          fdt          j        d          fdt          j        d          fg          }|                    dd	
          }t          t          j        t          j        d                              ddd          ddd	          dt          j        t          j        d                              t          j                  ddt          j                  fdt          j        d          fdt          j        d          fg          }t          ||           d S )Nr  rK   rf   rg   r>   r?   r   r  rC   r  r  r  r  )	r   rP   rp   rQ  r  r  r  r   r#   r  s       r]   test_pad_coordszTestDataArray.test_pad_coordsp  sF   Ii  ((Aq1129Q<< 3	!"5RYq\\7JK
 
 &!44F	)$$,,Q1552 !	   F	!++BJ77'"((*	   bill#bill#
 
* 	*****r_   r  )minimumr  r  medianstat_lengthr  r  )rf   rD   )r   r  c           	        t          t          j        d                              ddd                    }|                    dd||          }t          |t                    r|d         d	|d
         f}t          t          j        t          j        d                              ddd          d||                    }|j        dk    sJ t          ||           d S )Nr  rK   rf   rg   r  r  )r   r  r  r  r   r)  r  r  rI  r  )r  r  r  r|   rf   r  	r   rP   rp   rQ  r  r   r_  r   r#   )r\   r  r  rp  r   rt   s         r]   test_pad_stat_lengthz"TestDataArray.test_pad_stat_length  s    
 ry++33Aq!<<==fF;WWk4(( 	O&w/W9MNKF	)$$,,Q1552'	  
 
 |y((((*****r_   
end_values)rK   rg   c           	        t          t          j        d                              ddd                    }|                    ddd|          }|d	}n&t          |t                    r|d
         d|d         f}t          t          j        t          j        d                              ddd          dd|                    }|j        dk    sJ t          ||           d S )Nr  rK   rf   rg   r  r  linear_ramp)r   r  r  r  r   r   r)  r  r  )r  r  r  r  r  )r\   r  rp  r   rt   s        r]   test_pad_linear_rampz"TestDataArray.test_pad_linear_ramp  s     ry++33Aq!<<==]z  
 
 JJ
D)) 	L$W-vz'7JKJF	)$$,,Q1552"%	  
 
 |y((((*****r_   )reflect	symmetricreflect_type)Nevenoddc                   t          t          j        d                              ddd                    }|                    dd||          }t          j        d                              ddd          d|d	}|||d
<   t          t          j        di |          }|j        dk    sJ t          ||           d S )Nr  rK   rf   rg   r  r  )r   r  r  r  r  )r   r  r  r  r  r   )r   rP   rp   rQ  r  r   r#   )r\   r  r  rp  r   	np_kwargsrt   s          r]   test_pad_reflectzTestDataArray.test_pad_reflect  s     ry++33Aq!<<==T  
 
 Yy))11!Q::1
 
	 #(4In%RV00i0011|y((((*****r_   )r  rO   rt   r  defaultFalseTruec           
        t          j        ddgdddddg|fi|          }t          j        g ddddt          j        ddt          j        g|fi|          }|dn|}t	          |	          5  |                    dd
idd          }t           j                            ||           d d d            n# 1 swxY w Y   |                    dd
idd|          }t           j                            ||           d S )NrC   rD   r>   rz   r   r  r   rC   rD   r   r  r  )rC   rC   r  r   )r  r  )r  r  r  )rR  r   rP   r   r   r  r  r#   )r\   r  rO   rt   r   keep_attrs_r   s          r]   test_pad_keep_attrsz!TestDataArray.test_pad_keep_attrs  sh    lFcC"a%+@%A
 
 
 <LL#Arv6AB	
 
 
 $.#5ii:K000 	: 	:WWc6]QWOOFJ''999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: &M
A*  
 
 	
##FH55555s   /;B66B:=B:parserpandaspythonenginenumexpr)marksbackendnumpydaskr   r   c                	   t           j                            d           t          j        ddd          }t           j                            ddd          }t          j        ddd          }t           j                            g dd	d
                              t                    }t          |dgddd|fi          }t          |dgddd|fi          }	t          |dgddd|fi          }
t          |dgddd|fi          }|dk    rddl
m} |                    |                    |d                    }|	                    |                    |d                    }	|
                    |                    |d                    }
|                    |                    |d                    }t                      5  |                    d||           }ddd           n# 1 swxY w Y   |                    |d!k    "          }t#          ||           t                      5  |                    t%          d"          ||#          }ddd           n# 1 swxY w Y   |                    t%          |d!k    "                    }t#          ||           t                      5  |	                    d$||           }ddd           n# 1 swxY w Y   |	                    |d%k    "          }t#          ||           t                      5  |
                    d&||'          }ddd           n# 1 swxY w Y   |
                    |d(k     )          }t#          ||           |d*k    rht                      5  |                    d+||,          }ddd           n# 1 swxY w Y   |                    |d-k    .          }t#          ||           t'          j        t*                    5  |                    d/           ddd           n# 1 swxY w Y   t'          j        t*                    5  |                    |d!k    "           ddd           n# 1 swxY w Y   t'          j        t,                    5  |                    d0"           ddd           dS # 1 swxY w Y   dS )1zTest querying a dataset.r1  r   r<   rC   r  r  r=   )r@   ri   r   r   T)r   replacer>   rA   r  )r   rN   ro   rM   rB   b2r?   rz   c2r   r{   d2r  NrK   r'  rA  r|   rN  za2 > 5)r>   r  r  rg   rm  )r  r  zb2 > 502   zc2 < .5)r?   r  r  r  r  r  zd2 == "bar")r   r  r  ri   rf  za > 5z	spam > 50)rP   rQ   seedrp   randintr  choicer  r   r   r*  r   r   
from_arrayr&   queryrB  r#   r_  r   r   r   r0   )r\   r  r  r  rA   rB   rz   r{   aabbccddr+  r   r#  s                  r]   
test_queryzTestDataArray.test_query  s    		rIaQIa2..K1b!!I222TJJQQ
 
 ASETC8<LMMMASETC8<LMMMASETC8<LMMMASETC8<LMMMf######bmmAam8899BbmmAam8899BbmmAam8899BbmmAbm99::B $%% 	H 	HXXXGGF	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	HAE##((( $%% 	N 	NXXdX...vfXMMF	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	NQ))((( $%% 	I 	IXX	&XHHF	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	IAF$$((( $%% 	I 	IXX	&XHHF	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	IAG%%((( X ()) Q QM&PPQ Q Q Q Q Q Q Q Q Q Q Q Q Q QWWU
W,,FVV,,, ]:&& 	 	HHW	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:&& 	  	 HHAH	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]122 	$ 	$HH{H###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   G55G9<G98'I++I/2I/;K  K$'K$#MMMN66N:=N:P&&P*-P*
Q11Q58Q5R99R= R=c           
        |rt           st          j        d           dd}t          j        ddd          }t          t          j         ||dd           ||dd          t          j        |z  gd	
          d|g dd          }t          j        |d<   t          ddgddgt          j        t          j        ggdg dddgd          }|r|                    ddi          }|	                    |j
        g|ddiddi          }t          |j        |d           |                                }|	                    dt          j        ddg          }d|j        v sJ d|j        vsJ d S )Nr  rC   c                8    |t          j        |  |z            z  S r  rP   expr[  n0taus      r]   	exp_decayz.TestDataArray.test_curvefit.<locals>.exp_decay:      rCx((((r_   r   rg   r  rK   rf   r   r  )r[  r>   r   r   rI  r>   paramr  r  r>   )rD   rh   rM   r  p0boundsr{  r|  r[  rA   )rM   r  reduce_dimsparam_namesrC   )r%   r   r  rP   rp   r   r+  r   r  curvefitr[  r   curvefit_coefficientscomputepowerr  rN   )r\   r  r  r[  r+  rt   fits          r]   test_curvefitzTestDataArray.test_curvefit4  s     	)H 	)K(((	) 	) 	) 	) IaC  Hii1a(())Aq!*<*<bfqjIPRSSS++
 
 

 64VaVbfbf-."dE];;
 
 
  	$3(##BkkD6	tQi  
 
 	18$GGGGZZ\\kk28SVRWkXXci#(""""""r_   c                   dd}t           j        j                            |g           \  }}|ddgk    sJ t           j        j                            |ddiddt
          j        gi|          \  }}|dddk    sJ |t
          j         t
          j        fdt
          j        fdk    sJ t           j        j                            |ddidt          d	dgd
ddgfg          t
          j        gi|          \  }}|d         dk    sJ |d         t          j        ddgd
ddgfg          k                                    sJ |d         t
          j         t
          j        fk    sJ |d         d         t          d	dgd
ddgfg          k                                    sJ |d         d         t
          j        k    sJ dg}t           j        j                            t
          j	        |          \  }}||k    sJ t          j        t                    5  t           j        j                            t
          j	        g            d d d            d S # 1 swxY w Y   d S )NrC   c                8    |t          j        |  |z            z  S r  r  r  s      r]   r  z6TestDataArray.test_curvefit_helpers.<locals>.exp_decayY  r  r_   r  r  rf   rg   rh   )r  r  rK   r>   rD   r  )paramsr  r  	func_argsr   rA   r  )rR  r  r   _get_func_args_initialize_curvefit_paramsrP   infr   r   r  r   r   r   )r\   r  r  r  param_defaultsbounds_defaultsr  s          r]   test_curvefit_helpersz#TestDataArray.test_curvefit_helpersX  s   	) 	) 	) 	) GO::9bII	$&&&&*,'/*U*UT1I26{3Y+
 +
' !!4!4444426'26):Arv;"O"OOOOO +-'/*U*UayIq!fsQFm_EEErvNO	 +V +
 +
' d#q((((5!R\1a&3A-%Q%Q%QQ
#%%	 	 	 t$"&"&(99999E"1%Aq6C!Q=/)R)R)RR
#%%	 	 	 u%a(BF2222eGO::28[QQ	$$$$]:&& 	9 	9GO**28R888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   0IIIc                   |rt           st          j        d           d }t          j        ddd          }t          t          j         ||ddd           ||ddd          g          ddg|d	          }t          g d
g dgddgg dd	          }t          ddg|j        g	          }t          ddg|j        g	          }|r|                    ddi          }|	                    |j
        g|||dd          }t          |j        |           t          j        t          d          5  |	                    |j
        g|dt          ddgdddgi	          i           d d d            d S # 1 swxY w Y   d S )Nr  c                \    |t          j        dt           j        z  || z  |z   z            z  S r  rP   r  pir[  rA   fr  s       r]   sinez@TestDataArray.test_curvefit_multidimensional_guess.<locals>.sine  *    rva"%i1q51956666r_   r   rD   {Gz?r  rC   r>   r[  r  rC   rD   r   r   rD   r  rA   r  r  r  r   r  r>   )rA   r  r  )rM   r  r  zjInitial guess for 'a' has unexpected dimensions .* should only have dimensions that are in data dimensionsr   rA   r@   )r%   r   r  rP   rp   r   r+  r>   r  r  r[  r   r  r   r   )	r\   r  r  r[  r+  rt   a_guessp_guessr  s	            r]   $test_curvefit_multidimensional_guessz2TestDataArray.test_curvefit_multidimensional_guess{  s7     	)H 	)K(((	7 	7 	7 IaD!!Hdd1c1a(($$q#q!*<*<=>>Qa((
 
 
 YY%Q///::
 
 
 QGRTF333QHbdV444 	$3(##BkkD6733  
 

 	18<<<]5
 
 
 
	 
	 KKvAq651a&/BBBC    
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s   46E77E;>E;c                   |rt           st          j        d           d }t          j        ddd          }t          j        t          j         ||ddd           ||ddd          g          ddg|d	          }t          g d
g dgddgg dd	          }|r|                    ddi          }|	                    |j
        g|ddddt          ddg|j        g	          t          ddg|j        g	          fi          }t          |j        |           |	                    |j
        g|dddddt          ddg|j        g	          fi          }t          |j        |           t          j        t          d          5  |	                    |j
        g|ddt          dgddgi	          fi           d d d            d S # 1 swxY w Y   d S )Nr  c                \    |t          j        dt           j        z  || z  |z   z            z  S r  r  r  s       r]   r  zATestDataArray.test_curvefit_multidimensional_bounds.<locals>.sine  r  r_   r   rD   r  r  rC   r  r  r  r  r  r  r>   r  )r  r  rA   r   r  zhUpper bound for 'a' has unexpected dimensions .* should only have dimensions that are in data dimensionsr   r@   )rM   r  r  )r%   r   r  rP   rp   rR  r   r+  r  r  r[  r>   r   r  r   r   )r\   r  r  r[  r+  rt   r  fit2s           r]   %test_curvefit_multidimensional_boundsz3TestDataArray.test_curvefit_multidimensional_bounds  s     	)H 	)K(((	7 	7 	7 IaD!!\Hdd1c1a(($$q#q!*<*<=>>Qa((
 
 
 YY%Q///::
 
 

  	$3(##BkkD6T""q"grtf555q!fbdV444	  

 

 	18<<< {{D6T""b)QFBD6:::;	  
 
 	2H===]5
 
 
 
	 
	 KKvaA3s|!D!D!DEF    
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s   6GGGc                   |rt           st          j        d           d }t          g dg dgddgg dd	          }|r|                    d
di          }t          ddgt
          j        t
          j        ggddgddgd	          }t          j        t          d          5  |	                    d|t          d                                                     d d d            n# 1 swxY w Y   |	                    d|dt          d                                                    }t          |j        |           d S )Nr  c                "    |dk    rdS || z  |z   S )Nr<   r   r   )r>   rA   rB   s      r]   linez7TestDataArray.test_curvefit_ignore_errors.<locals>.line  s    2vvqq519r_   )rC   rK   rg   )r   r=   r)  rC   rD   )r  r  r  )r>  r>   r  r>  rA   rB   )r>  r  z$calls to function has reached maxfevr   r>   rg   )maxfev)rM   r  kwargsr  )rM   r  r  r  )r%   r   r  r   r  rP   r   r   RuntimeErrorr  r_  r  r   r  )r\   r  r  r+  rt   r  s         r]   test_curvefit_ignore_errorsz)TestDataArray.test_curvefit_ignore_errors  s     	)H 	)K(((	 	 	
 YY$Qooo66
 
 

  	$3(##BVbfbf%&aVsCj/Q/Q
 
 
 ]</UVVV 	 	KK1~~~	   
 giii	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 kkq>>>  
 
 ')) 	 	18<<<<<s   %9C**C.1C.r&  )r   r  r   r  r  r  r`   ra   )r  r   r  r   r`   ra   )r  r  r`   ra   )r  r  r  r   fixturer^   ru   rw   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r)   r!  r$  r.  r6  r:  r<  r?  rC  rL  rT  rX  r\  rb  ru  rw  r  r  r  r  markfilterwarningsr  r  r  r  r  parametrizer  rP   r   rA  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r'  r/  r4  r6  r;  r@  rC  rF  rS  rW  rZ  r_  rb  rd  rg  rk  rn  rp  r~  r  r  r  r  r   r  r  r  bytesr  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r   r'  r3  r8  r:  r<  r?  rB  rD  rF  rI  rK  rY  r[  rb  rj  rm  rr  rv  ry  r|  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'   r  r  r  r  r  r  r  r  r  absr  r  r  r  r
  r  r   r  r  r!  r'  r,  r.  r4  r6  r8  r:  r<  rF  rH  rU  r[  r]  r`  rb  re  rk  r.   rs  rz  r~  r  r  r  r  r  r  r  skipifr   r  r  version_infor  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  AssertionErrorrR  r   r  r  r!  r$  r9  rE  rG  rM  rO  rX  r^  rl  rs  r  r  r  r  r  r  r  r+   r  r-   r  r  r  r  r
  r   r_   r]   r2   r2   D   sv       V^D!!!P P "!P, , , ,$
* 
* 
* 
** * * *$& & & &$7 7 7 7@ @ @ @! ! ! !. . . .8+ 8+ 8+ 8+t+ + + +" " " "# # # #1 1 1 1* * * *&T+ T+ T+ T+l> > > >6++ ++ ++ ++Z 
. 
. 
. ]
.+ + + +
 
' 
' 
' ]
'+. +. +. +.Z1 1 1 1
) 
) 
) 
)#6 #6 #6 #6J+ + + +
6+ 6+ 6+ 6+p. . . .0O O O O6 6 6 66' ' ' '<E  E  E  E N# # # #
- - - -
  4  4  4 ] 4DT T T T&
 
 
 
  [ <==O/ O/ O/ >=O/b9 9 9 9G G G G2( ( ( (
	$ 	$ 	$ 	$ [	#FL3339EEEa  
 FL3339EEEa  
 FL3339EEEsx  	
 $
' 
' 
'% $
'' ' ' '$' ' ' 'E E E E+ + + +- - - -- - - -       "! ! ! !
A 
A 
A 
A> > > >$ $ $ $0,? ,? ,? ,?\$ $ $ $

 
 
 
&Y &Y &Y &YP+ + + +"' ' ' '6 6 6 6C C C C0= 0= 0= 0=d& & & &2+ + + +(=& =& =& =&~. . . .(+ + + +
( ( ( (X X X X
+ + + +( ( ( (+ + + +' ' ' '+ + + +< < < <2: : : :" " " "# # # #+ + + +  [\FIq#aa?P?P+QRR+ + + SR+( [WsEl33	. 	. 	. 43	.@ @ @ @P4 P4 P4 P4d   "B B B B4Q Q Q Q2,- ,- ,- ,-\8. 8. 8. 8.t. . . .$'8 '8 '8 '8R' ' ' '>'& '& '& '&R& & & &; ; ; ;< < < <"& & & &8 8 8 8? ? ? ?; ; ; ;6 6 6 6A A A A8 8 8 8# # # # * * * *% % % %
) ) ) )
	- 	- 	- 	-
2 
2 
2 
2   ) ) ) )5+ 5+ 5+ 5+n+ + + +,- ,- ,- ,-\&; &; &; &;P	' 	' 	' 	'+ + + ++ + + +. . . .
.J .J .J .J`M M M M/ / / /0* * * *4+ + + +. . . .: : : :+ + + +& & & &+ + + +&+ + + ++ + + ++ + + ++ + + +:'' '' '' ''R' ' ' '< ' ' ' ' 
G 
G 
G 
G
/ 
/ 
/ 
/ [X':':':;;[S4$$">??[SS$A3A/$cUS#J1OPP * * *  @? <;
* [X
G'<==	< 	< 	< >=	< [X
G'<==D D D >=D$	& 	& 	& 	&0 0 0 0 ['')F)FPST 
. 
. 
. 
.   4, , , ,% % % %E E E E6K K K KB [ 	!	1#qc
|,,	1a&C!Q=/22 	1a&C!Q=/22	1#qc
|,,	!	
 0 0 0 0* * * *** * * *- - - -	4 	4 	4 	4    6 6 6 6&* * * *$* * * * A A A A$* * * *$
& 
& 
& 
&!B !B !B !BF       D> > > >
< 
< 
< 
< $ $ $ ]$@& & & &
 
 
 
: : : : 
6 
6 
6 _
6 @ @ @ _@", , , ,' ' ' '" " " " [Z$77[V%<%<%<==[Z$77T2 T2 T2 87 >= 87T2l+ + + ++ + + +1 1 1 1*(! (! (! (!T [''&//1SS5Ebqb5IG5S\   'U 'U 'U	 'UR [''&//1SS5Ebqb5IG5S\   G G G	 G< [''&//1SS5Ebqb5IG5S\   G G G	 G,- - - -0+ + + +"$ $ $ $+ + + +	% 	% 	% 	%' ' ' '' ' ' ' [X}}}55[0As8fi=O2PQQ+ + + RQ 65+ + + + ++ + + ++ + + + [n--[ $B$S("(Aq6*:*:;;!Q=   $B$S("(C8*<*<==#q?  	
 *1 1 1+  .-,1*3 3 3 3
   > > > >0, , , ,\%) %) %) %)N
+ 
+ 
+ 
+   (" " " " ' ' ' '' ' ' '2(' (' (' ('T / / / /$ [Z$77[^dE];;[ IJJ8Y 8Y 8Y KJ <; 878Yt0 0 0 06+ + + +: [V%MNN[a6F)K)KL + + +  ON+  [tQ&6(J(JK + + + +( [V%=>>[^-BCC+ + + DC ?>+$ [+++FLQQ//qq1A1AiPPPFLaa 0 0"AAAFLQQ//qq1A1AfMMM	
 6 6 6 6, [X(';<<[8T<6<	BRAS#T#T#TU  [G\V\&HHHI A$ A$ A$   =<A$F [Z$77 #  #  # 87 ^ #D!9 !9 !9 !9F [Z$77. . . 87 ^.` [Z$77: : : 87 ^:x [Z$77&= &= &= 87 ^&= &= &=r_   r2   c                  B    e Zd Z ej        d          d             ZdS )
TestReduceTr3   c                    ddd| _         d S )Nr6   r7   r8   r  r[   s    r]   r^   zTestReduce.setup  s    '$77


r_   N)r  r  r  r   r  r^   r   r_   r]   r  r    s=        V^D!!!8 8 "!8 8 8r_   r  )r>   minindexmaxindexnanindex)r   rC   rD   r   r   r   rD   rg   rD   r  r  )r  r  r  r               r  r  r  r  r  r  rC   r   r   z9ignore:invalid value encountered in reduce:RuntimeWarningr  )r  rz  allnan)
2015-12-31
2020-01-02
2020-01-01
2016-01-01r  rj   r  c                     e Zd Zdd
ZddZej                            d          dd            Zej                            d          dd            Z	ej        
                    dddg          dd            Zej        
                    dddg          dd            Zej                            d          dd            Zej                            d          dd            ZdS )TestReduce1Dr>   
np.ndarrayr  int | floatr  r  
int | Noner`   ra   c                P   t          j        |dgdt          j        |j                  dz  i| j                  }t          j        |          rd}|                    |d          }|                    d          }t          ||           |                                }|
                                }	i |	_        t          ||	           |                    d	          }
|/|j        j        d
k    r|                    |d          }i |_        n|	}t          |
|           d S Nr>   rf   r  r   Tr  r  Fr  O)rR  r   rP   rp   r   rO   isnanrB  minr#   r   rk   r  r\   r>   r  r  r  rp  	expected0r%  r&  rK  result2r   s               r]   test_minzTestReduce1D.test_min>  !    \SE3	!&(9(9A(=">dj
 
 
 8H 	HGGhTG22	&&D&))),,,&&((NN$$		),,,&&&&&BHMS$8$8(66I IOO!I),,,,,r_   c                P   t          j        |dgdt          j        |j                  dz  i| j                  }t          j        |          rd}|                    |d          }|                    d          }t          ||           |                                }|
                                }	i |	_        t          ||	           |                    d	          }
|/|j        j        d
k    r|                    |d          }i |_        n|	}t          |
|           d S r'  )rR  r   rP   rp   r   rO   r*  rB  maxr#   r   rk   r  r,  s               r]   test_maxzTestReduce1D.test_max^  r0  r_   Jignore:Behaviour of argmin/argmax with neither dim nor :DeprecationWarningc                :   t          j        |dgdt          j        |j                  dz  i| j                  }t          j        t          j        |j        t          j                  dg          }t          j        |          rGt          j	        t                    5  |                                 d d d            n# 1 swxY w Y   d S ||         }|                                }t          ||           |                    d          }	|                                }
| j        |
_        t          |	|
           |                    d	          }|/|j        j        d
k    r|                    |d          }i |_        n|}t          ||           d S Nr>   rf   r  rj   r   Tr  Fr(  r)  r  )rR  r   rP   rp   r   rO   intpr*  r   r   r   argminr#   r   rk   r  rB  r\   r>   r  r  r  rp  indarrr-  r%  r&  rK  r.  r   s                r]   test_argminzTestReduce1D.test_argmin~      \SE3	!&(9(9A(=">dj
 
 
 bibg>>>cUKKK8H 	z**  		              F8$	))++),,,))t),,NN$$	*	),,,))5)))BHMS$8$8hT::I IOO!I),,,,,   "CC
Cc                :   t          j        |dgdt          j        |j                  dz  i| j                  }t          j        t          j        |j        t          j                  dg          }t          j        |          rGt          j	        t                    5  |                                 d d d            n# 1 swxY w Y   d S ||         }|                                }t          ||           |                    d          }	|                                }
| j        |
_        t          |	|
           |                    d	          }|/|j        j        d
k    r|                    |d          }i |_        n|}t          ||           d S r6  )rR  r   rP   rp   r   rO   r7  r*  r   r   r   argmaxr#   r   rk   r  rB  r9  s                r]   test_argmaxzTestReduce1D.test_argmax  r<  r=  r  TFr  c                $   |rt           st          j        d           |r$|j        j        dk    rt          j        d           t          j        |dgdt          j	        |j
                  dz  i| j                  }|r|                    i           }n|}t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t                     5  t          j        d	                                           d d d            n# 1 swxY w Y   t          j        |j        d         dg
          }|                                }	t          j        |          }
t          j        |          rd}|
rd|	d<   t          j        }nd}|	|z                      |d                              d          }d|_        |                                }t1          ||           |                    t          j                  }t1          ||           |                    d          }|                                }| j        |_        t1          ||           |I|j        j        dk    r9|                    |d                              d          }d|_        i |_        n|                                }|                    d          }t1          ||           |                    dd          }t1          ||           |
rd}nd}|	|z                      |d          }d|_        |                    d          }t1          ||           |
rd}nd}|	|z                      |d          }d|_        |                    d          }t1          ||           |
rd}nd}|	|z                      |d          }d|_        |                    d          }t1          ||           d S )Nr  M;dask operation 'argmin' breaks when dtype is datetime64 (M)r>   rf   r  r  r1  rg   r   r   rC   .Tr  r  r  r  r)  Fr(               Yr  r  r  r                )r%   r   r  rk   r  r0  rR  r   rP   rp   r   rO   r  r   r   idxminr   rM   r   r*  r  rB  r  ro   r#   r\   r>   r  r  r  r  ar0_rawr[  	coordarr0	coordarr1hasnafill_value_0r-  r%  r&  r.  r   rL  result3result4fill_value_5rN  result5fill_value_6ra  result6fill_value_7rQ  result7s                                r]   test_idxminzTestReduce1D.test_idxmin       	)H 	)K((( 	X++LVWWW,SE3	!&(9(9A(=">dj
 
 
  	--##CCC ]8$$ 	# 	#JJ6J"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# ]:&& 	% 	%LOO""$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% LCu===	NN$$	""8H 	H 	IcN6LLL %++hT+BBII'RR 	 	 **,,),,, ***//),,, ***--NN$$	*	),,, CINc$9$9!==DDWMMI IN IOO!((I**E***),,, **Ee*<<),,,  	LLL-33hT3JJ		***--),,,  	LLL-33hT3JJ		***++),,,  	LLL-33hT3JJ		***,,),,,,,$   1CCC8'D++D/2D/c                $   |rt           st          j        d           |r$|j        j        dk    rt          j        d           t          j        |dgdt          j	        |j
                  dz  i| j                  }|r|                    i           }n|}t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   t          j        t                     5  t          j        d	                                           d d d            n# 1 swxY w Y   t          j        |j        d         dg
          }|                                }	t          j        |          }
t          j        |          rd}|
rd|	d<   t          j        }nd}|	|z                      |d                              d          }d|_        |                                }t1          ||           |                    t          j                  }t1          ||           |                    d          }|                                }| j        |_        t1          ||           |I|j        j        dk    r9|                    |d                              d          }d|_        i |_        n|                                }|                    d          }t1          ||           |                    dd          }t1          ||           |
rd}nd}|	|z                      |d          }d|_        |                    d          }t1          ||           |
rd}nd}|	|z                      |d          }d|_        |                    d          }t1          ||           |
rd}nd}|	|z                      |d          }d|_        |                    d          }t1          ||           d S )Nr  rB  ;dask operation 'argmax' breaks when dtype is datetime64 (M)r>   rf   r  r  r1  rg   r   r   rC   .Tr  r  rD  r  r)  Fr(  rE  rF  r  r   rG  )r%   r   r  rk   r  r0  rR  r   rP   rp   r   rO   r  r   r   idxmaxr   rM   r   r*  r  rB  r  ro   r#   rI  s                                r]   test_idxmaxzTestReduce1D.test_idxmax;  rX  rY  c                   t          j        |dgdt          j        |j                  dz  i| j                  }t          j        t          j        |j        t          j                  dg          }t          j        |          rGt          j	        t                    5  |                                 d d d            n# 1 swxY w Y   d S d||         i}|                    d          }|D ]}	t          ||	         ||	                    |                    dd          }
t          |          }|                                D ]}| j        |_        |D ]}	t          |
|	         ||	                    |                    dd	
          }|7|j        j        dk    r'd|                    |d          i}i |d         _        n|}|D ]}	t          ||	         ||	                    d S Nr>   rf   r  rj   r   .Tr  Fr(  r)  r  )rR  r   rP   rp   r   rO   r7  r*  r   r   r   r8  r#   r   r   rk   r  rB  r\   r>   r  r  r  rp  r:  r-  r%  r  r&  rK  r+  r.  r   s                  r]   test_argmin_dimzTestReduce1D.test_argmin_dim  6    \SE3	!&(9(9A(=">dj
 
 
 bibg>>>cUKKK8H 	z**  		              F&*+	))C.. 	; 	;CWS\9S>::::))CD)11Y''	""$$ 	" 	"BzBHH 	; 	;CWS\9S>::::))C)..BHMS$8$8fkkH4k@@AI#%IcN  !I 	; 	;CWS\9S>::::	; 	;r=  c                   t          j        |dgdt          j        |j                  dz  i| j                  }t          j        t          j        |j        t          j                  dg          }t          j        |          rGt          j	        t                    5  |                                 d d d            n# 1 swxY w Y   d S d||         i}|                    d          }|D ]}	t          ||	         ||	                    |                    dd          }
t          |          }|                                D ]}| j        |_        |D ]}	t          |
|	         ||	                    |                    dd	
          }|7|j        j        dk    r'd|                    |d          i}i |d         _        n|}|D ]}	t          ||	         ||	                    d S r_  )rR  r   rP   rp   r   rO   r7  r*  r   r   r   r?  r#   r   r   rk   r  rB  r`  s                  r]   test_argmax_dimzTestReduce1D.test_argmax_dim  rb  r=  N)
r>   r#  r  r$  r  r$  r  r%  r`   ra   )r>   r#  r  r$  r  r$  r  r%  r  r  r`   ra   )r  r  r  r/  r3  r   r  r  r;  r@  r  rW  r]  ra  rd  r   r_   r]   r"  r"    s       D- - - -@- - - -@ [T !- !- !- !-F [T !- !- !- !-F [Z$77n- n- n- 87n-` [Z$77n- n- n- 87n-` [T %; %; %; %;N [T %; %; %; %; %; %;r_   r"  )rC   rC   rC   rC   rC   rC   rC   )r   r   rg   r=   r   r   )rg   r   rD   )rD   r   rf   )NNN)r  r  r  r  r  r  r  r|   )NrC   r   z:ignore:invalid value encountered in reduce:RuntimeWarning:)r  r  r  r  )
1900-01-011-02-03
1900-01-02rg  ro  )rC   r   rD   c                     e Zd Zdd
ZddZddZddZej        	                    d ej
        dd           ej
        dd          g          dd            Zej        	                    d ej
        dd           ej
        dd          g          dd            Zej                            d          dd            Zej                            d          dd            ZdS )TestReduce2Dr>   r#  r  list[int | float]r  r  list[int | None]r`   ra   c           
     4   t          j        |ddgt          j        |j        d                   dz  dt          j        |j        d                   z
  d| j                  d |D             }fd	t          |          D             }t          j        |d
          }                    dd          }t          ||                               d
          }|}	i |	_        t          ||	                               d          }
t          |
|	           fdt          ||          D             }fdt          |          D             }t          j        |d
          }i |_                            dd          }t          ||           d S )Nr?   r>   rC   rf   r   r   r  c                >    g | ]}t          j        |          s|nd S r   rP   r*  r   r>   s     r]   r   z)TestReduce2D.test_min.<locals>.<listcomp>M  )    BBBARXa[[/AAaBBBr_   c                l    g | ]0\  }}                     |                                |d          1S r  Tr  rB  r   yiindirp  s      r]   r   z)TestReduce2D.test_min.<locals>.<listcomp>N  I     
 
 
6>b$BGGbGMMD11
 
 
r_   r1  Tr  r  r  c                B    g | ]\  }}|j         j        dk    r|n|S Nr)  rk   r  r   r>   r?   rp  s      r]   r   z)TestReduce2D.test_min.<locals>.<listcomp>^  C     
 
 
1 bhms22AA
 
 
r_   c                l    g | ]0\  }}                     |                                |d          1S rs  rt  ru  s      r]   r   z)TestReduce2D.test_min.<locals>.<listcomp>b  rx  r_   Fr  )rR  r   rP   rp   r   rO   	enumerater2  r+  r#   r  r\   r>   r  r  r  expected0listr-  r%  r&  rK  r.  expected2listr   rO  rp  s                 @r]   r/  zTestReduce2D.test_min?  s    \s171:..2RYqwqz=R=R9RSS*	
 
 
 CBBBB
 
 
 
BKHBUBU
 
 
 Im555	&&ST&22),,,&&S&//		),,,&&a&..),,,
 
 
 
Hh//
 
 

 
 
 
BKHBUBU
 
 
 Im555		&&S&//),,,,,r_   c           
     X   t          j        |ddgt          j        |j        d                   dz  dt          j        |j        d                   z
  d| j                  d |D             }fd	t          |          D             }t          j        |d
          }                    dd          }t          ||                               d
          }|
                                }	i |	_        t          ||	                               d          }
t          |
|	           fdt          ||          D             }fdt          |          D             }t          j        |d
          }i |_                            dd          }t          ||           d S )Nr?   r>   rC   rf   r   r   r  c                >    g | ]}t          j        |          s|nd S r   ro  rp  s     r]   r   z)TestReduce2D.test_max.<locals>.<listcomp>z  rq  r_   c                l    g | ]0\  }}                     |                                |d          1S rs  rt  ru  s      r]   r   z)TestReduce2D.test_max.<locals>.<listcomp>{  rx  r_   r1  Try  r  c                B    g | ]\  }}|j         j        dk    r|n|S r{  r|  r}  s      r]   r   z)TestReduce2D.test_max.<locals>.<listcomp>  r~  r_   c                l    g | ]0\  }}                     |                                |d          1S rs  rt  ru  s      r]   r   z)TestReduce2D.test_max.<locals>.<listcomp>  rx  r_   Fr  )rR  r   rP   rp   r   rO   r  r2  r2  r#   r   r  r  s                 @r]   r3  zTestReduce2D.test_maxl  s    \s171:..2RYqwqz=R=R9RSS*	
 
 
 CBBBB
 
 
 
BKHBUBU
 
 
 Im555	&&ST&22),,,&&S&//NN$$		),,,&&a&..),,,
 
 
 
Hh//
 
 

 
 
 
BKHBUBU
 
 
 Im555		&&S&//),,,,,r_   c           
        t          j        |ddgt          j        |j        d                   dz  dt          j        |j        d                   z
  d| j                  t          j        t          j        |j        d         t          j                  |j        d         dg          }t          j        |j        j	        	          t          j
        |                                          rIt          j        t                    5                      d
           d d d            n# 1 swxY w Y   d S fdt!          |          D             }t          j        |d
          }                    d
          }t%          ||                               d          }	t%          |	|                               dd          }
|                                }| j        |_        t%          |
|           fdt)          ||          D             }fdt!          |          D             }t          j        |d
          }i |_                            dd          }t%          ||           d S )Nr?   r>   rC   rf   r   r   r  rj   r   r1  c                l    g | ]0\  }}                     |                                |d          1S rs  rt  r   rv  rw  r:  s      r]   r   z,TestReduce2D.test_argmin.<locals>.<listcomp>  N     
 
 
D KK"K""T"55
 
 
r_   r  Try  c                B    g | ]\  }}|j         j        dk    r|n|S r{  r|  r}  s      r]   r   z,TestReduce2D.test_argmin.<locals>.<listcomp>  r~  r_   c                l    g | ]0\  }}                     |                                |d          1S rs  rt  r  s      r]   r   z,TestReduce2D.test_argmin.<locals>.<listcomp>  r  r_   Fr  )rR  r   rP   rp   r   rO   tiler7  rN   rM   r*  anyr   r   r   r8  r  r2  r#   r   r  )r\   r>   r  r  r  indarrnpr  r-  r%  r&  r.  rK  r  r   rO  rp  r:  s                  @@r]   r;  zTestReduce2D.test_argmin  s    \s171:..2RYqwqz=R=R9RSS*	
 
 
 729QWQZrw???!'!*aQQhRWRYGGG8H!!## 	z** # #		c	"""# # # # # # # # # # # # # # #F
 
 
 
%h//
 
 
 Im555	)))$$),,,)))##),,,)))55NN$$	*	),,,
 
 
 
Hh//
 
 

 
 
 
%h//
 
 
 Im555		))E)22),,,,,   D33D7:D7c           
        t          j        |ddgt          j        |j        d                   dz  dt          j        |j        d                   z
  d| j                  t          j        t          j        |j        d         t          j                  |j        d         dg          }t          j        |j        j	        	          t          j
        |                                          rIt          j        t                    5                      d
           d d d            n# 1 swxY w Y   d S fdt!          |          D             }t          j        |d
          }                    d
          }t%          ||                               d          }	t%          |	|                               dd          }
|                                }| j        |_        t%          |
|           fdt)          ||          D             }fdt!          |          D             }t          j        |d
          }i |_                            dd          }t%          ||           d S )Nr?   r>   rC   rf   r   r   r  rj   r   r1  c                l    g | ]0\  }}                     |                                |d          1S rs  rt  r  s      r]   r   z,TestReduce2D.test_argmax.<locals>.<listcomp>  r  r_   r  Try  c                B    g | ]\  }}|j         j        dk    r|n|S r{  r|  r}  s      r]   r   z,TestReduce2D.test_argmax.<locals>.<listcomp>  r~  r_   c                l    g | ]0\  }}                     |                                |d          1S rs  rt  r  s      r]   r   z,TestReduce2D.test_argmax.<locals>.<listcomp>  r  r_   Fr  )rR  r   rP   rp   r   rO   r  r7  rN   rM   r*  r  r   r   r   r?  r  r2  r#   r   r  )r\   r>   r  r  r  	indarr_npr  r-  r%  r&  r.  rK  r  r   rO  rp  r:  s                  @@r]   r@  zTestReduce2D.test_argmax  s    \s171:..2RYqwqz=R=R9RSS*	
 
 
 GBIagaj@@@171:q/RR	ibgbiHHH8H!!## 	z** # #		c	"""# # # # # # # # # # # # # # #F
 
 
 
%h//
 
 
 Im555	)))$$),,,)))##),,,)))55NN$$	*	),,,
 
 
 
Hh//
 
 

 
 
 
%h//
 
 
 Im555		))E)22),,,,,r  r  Tr  r  Fnodaskr  c           
        !"#$ |rt           st          j        d           |r$|j        j        dk    rt          j        d           |j        j        dk    rd}nd}t          j        |ddgt          j	        |j
        d                   d	z  dt          j	        |j
        d                   z
  d
| j                  }|r|                    i           n|t                     t          j        t                    5                                   d d d            n# 1 swxY w Y   t          j        t"                    5                      d           d d d            n# 1 swxY w Y   t                     t          j        t          j        j        d         |j
        d         dg          j        j                  d |D             }                                 d |d d f<   d |D             }	t          j        d |D                       d d d f         ! !fdt/          |	          D             }
t          j        |
d          }d|_        t5          |          5                      d          }d d d            n# 1 swxY w Y   t          ||           t5          |          5                      dt          j                  }d d d            n# 1 swxY w Y   t          ||           t5          |          5                      dd          }d d d            n# 1 swxY w Y   |                                }| j        |_        t          ||           fdt9          |	|          D             }fdt/          |          D             }t          j        |d          }d|_        i |_        t5          |          5                      dd          }d d d            n# 1 swxY w Y   t          ||           t5          |          5                      ddd          }d d d            n# 1 swxY w Y   t          ||           t          j        d |D                       d d d f         " "fdt/          |	          D             }t          j        |d          }d|_        t5          |          5                      dd          }d d d            n# 1 swxY w Y   t          ||           t          j        d  |D                       d d d f         # #fd!t/          |	          D             }t          j        |d          }d|_        t5          |          5                      dd"          }d d d            n# 1 swxY w Y   t          ||           t          j        d# |D                       d d d f         $ $fd$t/          |	          D             }t          j        |d          }d|_        t5          |          5                      dd%          }d d d            n# 1 swxY w Y   t          ||           d S )&Nr  rB  rC  r)  rC   r   r?   r>   rf   r   r  rP  r1  r   c                6    g | ]}t          j        |          S r   ro  rp  s     r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>5       ///!///r_   c                >    g | ]}t          j        |          s|nd S r   ro  rp  s     r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>8  )    CCCQbhqkk0QQqCCCr_   c                .    g | ]}|rt           j        nd S r  rP   r  rp  s     r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>:  #    AAAa1rvvAAAr_   c                r    g | ]3\  }}z                       |                                |d          4S rs  rt  r   rv  rw  rL  
nan_mult_0s      r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>;  V     
 
 
D #))B)//44t$4GG
 
 
r_   max_computesr  r  Try  c                B    g | ]\  }}|j         j        dk    r|n|S r{  r|  r   r>   r?   r[  s      r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>T  C     
 
 
1 cin33AA
 
 
r_   c                l    g | ]0\  }}                     |                                |d          1S rs  rt  r   rv  rw  rK  s      r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>X  N     
 
 
D NNRN  %%4%88
 
 
r_   Fr  rE  r  r  r  c                    g | ]}|rd nd	S r  rC   r   rp  s     r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>j  !    ???Aq/tta???r_   c                r    g | ]3\  }}z                       |                                |d          4S rs  rt  r   rv  rw  rL  
nan_mult_5s      r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>k  r  r_   r  c                    g | ]}|rd nd	S r   rC   r   rp  s     r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>w       ===!Q~rrA===r_   c                r    g | ]3\  }}z                       |                                |d          4S rs  rt  r   rv  rw  rL  
nan_mult_6s      r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>x  r  r_   r   c                    g | ]}|rd nd	S              rC   r   rp  s     r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>       >>>1assQ>>>r_   c                r    g | ]3\  }}z                       |                                |d          4S rs  rt  r   rv  rw  rL  
nan_mult_7s      r]   r   z,TestReduce2D.test_idxmin.<locals>.<listcomp>  r  r_   r  )r%   r   r  rk   r  r0  rR  r   rP   rp   r   rO   r  r#   r   r   rH  r   r  rM   rN   r   r   r  r2  ro   r&   r  r  )%r\   r>   r  r  r  r  r  rJ  rM  	minindex0r  r-  r%  r&  r.  r   	minindex3expected3listrL  rO  rP  expected5listrN  rR  expected6listra  rT  expected7listrQ  rV  r[  rK  rL  r  r  r  r  s%                                 @@@@@@@r]   rW  zTestReduce2D.test_idxmin  s	     	)H 	)K((( 	X++LVWWW7<3LLL,s171:..2RYqwqz=R=R9RSS*	
 
 
  	--##CCCc""" ]:&& 	 	JJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]8$$ 	  	 JJ3J	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	c"""LGCJsOagaj!_55CHSZ
 
 
	 0/h///NN$$		%(CC(CCC	XAA5AAABB111d7K

 
 
 
 
%i00
 
 
 Im555		 $>>> 	* 	*jjSj))G	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*),,, $>>> 	= 	=jjSRVj<<G	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=),,, $>>> 	; 	;jjSTj::G	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;NN$$	*	),,,
 
 
 
Ix00
 
 
	
 
 
 
%i00
 
 
 Im555			#>>> 	8 	8jjSj77G	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8),,, $>>> 	J 	JjjS5jIIG	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J),,, X?????@@DI

 
 
 
 
%i00
 
 
 Im555		#>>> 	; 	;jjSTj::G	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;),,, X==u===>>qqq$wG

 
 
 
 
%i00
 
 
 Im555		#>>> 	9 	9jjSRj88G	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9),,, X>>>>>??4H

 
 
 
 
%i00
 
 
 Im555		#>>> 	: 	:jjSSj99G	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:),,,,,s   D&&D*-D*
E--E14E1:JJ!$J!"K66K:=K:!MM	M	+PPP:QQ#&Q#+TTTV??WWY//Y36Y3c           
        !"#$% |rt           st          j        d           |r$|j        j        dk    rt          j        d           |j        j        dk    rd}nd}t          j        |ddgt          j	        |j
        d                   d	z  dt          j	        |j
        d                   z
  d
| j                  }|r|                    i           n|t          j        t                    5                                   d d d            n# 1 swxY w Y   t          j        t                     5                      d           d d d            n# 1 swxY w Y                                   }|j        d= t          j        t                     5  |                    d           d d d            n# 1 swxY w Y   t          j        t          j        j        d         |j
        d         dg          j        j                   d |D             }	                                 !d!|	d d f<   d |D             }
t          j        d |	D                       d d d f         "!"fdt-          |
          D             }t          j        |d          }d|_        t3          |          5                      d          }d d d            n# 1 swxY w Y   t5          ||           t3          |          5                      dt          j                  }d d d            n# 1 swxY w Y   t5          ||           t3          |          5                      dd          }d d d            n# 1 swxY w Y   |                                }| j        |_        t5          ||           fdt9          |
|          D             } fdt-          |          D             }t          j        |d          }d|_        i |_        t3          |          5                      dd          }d d d            n# 1 swxY w Y   t5          ||           t3          |          5                      ddd          }d d d            n# 1 swxY w Y   t5          ||           t          j        d |	D                       d d d f         #!#fdt-          |
          D             }t          j        |d          }d|_        t3          |          5                      dd          }d d d            n# 1 swxY w Y   t5          ||           t          j        d  |	D                       d d d f         $!$fd!t-          |
          D             }t          j        |d          }d|_        t3          |          5                      dd"          }d d d            n# 1 swxY w Y   t5          ||           t          j        d# |	D                       d d d f         %!%fd$t-          |
          D             }t          j        |d          }d|_        t3          |          5                      dd%          }d d d            n# 1 swxY w Y   t5          ||           d S )&Nr  rB  r[  r)  rC   r   r?   r>   rf   r   r  rP  r1  r   c                6    g | ]}t          j        |          S r   ro  rp  s     r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   c                >    g | ]}t          j        |          s|nd S r   ro  rp  s     r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   c                .    g | ]}|rt           j        nd S r  r  rp  s     r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   c                r    g | ]3\  }}z                       |                                |d          4S rs  rt  r  s      r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   r  r  Try  c                B    g | ]\  }}|j         j        dk    r|n|S r{  r|  r  s      r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   c                l    g | ]0\  }}                     |                                |d          1S rs  rt  r  s      r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   Fr  rE  r  c                    g | ]}|rd nd	S r  r   rp  s     r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   c                r    g | ]3\  }}z                       |                                |d          4S rs  rt  r  s      r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   r  c                    g | ]}|rd nd	S r  r   rp  s     r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   c                r    g | ]3\  }}z                       |                                |d          4S rs  rt  r  s      r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   r   c                    g | ]}|rd nd	S r  r   rp  s     r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   c                r    g | ]3\  }}z                       |                                |d          4S rs  rt  r  s      r]   r   z,TestReduce2D.test_idxmax.<locals>.<listcomp>  r  r_   r  )r%   r   r  rk   r  r0  rR  r   rP   rp   r   rO   r  r   r   r\  r   r   rM   r  rN   r   r  r2  ro   r&   r#   r  r  )&r\   r>   r  r  r  r  r  rJ  r\  rM  	maxindex0r  r-  r%  r&  r.  r   	maxindex3r  rL  rO  rP  r  rN  rR  r  ra  rT  r  rQ  rV  r[  rK  rL  r  r  r  r  s&                                  @@@@@@@r]   r]  zTestReduce2D.test_idxmax  s
     	)H 	)K((( 	X++LVWWW7<3LLL,s171:..2RYqwqz=R=R9RSS*	
 
 
  	--##CCC ]:&& 	 	JJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]8$$ 	  	 JJ3J	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  hhjjJsO]8$$ 	  	 JJ3J	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  LGCJsOagaj!_55CHSZ
 
 
	 0/h///NN$$		%(CC(CCC	XAA5AAABB111d7K

 
 
 
 
%i00
 
 
 Im555		 $>>> 	* 	*jjSj))G	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*),,, $>>> 	= 	=jjSRVj<<G	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=),,, $>>> 	; 	;jjSTj::G	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;NN$$	*	),,,
 
 
 
Ix00
 
 
	
 
 
 
%i00
 
 
 Im555			#>>> 	8 	8jjSj77G	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8),,, $>>> 	J 	JjjS5jIIG	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J),,, X?????@@DI

 
 
 
 
%i00
 
 
 Im555		#>>> 	; 	;jjSTj::G	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;),,, X==u===>>qqq$wG

 
 
 
 
%i00
 
 
 Im555		#>>> 	9 	9jjSRj88G	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9),,, X>>>>>??4H

 
 
 
 
%i00
 
 
 Im555		#>>> 	: 	:jjSSj99G	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:),,,,,s   5DDD:EE!$E!G  GG=K  K$'K$"L99L= L=$NNN.QQQ=R""R&)R&.UUUXX	XZ22Z69Z6r4  c           
        t          j        |ddgt          j        |j        d                   dz  dt          j        |j        d                   z
  d| j                  t          j        t          j        |j        d         t          j                  |j        d         dg          }t          j        |j        j	        	          t          j
        |                                          rIt          j        t                    5                      d
           d d d            n# 1 swxY w Y   d S fdt!          |          D             }dt          j        |d
          i}                    dg
          }|D ]}	t%          ||	         ||	                                        dgd          }
t'          |          }| j        |d         _        |D ]}	t%          |
|	         ||	                    fdt)          ||          D             }fdt!          |          D             }dt          j        |d
          i}i |d         _                            dgd          }|D ]}	t%          ||	         ||	                                        d          }t+          t                              |                                                    }t          |          t          ||                                                   d}|D ]}	t%          ||	         ||	                    d S )Nr?   r>   rC   rf   r   r   r  rj   r   r1  c                l    g | ]0\  }}                     |                                |d          1S rs  rt  r  s      r]   r   z0TestReduce2D.test_argmin_dim.<locals>.<listcomp>6  r  r_   Try  c                B    g | ]\  }}|j         j        dk    r|n|S r{  r|  r}  s      r]   r   z0TestReduce2D.test_argmin_dim.<locals>.<listcomp>F  r~  r_   c                l    g | ]0\  }}                     |                                |d          1S rs  rt  r  s      r]   r   z0TestReduce2D.test_argmin_dim.<locals>.<listcomp>J  r  r_   Fr  .r  )rR  r   rP   rp   r   rO   r  r7  rN   rM   r*  r  r   r   r   r8  r  r2  r#   r   r  r
   rB  r  )r\   r>   r  r  r  r  r  r-  r%  r  r&  rK  r  r   r.  rO  min_xindrL  rp  r:  s                     @@r]   ra  zTestReduce2D.test_argmin_dim      \s171:..2RYqwqz=R=R9RSS*	
 
 
 729QWQZrw???!'!*aQQhRWRYGGG8H!!## 	z** # #		c	"""# # # # # # # # # # # # # # #F
 
 
 
%h//
 
 
 ")Ms;;;<	)))&& 	; 	;CWS\9S>::::))$)77Y''	#z	# 	; 	;CWS\9S>::::
 
 
 
Hh//
 
 

 
 
 
%h//
 
 
 ")Ms;;;<	!	#))e)44 	; 	;CWS\9S>::::))C..	2779#5#5#<#<#>#>??8$$8HMMOO455
 
	
  	; 	;CWS\9S>::::	; 	;r  c           
        t          j        |ddgt          j        |j        d                   dz  dt          j        |j        d                   z
  d| j                  t          j        t          j        |j        d         t          j                  |j        d         dg          }t          j        |j        j	        	          t          j
        |                                          rIt          j        t                    5                      d
           d d d            n# 1 swxY w Y   d S fdt!          |          D             }dt          j        |d
          i}                    dg
          }|D ]}	t%          ||	         ||	                                        dgd          }
t'          |          }| j        |d         _        |D ]}	t%          |
|	         ||	                    fdt)          ||          D             }fdt!          |          D             }dt          j        |d
          i}i |d         _                            dgd          }|D ]}	t%          ||	         ||	                                        d          }t+          t                              |                                                    }t          |          t          ||                                                   d}|D ]}	t%          ||	         ||	                    d S )Nr?   r>   rC   rf   r   r   r  rj   r   r1  c                l    g | ]0\  }}                     |                                |d          1S rs  rt  r  s      r]   r   z0TestReduce2D.test_argmax_dim.<locals>.<listcomp>y  r  r_   Try  c                B    g | ]\  }}|j         j        dk    r|n|S r{  r|  r}  s      r]   r   z0TestReduce2D.test_argmax_dim.<locals>.<listcomp>  r~  r_   c                l    g | ]0\  }}                     |                                |d          1S rs  rt  r  s      r]   r   z0TestReduce2D.test_argmax_dim.<locals>.<listcomp>  r  r_   Fr  .r  )rR  r   rP   rp   r   rO   r  r7  rN   rM   r*  r  r   r   r   r?  r  r2  r#   r   r  r
   rB  r  )r\   r>   r  r  r  r  r  r-  r%  r  r&  rK  r  r   r.  rO  max_xindrL  rp  r:  s                     @@r]   rd  zTestReduce2D.test_argmax_dima  r  r  N)
r>   r#  r  rk  r  rk  r  rl  r`   ra   )r>   r#  r  rk  r  rk  r  rl  r  r  r`   ra   )r  r  r  r/  r3  r;  r@  r   r  r  r  rW  r]  r  ra  rd  r   r_   r]   rj  rj    s       |+- +- +- +-Z+- +- +- +-Z3- 3- 3- 3-j3- 3- 3- 3-j [\V\$6222LFL84T4T4TU H- H- H- H-T [\V\$6222LFL84T4T4TU I- I- I- I-V [T >; >; >; >;@ [T >; >; >; >; >; >;r_   rj  a6  x, minindices_x, minindices_y, minindices_z, minindices_xy, minindices_xz, minindices_yz, minindices_xyz, maxindices_x, maxindices_y, maxindices_z, maxindices_xy, maxindices_xz, maxindices_yz, maxindices_xyz, nanindices_x, nanindices_y, nanindices_z, nanindices_xy, nanindices_xz, nanindices_yz, nanindices_xyzr  )r   r   rD   r   )rC   rC   rC   rC   )r   r   re  rg   )r=   r   r   r   r>   )r   rD   rD   r   )r   r   rD   r   r?   )rC   rC   r   r   )r   r   r   r   )r   r   r   rC   r   r   r  rC   r   r   r?   r   rg  )rC   r   r   rD   )rD   rC   r   rC   )rC   r   rC   r   rK   )rD   r   r   rD   )rC   r   r   r   )rD   r   r   )NNNN)r  r  r  r  )r  r  r  r  rf   )r   rC   r   rC   )r   rC   r   r   )rC   rC   r   rC   )rD   rC   rD   rC   )rD   rD   rD   rD   )Nr   Nr   )Nr   r   r  r  r  r   rf  rg  rh  r   r   r   c                      e Zd ZddZddZdS )TestReduce3Dr>   r#  minindices_xdict[str, np.ndarray]minindices_yminindices_zminindices_xyminindices_xzminindices_yzminindices_xyzmaxindices_xmaxindices_ymaxindices_zmaxindices_xymaxindices_xzmaxindices_yzmaxindices_xyznanindices_xnanindices_ynanindices_znanindices_xynanindices_xznanindices_yznanindices_xyzr`   ra   c                   t          j        |g dt          j        |j        d                   dz  dt          j        |j        d                   z
  ddt          j        |j        d                   z  z   d| j                  }fD ]}t          j        d |                                D                                                       rTt          j
        t                    5  |                    d	 |D             
           d d d            n# 1 swxY w Y    d S |                    dg
          }t          |t                    sJ d                                 D             }|D ]3}t!          ||                             ddg          ||                    4|                    dg
          }t          |t                    sJ d                                 D             }|D ]3}t!          ||                             ddg          ||                    4|                    dg
          }t          |t                    sJ d                                 D             }|D ]3}t!          ||                             ddg          ||                    4|                    d
          } t          | t                    sJ d                                 D             }!|!D ]1}t!          | |                             d          |!|                    2|                    d
          }"t          |"t                    sJ d                                 D             }#|#D ]1}t!          |"|                             d          |#|                    2|                    d
          }$t          |$t                    sJ d                                 D             }%|%D ]1}t!          |$|                             d          |%|                    2|                    d          }&t          |&t                    sJ d                                 D             }'|'D ]}t!          |&|         |'|                    fdD             d                                 D             }(|                    dgd          })t          |)t                    sJ |(D ]3}t!          |)|                             ddg          |(|                    4fdD             d                                 D             }*|                    dgd          }+t          |+t                    sJ |*D ]3}t!          |+|                             ddg          |*|                    4fdD             d                                  D             },|                    dgd          }-t          |-t                    sJ |,D ]3}t!          |-|                             ddg          |,|                    4fd!D             d"                                 D             }.|                    dd          }/t          |/t                    sJ |.D ]1}t!          |/|                             d          |.|                    2fd#D             d$                                 D             }0|                    dd          }1t          |1t                    sJ |0D ]1}t!          |1|                             d          |0|                    2fd%D             d&                                 D             }2|                    dd          }3t          |3t                    sJ |2D ]1}t!          |3|                             d          |2|                    2fd'D             d(                                 D             }4|                    dd)          }5t          |5t                    sJ |4D ]}t!          |5|         |4|                    d S )*Nrg  r   rf   rC   rD   rK   r  c                6    g | ]}t          j        |          S r   ro  r   r>  s     r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<listcomp>|       <<<!<<<r_   c                    g | ]}|S r   r   r   r{   s     r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<listcomp>~      "3"3"31"3"3"3r_   r1  r>   c                B    i | ]\  }}|t          j        |d           S r  r   rR  r   r   r  rt  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  =     
 
 
U e*555
 
 
r_   r?   r   c                B    i | ]\  }}|t          j        |d           S r  r   r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r  r_   c                B    i | ]\  }}|t          j        |d           S r   r   r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r  r_   r   c                B    i | ]\  }}|t          j        |d           S r   r   r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  :     
 
 
5?S%Ce3000
 
 
r_   r  c                B    i | ]\  }}|t          j        |d           S r?   r   r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r  r_   r  c                B    i | ]\  }}|t          j        |d           S r>   r   r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r  r_   .c                >    i | ]\  }}|t          j        |          S r   r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  (    WWW*#uS",u--WWWr_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  rR  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  V     
 
 
  S!T)S!S! 
 
 
r_   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r  r_   Fr  c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r  r_   c                B    i | ]\  }}|t          j        |d           S r
  r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r  r_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r  r_   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r  r_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  V     
 
 
  c"d*c"c" 
 
 
r_   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  :     
 
 
3=3Ce#...
 
 
r_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r  r_   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>	  r!  r_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r  r_   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>  r!  r_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>#  V     
 
 
  s#t+s#s# 
 
 
r_   c                >    i | ]\  }}|t          j        |          S r   r  r  s      r]   r   z0TestReduce3D.test_argmin_dim.<locals>.<dictcomp>+  (    XXX:3c2<..XXXr_   r(  )rR  r   rP   rp   r   rO   r   r   r  r   r   r   r8  r   r_  r   r#   r  6r\   r>   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rp  indsr%  r-  r  r&  rK  r.  r   rO  rL  rP  r  rR  rN  rT  ra  rQ  rV  	expected8result8	expected9result9
expected10result10
expected11result11
expected12result12
expected13result13s6     ```````       ```````                               r]   ra  zTestReduce3D.test_argmin_dimO  
   2 \ Yqwqz**Q.171:...RYqwqz2222 
 *	
 	
 	
 
 	 	D x<<dkkmm<<<==AACC ]:.. 5 5II"3"3d"3"3"3I4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5
 )))&&'4(((((
 
*0022
 
 
	  	Q 	QCWS\33S#J??3PPPP)))&&'4(((((
 
*0022
 
 
	  	Q 	QCWS\33S#J??3PPPP)))&&'4(((((
 
*0022
 
 
	  	Q 	QCWS\33S#J??3PPPP))
)++'4(((((
 
CPCVCVCXCX
 
 
	  	J 	JCWS\33C88)C.IIII))
)++'4(((((
 
CPCVCVCXCX
 
 
	  	J 	JCWS\33C88)C.IIII))
)++'4(((((
 
CPCVCVCXCX
 
 
	  	J 	JCWS\33C88)C.IIII))C..'4(((((WW@T@T@V@VWWW	 	; 	;CWS\9S>::::
 
 
 
 
 $
 
 

 
*0022
 
 
	
 ))e)44'4((((( 	Q 	QCWS\33S#J??3PPPP
 
 
 
 
 $
 
 

 
*0022
 
 
	
 ))e)44'4((((( 	Q 	QCWS\33S#J??3PPPP
 
 
 
 
 $
 
 

 
*0022
 
 
	
 ))e)44'4((((( 	Q 	QCWS\33S#J??3PPPP
 
 
 
 
 %
 
 

 
ANATATAVAV
 
 

 99E9::(D))))) 	L 	LCXc]44S99:c?KKKK
 
 
 
 
 %
 
 

 
ANATATAVAV
 
 

 99E9::(D))))) 	L 	LCXc]44S99:c?KKKK
 
 
 
 
 %
 
 

 
ANATATAVAV
 
 

 99E9::(D))))) 	L 	LCXc]44S99:c?KKKK
 
 
 
 
 &
 
 
 YXAUAUAWAWXXX
99S9//(D))))) 	= 	=CXc]JsO<<<<	= 	=   ;!D((D,	/D,	c                  	
 t          j        |g dt          j        |j        d                   dz  dt          j        |j        d                   z
  ddt          j        |j        d                   z  z   d| j                  }	
fD ]}t          j        d |                                D                                                       rTt          j
        t                    5  |                    d	 |D             
           d d d            n# 1 swxY w Y    d S |                    dg
          }t          |t                    sJ d 	                                D             }|D ]3}t!          ||                             ddg          ||                    4|                    dg
          }t          |t                    sJ d 
                                D             }|D ]3}t!          ||                             ddg          ||                    4|                    dg
          }t          |t                    sJ d                                 D             }|D ]3}t!          ||                             ddg          ||                    4|                    d
          } t          | t                    sJ d                                 D             }!|!D ]1}t!          | |                             d          |!|                    2|                    d
          }"t          |"t                    sJ d                                 D             }#|#D ]1}t!          |"|                             d          |#|                    2|                    d
          }$t          |$t                    sJ d                                 D             }%|%D ]1}t!          |$|                             d          |%|                    2|                    d          }&t          |&t                    sJ d                                 D             }'|'D ]}t!          |&|         |'|                    	fd	D             	d 	                                D             }(|                    dgd          })t          |)t                    sJ |(D ]3}t!          |)|                             ddg          |(|                    4
fd
D             
d 
                                D             }*|                    dgd          }+t          |+t                    sJ |*D ]3}t!          |+|                             ddg          |*|                    4fdD             d                                  D             },|                    dgd          }-t          |-t                    sJ |,D ]3}t!          |-|                             ddg          |,|                    4fd!D             d"                                 D             }.|                    dd          }/t          |/t                    sJ |.D ]1}t!          |/|                             d          |.|                    2fd#D             d$                                 D             }0|                    dd          }1t          |1t                    sJ |0D ]1}t!          |1|                             d          |0|                    2fd%D             d&                                 D             }2|                    dd          }3t          |3t                    sJ |2D ]1}t!          |3|                             d          |2|                    2fd'D             d(                                 D             }4|                    dd)          }5t          |5t                    sJ |4D ]}t!          |5|         |4|                    d S )*Nrg  r   rf   rC   rD   rK   r  c                6    g | ]}t          j        |          S r   ro  r  s     r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<listcomp>_  r   r_   c                    g | ]}|S r   r   r  s     r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<listcomp>a  r  r_   r1  r>   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>f  r  r_   r?   r   c                B    i | ]\  }}|t          j        |d           S r
  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>o  r  r_   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>x  r  r_   r   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   r  c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   r  c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   .c                >    i | ]\  }}|t          j        |          S r   r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   Fr  c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   c                B    i | ]\  }}|t          j        |d           S r
  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r!  r_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r!  r_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r  r_   c                B    i | ]\  }}|t          j        |d           S r  r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r!  r_   c           	     j    i | ]/}|t          j        |         d k    |         |                   0S r  r  )r   r  r  r  s     r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r'  r_   c                >    i | ]\  }}|t          j        |          S r   r  r  s      r]   r   z0TestReduce3D.test_argmax_dim.<locals>.<dictcomp>  r)  r_   r(  )rR  r   rP   rp   r   rO   r   r   r  r   r   r   r?  r   r_  r   r#   r  r*  s6            ``````````````                               r]   rd  zTestReduce3D.test_argmax_dim2  r8  r9  N).r>   r#  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r`   ra   )r  r  r  ra  rd  r   r_   r]   r  r    sH        Ta= a= a= a=Fa= a= a= a= a= a=r_   r  c                      e Zd Zej                            dddg          ej                            dddg          dd                        ZdS )TestReduceNDoprH  r\  r   rK   rg   r  r  r`   ra   c                   t           st          j        d           t          j        t
          j                            dg|z            d dd |dz
           D             dgz   dt          j        d          i| j	                  }|
                    i           }t           t          ||          d	           t          ||          d	                     d S )
Nr  r<   r  c                    g | ]}|S r   r   r  s     r]   r   z4TestReduceND.test_idxminmax_dask.<locals>.<listcomp>  s    666!666r_   r  rC   r>   r  r1  )r%   r   r  rR  r   rP   rQ   r  rp   rO   r  r"   r   )r\   rT  r   rJ  ar0_dsks        r]   test_idxminmax_daskz TestReduceND.test_idxminmax_dask  s      	)K(((,I##"#5566\*D1H*5666#>2'*	
 
 
 --##)WWb))c2224HGGR4H4HS4Q4Q4QRRRRRr_   N)rT  r  r   r  r`   ra   )r  r  r  r   r  r  rX  r   r_   r]   rS  rS    sq        [THh#788[VaV,,S S S -, 98S S Sr_   rS  r+  )repeating_intsT)indirectr`   ra   c                   t          t          j        g dg dg          t          d          t          d          t          d          d                              d          }|                     d	g                              t          d          d
          }t          ||           t          t          j        g dg dg          t          d          t          d          t          d          d                              d          }|                     dd	g                              t          d          d
          }t          ||           d S )Nr  r  yxrB  der   r   r  rK   r   r  ro  rD   )r   rP   r  r   r  isinr  r"   )r+  rt   r  s      r]   	test_isinr_  )  s>   

IIIyyy)**$ZZ%[[tDzz22   fVnn	  WWaS\\T

a00F"""

IIIyyy)**$ZZ%[[tDzz22   fVnn	 
 WWaV__  4:: 33F"""""r_   c                     t                      5  t          j        ddt          j        g          dk     d d d            d S # 1 swxY w Y   d S )NrC   rD   r   )r$   rR  r   rP   r  r   r_   r]   +test_raise_no_warning_for_nan_in_binary_opsra  =  s    			 ) )
aBF^$$q(() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   &AA	Aerrorc                 ~    t          j        t          j        t          j        g                                          } d S r  )rR  r   rP   r  r  )_s    r]   test_no_warning_for_all_nanre  B  s*    
bfbf%&&++--AAAr_   c                    d} t          j        t          d          dt          d          fg|           }|                    |dk              j        | k    sJ |                    |dk                        d                    j        | k    sJ |                    |dk    d          j        | k    sJ |                    |dk                        d          d          j        | k    sJ d S )	N
RingoStarrr<   r>   ri  rg   YokoOnoTr  )rR  r   r   r  ro   r4  )ro   r+  s     r]   test_name_in_maskingri  G  s    D	eBii#uRyy)9(:	F	F	FB88BF D((((88R!VOOI..//4<<<<88BF8&&+t333388R!VOOI..T8::?4GGGGGGr_   c                      e Zd Zedd            Zeedd                        Zeej        	                    dddddddd	fd
dddddd	fd
d
ddddifd
d
d
d
i fg          dd                        Z
eej        	                    dddddddd	fd
dddddd	fd
d
ddddifd
d
d
di fg          dd                        Zedd            Zeej        	                    dg dg dg          dd                        Zd
S )TestIrisConversionr`   ra   c           
     @   dd l }dd l}i }dddgddif|d<   dt          j        dd	
          f|d<   d|d<   dddgddif|d<   dg dg dgf|d<   t	          t          j        dd                              dd	          |ddddddd          }t
          j        |j	        d<   d |j
        d!<   |                                }t          |j	        |j	                   |j        |j        k    sJ t          d" |j        D                       |j        k    sJ |j        |j                            d#d$d%d&'          fk    sJ t+          |                                |j                  D ]\  }}|j        |         }|j        |j        k    sJ t          |j        t/                                          |j                  j                   |                    |          |                    |j        |j                 j                  k    sJ |                    d          j        d         |j        d         j
        d         k    sJ |                    d          j        |                     |j        d         j                  k    sJ |j        d(         |j
        d(         k    sJ |j!        |j
        d)         k    sJ t	          j"        |          }	tG          ||	           |$                    d           t	          j"        |          }
|
j        d*k    sJ d S )+Nr   r  r   rD   r  r  rc   r  rK   r8  r<   r   rC   r@   ri   	distance2r  rc   r   r\  r  rh   r  rj   Temperaturer8  Kelvinfire_temperatureFire Temperaturer   r  standard_name	long_namero   rO   rN   r  %height: mean (comment: A cell method)cell_methodsc              3  $   K   | ]}|j         V  d S r  var_namer  s     r]   	<genexpr>z;TestIrisConversion.test_to_and_from_iris.<locals>.<genexpr>r  $      ;;AQZ;;;;;;r_   r  r   r   zA cell methodr  rM   	intervalscommentsr   rt  r  r   )%cf_unitsirisrV   r  r   rP   rp   rQ  r  r   rO   to_irisr    r{  ro   r   
dim_coordsrN   rx  rM   
CellMethodr  r  r   encoder   r   
coord_dimsget_axis_numr,  
attributesr  Unitrt  	from_irisr#   remove_coord)r\   r  r  
coord_dictr  r   r,  orginal_keyoriginal_coordr~  auto_time_dimensions              r]   test_to_and_from_irisz(TestIrisConversion.test_to_and_from_irisQ  s    +-
",r1g7J!K
:$bmL!&L&L&LM
6!
8#-1vu~"F
;3iii5KL
7Iaw'''//155!!3/	  &
 
 
 !fd)P~&!!##6;666(-////;;):;;;;;x}LLLL"K"""+	 #  '
 
 
 
 
 #&v}}"I"I 	 	E;%_[9N>^%88888o//66~7NOOV   $$U++x/D/D/40 0     
 LL%%07{+1%89 9 9 9 ||J''-OJ'-2
 2
 
 
 
 
  '8>%+@@@@@#x~o'FFFFF *622<000F###'1&99"'+@@@@@@@r_   c                   dd l }dd lm} dd l}i }dddgddif|d<   dt	          j        dd	
          f|d<   d|d<   dddgddif|d<   dg dg dgf|d<   t          |                    t          j	        ddd          
                    dd	          d	          |dt          dddd          d          }|j                            |j        d          |_        d |j        d!<   |                                }t#          |d"          r|                                n|j        }t'          ||j                   |j        |j        k    sJ t-          d# |j        D                       |j        k    sJ |j        |j                            d$d%d&d'(          fk    sJ t9          |                                |j                  D ]\  }}	|j        |	         }
|j        |
j        k    sJ t'          |j        t=                                          |
j                   j!                   |"                    |          |#                    |j        |j                 j                  k    sJ |$                    d          j%        d         |j        d         j        d         k    sJ |$                    d          j&        |'                    |j        d         j&                  k    sJ |j%        d)         |j        d)         k    sJ |j(        |j        d*         k    sJ t          j)        |          }tU          ||           t#          |d"          r_tW          |j        tY          |                                                    sJ tW          |j        tY          |j                            sJ |-                    d           t          j)        |          }|j        d+k    sJ d S ),Nr   r  r   rD   r  r  rc   r  rK   r8  r<   r   rC   r@   ri   rm  rn  r   r\  r  r   rg   r  rj   ro  r8  rp  rq  rr  rs  rv  rw  rx  	core_datac              3  $   K   | ]}|j         V  d S r  rz  r  s     r]   r|  z@TestIrisConversion.test_to_and_from_iris_dask.<locals>.<genexpr>  r}  r_   r  r~  r   r  r  r   rt  r  ).r  r*  r   r  rV   r  r   r  rP   rp   rQ  r_  r  masked_lessr   rO   r  r}  r  r    r{  ro   r   r  rN   rx  rM   r  r  r  r   r  r   r   r  r  r,  r  r  r  rt  r  r#   r   r  r  )r\   r  r+  r  r  r  r   actual_datar,  r  r  r~  r  s                r]   test_to_and_from_iris_daskz-TestIrisConversion.test_to_and_from_iris_dask  se    	*,
",r1g7J!K
:$bmL!&L&L&LM
6!
8#-1vu~"F
;3iii5KL
7MM")B999AA!QGGKK0,	   &
 
 
 ))(-;;)P~&!!## #*&+">">OFFK 	 	;666(-////;;):;;;;;x}LLLL"K"""+	 #  '
 
 
 
 
 #&v}}"I"I 	 	E;%_[9N>^%88888o//66~7NOOV   $$U++x/D/D/40 0     
 LL%%07{+1%89 9 9 9 ||J''-OJ'-2
 2
 
 
 
 
  '8>%+@@@@@#x~o'FFFFF *622<000 6;'' 	FhmT&2B2B2D2D-E-EFFFFFhmT,2C-D-DEEEEEF###'1&99"'+@@@@@@@r_   z*var_name, std_name, long_name, name, attrsr{  r   Height)rt  ru  Nru  c                    ddl m}  |g |||          }t          j                            |          }t          j        g ||          }	t          j                            ||	           d S )Nr   Cube)r{  rt  ru  r  )	iris.cuber  rR  r   r  r  r#   )
r\   std_nameru  r{  ro   rO   r  cuber  rt   s
             r]   test_da_name_from_cubez)TestIrisConversion.test_da_name_from_cube  sw    2 	#"""""tBYWWW''--<U;;;

##FH55555r_   unknownc                   ddl m} ddlm}  |g d|||          }g d}	 ||	|dfg          }
t          j                            |
          }t	          j        |	|g d|fg          }t          j                            ||           d S )	Nr   DimCoordr  ir   re  )rt  r{  ru  r  dim_coords_and_dimsr  )	iris.coordsr  r  r  rR  r   r  r  r#   )r\   r  ru  r{  ro   rO   r  r  latituder   r  r  rt   s                r]   test_da_coord_name_from_cubez/TestIrisConversion.test_da_coord_name_from_cube	  s    2 	)(((((""""""8LL8y
 
 
 yytD!}o>>>''--<t\\\5.I-JKKK

##FH55555r_   c                6   ddl m} ddlm}  |ddgdd          } |g dd	d          }g d
g d
g} |||df|dfg          }t	          j        t                    5  t          j        	                    |           d d d            d S # 1 swxY w Y   d S )Nr   r  r  ih  	longitude	duplicate)rt  r{  r  r  r  rC   r  )
r  r  r  r  r   r   r   rR  r   r  )r\   r  r  r  r  r   r  s          r]   "test_prevent_duplicate_coord_namesz5TestIrisConversion.test_prevent_duplicate_coord_names.  s"   (((((("""""" HaX[;WWW	8LL
[
 
 
 		999%tD	1~!}.MNNN]:&& 	) 	)L""4(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   ! BBBr  )IAILIN)r   rD   rC   c                    ddl m} ddlm} g d}t	          j        ||gdg          }t          j                            |          } || ||d          dfg          }||k    sJ d S )	Nr   )AuxCoordr  r  spacerL   rz  )aux_coords_and_dims)r  r  r  r  rR  r   r  )r\   r  r  r  r   r+  r  rt   s           r]   test_fallback_to_iris_AuxCoordz1TestIrisConversion.test_fallback_to_iris_AuxCoord@  s     	)(((((""""""yy\$~WIFFF%%b))4(P(P(PRS'T&U
 
 
 !!!!!!r_   r&  )r  r  r  r*   r  r)   r  r   r  r  r  r  r  r  r   r_   r]   rk  rk  P  s.       CA CA CA ]CAJ NA NA NA ] ]NA` [4 "*BB "*BB 48k8-DE4tR(!	
 *6 6 6+  ],6 [4 "*BB "*BB 48k8-DE4y"-!	
 *6 6 6+  ],6 ) ) ) ])" [			YYY' 
" 
" 
"	  ]

" 
" 
"r_   rk  c                     t                      } t          j        t                    5  | j         d d d            d S # 1 swxY w Y   d S r  )r   r   r   r   __dict__)r{   s    r]   test_no_dictr  R  s    A	~	&	&  	

                 s   =AAc                     t          j        t                    5 }  G d dt                    }ddd           n# 1 swxY w Y   t	          | j                  dk    sJ dS )zTest that DataArray subclasses must explicitly define ``__slots__``.

    .. note::
       As of 0.13.0, this is actually mitigated into a FutureWarning for any class
       defined outside of the xarray package.
    c                      e Zd ZdS )$test_subclass_slots.<locals>.MyArrayNr+  r   r_   r]   MyArrayr  a  r-  r_   r  Nz(MyArray must explicitly define __slots__)r   r   r   r   r  rt  )rE  r  s     r]   test_subclass_slotsr  X  s     
~	&	& !	 	 	 	 	i 	 	 	              
 qw<<EEEEEEEs   :>>c                 b    ddl m}  t          d          } | |          } |            |u sJ dS )zClasses with __slots__ are incompatible with the weakref module unless they
    explicitly state __weakref__ among their slots
    r   )refrC   N)weakrefr  r   )r  rA   rs      r]   test_weakrefr  g  sE     !AAA133!888888r_   c                    t          t          j        g dg dg          ddgg dddgd	          } t          | |            |                                 }|j        d= t          | |            | j        d
k    sJ |j        d
k    sJ t          | j                                                  ddhk    sJ t          |j                                                  dhk    sJ dS )zMake sure that deleting a coordinate doesn't corrupt the DataArray.
    See issue #3899.

    Also test that deleting succeeds and produces the expected output.
    rd   re   r?   r>   r   r   rC   r   r   r  N)	r   rP   r   r#   r   rM   rN   r   r   )a0a1s     r]   test_delete_coordsr  r  s    

)))YYY'((3Z$__B733
 
 
B
 R	B
	# R7j    7j    ry~~  S#J....ry~~  SE))))))r_   c                 8   t          j        ddgddggddddgi	          } d
| j        d<   ddd| j        d<   |                     d          }d|j        d<   |j                            ddi           d|j        d<   d|j        d         d<   |j        d                             ddi           |                     |          rJ | j        d         |j        d         k    sJ | j        d         |j        d         k    sJ d| j        vsJ d| j        vsJ dS )z(Check attrs deep copy, see :issue:`2835`rC   rD   rK   rf   r   r>   r<   r=   r   0flat1)level1alevel1bnestedTr  2r  ry  r  r  N)rR  r   rO   r   r  r3  )da1da2s     r]   test_deepcopy_nested_attrsr    sI   
,AA'j#Bx
Q
Q
QCCIf&)c::CIh
(((

CCIeIfc]###CIf%(CIh	"Ih	3/000 }}S!!!!! 9V	& 111119X#)H"55555	!!!!""""""r_   c                     t          t          j        t                      g                    } t	          |           }| j        d         |j        d         usJ d S r#  )r   rP   r   r   r   r   )x0r  s     r]   test_deepcopy_obj_arrayr    sM    	28VXXJ''	(	(B	"B9Q<ry|++++++r_   c                 *   t          j        ddgdg          } | | j        d<   |                     d           t          j        dd	gd
g          }|| j        d<   | |j        d<   |                     d           |                    d           d S )NrC   rD   r>   r   rl   Tr  rg   rh   r?   )rR  r   rO   r   )r+  r  s     r]   test_deepcopy_recursiver    s     
q!fC5	)	)	)BBHW GGG ,1vSE
*
*
*CBHWCIg GGGHH$Hr_   r   c           
     H   t                      5  |                     d          }d d d            n# 1 swxY w Y   |                                dk    sJ |                     d          }|                                dk    sJ |                     dd          }|                                dk    sJ |                                dk    sJ t                      5  |                     |                     d          |                     d                    }d d d            n# 1 swxY w Y   |j        | j        k    sJ t          |j        t          j        | j        |                     d          j        d d d d t          j	        f         |                     d          j                             | 
                    d	d
g                              |           }t                      5  |                     |                     d          |                     d                    }d d d            n# 1 swxY w Y   |                     |          }t          |
                    d	d
g          |
                    d	d
g                     t          j        t          d          5  |                     |                     d          |                     d          
                    d	d
g                    }d d d            d S # 1 swxY w Y   d S )Nr  )r+  )r2  r  r  )r+  r2  r>   rA   r   rC   r  z)cannot reindex or align along dimension.*r   rm  )r&   r  r+  r2  r  rN   r    r   rP   newaxisrB  r  r   r   r   )r+  r  	with_nanss      r]   	test_clipr    s   		!	! " "S!!" " " " " " " " " " " " " " "::<<3WWWF::<<3WW4W((F::<<4::<<4		!	! = =RWWS\\rwws||<<= = = = = = = = = = = = = = =;"'!!!!
*111aaa+;<bggcll>OPP  
 aV$$11"55I		!	! = =RWWS\\rwws||<<= = = = = = = = = = = = = = =WWYFv{{A{//aV1L1LMMM 
z)T	U	U	U L LRWWS\\rwws||/@/@Aq6/@/J/JKKL L L L L L L L L L L L L L L L L LsC   266 >D**D.1D.5>H??II6ALLLc                  d    e Zd Zej                            dg d          dd            ZddZdS )	TestDropDuplicateskeep)firstlastFr`   ra   c                   t          j        g dddg did          }|dk    r	g d}g d}n|d	k    r	g d
}g d}nddg}ddg}t          j        |dd|id          }|                    d|          }t          ||           t	          j        t          d          5  |                    d|           d d d            d S # 1 swxY w Y   d S )Nr   rg   rh   r|   rc   r   r   rC   rD   testr  r  r   rh   r|   r   r  r  rh   r|   rC   rD   r  z['space'] not foundr   r  )rR  r   drop_duplicatesr"   r   r   r   )r\   r  r+  r   rc   rt   r  s          r]   test_drop_duplicates_1dz*TestDropDuplicates.test_drop_duplicates_1d  sS   \LLvv|||.D6
 
 
 7??99D99DDV^^99D99DDq6Dq6D<664.vVVV##F#66Xv&&&]:-BCCC 	3 	3wT222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   !CC
C
c                B   t          j        g dg dgddgddgg ddd	          }t          j        g d
gddgdg dfddgfdd	          }|                    ddgd          }t          ||           |                    dd          }t          ||           d S )Nr  )rD   rC   rK   rf   r  rc   r<   r  )r  rc   r  r  r  r   )rc   r  r  r  .)rR  r   r  r"   )r\   r+  rt   r  s       r]   test_drop_duplicates_2dz*TestDropDuplicates.test_drop_duplicates_2d  s    \\\<<<(6" "X|||<<	
 
 
 <YYK6"#YYY/7RD/JJ	
 
 
 ##VW$5G#DDXv&&&##Cg#66Xv&&&&&r_   Nr&  )r  r  r  r   r  r  r  r  r   r_   r]   r  r    s`        [V%=%=%=>>3 3 3 ?>3,' ' ' ' ' 'r_   r  c                      e Zd Zd
dZed
d            Zed
d            Zed
d            Z	e
d
d            Zeed
d                        Zd	S )TestNumpyCoercionr`   ra   c                   t          j        g ddddg dfi          }t          |                                |           t          j                            |                                t	          j        g d                     t          j                            |d                                         t	          j        g d                     d S )Nrd   r>   rR  re   r   )	rR  r   r#   as_numpyrP   r  r"   r  r   rW  s     r]   test_from_numpyz!TestNumpyCoercion.test_from_numpy  s    \)))#usIII>N6OPPP+++

rx			/B/BCCC

5	 2 2 4 4bhyyy6I6IJJJJJr_   c                   t          j        g ddddg dfi          }|                    d          }t          |                                |                                           t          j                            |	                                t          j
        g d                     t          j                            |d         	                                t          j
        g d                     d S )Nrd   r>   rR  re   r   rC   )rR  r   r  r#   r  r  rP   r  r"   r  r   )r\   r+  
da_chunkeds      r]   test_from_daskz TestNumpyCoercion.test_from_dask  s    \)))#usIII>N6OPPPXXa[[
,,..

===

rx			/B/BCCC

5	 2 2 4 4bhyyy6I6IJJJJJr_   c           
         ddl m} t          j        g d          }t	          j         ||d          ddd ||dz   d	          fi
          }t	          j        |ddd|dz   fi
          }t          |                                |           t          j        	                    |
                                |           t          j        	                    |d         
                                |dz              d S )Nr   Quantityrd   Par  r>   rR  rK   mr   )pintr  rP   r   rR  r   r#   r  r  r"   r  )r\   r  r   r+  rt   s        r]   test_from_pintz TestNumpyCoercion.test_from_pint  s   !!!!!!hyyy!!\HS%%%C#'!=!=!=>?
 
 
 <#usC!Gn6MNNN111

s333

5	 2 2 4 4cAg>>>>>r_   c                   dd l }t          j        g d          }|j                            |          }t          j        |ddgdd|dz   fi          }t          j        |ddgdd|dz   fi          }t          |                                |           t          j	        
                    |                                |           d S )	Nr   rd   r>   r?   elevr   rK   r   )rn  rP   diagflatro  rw  rR  r   r#   r  r  r"   r  )r\   rn  r   sparrr+  rt   s         r]   test_from_sparsez"TestNumpyCoercion.test_from_sparse/  s    k)))$$
%%c**\c
FZ4K+L
 
 
 <sCj&:sQw2G)H
 
 
 	111

s33333r_   c           
        dd l }t          j        g d          }t          j        |                    |          ddd|                    |dz             fi          }t          j        |ddd|dz   fi          }t          |                                |           t          j                            |	                                |           d S )Nr   rd   r>   rR  rK   r   )
cupyrP   r   rR  r   r#   r  r  r"   r  )r\   cpr   r+  rt   s        r]   test_from_cupyz TestNumpyCoercion.test_from_cupy?  s    hyyy!!\HHSMMUS"((37:K:K4L,M
 
 
 <#usC!Gn6MNNN111

s33333r_   c           
        dd l }ddlm} t          j        g d          }|j                            |          }t          j         ||d          ddd ||d          d	z  fi
          }|                                }d |_	        t          j        |ddd|d	z  fi
          }t          ||           t          j                            |                                |           d S )Nr   r  rd   r  r  r>   rR  r  rD   r   )r  r  r  rP   r   r  rR  r   r  ro   r#   r  r"   r  )r\   r  r  r   r{   r+  r  rt   s           r]   test_from_pint_wrapping_daskz.TestNumpyCoercion.test_from_pint_wrapping_daskL  s    	!!!!!!hyyy!!J!!#&&\HQd###C!3!7!7!7!!;<=
 
 
 <#usC!Gn6MNNN***

s33333r_   Nr&  )r  r  r  r  r)   r  r,   r  r.   r  r(   r  r  r   r_   r]   r  r    s        K K K K K K K ]K ? ? ? ]? 4 4 4 _4 
4 
4 
4 ]
4 4 4 4 ] ]4 4 4r_   r  c                      e Zd ZddZddZdS )TestStackEllipsisr`   ra   c                    t          ddgddggd          }|                    dg          }|                    |j                  }t          ||           d S NrC   rD   r   r   .)r  )r   r+  rN   r#   )r\   r+  r  rt   s       r]   test_result_as_expectedz)TestStackEllipsis.test_result_as_expectedc  sa    AA'j999u%%888))*****r_   c                    t          ddgddggd          }t          j        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S r  )r   r   r   r   r+  rW  s     r]   #test_error_on_ellipsis_without_listz5TestStackEllipsis.test_error_on_ellipsis_without_listi  s    AA'j999]:&& 	 	HH#H	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAANr&  )r  r  r  r  r  r   r_   r]   r	  r	  a  s<        + + + +     r_   r	  r&  )r+  r   r`   ra   )g
__future__r   r{  r  r  collections.abcr   r   r   textwrapr   typingr   r   r	   r
   r  rP   r  rV   r   packaging.versionr   xarrayrR  r   r   r   r   r   r   r   xarray.coding.timesr   xarray.convertr   xarray.corer   xarray.core.commonr   xarray.core.indexesr   r   r   xarray.core.typesr   r   xarray.core.utilsr   xarray.testsr   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   pandas.errorsr0   ImportErrorpandas.core.computation.opsr  r  
pytestmarkr2   r  r  r  r   r  r  r"  rj  r  rS  r_  ra  re  ri  rk  r  r  r  r  r  r  r  r  r  r  r	  r   r_   r]   <module>r!     sG   " " " " " "  



  $ $ $ $ $ $             , , , , , , , , , , , ,          % % % % % %                      0 / / / / / % % % % % %       ( ( ( ( ( ( N N N N N N N N N N D D D D D D D D ' ' ' ' ' '                                         ,C4444444 C C CBBBBBBBBC K:;;
KGHH
OG= OG= OG= OG= OG= OG= OG= OG=dN8 8 8 8 8 8 8 8 ---XRX555661duMMMBH:::;;Q4G	
 	
 	
 	BHc263dC@AA1au	
 	
 	
 	BHc263dC@AAHHRR+,,K  		
 		
 		
 	XRXrvrv.//xPPPBHHHH&   		
 		
 		
'   BA; A; A; A; A;: A; A;C   BA;H ---BH+++))),,,  IIII	
 	
 	
 	BH999263dC@VHqL  26N26NLL	
 	
 	
 	BH999263dC@VHqL  fX26N26NLL+,,L  	
 	
 	
  	BHLLLLLLFFF
 '   IIII	
 	
 	
W9< <zd	; d	; d	; d	; d	;: d	; d	;{< <zd	;N 3 	BH!\\>>>2!\\<<<0#^^]]]3  ("(LLL,,,7889("(LLL,,,EFFG("(QFQFQF3445"(<<<((xrx/E/EFF"(Aq6""1a&)9)9::"(999%%HBHYYY,?,?@@"(1++HBHQKKhbhqkkBB("(LLL,,,7889("(LLL,,,EFFG("(QFQFQF3445"(<<<((xrx/E/EFF"(Aq6""1a&)9)9::"(999%%HBHYYY,?,?@@"(1++HBHQKKhbhqkkBB("(4446N6N6NOPPQXRX000000000  ("(T4L4,tEFFGRX66677RX66677  "(D$<((xrxt/E/EFF"(---..XRX>P>P>P5Q5QRR"(4..xrx~~HBHTNNKKQ)	
 )	
 )	
T 	BH)))+A+A+ABBFC02H2H2HIfX\BF8a<0  ("(LLL,,,7889XRX!\\<<<"&"&"&"&1QR 
 ("(QFQFRVRV,<=>>?"(<<<((xrx/E/EFF"(Aq6""1a&)9)9::"(Aq"&>**1a.1I1IJJ"(1++HBHQKKhbhqkkBB("(LLL,,,7889XRX!\\<<<"&"&"&"&1QR 
 ("(QFQFRVRV,<=>>?"(<<<((xrx/E/EFF"(Aq6""1a&)9)9::"(Aq"&>**1a.1I1IJJ"(1++HBHQKKhbhqkkBB("(LLL,,,7889XRX---/A/A/A<<<P 
 ("(T4L1d)aV<==>"(<<<((xrx/E/EFF"(Aq6""1a&)9)9::"(<<<((xrx/E/EFF"(1++HBHQKKhbhqkkBBS*	
 *	
 *	
V 	BH)))+A+A+ABBFC02H2H2HIfX\BF8a<0  fX("(LLL,,,7889XRX!\\<<<"&"&"&"&1QR 
 ("(QFQFRVRV,<=>>?"(<<<((xrx/E/EFF"(Aq6""1a&)9)9::"(Aq"&>**1a.1I1IJJ"(1++HBHQKKhbhqkkBB("(LLL,,,7889XRX!\\<<<"&"&"&"&1QR 
 ("(QFQFRVRV,<=>>?"(<<<((xrx/E/EFF"(Aq6""1a&)9)9::"(Aq"&>**1a.1I1IJJ"(1++HBHQKKhbhqkkBB("(LLL,,,7889XRX---/A/A/A<<<P 
 ("(T4L1d)aV<==>"(<<<((xrx/E/EFF"(Aq6""1a&)9)9::"(<<<((xrx/E/EFF"(1++HBHQKKhbhqkkBBS*	
 *	
 *	
V 	BH"L1L,3OP"L1L,3OP"I.y0IJ
 '   ("(QFQF+,,-("(QFQFQF3445("(QFQFQF3445"(Aq6""1a&)9)9::"(Aq6""1a&)9)9::"(999%%HBHYYY,?,?@@"(1++HBHQKKhbhqkkBB("(QFQF+,,-("(QFQFQF3445("(QFQFQF3445"(Aq6""1a&)9)9::"(Aq6""1a&)9)9::"(999%%HBHYYY,?,?@@"(1++HBHQKKhbhqkkBB("(T4L4,7889("(T4L4,tEFFG("(T4L4,tEFFG"(D$<((xrxt/E/EFF"(D$<((xrxt/E/EFF"(---..XRX>P>P>P5Q5QRR"(4..xrx~~HBHTNNKK=	
 	
 	
Cah hRE= E= E= E= E=: E= E=Sh hRE=PS S S S S: S S S& 2TBB# # # CB#&) ) ) )
 G$$. . . %$.H H H H" " " " " " " "D   F F F F   * * * *2# # # #0, , , ,   ,L L L L@+' +' +' +' +' +' +' +'\Q4 Q4 Q4 Q4 Q4 Q4 Q4 Q4h         s   4B; ;C	C	