
    d                   
   d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dl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 m!Z!m"Z"m#Z# d d
l$m%Z% d dl&m'Z'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL 	 d dlMmNZN n# eO$ r	 d dlPmNZN Y nw xY w	 d dlQmRZS n# eO$ r Y nw xY w e3d          ZTejU        V                    d          ejU        V                    d          gZWdadbdZXdcdZYdddZZdedZ[ G d d e j\                  Z] G d! d"e j^        j_                  Z` G d# d$e j\                  Za G d% d&          ZbejU        c                    d'd(d)g ejR        d(d)g           ed(d)g          f          dfd+            Zddfd,ZeejU        c                    d-d.g d/id.d.g ejf        g d/          fid.d.g ejf        g d0          fid. ej0        g d/          id. ed.g d12          id. ed.g d32          id4d5id4d.g d/fid4d. ejf        g d/          fid4d.g ejf        g d/          fif
          ejU        c                    d6d.d.g d3fid.g d3if          dfd7                        Zgdfd8ZhejU        c                    d-d4d9 ejf        g d/          fif          dfd:            ZiejU        c                    d;d<gd=>          dfd?            Zjdfd@ZkdfdAZldfdBZmejU        V                    dC          ejU        c                    d;dDd=>          dfdE                        ZnejU        c                    dFd=dGg          ejU        c                    dHd(d)g          dfdI                        ZoejU        V                    dJ          ejU        c                    dFd=dGg          dfdK                        ZpejU        q                    eA dLM          ejU        c                    dFd=dGg          dfdN                        ZrejU        c                    dFd=dGg          dfdO            ZseJejU        c                    dFd=dGg          dfdP                        ZtejU        V                    dJ          ejU        c                    dFd=dGg          ejU        c                    dQdRdSg          dfdT                                    ZudfdUZvdfdVZwdfdWZxdfdXZydfdYZzdfdZZ{ G d[ d\          Z| G d] d^          Z}dfd_Z~dfd`ZdS )g    )annotationsN)Hashable)copydeepcopy)StringIO)dedent)AnyLiteral)DatetimeIndex)
	DataArrayDatasetIndexVariable
MergeErrorVariablealignbackends	broadcastopen_datasetset_options)CFTimeIndex)dtypesindexingutils)duck_array_ops	full_like)DatasetCoordinates)IndexPandasIndex)
array_typeinteger_types)	is_scalar)DuckArrayWrapperInaccessibleArrayUnexpectedDataAccessassert_allcloseassert_array_equalassert_equalassert_identicalassert_no_warningscreate_test_data
has_cftimehas_daskraise_if_dask_computesrequires_bottleneckrequires_cftimerequires_cupyrequires_daskrequires_numexprrequires_pintrequires_scipyrequires_sparsesource_ndarray)UndefinedVariableErrorsparsezerror:Mean of empty slicez&error:All-NaN (slice|axis) encounteredreturn tuple[Dataset, Dataset, Dataset]c                   t           j                            |           }g d}g d}d}d}t          j        d|          }t          j        d|          }t          j        g dt          	          }t          j        d
dgt          	          }	t          j        g dd	          }
t          j        ddgd	          }g d}t          j        g dd	          }t          j        ddgd	          }t          j        g dt          	          }t          j        ddgt          	          }t          j	                    5  t          j
        dd           t          j        t          j        |                    dd|          |||gg d          t          j        ||gdg          t          j        |
|gdg          t          j        ||gdg                              t           j                  t          j        ||gdg          t          j        ||gdg          d          }t          j        t          j        |                    dd|          |||gg d          t          j        |	|gdg          t          j        ||gdg          t          j        |d |         |gdg                              t           j                  t          j        ||gdg          t          j        ||gdg          d          }t          j        dt          j        |                    dd||z             |||                    |          gg d          i          }d d d            n# 1 swxY w Y   t%          d  |j                                        D                       sJ t%          d! |j                                        D                       sJ |||fS )"N      r   r   r>   r=      r=   
2000-01-01periodsz
2000-02-01)aebcdfdtypeasdfasdfgaabbcc|S2ddee)   áórR   rR   )z
2019-01-01z
2019-01-02z
2019-01-03zdatetime64[s]z
2019-01-04z
2019-01-05TFTFTignorezConverting non-nanosecond)latlontimecoordsdimsrW   )da
string_varstring_var_fixed_lengthunicode_vardatetime_varbool_var	data_varsnew_varc              3  8   K   | ]}|j         j        j        V  d S Ndataflags	writeable.0objps     9lib/python3.11/site-packages/xarray/tests/test_dataset.py	<genexpr>z*create_append_test_data.<locals>.<genexpr>   s)      KKTty(KKKKKK    c              3  8   K   | ]}|j         j        j        V  d S re   rf   rj   s     rm   rn   z*create_append_test_data.<locals>.<genexpr>   s)      UUTty(UUUUUUro   )nprandomRandomStatepd
date_rangearrayobjectboolwarningscatch_warningsfilterwarningsxrr   r   randastypeunicode_appendall	variablesvalues)seedrsrU   rV   nt1nt2time1time2r\   string_var_to_appendr]   !string_var_fixed_length_to_appendr^   r_   datetime_var_to_appendr`   bool_var_to_appenddsds_to_appendds_with_new_vars                       rm   create_append_test_datar   R   s   			t	$	$B
))C
))C
C
CM,444EM,444E,,,F;;;J8VW$5VDDD h'9'9'9GGG(*$U(K(K(K%***K8222/  L  X	|$O   x+++4888H5$-t<<<		 	"	" 8
 8
*EFFFZlGGAq#&&e,///  
 !l:ugVHUUU+-<+UG6(, , ,  "|vh     &%% " %x! ! ! L5'QQQ! 
 
 
* zlGGAq#&&e,///  
 !l(%x   ,.<5ugVH, , ,  "|%ugVH     &%% "*E7&! ! ! L&wfX  % 
 
 
2 *2<GGAq#),,ell5&9&9:///  
 
 
a8
 8
 8
 8
 8
 8
 8
 8
 8
 8
 8
 8
 8
 8
 8
t KKR\5H5H5J5JKKKKKKKKUU\5K5R5R5T5TUUUUUUUU|_,,s   H0M??NNtuple[Dataset, Dataset]c                    dd}g d}g d}t          j        g dd          }t          j        g d	d
          }| dk    r |||          S | dk    r |||          S t          d|  d          )Nr9   r   c                N   t          j        ddg| fidg di          }t          j        ddg|fidg di          }t          d |j                                        D                       sJ t          d |j                                        D                       sJ ||fS )NtemperaturerW   r?   rY   c              3  8   K   | ]}|j         j        j        V  d S re   rf   rj   s     rm   rn   zXcreate_append_string_length_mismatch_test_data.<locals>.make_datasets.<locals>.<genexpr>   s)      OO49?,OOOOOOro   c              3  8   K   | ]}|j         j        j        V  d S re   rf   rj   s     rm   rn   zXcreate_append_string_length_mismatch_test_data.<locals>.make_datasets.<locals>.<genexpr>   s:       
 
*.DIO%
 
 
 
 
 
ro   )r|   r   r   r   r   )rg   data_to_appendr   r   s       rm   make_datasetszEcreate_append_string_length_mismatch_test_data.<locals>.make_datasets   s    ZfXt,-III&
 
 
 zfX~67@S
 
 
 OO9L9L9N9NOOOOOOOO 
 
2>2H2O2O2Q2Q
 
 
 
 
 	
 	
 	
 <ro   )abcdef)abcdefghijkrK   rO   rG   )aaabbbcccz|S3USzunsupported dtype .r9   r   )rq   rv   
ValueError)rH   r   
u2_strings
u5_strings
s2_strings
s3_stringss         rm   .create_append_string_length_mismatch_test_datar      s            $##J(((J,,,E:::J///u===J||}Z444	#}Z4446e666777ro   r   c                 t    t           j                            ddgddggd          } t          i d| i          S )Nabr>   r=   level_1level_2namesx)rt   
MultiIndexfrom_productr   )mindexs    rm   create_test_multiindexr      sG    ]''
saV$: (  F 2V}%%%ro   tuple[DataArray, DataArray]c                     t          t          j        t          j        d d         d                    } t          t          j        t          j        d d         d                    }| |z  }| |z  |z  }||fS )N
   r   name   y)r   rt   r   rq   r_r   r   r   r   s       rm   create_test_stacked_arrayr      sm    "(25":C00011A"(25":C00011A	AA	A	Aa4Kro   c                  4     e Zd ZdZ fdZd fdZd Z xZS )InaccessibleVariableDataStorez4
    Store that does not allow any data access.
    c                n    t                                                       t                      | _        d S re   super__init__set
_indexvarsself	__class__s    rm   r   z&InaccessibleVariableDataStore.__init__   (    %%ro   r9   Nonec                     t                      j        |g|R i | |                                D ]4\  }}t          |t                    r| j                            |           5d S re   r   storeitems
isinstancer   r   addr   r   argskwargskvr   s         rm   r   z#InaccessibleVariableDataStore.store   y    i1$111&111OO%% 	' 	'DAq!]++ '##A&&&	' 	'ro   c                Z      fdfd j                                         D             S )Nc                    | j         v r|S t          j        t          |j                            }t          |j        ||j                  S re   )r   r   LazilyIndexedArrayr#   r   r   rZ   attrsr   r   rg   r   s      rm   lazy_inaccessiblezFInaccessibleVariableDataStore.get_variables.<locals>.lazy_inaccessible   sF    DO##./@/J/JKKDAFD!'222ro   c                0    i | ]\  }}| ||          S  r   )rk   r   r   r   s      rm   
<dictcomp>z?InaccessibleVariableDataStore.get_variables.<locals>.<dictcomp>   s-    OOOtq!$$Q**OOOro   
_variablesr   )r   r   s   `@rm   get_variablesz+InaccessibleVariableDataStore.get_variables   sH    	3 	3 	3 	3 	3 POOOt7L7L7N7NOOOOro   r9   r   __name__
__module____qualname____doc__r   r   r   __classcell__r   s   @rm   r   r      sv                  ' ' ' ' ' 'P P P P P P Pro   r   c                  $    e Zd ZdZd Zd Zd ZdS )DuckBackendArrayWrapperz4Mimic a BackendArray wrapper around DuckArrayWrapperc                ^    t          |          | _        |j        | _        |j        | _        d S re   )r"   rv   shaperH   )r   rv   s     rm   r   z DuckBackendArrayWrapper.__init__   s'    %e,,
[
[


ro   c                    | j         S re   )rv   r   s    rm   	get_arrayz!DuckBackendArrayWrapper.get_array   s
    zro   c                &    | j         |j                 S re   )rv   tuple)r   keys     rm   __getitem__z#DuckBackendArrayWrapper.__getitem__   s    z#)$$ro   N)r   r   r   r   r   r   r   r   ro   rm   r   r      sG        >>! ! !
  % % % % %ro   r   c                  6     e Zd ZdZ fdZd fdZd	dZ xZS )
AccessibleAsDuckArrayDataStorezv
    Store that returns a duck array, not convertible to numpy array,
    on read. Modeled after nVIDIA's kvikio.
    c                n    t                                                       t                      | _        d S re   r   r   s    rm   r   z'AccessibleAsDuckArrayDataStore.__init__  r   ro   r9   r   c                     t                      j        |g|R i | |                                D ]4\  }}t          |t                    r| j                            |           5d S re   r   r   s         rm   r   z$AccessibleAsDuckArrayDataStore.store  r   ro   dict[Any, xr.Variable]c                \     d fdfd j                                         D             S )Nr9   xr.Variablec                    | j         v r|S t          j        t          |j                            }t          |j        ||j                  S re   )r   r   r   r   r   r   rZ   r   r   s      rm   lazy_accessiblezEAccessibleAsDuckArrayDataStore.get_variables.<locals>.lazy_accessible  sF    DO##./Fqx/P/PQQDAFD!'222ro   c                0    i | ]\  }}| ||          S r   r   )rk   r   r   r  s      rm   r   z@AccessibleAsDuckArrayDataStore.get_variables.<locals>.<dictcomp>  s+    MMMTQ??1a((MMMro   )r9   r  r   )r   r  s   `@rm   r   z,AccessibleAsDuckArrayDataStore.get_variables  sM    	3 	3 	3 	3 	3 	3 NMMMT_5J5J5L5LMMMMro   r   )r9   r  r   r   s   @rm   r   r      s|         
         ' ' ' ' ' 'N N N N N N N Nro   r   c                     e Zd Zd]dZd]dZd]dZd]dZd]dZd]dZd]d	Z	d]d
Z
d]dZej                            d          d]d            Zd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZ d]dZ!d]d Z"d]d!Z#d]d"Z$d]d#Z%d]d$Z&d]d%Z'd]d&Z(d]d'Z)e*d]d(            Z+e*d]d)            Z,d]d*Z-d]d+Z.d]d,Z/d]d-Z0d]d.Z1d]d/Z2d]d0Z3d]d1Z4d]d2Z5d]d3Z6d]d4Z7d]d5Z8d]d6Z9d]d7Z:d]d8Z;d]d9Z<d]d:Z=d]d;Z>ej                            d<          d]d=            Z?d]d>Z@d]d?ZAd]d@ZBd]dAZCd]dBZDd]dCZEd]dDZFd]dEZGd]dFZHd]dGZId]dHZJej        K                    dIeLjM        dJdKdJdLdMg          d]dN            ZNej        K                    dIeLjM        dJdKdJdLdMg          d]dO            ZOej        K                    dPePeQg          d]dQ            ZRej        K                    dIeLjM        dJdKdJdLdRg          d]dS            ZSd]dTZTd]dUZUd]dVZVd]dWZWd]dXZXd]dYZYd]dZZZd]d[Z[ej        K                    d\d]d^g          d]d_            Z\d]d`Z]d]daZ^d]dbZ_d]dcZ`d]ddZad]deZbd]dfZcd]dgZdd]dhZed]diZfd]djZgd]dkZhd]dlZid]dmZjd]dnZkej        l                    emo          ej        K                    dpdq enjo         enjp        dr eqjr        dLdJg                    drdLdJgidrgs          gdt enjo         enjp        dr eqjr        dudJg                    drdudJgidrgs          gg          d]dv                        Zsd]dwZtd]dxZud]dyZvd]dzZwd]d{Zxd]d|Zyd]d}Zzd]d~Z{d]dZ|d]dZ}d]dZ~ed]d            Zd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZej        K                    dddtg g ddifddqdgg ddifddtdgddgi fddqg dg i fddgdtdgddgi fddgdqg dg i fddgdtdgddgi fddgdqg dg i fg          d]d            Zd]dZd]dZd]dZd]dZej        K                    ddqg dfdtg fdg dfg          d]d            Zd]dZd]dZd]dZd]dZd]dZed]d            Zd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZej        K                    dPePeQg          d]d            Zd]dZej        K                    dddg edgeqj                            dĦ                    gdfg  edgeqj                            dĦ                    gdfddg enjo        dLdJg          dfg          d]dȄ            Zd]dɄZd]dʄZd]d˄Zd]d̄Zd]d̈́Zd]d΄Zd]dτZd]dЄZd]dфZÐd]d҄ZĐd]dӄZŐd]dԄZƐd]dՄZǐd]dքZȐd]dׄZɐd]d؄Zʐd]dلZːd]dڄZed]dۄ            Z͐d]d܄Zΐd]d݄Zϐd]dބZАd]d߄Zѐd]dZej        K                    ddqdtg          ej        K                    dg d          d^d                        ZӐd]dZej        K                    dg d          d_d            ZՐd]dZ֐d]dZאd]dZؐd]dZِd]dZڐd]dZej        K                    dd d eqj        eg          d]d            Zݐd]dZސd]dZߐd]dZd]dZd]dZd]dZd]dZd]dZd]dZd]dZej        K                    ddg dfdg d fdg dfdg dfg          ej        K                    dddg          d]d                        Zd]dZej                            d	          d]d
            Zd]dZd]dZej                            d	          d]d            Zd]dZd]dZd]dZd]dZej        K                    dg d          ej        K                    dddgddgg          d]d                        Zej        K                    ddqdtg          d]d            Zej        K                    dddg          d]d            Zej        K                    dddg          d]d            Zed]d            Zd]d Zd]d!Zd]d"Zd]d#Zd$ Zd]d%Zd]d&Zd]d'Zd]d(Z d]d)Zej                            d          d]d*            Zd]d+Zd]d,Zd]d-Zd]d.Zd]d/Zd]d0Zd]d1Z	d]d2Z
d]d3Zej        K                    dIeLjM        dJdKdd4ig          d]d5            Zd]d6Zd]d7Zd]d8Zd]d9Zd]d:Zd]d;Zd]d<Zd]d=Zej        K                    d>d?g ej        dti d@A           ej        dqdrdBdRdCA          f          d]dD            Zd]dEZd]dFZd]dGZd]dHZd]dIZd]dJZd]dKZd]dLZd]dMZej        K                    g dN ej        ddLdJdOdLdJdOdPA           ej        dtdLdJdOi d@A           ej        dqdLdJdOdLdJdOdCA          g          d]dQ            Z d]dRZ!ej        K                    dSdTdUg          ej        K                    dVdUd ej        dWe"gX          g          ej        K                    dYdZ ej        d[e*gX          g          d]d\                                    Z#dS (`  TestDatasetr9   r   c           	        t          d          }d|j        d<   t          d|d         j        z            }d                    d t          |                              d          D                       }t          |           ||k    sJ t          d	
          5  t          t          t          t          |                              d                              }d|cxk     rd	k     sn J 	 d d d            n# 1 swxY w Y   t          d          }d                    d t          t                                                    d          D                       }t          |           ||k    sJ t          ddt          j        d          fi                                          }t          d          }d                    d t          |                              d          D                       }t          |           ||k    sJ t          ddi          }t          t          |                    dk     sJ d S )N{   r   barfooa+              <xarray.Dataset>
            Dimensions:  (dim2: 9, dim3: 10, time: 20, dim1: 8)
            Coordinates:
              * dim2     (dim2) float64 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
              * dim3     (dim3) %s 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j'
              * time     (time) datetime64[ns] 2000-01-01 2000-01-02 ... 2000-01-20
                numbers  (dim3) int64 0 1 2 0 0 1 1 2 2 3
            Dimensions without coordinates: dim1
            Data variables:
                var1     (dim1, dim2) float64 -1.086 0.9973 0.283 ... 0.1995 0.4684 -0.8312
                var2     (dim1, dim2) float64 1.162 -1.097 -2.123 ... 0.1302 1.267 0.3328
                var3     (dim3, dim1) float64 0.5565 -0.2121 0.4563 ... -0.2452 -0.3616
            Attributes:
                foo:      bardim3
c              3  >   K   | ]}|                                 V  d S re   rstriprk   r   s     rm   rn   z(TestDataset.test_repr.<locals>.<genexpr>-  *      FF!188::FFFFFFro   d   )display_widthZ   zl            <xarray.Dataset>
            Dimensions:  ()
            Data variables:
                *empty*c              3  >   K   | ]}|                                 V  d S re   r  r  s     rm   rn   z(TestDataset.test_repr.<locals>.<genexpr><  s*      KK!188::KKKKKKro   r   r   zy            <xarray.Dataset>
            Dimensions:  ()
            Data variables:
                foo      float64 1.0c              3  >   K   | ]}|                                 V  d S re   r  r  s     rm   rn   z(TestDataset.test_repr.<locals>.<genexpr>I  r  ro     barbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarbarr     )r*   r   r   rH   joinreprsplitprintr   maxmaplenr   rq   onesmean)r   rg   expectedactualmax_lens        rm   	test_reprzTestDataset.test_repr  s   S)))!
5! 6l !
 
$ FFtDzz/?/?/E/EFFFFFf6!!!!s+++ 	& 	&#c4::#3#3D#9#9::;;G%%%%#%%%%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 
 
 KKtGII/D/DT/J/JKKKKKf6!!!! RWR[[123388::(
 
 FFtDzz/?/?/E/EFFFFFf6!!!! e\23334::%%%%%%s   AC??DDc                (   t                      }t          d          }d                    d t          |                              d          D                       }t          |           ||k    sJ t          j                            ddgddggd	          }t          i d
|i          }t          d          }d                    d t          |                              d          D                       }t          |           ||k    sJ d S )Na              <xarray.Dataset>
            Dimensions:  (x: 4)
            Coordinates:
              * x        (x) object MultiIndex
              * level_1  (x) object 'a' 'a' 'b' 'b'
              * level_2  (x) int64 1 2 1 2
            Data variables:
                *empty*r  c              3  >   K   | ]}|                                 V  d S re   r  r  s     rm   rn   z3TestDataset.test_repr_multiindex.<locals>.<genexpr>^  r  ro   r   r   r>   r=   )a_quite_long_level_namer   r   r   aW              <xarray.Dataset>
            Dimensions:                  (x: 4)
            Coordinates:
              * x                        (x) object MultiIndex
              * a_quite_long_level_name  (x) object 'a' 'a' 'b' 'b'
              * level_2                  (x) int64 1 2 1 2
            Data variables:
                *empty*c              3  >   K   | ]}|                                 V  d S re   r  r  s     rm   rn   z3TestDataset.test_repr_multiindex.<locals>.<genexpr>r  r  ro   )
r   r   r  r  r  r   rt   r   r   r   )r   rg   r&  r'  r   s        rm   test_repr_multiindexz TestDataset.test_repr_multiindexQ  s%   %''

 

 FFtDzz/?/?/E/EFFFFFf6!!!! ++3Z!Q (N , 
 
 rC=))

 

 FFtDzz/?/?/E/EFFFFFf6!!!!!!ro   c                    t          d          }t          j        ddd          |j        d<   t	          |           d S )Ni  r  rA   r   BrC   freqrW   )r*   rt   period_rangerY   r  r   rg   s     rm   test_repr_period_indexz"TestDataset.test_repr_period_indexv  s@    S))) olBSQQQF 	T




ro   c                    t          ddgiddi          }t          |           t          j        dk    rdnd}t	          d	|dfz            }t          |          }||k    sJ d S )
Nu   foø   ba®   åu   ∑r  little<>u               <xarray.Dataset>
            Dimensions:  (foø: 1)
            Coordinates:
              * foø      (foø) %cU3 %r
            Data variables:
                *empty*
            Attributes:
                å:        ∑)r   r  sys	byteorderr   str)r   rg   r=  r&  r'  s        rm   test_unicode_datazTestDataset.test_unicode_data}  s    )$???T


=H44CC#	" &!	"
 
 T6!!!!!!ro   c                     G d d          }t          dd |            fi          }t          d          }|t          |          k    sJ d S )Nc                       e Zd Zd Zd Zd ZdS )*TestDataset.test_repr_nep18.<locals>.Arrayc                Z    d| _         t          j        t          j                  | _        d S )Nr=   )r   rq   rH   float64r   s    rm   r   z3TestDataset.test_repr_nep18.<locals>.Array.__init__  s     !
Xbj11


ro   c                    d S re   r   )r   r   r   s      rm   __array_function__z=TestDataset.test_repr_nep18.<locals>.Array.__array_function__  s    ro   c                    dS )NzCustom
Arrayr   r   s    rm   __repr__z3TestDataset.test_repr_nep18.<locals>.Array.__repr__  s    &ro   N)r   r   r   r   rG  rI  r   ro   rm   ArrayrB    sA        2 2 2  ' ' ' ' 'ro   rJ  r  r   z            <xarray.Dataset>
            Dimensions:  (x: 2)
            Dimensions without coordinates: x
            Data variables:
                foo      (x) float64 Custom Array)r   r   r  )r   rJ  datasetr&  s       rm   test_repr_nep18zTestDataset.test_repr_nep18  s{    		' 		' 		' 		' 		' 		' 		' 		' 53.1225
 
 4==((((((ro   c                >   t          d          }|                    d          }d|j        d<   d|j        d<   t                      }|                    |           t          d	          }|                                }||k    sJ |                                 d S )
Nr
  r  r  r7  unicode_attrr  string_attr)bufu'          xarray.Dataset {
        dimensions:
        	dim2 = 9 ;
        	time = 20 ;
        	dim1 = 8 ;
        	dim3 = 10 ;

        variables:
        	float64 dim2(dim2) ;
        	datetime64[ns] time(time) ;
        	float64 var1(dim1, dim2) ;
        		var1:foo = variable ;
        	float64 var2(dim1, dim2) ;
        		var2:foo = variable ;
        	float64 var3(dim3, dim1) ;
        		var3:foo = variable ;
        	int64 numbers(dim3) ;

        // global attributes:
        	:unicode_attr = ba® ;
        	:string_attr = bar ;
        })r*   	drop_varsr   r   infor   getvalueclose)r   r   rP  r&  r'  s        rm   	test_infozTestDataset.test_info  s    3'''\\&!!#) "'jj
C
 
2 6!!!!		ro   c                \   ddt          j        d          z  f}dt          j        d          f}ddgt          j        d                              dd          f}t          j        t
          d          5  t          ||d	           d d d            n# 1 swxY w Y   t          j        t
          d
          5  t          ||d           d d d            n# 1 swxY w Y   t          j        t          d          5  t          ddi           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          ddg dfd           d d d            n# 1 swxY w Y   t          ||d          }t          d|d         i          }t          ||           d S )Nr   r=   r  r  r   r   conflicting sizesmatchr   r   zdisallows such variablesr   r   ztuple of form)r>   r=   r@               already exists as a scalarr   r>   r=   r@   r   r   r   zrd  )	rq   arangereshapepytestraisesr   r   	TypeErrorr(   )r   x1x2rd  r&  r'  s         rm   test_constructorzTestDataset.test_constructor  s   1ry~~%&29T??#3Z400b99:]:-ABBB 	( 	("2&&'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(]:-HIII 	' 	'"1%%&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	']9,<=== 	2 	2S/0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2]:-JKKK 	5 	5!3			"233444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 !,,--#x}-..6*****sH   7BBB<CC"CDD#&D#E((E,/E,c           
         t          j        t                    5  t          t	          dg df          t	          t          g dd                               d d d            d S # 1 swxY w Y   d S )	Nr   r>   r=   r@   r\  r   )皙?皙?g333333?皙?r   rZ   r   rb   rY   )rg  rh  r   r   dictr   r   s    rm   test_constructor_invalid_dimsz)TestDataset.test_constructor_invalid_dims  s    ]:&& 	 	#|||!4555i(<(<(<3GGGHHH   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA**A.1A.c                
   t          ddgdt          j        d          z   fi          }t          ddt          j        d          z   i          }t          ||           t          dg di          }t          ||           d S )Nr   g      @r]  )r]  r^  r_     	   )r   rq   re  r(   r   r&  r'  s      rm   test_constructor_1dzTestDataset.test_constructor_1d  s    C3%ry||);!<=>>#sRYq\\12336***#/006*****ro    ignore:Converting non-nanosecondc                   t          dg dfi          }dt          j        d          |d         fD ]#}t          d|i          }t          ||           $ G d d          }t	          j        d          }dd dt          j        dd	t          j        d
          ||                                 |            g
}|D ]E}t          |           t          dg |fi          }t          d|i          }t          ||           Fd S )Nr   r>   c                      e Zd ZdS )2TestDataset.test_constructor_0d.<locals>.ArbitraryNr   r   r   r   ro   rm   	Arbitraryr            Dro   r  z2000-01-01T12Tg333333@hellos   rawrA   )
r   rq   rv   r(   rt   	Timestampnan
datetime64to_pydatetimer   )r   r&  argr'  r  dr   s          rm   test_constructor_0dzTestDataset.test_constructor_0d  s7   C"a>**rx{{HSM2 	/ 	/Cc3Z((FXv....	 	 	 	 	 	 	 	 L))FM,''OOIKK
  	/ 	/C#JJJb#Y/00Hc3Z((FXv....		/ 	/ro   c                   t          ddgdddgfg          }t          ddgdddgfg          }t          dddt          j        gfdt          j        ddgfddg di          }t          ||d          }t	          ||           t          |j        d         t                    sJ d	ddgf}|                    d
|i          }t          |||d          }t	          ||           dg df}|                    d|i          }t          |||d          }t	          ||           dddgf}	t          j
        t          d          5  t          |||	d           d d d            d S # 1 swxY w Y   d S )Nr>   r=   r   r   r@   r\  rZ  r?   r   cr   r   r  r@   r=   r>   r  )r   r   r  rW  rX  )r   r   e)r   r   rq   r  r(   r   r   r   mergerg  rh  r   )
r   r   r   r&  r'  r  	expected2r  	expected3r  s
             rm   test_constructor_auto_alignz'TestDataset.test_constructor_auto_align  s   q!faV}o..q!faV}o.. Arv'sRVQN.CDDsIIIFV
 
 qq))**6*** &*3/????? 1a&MNNC8,,	qqq1122F+++ )))NNC8,,	qqq1122F+++1a&M]:-ABBB 	. 	.!!!,,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   	E**E.1E.c                x   |                                  fddD             }t          |j        j                  }|d= t	          |           t          |d         j                  }|d                             |          |d<   t          |j        j                  }|d= t	          |           d S )Nc                F    i | ]}||                                          S r   )	to_pandas)rk   var_namer   s     rm   r   z@TestDataset.test_constructor_pandas_sequence.<locals>.<dictcomp>/  s8     
 
 
3;Hbl,,..
 
 
ro   r  r  r  r   r  )make_example_math_datasetr   rY   r   r'   reversedindexreindex)r   pandas_objsds_based_on_pandasrearranged_indexr   s       @rm    test_constructor_pandas_sequencez,TestDataset.test_constructor_pandas_sequence-  s    ++--
 
 
 
?M
 
 
 %[")28LLLs#R+,,, $K$6$<==(/778HIIE$[")28LLLs#R+,,,,,ro   c                b   t          t          j                            d          dg          t          t          j                            dd          ddg          g}|D ]K}|                                }t          |          }|j        D ]}t          ||         ||                    Ld S )Nr\  r   rs  r@   r   )r   rq   rr   r}   r  r   rb   r&   )r   dasr   
pandas_objr  dims         rm   test_constructor_pandas_singlez*TestDataset.test_constructor_pandas_single=  s    binnQ''se444binnQ**#s<<<

  	M 	MAJ!(!4!4)3 M M"#5c#:JsOLLLLM	M 	Mro   c                0   t          dddi          dg dfd}t          ddiddg dfi          }t          |          }t          ||           dg dft          dddi          d	}t          |          }t          ||           t          d
dt          j        d          fidt          j        d          fddgd          }t          dt          j        d          fdt          j        d          fddt          j        d          fddgd          }t          |d
         d d df         |d
         d                             d          d          }t          ||           t          dddi          dg dfd}t          j        t                    5  t          |           d d d            n# 1 swxY w Y   t          dddi          ddgd}t          |          }t          ddidddgi          }t          ||           d S )Nr   r   r>   r   rd  r>   r>   r>   rb  r   r   r   r   r=   r@   )r  r   r=   r@   rZ  )
r   r   r(   rq   r$  zerosrQ  rg  rh  r   )r   rg   r&  r'  originals        rm   test_constructor_compatz#TestDataset.test_constructor_compatI  s   q#q222#yyy9IJJC8cC+;%<==6***999%Iaa,I,I,IJJ6***:rwv/0rx//01v>>
 
 

#3

*;<<rx//01v>>
 

 3-1%HSM!,<,F,Fs,K,KLL
 
 	6***q#q222#yyy9IJJ]:&& 	 	DMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 q#q222!Q@@C8cAq6]336*****s   "F>>GGc                R   t          j        t          d          5  t          dddgfidddgfi           d d d            n# 1 swxY w Y   t          i dddgfi          }|j        rJ t          |j                                                  dgk    sJ t          j	        
                    ddgddggd	          }t          j        t          d
          5  t          i ||d           t          i |t          d          d           d d d            d S # 1 swxY w Y   d S )Nzfound in both data_vars andrX  r   r   r>   r   r=   r   r   zconflicting MultiIndexrb  r\  )r   r   )rg  rh  r   r   rb   listrY   keysrt   r   r   range)r   r   r   s      rm   test_constructor_with_coordsz(TestDataset.test_constructor_with_coordsj  s   ]:-KLLL 	: 	:S3*%cA3Z'8999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: R#aSz*++<BINN$$%%#....++3Z!Q (> , 
 
 ]:-FGGG 	< 	<Bf622333Bfq::;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s#   AA
A4DD #D c                   t                      }t          |j        t          j                  sJ t          |j        j        t                    sJ t          |j        j                  t          u sJ |j        dddddk    sJ |j        |j        k    sJ t          |j	        t          j                  sJ t          |j	        j        t                    sJ |j	        t          j        d          t          j        d          t          j        d          dk    sJ t          |          t          |j                  k    sJ t          |                                          t          |j                  k    sJ d|j        vsJ d	t!          |j                  v sJ t#          |          d
k    sJ t%          |          sJ t          |j                  g dk    sJ t          |j                                                  g dk    sJ d|j        v sJ d	|j        vsJ d|j        vsJ t#          |j                  d
k    sJ t'          |j                  h dk    sJ t#          |j                  d
k    sJ dt!          |j                  v sJ t+          d |j                                        D                       sJ t'          |j                  h dk    sJ t#          |j                  d
k    sJ dt!          |j                  v sJ t+          d |j                                        D                       sJ t          |j                  g dk    sJ d|j        v sJ d|j        v sJ d|j        vsJ d	|j        vsJ t#          |j                  dk    sJ t3          t          j        d          t          j        ddgt          j                  d          j        dk    sJ d S )Nry  rz  r   r   dim1dim2r  rW   rE  var1var2var3aasldfjalskdfjr  r@   r  numbers>   r  r  rW   r  c                8    g | ]}t          |t                    S r   )r   r   rk   idxs     rm   
<listcomp>z/TestDataset.test_properties.<locals>.<listcomp>  s"    KKKsJsE**KKKro   c                B    g | ]}t          |t          j                  S r   )r   rt   r   r  s     rm   r  z/TestDataset.test_properties.<locals>.<listcomp>  s$    MMM#JsBH--MMMro   )r  r  rW   r  r\  r>   r=   rG   rb     )r*   r   rZ   r   Frozenmappingrv  typesizesr   rq   rH   r  rb   r  r   r  r#  rx   r   xindexesr   r   indexesrY   r   int64rv   float32nbytesr   r   s     rm   test_propertieszTestDataset.test_propertiesy  sD   
 "'5<00000"'/400000BGO$$,,,,w1aRHHHHHHx27"""" ")U\22222")+T22222yHY''HY''HY''
 
 
 
 
 
 Bxx4------BGGII$r|"4"44444r|3333bl++++++2ww!||||BxxBL!!%=%=%=====BL%%''((,D,D,DDDDD%%%%R\)))),,,,2<  A%%%% 2;#;#;#;;;;;2;1$$$$bk******KKbk6H6H6J6JKKKLLLLL 2:":":":::::2:!####bj))))))MM9J9J9L9LMMMNNNNN BI"E"E"EEEEE""""BI%%%%RY&&&&RY&&&&29~~"""" "(1++BHaV2:,N,N,NOOPPW     ro   c                    t          ddi          }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 directly convertrX  )r   rg  rh  ri  rq   asarrayr  s     rm   test_asarrayzTestDataset.test_asarray  s    c1X]9,FGGG 	 	JrNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                   t          ddt          j        d          fidddgi          }|                    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  rb  r  r   r   r   r   r   r?   rd  )
r   rq   r  	get_indexequalsrt   r   rg  rh  KeyErrorr  s     rm   test_get_indexzTestDataset.test_get_index  s    ej"(6*:*:;<cCQT:EVWWW||C  ''#s(<(<=====||C  ''(;(;<<<<<]8$$ 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   C$$C(+C(c                (   t          dddgddifiddi          }t          |j        |d                    t          |j        j        |j                   |j        |j        d         k    sJ |j        j        |d         j        d         k    sJ ddht          t          |                    k    sJ dt          t          |j                            v sJ d	|j        d<   |j        d         d	k    sJ t          |j        |d                    d S )
Ntminr   *   unitsCelsiustitlezMy test datar  i)	r   r(   r  r   r  r   r  r   dirr  s     rm   test_attr_accesszTestDataset.test_attr_access  s!   cB4'9!567?X
 
 
 	"V*---BD)))x28G,,,,,w}6
 0 99999 CBLL0000#c"'ll++++++  x4''''"V*-----ro   c                   t                      }t          j                            d          }d|f|d<   d|j        v sJ d|v sJ d|f|d<   t	          |j                  ddgk    sJ t          |d         j        |           t          j        t                    5  d|j
        f|d<   d d d            d S # 1 swxY w Y   d S )N)r   r@   )rW   r   r  r  qux)r   rq   rr   r   r  r&   r   rg  rh  r   T)r   r   r  s      rm   test_variablezTestDataset.test_variable  s   IIIW%%!1%%####zzzz!1%%AK  UEN22221U8?A...]:&& 	, 	,%qs+AeH	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   B77B;>B;c                
   t                      }t          j                            d          }ddi}d||f|d<   d|j        v sJ t	          |j        d                                         t          j                  sJ t          |j        d         j	        |j
        d                    t                      }d||f|d<   t          |d         |d                    |j        |j        k    sJ d|d d         f|d<   dt          j        d          f|d<   t          j        t                    5  d|d d         f|d<   d d d            n# 1 swxY w Y   t          j                            d          }t          j        d	          }t          j        t                    5  d
|f|d
<   d d d            n# 1 swxY w Y   t          j        t                    5  d
|f|d
<   d d d            n# 1 swxY w Y   d
|j        vsJ d S )Nr   r  r  r   r]  rd  r\  )r   r>   r   r   )r   rq   rr   rY   r   to_indexrt   r   r(   variabler   rZ   re  rg  rh  r   rv   )r   r   vec
attributesr   arrscals          rm   test_modify_inplacezTestDataset.test_modify_inplace  s   IIiu%%U^
sJ'#ah!(3-0022BH=====#/S1ABBBIIsJ'#33(((vs2A2w#ry||$#]:&& 	$ 	$3rr7^AcF	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ iw''x{{]:&& 	  	 3ZAcF	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:&& 	! 	!4[AcF	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!!&      s6   .E

EE!F55F9<F9G--G14G1c           	        t          dt          j        ddgd          fdt          j        g dd          fddgt          j                            dd          fd	dt          j        d
dgd          ft          j        d          d          }|j        }t          |t                    sJ t          |          d
k    sJ t          |          g dk    sJ t          |d         j        |d         j                   t          |d         j        |d         j                   d|v sJ d|v sJ d|vsJ d|vsJ t          j        t                    5  |d          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!          d          }t#          |          }||k    sJ |j        dddk    sJ |j        t          j        d          t          j        d          t          j        d          t          j        d          dk    sJ d S )Nr   r  r   r?   r=   r@   r   r   r  r\  r]  rZ  r   r   r   r  z        Coordinates:
          * x        (x) int64 -1 -2
          * y        (y) int64 0 1 2
            a        (x) int64 4 5
            b        int64 -10rb  )r   rq   rv   rr   randnr  rY   r   r   r#  r  r(   r  rg  rh  r  r   r  rZ   r   rH   )r   rg   rY   r&  r'  s        rm   test_coords_propertiesz"TestDataset.test_coords_properties  s   28RHg66728IIIw778c
BIOOAq$9$9: 
 !Q112#GG
 
 &"455555 6{{a F||3333333-tCy/ABBB-tCy/ABBBf}}}}f}}}}F""""]8$$ 	 	5MM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]8$$ 	 	1II	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 "
 
 f6!!!! {AA...... }'""'""'""'""	!
 !
 
 
 
 
 
 
s$   	E--E14E1	F&&F*-F*c           	        t          dddgfdg dfddgt          j                            dd          fddd	d
gfdd          }|                    d          }dddgf|j        d<   t          |d         ddg           |                    d          }dddgf|j        d<   t          |d         ddg           |                    d          }t          j        t          d          5  ddgf|j        d<   d d d            n# 1 swxY w Y   t          ||           |                                }|j        d= |                    dd          }t          ||           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   |                    d          }|j                            ddi           |                    ddi                              d          }t          ||           |j        d= d|j        vsJ d S )Nr   r  r  r   r?   r=   r@   r  r\  r]  r  rZ  Tdeepr   r   rd  rW  rX  drop	not_foundr  r     )r   rq   rr   r  r   rY   r&   rg  rh  r   r(   reset_coordsr  updater  
set_coordsr  r   rg   r'  r&  s       rm   test_coords_modifyzTestDataset.test_coords_modify5  s+   B8_999%c
BIOOAq$9$9: 
 A-c**
 
 %%!C:.c6#;c
333%%!C:.c6#;c
333%%]:-ABBB 	- 	-"%tFM#	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-&&&M#$$St$446***]8$$ 	) 	)K(	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) ]8$$ 	# 	#E"	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# %%c2Y'''::sBi((33C886*** M#&/))))))s6   /D		DD 	FFF9	GGGc                    t          dg di          }g d|d<   |j        d                                                             t	          j        g d                    sJ d S )Nr   ra  r   r  )r   r  to_pandas_indexr  rt   r   )r   r'  s     rm   test_update_indexzTestDataset.test_update_index`  si    iii 0111%ooss#3355<<RXooo=V=VWWWWWWWro   c                    t                      }dg df|j        d<   t          ddg dfi          }t          ||           d S )Nr   ra  r  r   )r   rY   r(   )r   r'  r&  s      rm   &test_coords_setitem_with_new_dimensionz2TestDataset.test_coords_setitem_with_new_dimensione  sT     #YYY/e53			*:";<<<6*****ro   c                    t                      }t          j        t          d          5  t	          d          |j        d<   d d d            d S # 1 swxY w Y   d S N.cannot set or update variable.*corrupt.*index rX  r\  r   )r   rg  rh  r   r  rY   r4  s     rm   test_coords_setitem_multiindexz*TestDataset.test_coords_setitem_multiindexk  s    %'']O
 
 
 	. 	. &+1XXDK	"	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.s   AAAc                   t          ddgfddgfddgfd          }t          dddgfiddgfddgfd          }t          ddgfddgfddgfd          }|                    d          }t          ||           |                    dg          }t          ||           |                    d	          }t          ||           |                    d	dg          }t          ||           |                                }t          ||           |                                }t          ||           |                                }t          ||           |                    d	dg          }t          ||           |                    d          }t          ||           t	          j        t          d
          5  |                    d           d d d            n# 1 swxY w Y   |                    dd          }|                    d          }t          ||           |                    d          }t          ||           d S )Nr   r   r>   r=   )r   yyzzzr	  )r   r  r   r  zcannot remove indexrX  Tr  )r   r  r(   r  rg  rh  r   rQ  )r   	one_coord
two_coords
all_coordsr'  r&  s         rm   test_coords_setzTestDataset.test_coords_setr  s   3*S1#JaSzRRSS	ecA3Z0qc
3QRPS*2U2UVV
sC!:sQCjII
 
 

 %%c**F+++%%se,,F+++%%d++V,,,%%tUm44V,,,''))F+++((**F+++((**F+++(($77F+++((//V,,,]:-CDDD 	( 	(""3'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ((T(::''..6***''..6*****s   G$$G(+G(c                    t          ddg dfidg dd          }t          dg dd          }|j                                        }t          ||           d S )Nr  r   )r  r   r>   r   r=   r@   r\  rb  r   )r   rY   
to_datasetr(   )r   origr&  r'  s       rm   test_coords_to_datasetz"TestDataset.test_coords_to_dataset  sp    ZZZ01)))3L3LMM";";<<<''))6*****ro   c                   t          dddgfddgd          j        }t          dddgfddgd	          j        }t          dddgfdddgfddgd
          }|                    |          }t          ||           |                    |          }t          ||           t          dddgfi          j        }t	          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t          ddddgfi          j        }t	          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t          ddg dfi          j        }t	          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t          ddddgfi          j        }t          dt          d          i          }|                    |          }t          ||           |                    |          }t          ||           t          dt          j	        i          j        }|                    |          }t          |
                                |           |                    |          }t          |
                                |           d S )Nr   r>   r=   r   r[  r   r   r   )r   r   )r   r   r   r  ry  rz  )r   rY   r  r(   rg  rh  r   r  rq   r  r  r   orig_coordsother_coordsr&  r'  s        rm   test_coords_mergezTestDataset.test_coords_merge  s   C!Q=1v%F%FGGGNS3*,=QF&K&KLLLS1vcC:->aVLL
 
 
 ""<006***##K006***sS3%L&9:::A]:&& 	, 	,l+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,sS3*,=&>???F]:&& 	, 	,l+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,sS///,B&CDDDK]:&& 	, 	,l+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, sS1a&M&:;;;B3a/222""<006***##K006***sBFm444;""<00//116:::##K00//116:::::s6   C::C>C>9EE"EF<<G G c                   t          ddddgfi          j        }t          ddi          j        }|                                }|                    |          }t	          ||           t          dddgfi          j        }t          dddgdgdggfi          }|                    |          }t	          ||           |                    |          }t	          |                                |           t          ddt          j        gfi          j        }t          dt          j        i          j        }|                                }|                    |          }t	          ||           d S )Nr   r   r>   r   r   )r   rY   r  r  r(   	transposerq   r  r  s        rm   "test_coords_merge_mismatched_shapez.TestDataset.test_coords_merge_mismatched_shape  sv   cC!Q=%9:::AsAh///6))++""<006***sS1#J&7888?3#sqcA3Z(@"ABBB""<006***##K00++--v666cC"&?%;<<<CsBFm444;))++""<006*****ro   c                   t                      }ddgf|d<   d|d<   t          |j                  ddhk    sJ d|j        v sJ d|j        vsJ t          |d         |j        d                    t	          d          }t          |j                  }||k    sJ |j        j        t          j        d          t          j        d          d	k    sJ d S )
Nr         ?r         @r  r   z]        Data variables:
            foo      (x) float64 1.0
            bar      float64 2.0rE  r  )	r   r   rb   r(   r   r  r   rq   rH   r   r   r&  r'  s       rm   test_data_vars_propertiesz%TestDataset.test_data_vars_properties  s	   YYcUO5	5	 2<  UEN2222$$$$",&&&&EBL$7888 $
 
 bl##6!!!! |"8I&&8I&&'
 '
 
 
 
 
 
 
ro   c                p   t          d          }|                    |          sJ |                    |          sJ t          d          }d|j        d<   |                    |          sJ |                    |          rJ |d= |                    |          rJ t          d                              dd i          }|                    |          sJ |                    |          sJ |                                }|                    |          rJ |                    |          rJ d S )Nr  r  bazfoobarrW   r  )r*   r  	identicalr   renamer  )r   rg   data2s      rm   test_equals_and_identicalz%TestDataset.test_equals_and_identical  sF   R((({{4     ~~d##### b))) %H{{5!!!!!>>%(((((&M;;u%%%%%R(((//??{{4     ~~d#####!!##<<%%%%%??4(((((((ro   c                    t                      }|                    d          rJ |                    d          rJ |                    ddi          rJ d S )Nr  r
  r>   r=   )r*   r  r$  broadcast_equalsr4  s     rm   test_equals_failuresz TestDataset.test_equals_failures  sa    !!;;u%%%%%>>#&&&&&((!Q0000000ro   c                    t          ddi          }t          ddgi          }|                    |          sJ |                    |          rJ |                    |          rJ d S )Nr   r   r   )r   r)  r  r$  )r   data1r&  s      rm   test_broadcast_equalsz!TestDataset.test_broadcast_equals  s|    Qx(((aSz***%%e,,,,,<<&&&&&??5)))))))ro   c                    t          d          }ddi|_        |j        d         s
J d            t          |j        t                    sJ d S )Nr  r  r#  r"  )r*   r   r   rv  r4  s     rm   
test_attrszTestDataset.test_attrs  sW    R(((&
z(#**U***$*d+++++++ro   c                    t                      }t                                          |           t          |          }|j        i k    sJ d S re   )r   r*   dump_to_storer   chunksr   r   r   s      rm   test_chunks_does_not_load_dataz*TestDataset.test_chunks_does_not_load_data  sG    -//((///%  yBro   c                   t                      }|j                                        D ]#}t          |j        t
          j                  sJ $|j        i k    sJ |                                }|j        	                                D ]Q\  }}||j
        v r"t          |j        t
          j                  sJ 0t          |j        t          j                  sJ Rdddd}|j        |k    sJ |                    |          j        |k    sJ d } ||          }|                    ddddd          }dd	d
d}|j        |k    sJ  ||          }|	                                D ]\  }}|||         k    sJ |                    |          }|j        |k    sJ  ||          }|                    |          } ||          }|j        |k    sJ t          ||           |	                                D ]\  }}|||         k    sJ t          j        t           d          5  |                    ddi           d d d            d S # 1 swxY w Y   d S )N)ry  )rz  r  r  r  r  c                >    d |                                  D             S )Nc                .    i | ]\  }}||j         j        S r   )rg   r   rk   r   r   s      rm   r   zBTestDataset.test_chunk.<locals>.get_dask_names.<locals>.<dictcomp>9  s"    :::tq!Aqv{:::ro   )r   r   s    rm   get_dask_namesz.TestDataset.test_chunk.<locals>.get_dask_names8  s    ::rxxzz::::ro   r]  )rW   r  r  r  )r]  r@   )r]  r\  )r]  r]  zsome chunksrX  r  r   )r*   r   r   r   rg   rq   ndarrayr2  chunkr   rZ   r[   rJ  r(   rg  rh  r   )	r   rg   r   	reblockedr   expected_chunksr;  orig_dask_namesnew_dask_namess	            rm   
test_chunkzTestDataset.test_chunk   s   !!&&(( 	2 	2Aafbj111111{b    JJLL	'--// 	4 	4DAqIN""!!&"*555555!!&"(333333 <
 <

 ?2222 zz/**1_DDDD	; 	; 	; ).33JJ1aKKLL	 $*66JJ?2222 (	22"((** 	+ 	+DAq******JJ//	?2222 ).33OOO44	'	22?2222D)))"((** 	+ 	+DAq******]:^<<< 	$ 	$JJr{###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   &IIIc                `   t                      }t                                          |           t          |                                          }t          j        t                    5  |                                 d d d            n# 1 swxY w Y   t          j        t                    5  |d         j	         d d d            n# 1 swxY w Y   |j
        j         |                    d           |                    t          d          dg                              dd           |                                 |                                 |                    d           |                    dd	i           |                    d           |                    d           d S )
Nr  r   rW   r   rW   r  r  r  r  r  r#  )r   r*   r1  r   r=  rg  rh  r$   loadr   r  rg   iselslicer  r%  fillnar%  r  rQ  r3  s      rm   test_dask_is_lazyzTestDataset.test_dask_is_lazyY  s   -//((///%  &&((]/00 	 	GGIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]/00 	 	vJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
R
U2YYaS))..AB.???

			
		!
		68$%%%
f
Vs$   *BBB/C		CCc           	     
   t                      }t          d d d          t          dd          d}|                    |          }t          |j                  t          |j                  k    sJ |j        D ]f}||v rB|j        |         t          j        |j        |                   ||                  j        k    sJ H|j        |         |j        |         k    sJ g|j        D ]}||         j        ||         j        k    sJ ||         j	        ||         j	        k    sJ t          d           g||         j
        j        z  }|                                D ]Y\  }}|||         j        v rEt          j        t          j        ||         j                  |k              d         }|D ]}	|||	<   Z||         j
        t          |                   }
||         j
        }t
          j                            |
|           t%          j        t(                    5  |                    t          dd                     d d d            n# 1 swxY w Y   t%          j        t(          d          5  |                    t          dd                     d d d            n# 1 swxY w Y   t%          j        t,          d          5  |                    t          dd          d           d d d            n# 1 swxY w Y   t/          ||                    t          dd          d	                     |                    d
          }dddd|j        k    sJ t1          |j                  t1          |j                  k    sJ t1          |j                  t1          |j                  k    sJ t1          |j                  t1          |j                  k    sJ |                    t          d          dt          d                    }dddd|j        k    sJ t1          |j                  t1          |j                  k    sJ t1          |j                  t1          |j                  k    sJ t1          |j                  t1          |j                  k    sJ |                    ddt          d                    }ddd|j        k    sJ t1          |j                  t1          |j                  k    sJ t1          |j                  t1          |j                  k    sJ t1          |j                  t1          t          |j                  dgz             k    sJ d S )Nr=   r   rF  )	not_a_dimz}Dimensions {'not_a_dim'} do not exist. Expected one or more of [\w\W]*'dim\d'[\w\W]*'dim\d'[\w\W]*'time'[\w\W]*'dim\d'[\w\W]*rX  warn)rM  missing_dimsrT   r  r   rz  r   rW   r  r  r]  )rW   r  r  )r  r  rW   )r*   rI  rH  r  rZ   rq   re  sizer   r   r   ndimr   nonzerorv   r   testingr&   rg  rh  r   warnsUserWarningr(   r   rb   rY   r  )r   rg   slicersretr  r   
slice_listsindsindr&  r'  s               rm   	test_iselzTestDataset.test_iselo  s   !!$a((!QKK*
 *
 ii   DI$sx..0000 	3 	3AG||x{bi	!&=&=gaj&I&NNNNNNy|sx{22222 	< 	<A7<3q6;....7=CFL0000++a)<<J , ,1Q$$:bhtAw|&<&<&ABB1ED# , ,*+
3Aw~eJ&7&78HV]FJ))(F;;;;]:&& 	- 	-IIaI,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-]N
 
 
 	- 	- IIaI,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- \N
 
 
 	B 	B IIa&IAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	tyy5A;;XyVVWWWiiQiAr22ch>>>>4>""c#-&8&888884;3sz??22224=!!S%6%66666iiU1XXAE!HHi==1b11SX====4>""c#-&8&888884;3sz??22224=!!S%6%66666iiQQU1XXi662&&#(22224>""c#-&8&888884;3sz??22224=!!Scl););vh)F%G%GGGGGGGs6   %III6%J''J+.J+&K??LLc                   t                      }g d}g d}g d}|                    d|fd|fd|f          }d|j        v sJ |j        d         j        t          |          fk    sJ |                    t          |d          d|fd|f          }d|j        v sJ |j        d         j        t          |          fk    sJ |                    d|fd|fd|f          }t          ||           t          |dgdt          j	        
                    d          i	          }t          |d
gd
t          j	        
                    d          i	          }t          |dgdt          j	        
                    d          i	          }	|                    |||	          }d|j        v sJ d
|j        v sJ d|j        v sJ d|j        v sJ d|j        v sJ d|j        v sJ |                    d|fd|fd|f          }|                    |d         |d
         |	d                   }t          ||           t          |dgdt          j	        
                    d          i	          }t          |dg          }t          |dg          }	|                    |||	          }d|j        v sJ d|j        v sJ d|j        v sJ d|j        v sJ |                    d|fd|fd|f          }|                    |d                   }t          ||           |                    d|fd|f          }d|j        v sJ d|j        v sJ d|j        vsJ t          j                            |d         |         |d                    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          j        t$          d          5  |                    t'          dddgi                     d d d            n# 1 swxY w Y   t'          g ddd          }
|
                    dg d f!          }t          |
d"         |d"                    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g          |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 d|j        v sJ d|d         j        v sJ t          |d                             dg          |d                    t          |d
         |d
                    |d,         j        |d&         j        |d'         j        f         }|d-         j        |d&         j        |d'         j        f         }|d.         j        t/          d           |d&         j        f         }t1          |d                             d          |d                    t          |d,         |           t          |d-         |           t          |d.         |           t3          j        dd!g dfid
d!g d/fi0          }
|
                    d1did23          }t3          j        ddid
d4i0          }t          ||           |
                    d1did53          }t3          j        ddi          }t          ||           |
                    d1t          d          id23          }t3          j        ddid
d4i0          }t          ||           |
                    d1t          d          id53          }t3          j        ddi          }t          ||           d S )6Nra  r\  r]  r>   
test_coordr6  rb  rs  r   r@   rZ   rY   r   r  rW   r  r  r   r   r  r  pointsrF  rh  r  r  zDimensions of indexers mismatchrX  r>   r=   zcannot use a DatasetrP  rn  r   rb  r?   r  r   )station)Ar0  Crj  dim1sdim2szconflicting values/indexes on r   r>   r@   rZ  r\  r  r  r  r]  r^  r_  r   r   Fr  r^  T)r*   rH  rZ   rY   r   r#  r   r(   rq   rr   r  assign_coordsrb   rU  r&   rg  rh  
IndexErrorri  r   rQ  r   r  rI  r'   r|   )r   rg   pdim1pdim2pdim3r'  r&  idx1idx2idx3r   stationsexpected_var1expected_var2expected_var3s                  rm   test_isel_fancyzTestDataset.test_isel_fancy  s
   !!						!5)!5)!5)  
 

 v{****}\*0SZZMAAAA 5|444!5)!5)  
 

 v{****}\*0SZZMAAAA99!5)!5)!5)  
 

 	*** cUC9K9K3LMMMcUC9K9K3LMMMcUC9K9K3LMMM4d;;fk!!!!fk!!!!fk!!!!&&&&&&&&&&&&99%fe_  
 
 ))DIcd3i)PP***cUC9K9K3LMMMcU+++cU+++4d;;fk!!!!&&&&&&&&&&&&99%fe_  
 
 ))DI)66***e 4K;OPP6;&&&&$$$$V-----

%%d6l5&96&>JJJ 	IIK/{E6JIKKIIK/{E6JIKK	
 	
 	

 ]:-OPPP 	Q 	QIIK!Q0YYY7OIPPP	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q]9,CDDD 	8 	8II7Hq!f#566I777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 <<<a0011K344C&+... 99+___=)9995)9995 18IJJFM))))FK''''	*44fX>>@STTT]:-NOOO 	 	IIIIIy)))6L   IIIy)))6L  	    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 991!Q('1a&1a&1a&)AB#YYY/ 18IJJfm####fk!!!!fm####fk!!!!&&&&fVn)))))..x88(3-HHHhsm444V-W&(9(BB
 V-W&(9(BB
 V-eDkk8G;L;U.UVVC[**622HSMBBB6&>=9996&>=9996&>=999 Zvyyy12C&)))AT;UVVV#q..:sAhQx888***#q--:sAh''***#y||,599:sAhQx888***#y||,488:sAh''*****s7   + PPP=(Q11Q58Q53AWW
Wc           
     
   t                      }t          t          j        dd          dgdt          j                            d          i          }|                    |          }t          |d         |d                    t          |d         |d                    t          t          j        dd          dgdt          j                            d          i          }t          j	        t          d	          5  |                    |
           ddd           n# 1 swxY w Y   t          j	        t          d	          5  |d                             |
           ddd           n# 1 swxY w Y   t          j	        t          d	          5  |d                             |
           ddd           n# 1 swxY w Y   t          t          j        dd          dgd|d         j        dd         i          }|                    |
          }t          |d         |d                    t          t          j        dd          dg|d         j        dd         dt          j        dd          fd          }|                    |
          }t          |d         |d                    t          t          j        dd          dgd|d         j        i          }|dk     }|                    |
          }t          |d         |d         dd                    t          t          j        dd          dg|d         j        d
t          j                            d          fdd          }|dk     }|                    |
          }t          |d                             d                              d          |d         dd                    t          |d         |d         dd                    t          |d         |d                    t          t          j        dd          dgdd
t          j                            d          fi          }|                    |
          }d|v sJ d|j        v sJ t          dg ddi          }|                    |
          }d|v sJ |                    |d         
          }d|v sJ t          i dg di          }t          j	        t          d	          5  |                    |d         
          }ddd           dS # 1 swxY w Y   dS )zTest for indexing by DataArrayr>   r\  r  r@   rc  rP  r  zdimension coordinate 'dim2'rX  r  Nr  r=   r]  )r  r  r  r   rz  r   )r  non_dimnon_dim2r  r  rj  r?   r   )r*   r   rq   re  rr   r  rH  r(   rg  rh  rr  r   rQ  rY   r   )r   rg   indexing_dar'  indexing_dss        rm   test_isel_dataarrayzTestDataset.test_isel_dataarrayI  sO   !!IaOO6(FBIOOA<N<N3O
 
 
 ,,V,fVn===fvf~666  IaOO6(FBIOOA<N<N3O
 
 
 ]:-KLLL 	( 	(II;I'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ]:-KLLL 	0 	0L;///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0]:-KLLL 	0 	0L;///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0  IaOO6(FDL<OPQRSPS<T3U
 
 
 ,,V)<===  IaOOV+AaC0"BIaOO4 
 
 
 ,,	*DO<<<  IaF8VT&\=P4Q
 
 
 "Ao,,fbqb)9:::  IaV+%ryq'9'9: 
 
 
 "Ao,,6N$$Y//99*EEtF|TVUVTVGW	
 	
 	
 		*K	,B2A2,FGGG
+[-DEEE  IaOO	29??1+=+=>?
 
 

 ,,F""""FM))))  Iq>BBB,,F""""I 677F"""" b&))))<===]:-KLLL 	9 	9YYK$7Y88F	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9sH   D%%D),D)E44E8;E8GG
GUU	U	c                    t          j        ddg dfidg di          }t          j        dgdd          }|                    |	          }d|j        vsJ t          |j        j        t                    rJ d S )
Nr  r   ra  r?   r   r>   rd  rZ   r   r  )	r|   r   r   rH  r  r   r   r  r   )r   r   idxrr'  s       rm   &test_isel_fancy_convert_index_variablez2TestDataset.test_isel_fancy_convert_index_variable  s     Ziii 013			:JKKK|QCc4444&/))))fh/???????ro   c           	     h   t                      }t          d d d          t          d          t          d          d}t          d d d          t          dd          t          dd          d}t          |                    |          |                    |                     dt          j        d	d
          f|d<   t          |                    d          |                    d	                     t          |                    t          d                    |                    t          d	d                               t          ||                    t          dd                               t          j        d	d          }t          |                    t          d                    |                    |                     t          |                    t          d                    |                    |d         dk                         t          j        t          j	        d          d          }t          dt          j	        d          f|d          }t          ||                    |                     t          ||                    t          d                               t          |                    d          |                    t          j        d                               t          |                    d          |                    t          j        d                               t          |                    t          dd                    |                    t          dd                               d S )Nr=   r@   r6  r         ?r   r  rW   rA   r   rB   rD  r   z
2000-01-1019992005time.dayofyeardays)unittd)r   r  )r  z3 daysz0 days0hr>   z1 daysz2 days)r*   rI  r'   rH  selrt   ru   to_timedeltarq   re  r   	Timedelta)r   rg   int_slicersloc_slicerstimesr  s         rm   test_selzTestDataset.test_sel  s   !!$T433U1XXuUVxxXX$a((!SMM#sOO
 

 	TYY{++TXXk-B-BCCClB G G GHVTYYAY&&l(C(CDDDII599I%%txxU<5V5Vx'W'W	
 	
 	
 	T488vv)>)>8??@@@lA666TYYE!HHY--txxUx/C/CDDDII588I$$dhhT:J5Kq5Ph&R&R	
 	
 	
 _RYq\\777dBIaLL1<<==T488r8??+++T488uX877888TYY!Y__dhh",x2H2Hh&I&IJJJTYY!Y__dhh",t2D2Dh&E&EFFFTYY%1++Y..E(H<U<U0V0VWWWWWro   c           	        t                      }t          g ddg          }|                    |          }t          ||                    g d                     t          g ddg          }|                    |          }|                    t          dg d                    }d|j        v sJ t          ||           t          dgdgd	ggdd
g          }|                    |          }|                    t          ddgdgdgg                    }d|j        v sJ d
|j        v sJ t          ||           t          g ddgdg di          }|                    |          }|                    g d                              ddi          }d|j        v sJ d|j        v sJ t          |	                    d          	                    d          |	                    d                     t          |d         	                    d          |d                    t          g ddgdg di          }|                    |          }|                    g d          }t          ||           t          g ddgg ddd          }|                    |          }t          |d         	                    d          |d         	                    d                     |                    g d          }d|d         j
        f|d<   t          |d         	                    d          |d                    |d         j        dk    sJ t          g ddgg ddg dfdg dfd          }|                    |          }|                    g d          }t          |	                    d          |           t          j        |d         j
        |d         j
                  sJ d S )N)        r  r  r  rs  r  r?   new_dimr  r  r  new_dim2)r  r  r   r>   r=   r  rc  r@   )r  r  r  )r  r  )皙?333333?g?)r  r  r  )r*   r   r  r'   rH  r   rZ   r%  rY   rQ  r   rq   allclose)r   rg   r]  r'  r&  s        rm   test_sel_dataarrayzTestDataset.test_sel_dataarray  s|   !!vh777s##VTYYIIIY66777 yk:::s##99(9iii"@"@9AAFK''''VX&&& #u-Y
4KLLLs##99(+BaS1#PQsO"T"T9UUFK''''V[((((VX&&& OO9+y///6R
 
 
 s##99)))9,,33VY4GHHFK''''FM))))Y''11&998;M;Mi;X;X	
 	
 	
 	VI&0088#i.III OO6(FOOO3L
 
 
 s##99)))9,,VX&&& OO.::
 
 

 s##9''//Y1I1I&1Q1Q	
 	
 	
 99)))9,,&&)9)@AVF^--i88(6:JKKKf~"&99999 OO'"III."OOO4 
 
 
 s##99)))9,,V%%i00(;;;{6),3S^5JKKKKKKKro   c                   t           j                            t          d          ddggd          }t	          j        ddt          j                            dd	          fi|t          d	          d
          }|
                    t	          j        t          j        d	          d                    }|                    t          |d d	         d                    }|d         j        dk    sJ |d         j        dk    sJ t          ||           |
                    t	          j        t          j        d	          d                    }|                    t!          d|d d	                             }|d         j        dk    sJ |d         j        dk    sJ t          ||           |
                    t	          j        t          j        d	          ddg di                    }|                    t	          j        |d d	         ddg di                    }|d         j        dk    sJ |d         j        dk    sJ t          ||           t#          j        t&          d          5  |                    ddg           d d d            n# 1 swxY w Y   t#          j        t&          d          5  |                    t	          j        t          j        |d d                   t          j        |dd                    gddg                     d d d            d S # 1 swxY w Y   d S )Nr   r   r>   onetwor   varrb  r^  r@   r   r   rs  r  rd  rd  r?   rc  zVectorized selection is rX  r   r   )r  zMVectorized selection is not available along coordinate 'x' with a multi-indexr=   r  )rt   r   r   r  r|   r   rq   rr   r}   r  rH  r   re  r  rZ   r(   r   rg  rh  r   rv   )r   midxmdsactual_isel
actual_sels        rm   test_sel_dataarray_mindexz%TestDataset.test_sel_dataarray_mindex  s   }))4;;A*?~)VVjZ1!5!567E!HH--
 
 

 hhbill!E!E!EhFFWWybqb<<<W==
3$....##v----j111hhbill!E!E!EhFFWWxT"1"X66W77
3$....##v----j111 hhl29Q<<c3			:JKKK  
 
 WWl48#sIII6FGGG  
 

 3$....##v----j111 ]:-HIII 	$ 	$GGc
G###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ ]b
 
 
 	 	 GG,Xd2A2h''$rss))<)<=S#J      		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s%   J&&J*-J*A#L<<M M c                .   t          j        ddgd          }t          j        |ddgd          }|                    d                                          }|                    d	          }|                    d	          }t          ||           d S )
Nr  r  categoryrG   r>   r=   r]  r   r]  )r]  )rt   Series	DataFrame	set_index	to_xarrayr  rH  r(   )r   r]  rF   r   r'  r&  s         rm   test_sel_categoricalz TestDataset.test_sel_categorical>  s    ij999\#!Q8899\\%  **,,E""77q7>>6*****ro   c                   t          j        ddgd          }t          j        |ddgd          }|                    d                                          }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 S # 1 swxY w Y   d S )Nr  r  r  rG   r>   r=   r  r]  nearest)r]  method)r]  	tolerance)	rt   r  r  r  r  rg  rh  r   r  )r   r]  rF   r   s       rm   test_sel_categorical_errorz&TestDataset.test_sel_categorical_errorF  sW   ij999\#!Q8899\\%  **,,]:&& 	0 	0FFuYF///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0]:&& 	3 	3FFu	F222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s$   2BBB:CC#&C#c                >   t          j        g dg d          }t          j        ddt	          j        d          fid|fdg dfd	          }|                    d
          }|                    ddg          }t          ||           |                    d
          d         j	        }|t	          j
        d
d
g          k                                    sJ |                    ddg          }|                    d          }|d         j        dk    sJ d S )Nr  r  r  r  r  r"  r  quuxcorge
categoriesr  catr@   )r   r>   r>   r  r  r   r  r  r   r=   r  r  r  r=   r=   )rt   CategoricalIndexr|   r   rq   re  r  rH  r(   r   rv   r   r  unstackr   )r   r  r   actual1	expected1actual2actual3s          rm   test_categorical_indexz"TestDataset.test_categorical_indexO  s8   !!!!DDD
 
 
 ZUBIaLL)*!3<uiii.@AA
 
 

 &&U&##GGAG''	G,,,&&U&##E*128UEN33388:::::\\\--**W%%u~#v------ro   c                B   t          j        g dg d          }t          j        ddt	          j        d          fid|fdg dfd	          }|                    d
g          d         j        }|t	          j        d
g          k    	                                sJ d S )Nr  r  r"  r  r  r  r  r@   r?   r  r   r  r  )
rt   r  r|   r   rq   re  r  r   rv   r   )r   r  r   r'  s       rm   test_categorical_reindexz$TestDataset.test_categorical_reindexd  s    !!!!DDD
 
 
 ZUBIaLL)*!3<uiii.@AA
 
 
 ((/6"(E7+++002222222ro   c                <   t          j        ddg          }t          j        g d          }t          j        ddg|          }t          j        ||ddgd	                              d
dg          }|                                }|d         j        dk    sJ d S )Nr   )r  r"  r  r  r"  r  rG   r>   r=   i1i2r   r  r  r   )r>   r=   )rt   r  CategoricalDtyper  r  r  r   )r   r  r  r  rF   r'  s         rm   test_categorical_multiindexz'TestDataset.test_categorical_multiindexp  s    Y1v!-B-B-BCCCYu~S111\2!Q@@AAKK4L
 
 h%//////ro   c                   t          ddg dfidg di          }t          ddi          }|                    dd          }t          ||           t          ddiddi          }|                    dd	          }t          ||           t          ddg dfi          }t          ddi          }|                    dd          }t          ||           d S 
Nr  r   ra  r?   r>   r   Tr   r  F)r   r  r(   r   rg   r&  selecteds       rm   test_sel_dropzTestDataset.test_sel_drop{  s    YYY/03			2BCCE1:&&88ad8++8,,,E1:Qx0088ae8,,8,,,YYY/011E1:&&88ad8++8,,,,,ro   c                6   t           j                            ddgddggd          }t          d|i          }|                    dd	          }d
|j        vsJ |                    dd	          }t          |j        t          dd
di                     d S )Nr   r>   r=   r  r   r   r   T)r  r  r  F)	rt   r   from_arraysr   r  rY   r'   r  r   )r   r  rg   r'  s       rm   test_sel_drop_mindexz TestDataset.test_sel_drop_mindex  s    }((3*q!f)=^(TTsDk***c--FM))))c..VZ3s|!D!D!DEEEEEro   c                    t          ddg dfidg di          }t          ddi          }|                    dd          }t          ||           t          ddiddi          }|                    dd	          }t          ||           d S r  )r   rH  r(   r  s       rm   test_isel_dropzTestDataset.test_isel_drop  s    YYY/03			2BCCE1:&&99qt9,,8,,,E1:Qx0099qu9--8,,,,,ro   c                >   t                      }|                    t          d          t          d                    }|                    dd          }t	          ||           |                    t          d                    }|                    d          }t	          ||           |                    d |j        D                       }|                    d          }t	          ||           |                    d |j        D                       }|                                }t	          ||           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 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^  rW   r  r   rD  c                .    i | ]}|t          d           S )r^  rI  rk   r  s     rm   r   z)TestDataset.test_head.<locals>.<dictcomp>       AAAc588AAAro   c                .    i | ]}|t          d           S )r]  r  r  s     rm   r   z)TestDataset.test_head.<locals>.<dictcomp>  r  ro    either dict-like or a single intrX  r@   expected integer type@r  expected positive int)
r*   rH  rI  headr'   rZ   rg  rh  ri  r   r   rg   r&  r'  s       rm   	test_headzTestDataset.test_head  s   !!99%((q9::**Xv&&&99%((9++""Xv&&&99AAtyAAABB1Xv&&&99AAtyAAABBXv&&&]9,OPPP 	 	IIqcNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,DEEE 	  	 II3I	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:-EFFF 	 	II2I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   E??FF%GGG.HHHc                B   t                      }|                    t          dd           t          dd                     }|                    dd          }t	          ||           |                    t          d                    }|                    d          }t	          ||           |                    d |j        D                       }|                    d          }t	          ||           |                    d	 |j        D                       }|                                }t	          ||           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 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]  r^  r   rP  c                0    i | ]}|t          d d          S )r  Nr  r  s     rm   r   z)TestDataset.test_tail.<locals>.<dictcomp>  "    HHHsc5T??HHHro   c                0    i | ]}|t          d d          S )r  Nr  r  s     rm   r   z)TestDataset.test_tail.<locals>.<dictcomp>  r  ro   r  rX  r@   r  r  r  r  r  rD  )
r*   rH  rI  tailr'   rZ   rg  rh  ri  r   r  s       rm   	test_tailzTestDataset.test_tail  s   !!99%D//b$9HH**Xv&&&99%((9++""Xv&&&99HHdiHHHII1Xv&&&99HHdiHHHIIXv&&&]9,OPPP 	 	IIqcNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,DEEE 	  	 II3I	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:-EFFF 	 	II2I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   FFF'G

GG0HHHc                   t                      }|                    t          d d d          t          d d d                    }|                    dd          }t	          ||           |                    d |j        D                       }|                    d          }t	          ||           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 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^  r  c                2    i | ]}|t          d d d          S )Nr^  r  r  s     rm   r   z)TestDataset.test_thin.<locals>.<dictcomp>  s&    MMMCc5tQ#7#7MMMro   r  rX  r@   r  r  r  zcannot be zeror   rD  r  r  )
r*   rH  rI  thinr'   rZ   rg  rh  ri  r   r  s       rm   	test_thinzTestDataset.test_thin  s   !!99%dA"6"6U4q=Q=Q9RR**Xv&&&99MM49MMMNN1Xv&&&]9,OPPP 	 	IIqcNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9,DEEE 	  	 II3I	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:->??? 	 	II1I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:-EFFF 	 	II2I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   C22C69C6D;;D?D?!FFF*GGGzignore::DeprecationWarningc           	     
   t                      }|j        |d<   g d}g d}g d}|                    t          d|          t          d|          t          d|                    }|                    t          d|j        |                   t          d|j        |                   t          d|j        |                             }t          ||           t          |d         g d         j	        d	gd	g d
i          }t          |d         g d         j	        d	gd	g d
i          }t          |d         g d         j	        d	gd	g d
i          }	|                    |||	          }|                    t          dg d          t          dg d          t          dg d                    }|
                    |d	                   }t          ||           t          |d         g d         j	        d	gd	g d
i          }t          |d         g d         j	        dgdg di          }t          |d         g d         j	        dgdg di          }	|                    |||	          }|                    t          dg d          t          dg d          t          dg d                    }|
                    |d	         |d         |	d         
          }t          ||           t          ddt          j        d                              dd          fi          }|j                            g dg dd           t          ddg dfit          dg d          t          dg d          d          }|                    t          dg d          t          dg d                    }t          ||           |j                            dg dfdg dfd           |                    t          dg d           t          dg d!          d"#          }t          ||           t          g dd	gd	g d
i          }
t          g d$dgdg d%i          }|d         g dg d$f         }|                    |
|          }t#          ||d                    t          |d	                             d&          |
d	                    t          |d                             d'          |d                    t'          j        t*                    5  |                    d(gd)gd"d*+           d d d            d S # 1 swxY w Y   d S ),Nr  ra  r`  ra  rb  r6  rW   r  r   r  rc  r  r  rQ  rd  )r=   r>   r@   r   r?   )r>   r=   r>   r  )r  r  皙@re  rf  r  rb  rz  r@   rh  )r   r\  ry  rg  r   )rp  r        @)r   r  r  pad)r   r   r  r   r=   r>   )r   r@   r^  r   r   r  r  gMbP?)r   r   r  r  )r*   r  rH  r   r  r  r  r(   r   r   rq  r   rq   re  rf  rY   r  r&   rQ  rg  rh  r  )r   rg   rs  rt  ru  r&  r'  idx_tidx_2idx_3idx_xidx_yexpected_arys                rm   test_sel_fancyzTestDataset.test_sel_fancy  sF   !! yV						99/511/511<%00  
 

 /49U+;<</49U+;<</49U+;<<  
 

 	6*** L#*#___?U
 
 
 L#*#___?U
 
 
 L#*#___?U
 
 
 u5u==99&))),,&))),,&))),,  
 

 ))E#J)776***L#*#___?U
 
 
 L#*#YYY?O
 
 
 L#*#___?U
 
 
 u5u==99&))),,&))),,&))),,  
 

 ))E#J%*c
)SS6*** 
BIaLL,@,@A,F,FGHII;;<<<Xyyy)*k99955k99955 
 
 
 {III..(;			2R2R  
 
 	6***h			%:(IIIAVWWXXX{OOO44{MMM22  
 

 	6***)))3%ooo8NOOO)))3%iii8HIIIE{999iii#78EU++<777..s33U3Z@@@..s33U3Z@@@]8$$ 	E 	EHHuetHDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   .UUUc                   t                      }|                    d          }|                    dd          }t          ||           |                    ddd          }t          ||           t          j        t
                    5  |                    t          j        dd          }d d d            n# 1 swxY w Y   |                    dg          }|                    d	gd
          }t          ||           t          j        t          d          5  |                    t          d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 d            d S # 1 swxY w Y   d S )Nr>   r  gffffff?r  )r  r  )r  r  r  r         ?g333333?backfillzslice objectsrX  r@   ffillz
``method``zcannot supply)r  r  )r*   r  r(   rg  rh  r  rq   piNotImplementedErrorrI  ri  r   r  s       rm   test_sel_methodzTestDataset.test_sel_methodD  s   !!888##tI666***tICC6***]8$$ 	I 	IXX25aXHHF	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 88#8''vj996***].6FGGG 	7 	7HH%1++gH666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 ]9M::: 	* 	*HH!DH)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*
 ]:-=>>> 	/ 	/HH!IH...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/sH   #B<<C C !&EEE9FF!$F!G((G,/G,c                &   t                      }|                    d          }|j        t          d                   }t	          ||           t          j        t          d          5  |j        d          d d d            d S # 1 swxY w Y   d S )Nr   r  zcan only lookup dictrX  )r*   r  locrv  r(   rg  rh  ri  r  s       rm   test_loczTestDataset.test_loc`  s    !!888%%$C...)6***]9,CDDD 	 	HSMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   +BB
B
c                   t           j                            ddgddgddggd          }t          d	d
t	          d          fid
|i          	 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dii                             ddi                      t          j        d
di                             d                      t          j        d
di                             d                      t          j        d
di                             d                      t                              ddd                               dd                     d S )#Nr   r   r>   r=   r  r  )r  r  threer   r  r   ry  ru  Fr9   r   c                ~                        |           }                    |          }|st          ||           d S |r0|d         j        d         |k    sJ |                    |di          }t          |d         j        |d         j                   |d                             |d                   rJ d S )Nr  r  r   r   )r  rH  r(   rZ   r%  r  r  )lab_indexerpos_indexerreplaced_idxrenamed_dimr   expected_dsmdatas         rm   r  z7TestDataset.test_selection_multiindex.<locals>.test_seln  s     [))B**{*33K < [11111 7e9>!,;;;;K#566B E!3[5G5PQQQc7>>+c*:;;;;;;;ro   )r   r>   r  r   )r   r=   r  r   r>   Tr  )r  r  rd  r\  )r  r_  r   r>   r^  r  r  r  )FNr   )	rt   r   r   r   r  rI  r(   r  r  )r   r   r  r  s      @rm   test_selection_multiindexz%TestDataset.test_selection_multiindexh  s   ++3Z!Q"b*2I , 
 
 53a/":C=QQQ 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;;;;C%#67eS\9R9RSSSC:.		C	0@0@AAAC?3UYYY5J5JKKKC#67\9R9RSSSS%;%;<<eiiCUVi>W>WXXXXXro   c                    t          t          j                            d          dt	          d          fgd                                          }t          t          j                            d          dt	          d          fgd          }t          ||          \  }}t          |                    |          |	                    dd                     t          |                    |          |           d S )Nr]  r   r   r   r^  r   r   )
r   rq   rr   r  r  r  r   r(   broadcast_liker  )r   	original1	original2r  r  s        rm   test_broadcast_likezTestDataset.test_broadcast_like  s    IOOA#uQxx 1
 
 

*,, 	 biooa00Cq?2C#NNN	(I>>	9$$Y//1D1DS#1N1N	
 	
 	
 	11)<<iHHHHHro   c                >   t          ddd                                          }t          j        ddgddg          }t	          ||           t
          j                            d          }t
          j                            d          }t          d          }t          d|fd|fd|fd	          }|                                }|	                                }|
                    |          sJ ||f            t
          j                            dd          }t
          j                            dd          }t          j        t          d
          5  t          ddg|fddg|fd                                           d d d            d S # 1 swxY w Y   d S )Nr>   r=   rZ  r   r   r   
abcdefghijtr   r   r%  zcannot convert DatasetsrX  r)r   r  rt   r  r&   rq   rr   r  r  to_dataframer  rg  rh  r   )	r   r'  r&  r   r   r%  r   x2dy2ds	            rm   test_to_pandaszTestDataset.test_to_pandas  s   qq))**44669aVc3Z0068,,, IOOBIOOBC83(#qBBCC??$$v&&::6(:::: ioob"%%ioob"%%]:-GHHH 	R 	RC:s+C:s2CDDEEOOQQQ	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	Rs   -FFFc                   t                      }dddgz  f|d<   |                    t          d          t          d                    }|                    |          }t	          ||           |                    d          }dt          d	          f|d<   |d
         dd          j        |d
         d d<   t          j	        |d
         dd <   |d         
                    t                    |d<   t          j	        |d         dd <   |d         
                    t                    |d<   |d         dd          j        |d         d d<   t          j	        |d         dd <   |                    |          }t	          ||           d S )Nr  r   r   letters   )r  rW   Tr  
cdefghijklr  r=   r  r  )r*   rH  rI  reindex_liker(   r   r  r   rq   r  r~   rw   floatr  s       rm   test_reindex_likezTestDataset.test_reindex_like  sy   !!!2:.Y99%))%))9<<""8,,***99$9''"D$6$67 ( 0 4 ;" "&y188@@#%6BCC &y188??#+I#6qrr#:#ACRC #%6BCC ""8,,*****ro   c                	   t                      }t          ||                                           |                    |d                   }|                    |d                   }t          ||           |                    |d         j                  }t          ||           |                    |d                                                   }t          ||           t          j        t          d          5  |                    |d         d d                    d d d            n# 1 swxY w Y   |	                    t          d                    }|                    |d         d d                   }t          ||           |                    d|d         i          }|}t          ||           t          j        t          d          5  |                    d	d
id
           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   |                    |d         d dd                   }|                    |d         d dd                   }t          ||           |                    g d                              d d           }|                    g dddd          }t          ||           |                    g d                              d d           }|                    g dddi          }t          ||           t          d	dt          j                            d          fidt#          d          i          }t%          t          j        d          d          }t          j        t                    5  |                    |          }d d d            n# 1 swxY w Y   t          dd	dgt          j        d          fit#          d          t#          d           d!          }t          dd	dgt          j        d"          fig d#d
d$gd!          }t          j        |d         d<   |                    g d#d
d$g!          }t          ||           d S )%Nr  rP  z'cannot reindex or align along dimensionrX  r]  r  r  zcannot specify bothr   r   r  
dictionaryr  r  )rp   @r  gffffff@c                h    | j                             g dgt          | j                  z            S N)r  r  r  r  rg   r  r   r#  r  r:  s    rm   <lambda>z*TestDataset.test_reindex.<locals>.<lambda>  -    BGLL/C/C/C.Ds27||.SLTT ro   c                h    | j                             g dgt          | j                  z            S )N)r=  r=  r=  r8  )r  r   r#  r  r:  s    rm   r:  z*TestDataset.test_reindex.<locals>.<lambda>  r;  ro   r  r  r  r=  )r  
fill_valuec                h    | j                             g dgt          | j                  z            S r7  r9  r:  s    rm   r:  z*TestDataset.test_reindex.<locals>.<lambda>  r;  ro   c                    | j                             t          j        t          j        t          j        t          j        ggt	          | j                  z            S )Nr8  )r  r   rq   r  r#  r  r:  s    rm   r:  z*TestDataset.test_reindex.<locals>.<lambda>  s?    BGLLvrvrvrv67#bg,,F )   ro   r  rW   r   rs  rD  r   r@   r\  r@   r\  rb  )r@   r=   ro  r>   )r*   r(   r  rq  r   r  rg  rh  r   rH  rI  r  assignr   rq   rr   r  r  r   re  r  r  )r   rg   r&  r'  r   r   s         rm   test_reindexzTestDataset.test_reindex  s   !!t||~~...%%4<%884<00***4<#677***4<#8#8#:#:;;***]H
 
 
 	0 	0 LLd6l2A2.L///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0
 99%((9++4<#344*** vtF|455***]:-CDDD 	( 	(LL#qQL'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(]:];;; 	  	 LL	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  88feqe!48554<2#677*** <<%9%9%9<::AATTTT B 
 
 %%%32L2L  
 
 	***<<%9%9%9<::AATT  B 
 
 #7#7#7VSMRR*** C&")//!*<*<!=>q@RSS")A,,W555]:&& 	2 	2%%5%11F	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 c3Z&!1!123588%PQ((5S5S
 
 c3Z&!1!123999Aq65R5R
 
 !fiiiAq6226*****sH   %D44D8;D8 HH
H
,III$PPPc           	        t          ddg dfiddg dddiddifi          }|                    dd	g
          }t          ddd	dgfidddd	gddiddifi          }t          ||           |j        j        |j        j        k    sJ d S )Nrg   r   ra  r?   r  r  r"  r   r>   r  r=   )r   r  r(   r   encodingr   r   r'  r&  s       rm   test_reindex_attrs_encodingz'TestDataset.test_reindex_attrs_encoding  s    c999%&3			E5>E5>BC
 
 q!f%%cAq6]#3A?@
 
 	***x HJ$7777777ro   c                   t                      }t          j        t                    5  t	          j        ddgdgd          }|                    |           d d d            n# 1 swxY w Y   t	          j        ddgdgd          }t          j        d	          5 }|                    |           t          |          d
k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  r  r  r]  r  r  r  Trecordr   )
r*   rg  rh  r   r|   r   r  ry   rz   r#  )r   rg   r]  wss       rm   test_reindex_warningz TestDataset.test_reindex_warning#  s^   !!]:&& 	# 	#,Sz%HHHCLLcL"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# lC:VH5AAA$D111 	 RLLcL"""r77a<<<<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s#   1A%%A),A),CC Cc                    t                      }|                    d          }|j        D ]}|j        |         |j        |         usJ d S )NF)r   )r*   r  r   )r   rg   reindexed_datar   s       rm   test_reindex_variables_copiedz)TestDataset.test_reindex_variables_copied1  sb    !!511 	H 	HA!+A.dnQ6GGGGGG	H 	Hro   c                   t          dddgfddgd          }g d}|                    |d	          }t          dddt          j        gf|d          }t	          ||           |                    |dd
          }t          ddt          j        gz  f|d          }t	          ||           |                    |dg d          }t          dt          j        dt          j        gf|d          }t	          ||           |                    g dg dd          }t          dt          j        ddgfg dd          }t	          ||           |                    |d	          }t          dt          j        ddgf|d          }t	          ||           t          d|i          }|                    |d          }t	          ||           d S )Nr   r   r   r   r>   rb  )g      r  r  r	  )r   r  rp  )r   r  r  r@   )rp  r  rp  )rp  rp  r>   )r   rp  r   r  )r   r  r  r  r  )r   r  rq   r  r(   r0  )r   r   r   r'  r&  alts         rm   test_reindex_methodzTestDataset.test_reindex_method7  s   C"b?!Q8899a
33#B'7!8qAABB6***a
cBB#qBF8|!41==>>6***a
oooNN#BF';!<1EEFF6***mmm{{{9UU#B'7!8}}}MMNN6***a..#B'7!8qAABB6***sAhU336*****ro   r?  r=   r  r>   rc  c                b   t          dddgfdddgfddgd          }g d	}|                    ||
          }|t          j        k    rt          j        x}}n*t          |t                    r|d         }|d         }n|x}}t          ddd|gfddd|gf|d          }t          ||           d S )Nr   r   r   r=  r  r   r>   r   rd  r   r?   )r   r?  r   rd  )	r   r  r   NArq   r  r   rv  r(   )r   r?  r   r   r'  fill_value_xfill_value_zr&  s           rm   test_reindex_fill_valuez#TestDataset.test_reindex_fill_valueR  s    C"b?#Sz1B!QPPQQIIaJ77"" +-&0L<<
D)) 	5%c?L%c?LL*44L<BL12Cl34 
 
 	6*****ro   c                   t          dddgfdddgfddgd          }g d	}t          d|i          }|                    ||
          }|t          j        k    rt          j        x}}n*t          |t                    r|d         }|d         }n|x}}t          ddd|gfddd|gf|d          }t          ||           d S )Nr   r   r   r=  r  r   r>   rV  r?   r?  r   rd  )	r   r0  r   rW  rq   r  r   rv  r(   )	r   r?  r   r   rS  r'  rX  rY  r&  s	            rm   test_reindex_like_fill_valuez(TestDataset.test_reindex_like_fill_valuei  s    C"b?#Sz1B!QPPQQIIsAh<<"" +-&0L<<
D)) 	5%c?L%c?LL*44L<BL12Cl34 
 
 	6*****ro   rH   c                    t          dddgft          j        ddg|          d          }|                    |j                  }|}t          ||           |j        j        |j        j        k    sJ d S )	Nr   r>   r=   r   r   rG   )rg   r   r  )r   rq   rv   r  r   r(   rH   )r   rH   rg   r'  r&  s        rm   test_reindex_str_dtypez"TestDataset.test_reindex_str_dtype  s|    q!fBHc3Zu4U4U4UVVWW''6***x~!1111111ro   r  c           
     H   t          dt          ddgdgdddgi          i          }t          dt          ddgdgdddgi          i          }t          ||d|	          \  }}|t          j        k    rt
          j        x}}n*t          |t                    r|d         }|d         }n|x}}t          dt          dd|gdgdg d
i          i          }t          dt          d|dgdgdg d
i          i          }	t          ||           t          |	|           d S )Nr  r>   r=   r   rc  r  r@   outer)r  r?  ra  )
r   r   r   r   rW  rq   r  r   rv  r(   )
r   r?  r   r   rk  y2fill_value_foofill_value_barexpected_x2expected_y2s
             rm   test_align_fill_valuez!TestDataset.test_align_fill_value  su   UIq!fC5#1vOOOPQQUIq!fC5#1vOOOPQQq!'jAAAB"" /1f4N^^
D)) 	9'.N'.NN.88N^y>*#YYY?O  
 
 y*#YYY?O  
 
 	b)))b)))))ro   c                \   t                      }|                    d          }dt          d          f|d<   |d         dd          j        |d         d d<   t	          j        j        |d         dd          j         |d         dd <   |d         dd          j        |d         d d<   d	|d         dd <   t          d
          }t          d          }t          ||d          \  }}t          |d         |           t          ||           t          ||d          \  }}t          |d         |           t          |d         j        |d         j                   t          |                    |          |                    |                     t	          j        |d         dd                                                    sJ t	          j        |d         d d                                                   sJ t          ||d          \  }}t          |d         j        |d         j                   t          |d         j        |d         j                   t          |                    |          |                    |                     t	          j        |d         d d                                                   sJ t          ||d          \  }}t          |d         j        |d         j                   t          |d         j        |d         j                   t          |                    |          |                    |                     t	          j        |d         dd                                                    sJ t!          j        t$          d          5  t          ||d           d d d            n# 1 swxY w Y   t!          j        t&                    5  t          ||d           d d d            d S # 1 swxY w Y   d S )NTr  r  r/  r  r=   r  r  r  cdefghijabcdefghijklinnerr  ra  r  leftrightzinvalid value for joinrX  r#  r  r  )r*   r   r  r   rq   rr   r  r   r   r&   r(   r'   r  r  isnanr   rg  rh  r   ri  )r   rm  rn  intersectionunionleft2right2s          rm   
test_alignzTestDataset.test_align  sK   !!		t	$$l!3!34f"6]122.5fcrcY_eFmBCC.@.FGfbcc %i 0 4 ;i" #iJ''^$$dE888v5=,777'''dE888v5=%000U6]+VF^-DEEE55vzz|z7T7TUUUxfbcc*++//11111xvrr*++//11111dE777vU6]+VF^-DEEEU6]+T&\-BCCC55vzz|z7T7TUUUxvrr*++//11111dE888vU6]+VF^-DEEEU6]+U6]-CDDD55vzz|z7T7TUUUxfbcc*++//11111]:-FGGG 	. 	.$H----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.]9%% 	* 	*$5))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s$   >OO!$O!P!!P%(P%c                t   t          j        dddgi          }t          j        dddgi          }t          j        ||d          \  }}t          ||           t          ||           t	          j        t          d	          5  t          j        ||d           d d d            d S # 1 swxY w Y   d S )
Nr   r   r>   r   r=   exactrl  z&cannot align.*join.*exact.*not equal.*rX  )r|   r   r   r(   rg  rh  r   )r   rm  rn  left1rs  s        rm   test_align_exactzTestDataset.test_align_exact  s   z#1v///
3A-000xd999u%%%%%%]:-VWWW 	0 	0HT5w////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   B--B14B1c                @   t          j        dg di          }t          j        g dg dd          }t          j        g dg dd          }t          j        ||d          \  }}t          ||           t          ||           t          j        ||dd	          \  }}t          ||           t          ||           t          j        |                    d
d          |dd	          \  }}t          |                    d
d          |           t          ||           t          j        t          d          5  t          j        |                    d
                              d          |d           d d d            d S # 1 swxY w Y   d S )Nr   r?   r   )rp  r  r5  ra  rb  overriderl  excluder  r   Tr  z'cannot align.*join.*override.*same sizerX  r  )	r|   r   r   r(   rH  rg  rh  r   expand_dims)r   rm  rn  expected_rightnew_left	new_rights         rm   test_align_overridezTestDataset.test_align_override  s   z#yyy!1222
iii"H"HIII+K+KLLL htUDDD)x(((N333 htUCjQQQ)x(((	*** hIII%%uc

 
 
) 	QT22H===	***]H
 
 
 	N 	N HTYYY^^//44e*MMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	Ns   ?FFFc           
     P   t          dt          ddgddggddgddgddgd	          i          }t          d
t          ddgddggddgddgddgd	          i          }t          ||dgd          \  }}t          dt          ddgddgt          j        t          j        ggddgg dddgd	          i          }t          d
t          ddgt          j        t          j        gddggddgg dddgd	          i          }t          ||           t          ||           d S )Nr  r>   r=   r@   r\  r   r   rb  rc  r  r]  r^  ra  r|  ra  )r   r   r   rq   r  r(   r   r   r   rk  rb  re  rf  s          rm   test_align_excludezTestDataset.test_align_exclude  s   yVaV$C:QFRSUVQW>X>X  
 
 yVaV$C:QFRSUVQW>X>X  
 
 q!cU999ByVaVbfbf%56s!*!Q88  
 
 yVbfbf-1v6s!*!Q88  
 
 	b)))b)))))ro   c           	        t          dt          g ddg dfg          i          }t          dt          ddgdddgfg          i          }|}t          dt          ddt          j        gdg dfg          i          }t	          ||dd	          \  }}t          ||           t          ||           t          |d         j                  t          |d         j                  u sJ t	          ||d
d	          \  }}t          |d         j                  t          |d         j                  usJ t          ||           t          ||           d S )Nr  ra  r   r   r>   r=   Fra  )r   r  T)r   r   rq   r  r   r(   r6   rg   )r   r   r   re  rf  rk  rb  s          rm   test_align_nocopyzTestDataset.test_align_nocopy!	  sq   UIiii#yyy9I8JKKKLMMUIq!fsQFm_EEEFGGIq!RVnsIII6F5GHHHI
 
 q!%g666Bb)))b)))ahm,,r%y~0N0NNNNNq!$W555Bahm,,N2e9>4R4RRRRRb)))b)))))ro   c           
         t          dt          g dddg dfg          i          }t          |dg di          \  }t          dt          g dddg di          i          }t          ||           d S )Nr  ra  r   rc  )r=   r@   r>   )r  )r   r   r   r(   )r   r   rk  re  s       rm   test_align_indexeszTestDataset.test_align_indexes3	  s    UIiiicCCSBTUUUVWWa#yyy!1222Iiiic3			:JKKKL
 
 	b)))))ro   c                T   t          dg dfg dd          }t          ||          \  }}t          ||           t          ||           t          dddgfddgd	          }t          j        t
          d
          5  t          ||           d d d            d S # 1 swxY w Y   d S )Nr   r@   r\  r]  )r   r   r>   )r  r   r^  r_  r   r>   r  r   zcannot reindex or alignrX  )r   r   r(   rg  rh  r   )r   r   rj  rk  r   s        rm   test_align_non_uniquez!TestDataset.test_align_non_unique<	  s    S))),999==>>q!BQQS1a&MA7788]:-GHHH 	 	!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ?BB!$B!c                   t          ddddgfidddgi          }t          ddddgfiddd	gi          }t          ddddt          j        gfidg d
i          }t          ddt          j        ddgfi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  r   r   r>   r   r   r   r=   r  r  ra  rl  )r   rq   NaNr|   r   r(   r   rH   )r   r   r   
expected_a
expected_bactual_aactual_bs          rm   test_align_str_dtypez TestDataset.test_align_str_dtypeF	  s5   US1a&M*C#s3DEEEUS1a&M*C#s3DEEES1a.)*C3I
 
 

 S261a.)*C3I
 
 

  Xa999(X...|!XZ%55555X...|!XZ%5555555ro   r  rm  r{  c                    t          ddg dddifi          }t          ddg dfi          }t          j        |||           |j        j        ddik    sJ |j        j        i k    sJ d S )Nr   ra  r  mr   rl  )r   r|   r   r   r   )r   r  r   	ds_noattrs       rm   test_align_index_var_attrsz&TestDataset.test_align_index_var_attrsY	  s     S3			GS>"BCDDDC#yyy)9#:;;;	
BT****tzgs^++++{ B&&&&&&ro   c                n   t          dddgfdddgfdddd	gfi          }t          d
ddggfd
ddggfd
ddggfdddd	gfi          }t          |          \  }t          ||           t          dddgfi          }t          ddddgfi          }t          dd
ddggfi          }t          dd
ddggfi          }t          ||          \  }}	t          ||           t          ||	           |d         }
|d         }t          ||
          \  }}t          ||           t          ||           d S )Nr   r   r>   r   r=   r@   r  r  r\  rb  r  r  )r   r   r(   )r   r   r&  r'  ds_xds_y
expected_x
expected_yactual_xactual_yarray_yrf  	actual_x2	actual_y2s                 rm   test_broadcastzTestDataset.test_broadcastg	  s   sQCj#1v??#aSzAR
 
 "aVH-"aVH-"aVH- 
 3*
 
 bMM	6***aSz*++aV}-..ejAq6(%;<==
ejAq6(%;<==
&tT22(X...X...u+ '(w77	9Y///i00000ro   c                   t          ddddggfi          }t          ddddgfi          }t          |          \  }t          ||           t          |d         j                  t          |d         j                  u sJ t          ||          \  }}t          ||           t          |d         j                  t          |d         j                  u sJ d S )Nr  rb  r>   r  r   r=   r@   )r   r   r(   r6   rg   )r   r   r   r  r  s        rm   test_broadcast_nocopyz!TestDataset.test_broadcast_nocopy	  s    UZ1a&2344US1a&M*++llH%%%huo233~ahm7T7TTTTT&q!__(H%%%huo233~ahm7T7TTTTTTTro   c                P   t          t          ddgddggddgddgddgd          t          d	          d
          }t          dt          ddggddgdgd	dgd          i          }t          ||dg          \  }}t          t          ddggddgggg ddgddgddgd          t          d	gd	ggddgddgdgd          d
          }t          dt          ddggddgggg ddgddgd	dgd          i          }t          ||           t          ||           d S )Nr>   r=   r@   r\  r   r   rb  rc  r]  r  r  rd  r^  )rd  r   )r}  rV  rd  r   r   rc  )r   r   r   r(   r  s          rm   test_broadcast_excludez"TestDataset.test_broadcast_exclude	  s    VaV$C:QFRSUVQW>X>X   !||	 
 
 yVHC:QCq!f6M6M  
 
 1a#///B !fXAx(("#Aq6A??  
 !S1#Jc3Zq!fA38O8O  	 	
 
 y!fXAx(("#Aq6A??  
 
 	b)))b)))))ro   c           
     j   t          dt          g ddg dfg          i          }t          dt          ddgd	d
ggddgddgddgd          i          }t          ||          \  }}t          dt          d	d	gddgddgt          j        t          j        ggddgddgg dd          i          }t          dt          dd
gt          j        t          j        gt          j        t          j        gdd	ggddgddgg dd          i          }t          ||           t          ||           d S )Nr  ra  r   )r  r  r  r   r  r>   r=   r@   r\  r   r   r  r  rc  )r  r  r  r   )r   r   r   rq   r  r(   r  s          rm   test_broadcast_misalignedz%TestDataset.test_broadcast_misaligned	  s   UIiii#|||9L8MNNNOPPyVaV$s"#Qr2h77  
 
 1aByVaVaVbfbf-=>s"#Q.>.>.>??  
 
 yVbfbf-/?!QHs"#Q.>.>.>??  
 
 	b)))b)))))ro   c                0   t          ddt          j        d          fig dg dd          }|                    ddg	          }t	          ||j                  \  }}|j        d         |j        d
         u sJ |j        d         |j        d
         u sJ d S )Nr  r   r   rd  )r@   r\  r=   r  rn  rb  r   r   )spacer  )r   rq   r$  stackr   r  r  )r   r   stackedbroadcasted_s        rm   test_broadcast_multi_indexz&TestDataset.test_broadcast_multi_index	  s    _bgi&8&89:!//55
 
 ((#s(,,"7GM::Q#C(K,@,IIIII#C(K,@,IIIIIIIro   c                   t                      }|d         }|d         }|d         }t          |||j                            t          |||                    t          |d d         ||dk                         t          |d d dd f         |d d |dk    f                    t          |d ddd f         ||dk     |dk    f                    t          |d dd df         |t          d          t          d          f                    t          |d dd df         |j        |d d         |d d         f                    d S )Nr  r  r  r@   r  r=   )r*   r'   r   r  r  )r   rg   r   d1d2s        rm   test_variable_indexingz"TestDataset.test_variable_indexing	  sK   !!L&\&\Q")%%%Q"QrrUAb1fI&&&Qqqq!""uXqB#I///Qrr122vY"q&")"3 4555Qrr2A2vY%((E!HH"4 5666Qrr2A2vYb!fb!fn 566666ro   c                   t                      t                              g                      t          fdj        D                       }                    d          }t          ||                               dg          }t          ||           t          j        t          t          j	        d                    5                      d           d d d            n# 1 swxY w Y                       dd          }t          |                               dgd          }t          |                               ddgd          }t          ||           t          j
        t                    5                      dd          }d d d            n# 1 swxY w Y   t          |           t          j
        t                    5                      dgd          }d d d            n# 1 swxY w Y   t          |           t          j
        t                    5                      ddgd          }d d d            n# 1 swxY w Y   t          ||           t          j
        t                    5                      ddhd          }d d d            n# 1 swxY w Y   t          ||           d S )Nc                .    i | ]}|d k    ||         S rD  r   )rk   r   rg   s     rm   r   z3TestDataset.test_drop_variables.<locals>.<dictcomp>	  s$    NNN1!v++AtAw+++ro   rW   zCThese variables cannot be found in this dataset: ['not_found_here']rX  not_found_hererT   errors)r*   r(   rQ  r   r   rg  rh  r   reescaperV  PendingDeprecationWarningr  )r   r&  r'  rg   s      @rm   test_drop_variableszTestDataset.test_drop_variables	  s-   !!t~~b11222NNNNNNNOO''6***))6***])U 
 
 
 	- 	- NN+,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-  0BBv&&&!1 28DDv&&&)9 :8LL6*** \344 	B 	BYY/YAAF	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bv&&&\344 	D 	DYY 01(YCCF	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Dv&&&\344 	L 	LYY(89(YKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L6***\344 	L 	LYY(89(YKKF	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L6*****sZ   C--C14C1	F--F14F1!HH
H
:I  I$'I$J::J>J>c                    t                      }|                    g d          }t          j        t                    5  |                    d          }d d d            n# 1 swxY w Y   t          ||           d S )Nr   r   r   r   )r   rQ  rg  rV  DeprecationWarningr(   r  s       rm   test_drop_multiindex_levelz&TestDataset.test_drop_multiindex_level#
  s    %''>>"="="=>>\,-- 	/ 	/^^I..F	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/6*****s   A!!A%(A%c                   t          ddgt          j                            dd          fddgd          }t	          j        t                    5  |                    dgd          }d d d            n# 1 swxY w Y   |                    d	g
          }t          ||           t	          j        t                    5  |                    ddgd          }d d d            n# 1 swxY w Y   |                    t          dd          
          }t          ||           t	          j        t                    5  t	          j        t                    5  |                    dgd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t	          j        t                    5  |                    dgdd          }d d d            n# 1 swxY w Y   t          ||           t	          j        t                    5  t	          j        t                    5  |                    dgdd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t	          j        t                    5  |                    g ddd          }d d d            n# 1 swxY w Y   |                    t          dd          
          }t          ||           |                    t          g d          d          }|                    t          dd          
          }t          ||           t	          j        t                    5  |                    t          g d          dd           d d d            n# 1 swxY w Y   t          ||           |                    d	g          }|                    ddg          }t          ||           t	          j        t          d          5  |                    d
           d d d            d S # 1 swxY w Y   d S )Nr   r   r=   r@   r   r   )rk  r   r  r>   r  r   r  rT   )r  r  wrong_valuer  r  )r   r  rt  znot found in axisrX  )r   rq   rr   r  rg  rV  r  r  rH  r(   rI  rh  r  r   drop_selr   r  s       rm   test_drop_index_labelsz"TestDataset.test_drop_index_labels*
  s   sCj")//!Q*?*?@SzRRSS\,-- 	/ 	/YYu#Y..F	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/99s9##6***\,-- 	4 	4YYSzsY33F	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	499uQ{{9++6***]8$$ 	* 	*011 * *		3%S	)))* * * * * * * * * * * * * * *	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*
 \,-- 	@ 	@YYu#hY??F	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@v&&&]:&& 	@ 	@011 @ @		3%S	???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ \,-- 	F 	FYYHYEEF	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F99uQ{{9++6*** ???!;!;HMM99uQ{{9++6***\,-- 	L 	LIIi00c(IKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L6***!%%991v9&&6***]8+?@@@ 	 	MMAM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A55A9<A9 C&&C*-C*>FE=1F=F	FF	FFF8GG"%G"I),II)I	I)I	I))I-0I-J44J8;J8&(NN!NP33P7:P7c                   t          ddgt          j                            dd          fddgt	          d          d          }t          |j        d                   dk    sJ t          j        t                    5  |
                    dgd          }d d d            n# 1 swxY w Y   |                    d	          }|                    dg	          }|                    ddg	          }|                    ddgt	          d
dd                    }t          t	          d          dg          }t          j        t                    5  |
                    |j                   d d d            n# 1 swxY w Y   t          j        t                    5  |
                    |j                   d d d            n# 1 swxY w Y   t          |j        d         dg           t          |j        d         dg           t          |j        d         dg           |j        d         j        d
k    sJ |j        d         j        d
k    sJ t          |j        d         g d           t          j        t$                    5  |
                    dgd           d d d            n# 1 swxY w Y   t          j        t$                    5  |
                    dgdd           d d d            n# 1 swxY w Y   t'          j        dd           t          j        t$                    5  |
                    dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r=   r^  r   r   rk  r   r   r  r  r   rb  r@   r  rs  )r>   r@   r]  )labelsr   )r  r  r   rT   z\W*drop)r  r   )r   rq   rr   r  r  r#  rY   rg  rV  r  r  r  r   FutureWarningr  r&   rR  rh  r   ry   r{   )r   rg   ds1ds2ds3ds4ds5r  s           rm   test_drop_labels_by_keywordz'TestDataset.test_drop_labels_by_keywordY
  s   :ryq!445S#JUSTXXVV
 
 4;s#$$))))\,-- 	, 	,))SEs)++C	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,mmcm""mmsem$$mmsCjm))mmsCjE!QNNm;;au---\-(( 	" 	"IIcj!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"\-(( 	$ 	$IIcl###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	3:c?SE2223:c?SE2223:c?SE222z##q((((z##q((((3:c?III666 ]:&& 	+ 	+IIcUcI***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]:&& 	4 	4IIcUsI333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4*555]:&& 	& 	&II#I%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&sl   >B##B'*B'E::E>E>GG	G	
J//J36J3K99K= K=2MMMc                   t          ddgt          j                            dd          fddgt	          d          d          }t          |j        d                   dk    sJ |                    d	          }|                    d	          }t          ||           |                    dg	          }|                    dg	          }t          ||           |                    dd
g	          }|                    ddg	          }t          ||           |j        d         j
        dk    sJ |                    dd
gt	          ddd                    }|                    ddgt	          ddd                    }t          ||           |j        d         j
        dk    sJ t          j        t                    5  |                    d
           d d d            d S # 1 swxY w Y   d S )Nr   r   r=   r^  r   r   r  r   r  r>   rb  r  )r   rq   rr   r  r  r#  rY   	drop_iselr  r(   rR  rg  rh  r  r  s       rm   test_drop_labels_by_positionz(TestDataset.test_drop_labels_by_position}
  s&   :ryq!445S#JUSTXXVV
 
 4;s#$$))))!$$==3=''6***1#&&==C5=))6***1a&))==C:=..6***}S!&!++++1a&E!QNN;;==C:q!Q=@@6***}S!&!++++]8$$ 	  	 NNQN	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   G,,G03G0c                &   t          dg dfdg dfdg dfd          }|                    d          }d|j        vsJ t          |j        j                  t          u sJ |                    ddg          }d|j        vsJ d|j        vsJ t          |j        j                  t          u sJ t          |j        j                  t          u sJ t          j	        t          d	          5  |                    d
           d d d            n# 1 swxY w Y   t          j	        t          d	          5  |                    d           d d d            n# 1 swxY w Y   |                    dd
gd          }t          ||           t          j                            ddgddggddg          }t          d|i          }t          j	        t          d	          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r?   r   r  )r   r   r   r  r   zthose coordinates don't existrX  not_a_coordz&those coordinates do not have an indexr  rT   r  r>   r=   r@   r\  r   r   r   z%.*would corrupt the following index.*)r   drop_indexesr  r  r   r  r   r   rg  rh  r   r(   rt   r   from_tuples)r   r   r'  r   s       rm   test_drop_indexeszTestDataset.test_drop_indexes
  s   999%999%___- 
 
 
 %%&/))))FH%&&(2222#s,,&/))))&/))))FH%&&(2222FH%&&(2222]:-LMMM 	+ 	+OOM***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ ]:-UVVV 	# 	#OOE"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# %!7II$$$ **aV1v+?Sz*RRS&M***]:-TUUU 	! 	!OOC   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s6   /DDD7EE E#HH
H
c                   t          j        ddgt          j                            dd          fdt          j                            d          fddgt          j        d          }|                    d          }|                    g d          }t          ||           |                    d          }|                    d	          }t          ||           |                    ddg          }|                    g d          }t          ||           t          j
        t          t          f          5  |                    d
           d d d            n# 1 swxY w Y   t          j
        t          t          f          5  |                    d            d d d            n# 1 swxY w Y   |                    d
d          }t          ||           |                    d d          }t          ||           t          j
        t                    5  |                    d
d          }d d d            n# 1 swxY w Y   |                    g dd          }|                    g d          }t          ||           d S )Nr   r   r=   r@   r   r   )rk  r0  r   rd  )rk  r0  r   rk  rd  rT   r  r  r  )r|   r   rq   rr   r  r  	drop_dimsrQ  r(   rg  rh  r   r  r  s       rm   test_drop_dimszTestDataset.test_drop_dims
  s   zCj")//!Q"7"7829??1--.3ZU	 
 
 $$>>///226***$$>>#&&6***c
++>>///226***]J122 	  	 NN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ]J122 	! 	!NN4   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! H55v&&& X66v&&&]:&& 	? 	?^^C^>>F	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? AA>>///226*****s6   ;EE!$E!F**F.1F.I  IIc                   t                      }g d|j        d<   |                    d          t          |          fD ]}t          ||           |j        |j        k    sJ |j        D ]F}|j        |         }|j        |         }t          |j                  t          |j                  u sJ Gdt          j
        d          f|d<   d|vsJ d|j        d<   d|j        vsJ |j        d         |j        d         u sJ |                    d	          t          |          fD ]`}t          ||           |j                                        D ]\  }}|j        |         }||usJ |j        d         |j        d         usJ ad S )
Nra  TestFr  rd  r]  r  r  T)r*   r   r   r(   rF  rb   r   r6   rg   rq   re  r   r   )r   rg   copiedr   v0v1s         rm   	test_copyzTestDataset.test_copy
  s   !!&YY
6yyey,,d4jj9 	> 	>FT6***=FO3333 ^ J J^A&%a(%bg...2I2IIIIII ")A,,/F5M$$$$"'FL
****:f%f)======yydy++Xd^^< 	B 	BFT6***--// $ $2%a(|||||:f%V\&-AAAAAA	B 	Bro   c                *   t                      }d |j                                        D             }|                    |          }|                                }|                                D ]\  }}|||         _        t          ||           d S )Nc                F    i | ]\  }}|t          j        j        |j         S r   )rq   rr   r  r   r9  s      rm   r   z3TestDataset.test_copy_with_data.<locals>.<dictcomp>  s)    TTTTQAry0TTTro   r8  )r*   rb   r   r   rg   r(   )r   r  new_datar'  r&  r   r   s          rm   test_copy_with_datazTestDataset.test_copy_with_data  s    !!TTT^=Q=Q=S=STTT))99;;NN$$ 	! 	!DAq HQK6*****ro   )rh  zdeep, expected_origTr   rX   F  c           	        t          j        t          j        g d          ddgddgddgdg dd	                                          }|                    |
          }d|j        d         j        d<   t          j        t          j        dt          j	        ddg                    dddgidg          }t          |j        d         |           t          |j        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
        dataset deep copied from another.r=   r=   r=   r>   r=   r   r   r   r  value)rY   rZ   r   r  r  r   rX   N)r|   r   rq   r$  r  r   rY   rg   r   rv   r(   )r   r  expected_origr   ds_cpexpected_cps         rm   test_copy_coordszTestDataset.test_copy_coords  s    4 \GIIIQsCj1v>> 	
 
 

 *,, 	 T""$'Sq!lS"(C8"4"455#q?
 
 

 	c*K888377777ro   c                \   t                      }t          j        |d         j                                      |d         j                  }t          j        t          d          5  |	                    |           d d d            n# 1 swxY w Y   t          j        t          d          5  |	                    d|i           d d d            n# 1 swxY w Y   t          j        t          d          5  |	                    d|i           d d d            d S # 1 swxY w Y   d S )Nr  zData must be dict-likerX  r8  z"only contain variables in originalnot_in_originalz!contain all variables in original)
r*   rq   re  rR  rf  r   rg  rh  r   r   )r   r  new_var1s      rm   test_copy_with_data_errorsz&TestDataset.test_copy_with_data_errors9  s   !!9T&\.//77V8JKK]:-FGGG 	% 	%II8I$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]:-RSSS 	: 	:II-x8I999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:]:-QRRR 	/ 	/IIFH-I...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s6   'B

BB0CCC;D!!D%(D%c                N   t                      }ddi}ddi|_        |j                                        D ]\  }}|||         _        |                                }|j        i k    sJ |j                                        D ]\  }}|j        i k    sJ t          ||           d S )Nscale_factorr   r  r  )r*   rF  r   r   reset_encodingr'   )r   r  	vencodingr   r   r'  s         rm   test_reset_encodingzTestDataset.test_reset_encodingC  s    !!#R(	N((** 	) 	)DAq(DG$$&&"$$$$$**,, 	$ 	$DAq:#####VT"""""ro   c                (   t                      }ddd}|                    |          }t          |j                  }|                                D ]\  }}|                    |          ||<   |                                D ]\  }}t          |j                  }	|                                D ]!\  }
}|
|	v r||	|	                    |
          <   "t          t          |	|j        |j                  ||         j                                                   |j        ||         j        k    sJ t!          |          t!          |j        |                   u sJ d|vsJ d|vsJ 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i           d d d            n# 1 swxY w Y   |d         }|j        t)          |j                  f|d<   |                    |          }t#          j        t*                    5  |d         j         d d d            n# 1 swxY w Y    |j        di |}t-          ||           d S )Nrenamed_var1renamed_dim2r  r  r  r  zcannot rename 'not_a_var'rX  	not_a_varnadaz'var1' conflictsr  r   )r*   r%  rv  r   r   popr  rZ   r  r'   r   r   r   r  to_base_variablerF  r  rg  rh  r   r#   r$   r(   )r   rg   newnamesrenamedr   nknvr   r   rZ   r   newnamer  renamed_kwargss                 rm   test_renamezTestDataset.test_renameR  s_   !!""
 
 ++h''((	nn&& 	. 	.FB%MM"--IbMMOO%% 	9 	9DAq<<D!)!1!1 5 5g4<<-4DD))*qx11
#4466   :!4444477d7#4Q#78888888W$$$$W$$$$]:-IJJJ 	/ 	/KKf-...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ ]:-@AAA 	* 	*KK()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* F|	#4T[#A#ABV++h'']/00 	+ 	+N#**	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ %00x00.11111s6   F''F+.F+G11G58G5I**I.1I.c                    t                      }t          j        t          d          5  |                    ddd           d d d            n# 1 swxY w Y   |                    ddd           d S )Nz'samecol' conflictsrX  samecolr>  r  r  )r*   rg  rh  r   r%  r4  s     rm   test_rename_old_namez TestDataset.test_rename_old_name  s    !!]:-CDDD 	@ 	@KKI>>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	VV4455555s   AAAc                    t                      }ddd}t          j        t          d          5  |                    |          }d d d            n# 1 swxY w Y   t          ||           d S )Nr  r  r   does not create an index anymorerX  )r*   rg  rV  rW  r%  r(   )r   rg   r  r  s       rm   test_rename_same_namez!TestDataset.test_rename_same_name  s    !!"F33\+-OPPP 	, 	,kk(++G	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,$'''''s   AAAc                d   t          dg dfdg dfdd          }t          dg dfdg dfdd          }|                    d          }|                    ddi          }t          ||d           |                    d	          }t          ||d           d
di}t	          j        t                    5  |                    |           d d d            n# 1 swxY w Y   t	          j        t                    5  |                    ddi           d d d            d S # 1 swxY w Y   d S )Nr   r?   r   r     r  r  x_newFcheck_default_indexesr  x_badrd  )r   r  rename_dimsr(   rg  rh  r   )r   r  r&  r'  actual_2dims_dict_bads         rm   test_rename_dimszTestDataset.test_rename_dims  s   #yyy!1lll8KRTUUVVIII&g|||-D2NN
 

 &&s++%%sGn556GGGG''''2285IIII !'*]:&& 	0 	0  ///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 ]:&& 	- 	-  #s,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s$   :CC #C  D%%D),D)c                   t          dg dfdg dfdd          }t          dg dfdg dfdd          }|                    d          }|                    ddi          }t          ||d	           |                    d
          }t          ||d	           ddi}t	          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r?   r  r  r  )r  r   rd  r  Fr  r  r  )r   r  rename_varsr(   rg  rh  r   )r   r  r&  r'  r  names_dict_bads         rm   test_rename_varszTestDataset.test_rename_vars  sZ   #yyy!1lll8KRTUUVVIII&c<<<-@rJJ
 

 &&w//%%sGn556GGGG''''2285IIII "7+]:&& 	1 	1  000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   :CC!$C!c                    t          ddg dfi          }|                    ddi          }d|j        v sJ |                    ddi          }d|j        v sJ d S )Nr   r?   r   r  )r   r  r  r  )r   r  r'  r  s       rm   test_rename_dimension_coordz'TestDataset.test_rename_dimension_coord  s}     3iii(8"9:::%%sGn55&/))))''g77h'''''''ro   c                   t          ddddgfi          }t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          ddddgfi          }t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   r>   r   z,rename 'x' to 'y' does not create an index.*rX  r  )r   rg  rV  rW  r%  r  s     rm   $test_rename_dimension_coord_warningsz0TestDataset.test_rename_dimension_coord_warnings  s_    S3A-0111\M
 
 
 	 	 III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 S3A-0111\M
 
 
 	 	 III	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAAB55B9<B9c                   t           j                            ddgddggddg          }t          i d|i          }t          i d|                    dd	g          i          }|                    dd	i          }t          ||           t          j        t          d
          5  t          j	        t          d          5  |                    ddi           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          d          5  t          j	        t          d          5  |                    ddi           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        t          d          5  t          j	        t          d          5  |                    ddi           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr>   r=   r@   r\  r   r   r   r   r  z'a' conflictsrX  r  z'x' conflictsz'b' conflicts)rt   r   r  r   r%  r(   rg  rh  r   rV  rW  )r   r   r  r&  r'  s        rm   test_rename_multiindexz"TestDataset.test_rename_multiindex  s`   **aV1v+?Sz*RR2V}--2V]]C:%>%>?@@#s,,6***]:-=>>> 	, 	,k1STTT , ,c
+++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, ]:-=>>> 	, 	,k1STTT , ,c
+++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, ]:-=>>> 	, 	,k1STTT , ,c
+++, , , , , , , , , , , , , , ,	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   %C<C%C<%C)	)C<,C)	-C<<D D "E9>E"E9"E&	&E9)E&	*E99E= E=G7;GG7G#	#G7&G#	'G77G;>G;c                   t          ddg dfi          }t          ddg dfi          }t          ||gddg          D ]#\  }}ddi||         _        ddi||         _        $|                    ddi          }t          ||           d S )Nr   r?   r   r   r  r  )r   zipr   rF  r%  r(   )r   r  r&  r   r  r'  s         rm   #test_rename_perserve_attrs_encodingz/TestDataset.test_rename_perserve_attrs_encoding  s    3iii(8"9:::3iii(8"9:::Hh/#s<< 	. 	.GB"ENBsGM %u~BsG#s,,*****ro   c                J   t          j        dddd          }t          d|i          }|                    d	          }d|j        v sJ t          |j        d                                         t                    sJ |j        d                                         j        dk    sJ d|j        v sJ t          |j        d                                         t                    sJ |j        d                                         j        dk    sJ |	                                }t          |j        d                                         t                    sJ |
                                }t          |j        d                                         t                    sJ d S )
N2000r^  2MSnoleap)startrC   r2  calendarrW   r   time_newrD  )r|   cftime_ranger   r%  r  r   r  r   r   r  r  r   rW   r  r  s       rm   ,test_rename_does_not_change_CFTimeIndex_typez8TestDataset.test_rename_does_not_change_CFTimeIndex_type  s    VQUXVVVvtn---++:+..W----- '*:6FFHH+VVVVV
+;;==BjPPPP &&&&$-/??AA;OOOOO}V$4466;vEEEE ""$$'*62BBDDkRRRRR""$$'*62BBDDkRRRRRRRro   c                H   t          j        ddd          }t          d|i          }|                    d          }d|j        v sJ t          |j        d                                         t                    sJ |j        d                                         j        dk    sJ d|j        v sJ t          |j        d                                         t                    sJ |j        d                                         j        dk    sJ |	                                }t          |j        d                                         t                    sJ |
                                }t          |j        d                                         t                    sJ d S )	Nr'  r^  r(  )r*  rC   r2  rW   r   r,  rD  )rt   ru   r   r%  r  r   r  r   r   r  r  r.  s       rm   .test_rename_does_not_change_DatetimeIndex_typez:TestDataset.test_rename_does_not_change_DatetimeIndex_type  s    }615AAAvtn---++:+..W----- '*:6FFHH-XXXXX
+;;==BjPPPP &&&&$-/??AA=QQQQQ}V$4466;vEEEE ""$$'*62BBDDmTTTTT""$$'*62BBDDmTTTTTTTro   c                   t          g ddt          d          fdd          }t          ddidg dft          d          d          }|                    ddi          }t          ||           t	          |j        d         t                    sJ t	          |j        d         t                    sJ |j        d         	                    |j        d                   sJ |                    ddi          }t          |
                    d          |           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i           d d d            n# 1 swxY w Y   t          dt          d          fddddg dfi          }|                    ddi          }t          ||           t          dt          d          fddddg dfi          }|                    d          }t          ||           t          j                            t          d          t          d          gddg          }t          g dd|fdd          }t          ddidg df|d          }|                    ddi          }t          ||           t	          |j        d         t                    sJ t	          |j        d         t                    sJ |j        d         	                    |j        d                   sJ d S )Nra  r   r   r  r  rd  r   rb  zcannot swaprX  zreplacement dimensionu)r   rd  r   r  aabyzzy1rb  r   )r   r  	swap_dimsr(   r   r   r   r   r  r  r  rg  rh  r   rt   r   r  )r   r  r&  r'  roundtrippedr  s         rm   test_swap_dimszTestDataset.test_swap_dims%  s   #tE{{1C"MMNNC9S))),<4;;&O&OPP##S#J//6***&*3/?????&*3/:::::s#**8+<S+ABBBBB''c
33,,S11<@@@]:^<<< 	+ 	+Sz***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]:-EFFF 	+ 	+Sz***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ U$2..c999=M7N
 
 
 ##S#J//6*** U$2..c999=M7N
 
 
 ##c#**6*** m''ed5kk(B4QU,'WW#s"EEFFC9S))),<3&G&GHH##S#J//6***&*3/?????&*3/:::::s#**8+<S+ABBBBBBBs$   8EE #E F&&F*-F*c           
     f   t          dt          j                            d          fddgt          j                            dd          fdt          j                            d          fdt          j        ddd          t          j        ddd          t          j        ddd          d	d
di          }t          j        t          d          5  |                    dg           d d d            n# 1 swxY w Y   |	                    d          }t          j        t          d          5  |                    dg           d d d            n# 1 swxY w Y   t          dt          j                            d          fddgt          j                            dd          fdt          j                            d          fdt          j        ddd          t          j        ddd          t          j        ddd          d	d
di          }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id           d d d            d S # 1 swxY w Y   d S )Nr   r@   r   r\  r  r   r>   r]  r  r   entryrY   r   zalready existsrX  r   r  rd  zvalue of new dimensionr  g	@zboth keyword and positionalr  )r   rq   rr   r  linspacerg  rh  r   r~  r  ri  )r   r  s     rm   test_expand_dims_errorz"TestDataset.test_expand_dims_errorM  s   29??1--.Cj")//!Q"7"7829??1--.  [Aq))[Aq))[Aq)) 
 '"
 
 
 ]:->??? 	, 	,  cU +++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,
 &&s++]:->??? 	, 	,  cU +++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 29??1--.Cj")//!Q"7"7829??1--.  [Aq))[Aq))[Aq)) 
 '"
 
 
 ]9,EFFF 	- 	-  #s,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-]:-KLLL 	0 	0  #qQ ///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0sH   C88C<?C<3EEE5II I?J&&J*-J*c           
        t          dt          j                            d          fddgt          j                            dd          fdt          j        ddd          t          j        ddd          t          j        ddd          d	d
di          }|                    dgdg          }t          |d                             dd          |d                             dd          dt          j        ddd          t          j        ddd          t          j        ddd          d	d
di          }t          ||           |                    d          }t          ||           |                    dgdg          }t          |d                             dd          |d                             dd          dt          j        ddd          t          j        ddd          t          j        ddd          d	d
di          }t          ||           |                    d          }t          ||           d S )Nr   r@   r   r\  rb  r   r>   r]  r  r   r;  r<  rd  r   r   r  )r   rq   rr   r  r>  r~  r(   squeeze)r   r  r'  r&  r8  s        rm   test_expand_dims_intz TestDataset.test_expand_dims_intw  sa   	**+C:ryqRS?T?T2UVV[Aq))[Aq))[Aq)) 
 '"
 
 
 %%seaS11c]..sA66c]..sA66 
 [Aq))[Aq))[Aq)) 
 '"
 
 
 	6***~~c**<000 %%sebT22c]..sB77c]..sB77 
 [Aq))[Aq))[Aq)) 
 '"
 
 
 	6***~~c**<00000ro   c           	     6   t          ddt          j        g d          fi          }t          ddt          j        g dg dg          fidddgi          }|                    t	          ddg	                    }t          ||           d|j        vsJ d S )
Nr   r   ra  )r   r   r   r>   r=   r   re  )r   rq   rv   r~  rv  r(   _coord_namesr   r  r&  r'  s       rm   test_expand_dims_coordsz#TestDataset.test_expand_dims_coords  s    C#rx			':':!;<==:rxIII(>??@A3QRTUPV-
 
 
 %%daVnnn556***(///////ro   c                    t          ddiddi          }t          dddgfiddgi          }|                    d          }t          ||           d S )Nr   r>   r   r=   rd  )r   r~  r(   rE  s       rm   &test_expand_dims_existing_scalar_coordz2TestDataset.test_expand_dims_existing_scalar_coord  sb    C8c1X..C&1#/#s<<%%c**6*****ro   c                    t          dddgfiddgi          }|                    d                              d          }t          ||           d S )Nr   rd  r>   r   r=   r   )r   rH  r~  r(   )r   r  r'  s      rm   test_isel_expand_dims_roundtripz+TestDataset.test_isel_expand_dims_roundtrip  sY    C&1#/#s<<##//44*****ro   c                   t          dt          j                            d          fddgt          j                            dd          fdt          j        ddd          t          j        ddd          t          j        ddd          d	
          }|                    dg dd          }t          t          j        |d         j        t          j	        g d          z  t          t          d          g dt          j        ddd                    g d                              d          t          j        |d         j        t          j	        g d          z  t          t          d          g dt          j        ddd          t          j        ddd                    g d                              d          ddt          j        ddd          i
          }t          ||           d S )Nr   r@   r   r\  rb  r   r>   r]  r  r   lr  n)r  r  r   )r\  r@   r@   )r  r  r   rX   r  r   )r\  r@   r\  r@   )r  r  r   r   r  )r   rq   rr   r  r>  r~  r|   r   r   r$  rv  r  rQ  r(   )r   r  r'  r&  s       rm   %test_expand_dims_mixed_int_and_coordsz1TestDataset.test_expand_dims_mixed_int_and_coords  s    	**+C:ryqRS?T?T2UVV[Aq))[Aq))[Aq)) 
 
 
 %%AOOO&D&DEE\SM(27999+=+==%((oooQPQSTAUAUVVV(   )C..\SM(27<<<+@+@@(()//+aA..+aA..	   .--	 	 	 )C.. " Q1--.%
 
 
( 	*****ro   c                   t          dt          j                            d          fddgt          j                            dd          fdt          j        ddd          t          j        ddd          t          j        ddd          d	d
di          }|                    g d          }t          t          j        |d         j        t          j	        ddg          z  t          g dt          j        ddd                    ddg          t          j        |d         j        t          j	        g d          z  t          g dt          j        ddd          t          j        ddd                    g d          ddt          j        ddd          id
di          }t          ||           d S )Nr   r@   r   r\  rb  r   r>   r]  r  r   r;  r<  rL  r=  r   )r  r   r  rX   r   )r@   r\  r@   )r  r   r   r  )r   rq   rr   r  r>  r~  r|   r   r   r$  rv  r(   )r   r  	other_wayother_way_expecteds       rm   $test_expand_dims_kwargs_python36plusz0TestDataset.test_expand_dims_kwargs_python36plus  s   	**+C:ryqRS?T?T2UVV[Aq))[Aq))[Aq)) 
 '"
 
 
 ((???(;;	$\SM(27Aq6??:///R[Aq5I5IJJJs  
 \SM(27999+=+==)//+aA..+aA..  
 )     Q1--.'"%
 
 
( 	+Y77777ro   c                |   t                      }|d                                         fdj        D             }d |D             }t          i |          }|                    j                  }t          ||           t                      }|d         |d         d}t          i |          }|                    d          }t          ||           t          d	dg d
fi          }t          dg d
i          }t          |                    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 )Nr   c                :    g | ]}                     |          S r   get_level_valuesrk   rN  r   s     rm   r  z.TestDataset.test_set_index.<locals>.<listcomp>  '    DDD!6**1--DDDro   c                "    i | ]}|j         d |fS r  r   r  s     rm   r   z.TestDataset.test_set_index.<locals>.<dictcomp>       :::3#(S#J:::ro   r   r  r   r   )r   r   x_varr?   ra   zbar variable\(s\) do not existrX  r  ro  zdimension mismatch.*rt  )	r   r  r   r   r  r(   rg  rh  r   )r   r&  r  rY   r   objr   s         @rm   test_set_indexzTestDataset.test_set_index  sG   )++#''))DDDDv|DDD::':::R'''llV\l**h''' $%%i(VI5FGG2f---llYl''h''' #yyy)9:;;;3			"233300(;;;]:-NOOO 	$ 	$LLUL###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ ]:-DEEE 	$ 	$LL7L###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s$   E''E+.E+F11F58F5c                ~   g d}g d}g d}g d}t           j                            ||gddg          }t           j                            ||gdd	g          }t          j        |d
|fd
|fd          }|                    dd	g          }t          j        |d
|fd
|fd          }	t          ||	           d S )Nr   r   r   r   )r>   r=   r>   r=   )r  r  r  r  )r@   r\  r@   r\  r  r  r   r  fourr   )r   r  ra  r   r  )r   r  r  )rt   r   r  r|   r   r  r(   )
r   r  r  r  ra  	mindex_12	mindex_34r   r'  r&  s
             rm   test_set_index_deindexed_coordsz+TestDataset.test_set_index_deindexed_coords   s     #""ll$$$||M--sCj-OO	M--udmGVCT-UU	Z"c5\C;OO
 
 
 & 122:"C:sCjII
 
 
 	*****ro   c                   t                      }|d                                         fdj        D             }d |D             }t          i |          }|                    d          }t          ||d           t          |j                  dk    sJ t          ddg d	fi          }t          j	        t          d
          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   c                :    g | ]}                     |          S r   rV  rX  s     rm   r  z0TestDataset.test_reset_index.<locals>.<listcomp>7  rY  ro   c                "    i | ]}|j         d |fS r  r   r  s     rm   r   z0TestDataset.test_reset_index.<locals>.<dictcomp>8  r[  ro   r   Fr  r   r   ra  z.*not coordinates with an indexrX  )r   r  r   r   reset_indexr(   r#  r  rg  rh  r   )r   r   r  rY   r&  r]  r   s         @rm   test_reset_indexzTestDataset.test_reset_index4  sN   #%%C!!##DDDDv|DDD::':::2f---nnS!!heDDDD3<  A%%%%S3			"23444]:-OPPP 	  	 NN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   C//C36C3c                    t          ddgdgddi          }t          i d|i          }|                    d          }|j        j        |j        j        k    sJ t          |j                  dk    sJ d S )Nr>   r=   coord_1r   T)rZ   r   r   )r   r   rh  rk  r   r#  r  )r   rk  r   r]  s       rm   test_reset_index_keep_attrsz'TestDataset.test_reset_index_keep_attrsC  s    QF)WdOLLLR)W-..nnY''z3;#444443<  A%%%%%%ro   c                    t          dddgi          }|                    dd          }t          |j                  dk    sJ d S )Nr   r>   r=   r   Tr  r   )r   rh  r#  rZ   )r   r   resets      rm   test_reset_index_drop_dimsz&TestDataset.test_reset_index_drop_dimsJ  sN    S1a&M***s..5:!######ro   z"arg,drop,dropped,converted,renamedr  r  r   )r   r  r  c                   t           j                            ddgddggd          }t          j        d|i          }|                    ||	          }|D ]}	|	|j        vsJ |D ]:}	t          ||	         j        ||	         j        	                                           ;|
                                D ]+\  }
}t          ||
         j        ||         j                   ,d S )
Nr   r   r>   r=   r  r   r   r   r  )rt   r   r   r|   r   rh  r   r(   r  r   r   )r   r  r  dropped	convertedr  r  r   rn  r   old_namenew_names               rm   test_reset_index_drop_convertz)TestDataset.test_reset_index_drop_convertO  s   ( }))C:1v*>n)UUZT{+++s.. 	/ 	/Du..... 	Y 	YDU4[12d83D3U3U3W3WXXXX")--// 	N 	NHhR\2E(O4LMMMM	N 	Nro   c                   t                      }|d                                         }|                    ddg          }t          i d|i          }d|d         j        d<   d|d         j        d<   |                    ddg          }t          ||           t          i ddd	gi          }t          j        t          d
          5  |                    ddg           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r  r  r  r>   r=   zhas no MultiIndexrX  )	r   r  reorder_levelsr   r   r(   rg  rh  r   )r   r   r   r  r&  	reindexeds         rm   test_reorder_levelszTestDataset.test_reorder_levelsn  sP   #%%C!!##$$i%;<<2sDk222 &+9E"+0!%(%%I(>%??	H---Rq!f...]:-ABBB 	8 	8I 6777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   C11C58C5c                   t          dg dfdg dfd          }|                    d          }|                    d                              d          }t	          ||d	           |                    dd
g          }|                    dd
g          }t	          ||            G 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t                     d d d            n# 1 swxY w Y   dg df|d<   t          j        t          d          5  |                    dt                     d d d            n# 1 swxY w Y   t          ddg dfi          }t          j        t          d          5  |                    dt                     d d d            d S # 1 swxY w Y   d S )Nr   r`  r   r>   r=   r@   r  r   r  r  Fr  r  c                      e Zd ZdS )/TestDataset.test_set_xindex.<locals>.NotAnIndexNr  r   ro   rm   
NotAnIndexr}    s        Cro   r~  z .*not a subclass of xarray.IndexrX  zthose variables don't existnot_a_coordinatern  data_varz"those variables are data variablesz'those coordinates already have an index)
r   
set_xindexr  r  r(   rg  rh  ri  r   r   )r   r   r'  r&  actual_mindexexpected_mindexr~  r  s           rm   test_set_xindexzTestDataset.test_set_xindex  s*   !5!5!56\\\?RSS
 
 
 u%%<<%<((44u4==GGGGuen55,,%,88888	 	 	 	 	 	 	 	 ]9,NOOO 	- 	-MM%,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- ]:-JKKK 	; 	;MM,k:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; |||,:]:-QRRR 	3 	3MM*k222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 cC#67888]:-VWWW 	- 	-NN3,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-sH   C77C;>C;EE	E	4FF #F HHHc                    t          ddg dfi          } G d dt                    }|                    d|d          }t          |j        d         d	          dk    sJ d S )
Nr  r   r`  r   c                  *    e Zd Zd Zed             ZdS )=TestDataset.test_set_xindex_options.<locals>.IndexWithOptionsc                    || _         d S re   opt)r   r  s     rm   r   zFTestDataset.test_set_xindex_options.<locals>.IndexWithOptions.__init__  s    ro   c                $     | |d                   S )Nr  r   )clsr   optionss      rm   from_variableszLTestDataset.test_set_xindex_options.<locals>.IndexWithOptions.from_variables  s    s75>***ro   N)r   r   r   r   classmethodr  r   ro   rm   IndexWithOptionsr    s>           + + [+ + +ro   r  r>   r  r  )r   r   r  getattrr  )r   r   r  indexeds       rm   test_set_xindex_optionsz#TestDataset.test_set_xindex_options  s    US*>*>*>$?@AAA	+ 	+ 	+ 	+ 	+u 	+ 	+ 	+ --'7Q-??w'.66!;;;;;;ro   c                   t          ddddgddggfidddgfddgd	          }t          j                            ddgddggdd
g          }t          ddg dfid|i	          }d|d         j        d<   d|d         j        d<   |                    dd
g          }t          ||           t          |j                  g dk    sJ |                    dg          }t          ||           |                    d          }t          ||           |                    dd
g          }t          ||           t          j                            ddgddggd
dg          }t          ddg dfid|i	          }d|d         j        d<   |                    d
dg          }t          ||           t          |j                  g dk    sJ d S )Nr   rb  r   r>   r=   r@   r   r   ru  r   r   rd  r{  r  r  r  r  .).)r   r=   r>   r@   )rd  r   r   )	r   rt   r   r   r   r  r(   r  r  r   r   	exp_indexr&  r'  s        rm   
test_stackzTestDataset.test_stack  s6   Z1a&1a&)9:;1vc3Z88
 
 

 M..Ac
/CCQT:.VV	S,,,/0#
 
 

  %3e%*E"S#J''6***FO$$7777SE""6*** F##6*** S#J''6***M..c
QF/CCQT:.VV	S,,,/0#
 
 
 &+E"S#J''6***FO$$777777ro   zcreate_index,expected_keysr  Nc                    t          ddddgddggfidddgfddgd	          }|                    dd
g|          }t          |j                  |k    sJ d S )Nr   rb  r   r>   r=   r@   r   r   ru  r   rd  create_index)r   r  r  r  )r   r  expected_keysr   r'  s        rm   test_stack_create_indexz#TestDataset.test_stack_create_index  s     Z1a&1a&)9:;1vc3Z88
 
 

 S#J\BBFO$$555555ro   c                   t           j                            ddgddggd          }t          j        ddddgdd	gd
dgddggfi|ddgd          }t	          ddg dfidt          j        |j        d          fdt          j        |                    d          d          fdt          j        |                    d          d          fdg ddz  fd          }|	                    ddgd          }t          ||           t          |j                  dk    sJ t          j        t          d          5  |	                    ddgd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r>   )lvl1lvl2r   rb  r=   r@   r\  r]  r^  r_  ru  rd  )r   r>   r=   r@   r\  r]  r^  r_  r  r  )r   r>   r   r>   )r   r  r  r   r   r   Fr  z"cannot create.*wraps a multi-indexrX  T)rt   r   r   r|   r   rq   repeatr   rW  r  r(   r#  r  rg  rh  r   )r   r  r   r&  r'  s        rm   test_stack_multi_indexz"TestDataset.test_stack_multi_index  s   }))C:1v*>FV)WWZZ1a&1a&1a&1a&)IJKQF++
 
 
 S":":":;<29T[!445bi(=(=f(E(EqIIJbi(=(=f(E(EqIIJ<<<!+,	 
 
 
 S#JU;;6***6?##q((((]:-RSSS 	6 	6HHSzH555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   >E%%E),E)c                   t          ddddgddggfidddgfddgd	                              d
          }t          j                            ddgddggd
dg          }t          ddg dfid|i	          }|                    ddg          }t          ||           t          |j                  g dk    sJ d S )Nr   rb  r   r>   r=   r@   r   r   ru  xxr  r   r   rd  r{  r  )rd  r  r   )	r   r  rt   r   r   r  r(   r  r  r  s        rm   test_stack_non_dim_coordsz%TestDataset.test_stack_non_dim_coords  s   Z1a&1a&)9:;1vc3Z88
 
 
 ++

 	
 M..Ac
/CDRU;.WW	S,,,/0#
 
 

 S#J''6***FO$$(8(8(8888888ro   c                d   t           j                            ddgddggddg          }t          ddg d	fid|i
          }t          dddgddggfddgddgd          }d|d         j        d<   d|d         j        d<   ddgd fD ]'}|                    |          }t          ||           (d S )Nr   r>   r   r   r   r   r   rd  r{  ru  rb  r=   r@   )r   r   r   r  r  )rt   r   r   r   r   r  r(   )r   r  r   r&  r  r'  s         rm   test_unstackzTestDataset.test_unstack  s    **QFS#J+?Sz*RRc<<<%893,OOOAA/01vS#JOO
 

  %3e%*E"#% 	/ 	/CZZ__FVX....	/ 	/ro   c                N   t          dg 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            d S # 1 swxY w Y   d S )Nr   ra  zdoes not contain the dimensionsrX  r  z%.*do not have exactly one multi-index)r   rg  rh  r   r  r  s     rm   test_unstack_errorszTestDataset.test_unstack_errors   s   c999%&&]:-OPPP 	 	JJu	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:-UVVV 	 	JJsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AAA7BB!Bc                   t          j        dt          j        d          fdt          j        dd          fdg ddz  ddgdz  d	gdz  z   fd
          }|                    g d                              ddg          }|                    dd          }|                    d                              d                              t                    }|d         j
        t          k    sJ t          ||           |d                             dd          }|d                             d                              d                              t                    }t          ||           |                    dddd          }|                    d                              ddd                              t                    }t          ||           d S )Nr  r^  r@   rz  )r  	other_varr?   r=   r   r   rb  r   r   r=   r@   r\  r   r   r  r  r  r\  r  r>   )r|   r   rq   re  rH  r  r  rJ  r~   intrH   r'   )r   r   r  r  r  r  r  r  s           rm   test_unstack_fill_valuez#TestDataset.test_unstack_fill_value'  s   ZRYq\\*&")Aq//9RSS"Qfseai3%!)6K-LMM
 
 

 WW|||W$$..c3Z.@@**W*44JJw''..r2299#>>	u~#s****Wi(((U)##G#;;uI%%g..55b99@@EE	Wi(((**W!1L1L*MMJJw''..r/J/JKKRRSVWW	Wi(((((ro   c           
        t          j        ddt          j        d          fig ddz  ddgdz  dgdz  z   fd	
          }|                    g d                              ddg          }|                    dd          }|                    d          }t          |d         j        t                    sJ |d         j
                                                            |d         j
                  sJ |d         j        j        dk     sJ |d                             dd          }|d                             d          }t          |j        t                    sJ |j
                                                            |j
                  sJ |j        j        dk     sJ t          j                            t          j        d          t          j        d          gddg          }t          ddt          j        d          fi|t          j        d          t          j        d          d
          }|                    dd          }t          |d         j        t                    sJ t          j        ddt          j        t          j        dd          d          fit          j        d          t          j        d          t          j        d          t          j        d          d
          }	|d         j                                        |d         _        t+          |	|           d S )Nr  r  r^  r?   r=   r   r@   r   rb  r   r  r   r   r  r  Tr8   r  r   )rd  r  r  r  r\  r]  r   )r8   r?  )r  r  r   r   )r\  r]  r@   r@   )r|   r   rq   re  rH  r  r  r   rg   sparse_array_typer  	_to_denser  densityrt   r   r  r$  broadcast_toeyetodenser'   )
r   r   r  r  r  r  r   ds_eyer  r  s
             rm   test_unstack_sparsezTestDataset.test_unstack_sparse<  s   ZVRYq\\*+"Qfseai3%!)6K-LMM
 
 

 WW|||W$$..c3Z.@@**WT*22JJw''	'%.-/@AAAAAu~&002299)E:J:STTTTTu~"*S0000U)##GD#99uI%%g..	',(9:::::))++2293EFFFFF|#c))))**Yq\\29Q<<(c
 + 
 
 ("')*<*<=>	!RYq\\JJ
 
 
 ...;;'%.-/@AAAAAJ,OBF1aLL,?? y||y||Yq\\Yq\\	 
 
 
	 &en199;;Y(((((ro   c                r   t          dddgfdddgddggfddgddgd	          }|                    dd
g                              d          }|                    |          sJ |dg                             dd
g                              d          }|                    |dg                   sJ d S )Nr   r   r>   rb  r=   r@   r   r   )r   r   r   r   r   r  rd  )r   r  r  r)  r$  r   r   r'  s      rm   test_stack_unstack_fastz#TestDataset.test_stack_unstack_fastk  s    Aq6] Aq6Aq6"23V3Z	 
 
 S#J''//44&&r*****SEC:..66s;;C5	*******ro   c                   t          dddgfdddgddggfdddgdd	gd
          }|                    ddg          }|                    t          d d d                                        d          }|                    |          sJ |d	g                             ddg          }|                    t          d d d                                        d          }|                    |d	g                   sJ d S )Nr   r   r>   rb  r=   r@   rZ  r   r   ru  r   r  r  rd  )r   r  rH  rI  r  r)  r$  )r   r   r  r'  s       rm   test_stack_unstack_slowz#TestDataset.test_stack_unstack_slowz  s%   Aq6] Aq6Aq6"23  QsCj11
 
 
 ((c3Z(((dD" 5 566>>sCC&&r*****cU)//S#J///dD" 5 566>>sCCC5	*******ro   c                    t          j        dg dg dgfdddgfddg d	i
          }t          j        t                    5  |                    ddg           d d d            d S # 1 swxY w Y   d S )Nrb  r?   r  r   r^  r_  rZ  r   )r3  r   wru  featuressample_dims)r|   r   rg  rh  r   to_stacked_arrayr4  s     rm   )test_to_stacked_array_invalid_sample_dimsz5TestDataset.test_to_stacked_array_invalid_sample_dims  s    z')))YYY)?@aQRV}UU)
 
 
 ]:&& 	A 	A!!*3%!@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   A))A-0A-c                    d}t                      \  }}t          j        ||d          }dg}|                    d||          }|j        |k    sJ d S )Nadf9drZ  r   r  r   )r   r|   r   r  r   )r   r   r   r   Dr  r   s          rm   test_to_stacked_array_namez&TestDataset.test_to_stacked_array_name  sc     )**1JQQ''((ez;TBBv~~~~~~ro   c                    t                      \  }}t          j        ||d          }dg}|                    d|          }|j        d                                         j        d         j        |j        j        k    sJ |j	        dk    sJ d S )NrZ  r   r  r>   )r   r  )
r   r|   r   r  r  r  levelsrH   r   rZ   )r   r   r   r  r  r   s         rm    test_to_stacked_array_dtype_dimsz,TestDataset.test_to_stacked_array_dtype_dims  s    (**1JQQ''((ez;77z*%5577>qAG139TTTTv*******ro   c                ~   t          j        t          j        d          dg dfg          }t          j        ||d          }|                    ddg          }|                    d          }t          ||           t                      \  }}t          j        ||d          }dg}|                    d|          	                    dd          }	|	                    d          }
t          ||
           |	d	                             d          }|
                    d	
          }t          ||           d S )Nr@   r   r?   r   rZ  r   r  r  r   r  )r|   r   rq   re  r   r  to_unstacked_datasetr(   r   r  rH  )r   r  rg   r  	unstackedr   r   r  r  r   r   x0d0s                rm   *test_to_stacked_array_to_unstacked_datasetz6TestDataset.test_to_stacked_array_to_unstacked_dataset  s5   l29Q<<#yyy1A0BCCCz#..//''#'??0055	D))) )**1JQQ''((ez;77AA#zRR"":..A qT&&z22VVaV[[R     ro   c                    t                      \  }}dg}t          j        ||                    d          d          }|                    d|          }|                    d          }t          ||           d S )Nr   r   rt  rZ  r  )r   r|   r   rH  r  r  r(   )r   r   r   r  r  r   r   s          rm   >test_to_stacked_array_to_unstacked_dataset_different_dimensionzJTestDataset.test_to_stacked_array_to_unstacked_dataset_different_dimension  sy    (**1eJQQVVaV[[1122z;77"":..Aro   c                   t          d          }|                                }t          dt          j        d                    }|}|                    d|i           ||d<   t          ||           |                                }|                    |           t          ||           t          ddi          }|                                }|                    |           t          ||           d S )	Nr   r  r  ry  r  newattrr  )r*   r   r   rq   re  r  r(   r   )r   rg   r&  r  r'  others         rm   test_updatezTestDataset.test_update  s    Q'''99;;	!--vtn%%%6***d6***ufo...e6*****ro   c                t   t          ddddgfiddi          }|                    t          ddi                     t          ddddgfiddi          }t          ||           t          ddddgfiddi          }|                    t          d	d
iddi                     t          dddgfd
dddi          }t          ||           t          ddddgfiddi          }|                    d	t          d
ddi          i           t          dddgfd
dddi          }t          ||           d S )Nr   r   r>   r=   r   r@   r\  r   r  r]  )r   r  )r   r  r(   r   r   rg   r&  s      rm   test_update_overwrite_coordsz(TestDataset.test_update_overwrite_coords  sn   cAq6]+c1X66GC8,,,---C#1v/#q::x(((cAq6]+c1X66GS!Hc1X666777#1vQ77#qBBx(((cAq6]+c1X66S)AsAh7778999#1vQ77#qBBx(((((ro   c                    t                      }t          j        t          d          5  |                    dt          d          i           d d d            d S # 1 swxY w Y   d S )Nr  rX  r   r\  )r   rg  rh  r   r  r  r4  s     rm   test_update_multiindex_levelz(TestDataset.test_update_multiindex_level  s    %'']O
 
 
 	/ 	/ KKE!HH-...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   %AA #A c                   t          ddddgfidddgi          }t          dddgfdt          j        dgfddddgi          }|                                }ddgfdgd	}t	          j        t          d
          5  |                    |           d d d            n# 1 swxY w Y   |                    t          |                     t          ||           |                                }t          ddgfdgd	          }|                    |           t          dddgfdt          j        gdz  fddddgi          }t          ||           d S )Nr   r%  r@   r\  r   r>   r]  rb  )r   r%  rW  rX  r  r=   )	r   rq   r  r   rg  rh  r   r  r(   )r   r   r  r  other1r  other2r  s           rm   test_update_auto_alignz"TestDataset.test_update_auto_align  s   cC!Q=)C!Q=99A-sRVQK&899C!Q=
 
	 ''))aSz,,]:-ABBB 	# 	#NN6"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#wv'''G,,,''))aSz6677vA-sRVHqL&9::S1a&M
 
	 	G,,,,,s   <BB"%B"c                   t                      }t          |d         t                    sJ t          |d         j        |j        d                    t          j        t                    5  |d          d d d            n# 1 swxY w Y   t          j        t                    5  |ddg          d d d            n# 1 swxY w Y   |ddg         }t          |d         |d         d          }t          ||           |d         }t          |d         j        |d         |d         ddd          }t          ||           |t          d	
                   }|                    d	
          }t          ||           d S )Nr  notfoundr  r>  r  r  )r  r  r  r   rP  )r*   r   r   r'   r  r   rg  rh  r  r   r(   rv  rH  )r   rg   r  r  r  r  r  r  s           rm   test_getitemzTestDataset.test_getitem  s   !!$v,	22222T&\*DN6,BCCC]8$$ 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	]8$$ 	' 	'&*%&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' '(T&\4<HHII	Y(((y/O$&\d9o>>	
 
 
	 	G,,,t|||$II1I%%	G,,,,,s$   +	B  BB$B;;B?B?c                   t                      }|d         dz   |d<   |d         dz   }d|_        t          ||d                    t          j        t
          d          5  |d          d d d            d S # 1 swxY w Y   d S )Nr  r>   rB  z('var1', 'var2')rX  r>  )r*   r   r(   rg  rh  r  r  s      rm   test_getitem_hashablez!TestDataset.test_getitem_hashable  s    !!F|a'V<!#4<000]8+>??? 	# 	#!""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s    	A66A:=A:c                l    ddg}t          d |D                       }t          |||                    d S )Nr  r>   c                2    i | ]}|d t          d          fS )dim0r>   )r  )rk   r   s     rm   r   z;TestDataset.test_getitem_multiple_dtype.<locals>.<dictcomp>*  s%    CCCs3q 2CCCro   )r   r(   )r   r  rK  s      rm   test_getitem_multiple_dtypez'TestDataset.test_getitem_multiple_dtype(  sA    qzCCdCCCDD'$-00000ro   c                f   t          ddt          d          fi          }t          t          d          dd          }|d         }t          ||           t	          |j        t                    sJ |ddg         }|                    t          d                    }t          ||           d S )Nr  r   r   r  r  )r   r  r   r(   r   r  r   rq  )r   rK  r  r  r  r  s         rm   %test_virtual_variables_default_coordsz1TestDataset.test_virtual_variables_default_coords-  s    53b		"2344eBiic<<<	#,G,,,'*M:::::3,'))E"II)66	G,,,,,ro   c           	        t                      }t          |d         j        |j        d                                         j                   t          |d         j        d           t          |d         dz   dt          j        d          z              t          t          j        |d                   t          j        dt          j        d          z                        t          i d	|d         i          }|dg         }t          ||           t          d
dt          j        dd          fi          }|d         dk                                    sJ d S )Nz
time.monthrW   ztime.seasonDJFr  r>   r=   r   	dayofyearr%  r   rA   r@   rB   zt.year  )r*   r&   r   r   r  monthrq   re  sinr   r'   rt   ru   r   )r   rg   r&  r'  r   s        rm   test_virtual_variables_timez'TestDataset.test_virtual_variables_time8  sA   !!%t~f'='F'F'H'H'N	
 	
 	
 	4.5u===4 01A5q29R==7HIII26$'7"89926!biPRmmBS;T;TUUU2T2B-CDEE'()Xv&&&cC|Q!G!G!GHIJJ8$))+++++++ro   c                    t          j        ddd          }t          d|i          }|d         }t          |j        d|fgd          }t          ||           d S )NrA   Hr]  )r2  rC   rW   z	time.timer   )rt   ru   r   r   rW   r(   )r   r  rg   r'  r&  s        rm   test_virtual_variable_same_namez+TestDataset.test_virtual_variable_same_nameJ  sf    la@@@''k"UZ65/):HHH*****ro   c                    t          dt          j        ddd          i          }dgdz  dgd	z  z   d
gd	z  z   dgd	z  z   dgz   }t          ||d                    d S )Nr%  rA   r  Mr1  r  r=   MAMr@   JJASONzt.season)r   rt   ru   r&   )r   r   seass      rm   test_time_seasonzTestDataset.test_time_seasonR  sr    c2=rLLLMNNw{eWq[(E7Q;6%1DwN4J00000ro   c           
        t                      }t          |d         d d         j        t          dgdt	          j        d          z                        t          |d         d         j        t          g d                     d S )Nr  r   rW   r>   r   )r*   r'   r  r   rq   re  r4  s     rm   test_slice_virtual_variablez'TestDataset.test_slice_virtual_variableW  s~    !!!"3B3'0(F8QSUEV2W2W	
 	
 	
 	T*+A.7"aIIIIIro   c                (   t          dgt          j                            d                    }t	                      }||d<   |                                }||d<   t          ||           d|d         z  }|j        |d<   ||d<   t          ||           t          j	        t          d          5  |j                            dd          |d	<   d d d            n# 1 swxY w Y   |j        |d	<   d	|j        f|d	<   t          ||           d
|d<   g d
f|d<   t          ||           t          j	        t          d          5  dg df|d<   d d d            n# 1 swxY w Y   t          j	        t          d          5  |d         d d         |d<   d d d            n# 1 swxY w Y   d|d         z  |d<   t          |d         d|d         z             t          j	        t          d          5  t          j                    |d<   d d d            n# 1 swxY w Y   |ddg         }|j                            d
          |d<   |                                }d}t          j	        t          |          5  d
|j        d<   d d d            n# 1 swxY w Y   d}t          j	        t          |          5  |ddi         |ddi<   d d d            n# 1 swxY w Y   d}t          j	        t          |          5  d|dd
i<   d d d            n# 1 swxY w Y   d}t          j	        t          |          5  |ddi         |dd i<   d d d            n# 1 swxY w Y   d!}t          j	        t(          |          5  |ddgi         |ddi<   d d d            n# 1 swxY w Y   d"}|d         j        |d<   t          j	        t          |          5  |dddgi         |dddgi<   d d d            n# 1 swxY w Y   |d         j        |d<   d#}t          j	        t          |          5  |dg d$i         |dddgi<   d d d            n# 1 swxY w Y   d%}t          j	        t          |          5  |d         dddgi         j        |dddgi<   d d d            n# 1 swxY w Y   |                    t.                    }|d         |d&<   d'}t          j	        t          |          5  d|ddi<   d d d            n# 1 swxY w Y   d|dd
i<   |ddi         |ddi<   d(|j        dd)i<   |j        dd*i         |j        dd+i<   |                                D ]\  }	}
||	         }t3          |dd
i         d           t3          |ddi         |
ddi                    t3          |j        dd)i         d(           t3          |j        dd+i         |
j        dd*i                    g d,}t          |j        d|i         |
j        d|i                    d S )-Nr  ry  rk  r=   r0  z without explicit dimension namesrX  r\  rl  r   scalarr`  r  newvarzconflicting dimension sizesr]  r@   z'Cannot assign a Dataset to a single keyr  r  r  rP  r  zGcan only set locations defined by dictionaries from Dataset.loc. Got: ar   zQVariables \['A', 'B', 'scalar'\] in new values not available in original dataset:r  r>   z2Variable 'var3': indexer {'dim2': 0} not availabler  z3Variable 'var1': indexer {'dim2': 10} not availabler   z7Variable 'var1': dimension 'dim2' appears in new valueszFVariable 'var2': dimension order differs between original and new dataz9cannot align objects.*not equal along these coordinates.*r  zBDataset assignment only accepts DataArrays, Datasets, and scalars.var4z&could not convert string to float: 'a'r  r  r  r  )r  r        @g      @      @)r   rq   rr   r  r*   r   r(   r  rg  rh  r   r   rf  r'   ri  r|   r   r  rH  r  r  r  r~   r>  r   r&   )r   r  r,  r&  dvdata3data4err_msgdata5r   dat3dat4	unchangeds                rm   test_setitemzTestDataset.test_setitem^  s	   x!3!344 ""c


c
&&&s^[c
c
&&&]:-PQQQ 	2 	2++Aq11E#J	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 Zc
3:&c
&&&hq'h&&&]:-JKKK 	4 	4'3E(O	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 ]:-KLLL 	. 	.!&M"1"-E&M	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. s^c
U3ZU3Z000]9,UVVV 	& 	&E#J	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& vv&'
Q//f

U 	 ]9G444 	 	EIcN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	f]:W555 	4 	4!&{!3E61+	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4F]:W555 	% 	%!$E61+	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%G]:W555 	5 	5"'"4E62,	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5K]87333 	6 	6!&}!5E61+	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 U 	 ff]:W555 	> 	>&+VaV,<&=E6Aq6"#	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>ffN]:W555 	A 	A&+VYYY,?&@E6Aq6"#	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	AV]9G444 	M 	M&+FmVaV4D&E&LE6Aq6"#	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	MS!!ff:]:W555 	% 	%!$E61+	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% !vqk"FA;/vqk#&	63- #(9fc]#;	63- {{}} 		 		GAt8DtVQK0#666tVQK0${2CDDDtx6<<<tx6&#8OPPP111I&),-tx8K/L   		 		s   0CC"C
EE E?FF#&F#2HHH9JJJ8KKK<LLL8MMM<NN NO11O58O5)Q		QQ1RR #R )S==TTc                    |                                  }t          j        d          |d<   |                                }|d                                         |d<   t          ||           d S )Nr@   r   r  )r  rq   re  r   r  r'   r   r   ds_copys      rm   test_setitem_pandaszTestDataset.test_setitem_pandas  s`    ++--)A,,3''))E,,..R!!!!!ro   c                   t                      }dt          d          f|d<   dt          j        d          z   |d<   t          dt          d          fdt          j        d          z   d          }t	          ||           t          t          d          d          |d<   t          ddt          d          fidt          d          i          }t	          ||           t          ddgdddgfg	          |d<   t          ddddt          j        gfidt          d          i          }t	          ||           d
|d<   t          d
t          d          d          }t	          ||           t          g ddg dfg	          |d<   t          ddg dfidt          d          i          }t	          ||           d S )Nr   r@   r   r>   rb  rs  r=   r   r   r  r\  r]  r^  r_  r{  r\  r]  r^  )r   r  rq   re  r(   r   r  r   r   r&  s      rm   test_setitem_auto_alignz#TestDataset.test_setitem_auto_align  s   YYa/3bill"3#uQxxq29Q<<7GHHIIX&&&E!HH3///3C#uQxx1Cq?CCX&&&QFS1a&M?;;;3C#1bf~!67#uQxxIIX&&&3%((3344X&&&LLL32E1FGGG3C#yyy!12S%((ODDX&&&&&ro   c                   t          j        dg di          }|d         d d         |d<   t          dddgi          }t          ||           t          j        dg di          }t          j        ddg          |d<   t          ||           t          j        dg di          }ddg|j        d<   t          ||           d S )Nr   r?   r=   r   r>   )r|   r   r(   rq   rv   rY   r  s      rm   test_setitem_dimension_overridez+TestDataset.test_setitem_dimension_override  s    Ziii())S'"1"+3C!Q=))X&&&Ziii())(Aq6""3X&&&Ziii())Q	#X&&&&&ro   c           	        t                      }t          t          j        d          dddt          j        d          fi          }|                                }|                    d          |d<   |                                }||d<   t          ||           d|j        v sJ |d                             t          dd                    }dt          j        d	          f|d<   |                                }||d<   d|j        v sJ |                                }|d                             t          dd                    |d<   t          ||           |d                             t          dd                    }dt          j        d	          f|d<   dt          j        d	          f|d
<   |                                }||d<   d
|v sJ d
|j        v sJ |                                }|d         }d|d<   ||d<   |d         d         dk    sJ t          ddg dfig ddg dfdg dfd          }|d         dz  |d<   t          j        |d         g d          sJ d S )Nr   r  r  rc  r  r>   r  r  ry  positionr   r  r   ra  r?   )r   z1z2r   r=   )r=   r\  r^  )r*   r   rq   re  r   rQ  r(   rY   rH  rI  r   r  )r   r   r  r&  r'  s        rm   test_setitem_with_coordsz$TestDataset.test_setitem_with_coords  s   IbMM	FBIbMM;R/S
 
 
 7799 ??955v6***EL(((( 6
U1b\\22"BIaLL1ivEL((((7799f:??a?==6*** 6
U1b\\22"BIaLL1i#RYq\\2jvV####U\)))) y!a!yi #r)))) S)))$%"3			*:3			BRSS
 
 
 uIM5	{2e9iii0000000ro   c                    t          ddg dfidg di          }t          g ddg dfg          |d<   t          dg dfdt          j        ddgfd	dg di          }t	          ||           d S )
Nr  r   ra  r?   r  r  r=   r@   r  )r   r   rq   r  r(   r  s      rm   test_setitem_align_new_indexesz*TestDataset.test_setitem_align_new_indexes  s    ec999-.iii0@AAiii3			*:);<<5	)))$cBFAq>-BCCc999EU
 
 	X&&&&&ro   c                    t          j        dt          j        ddg|          i          }t          j        t          j        ddg          dg          |d<   t          j        |j        j        |          sJ d S )Nr   r   rG   r   r   rs  r  )r|   r   rq   rv   r   
issubdtyper   rH   )r   rH   r   s      rm   test_setitem_str_dtypez"TestDataset.test_setitem_str_dtype   sv    ZRXsCj%F%F%FGHHHL1a&!1!1>>>5	}RTZ///////ro   c                   t          dgt          j                            d                    }t          dgt          j                            d                    }t	                      }|                                }||d<   ||d<   ||g|ddg<   t          ||           d|ddg         z  }d |j                                        D             |ddg<   ||ddg<   t          ||           d S )	Nr  ry  rk  r0  r=   c                    g | ]	}|j         
S r   )r  )rk   r  s     rm   r  z7TestDataset.test_setitem_using_list.<locals>.<listcomp>4  s    HHHQajHHHro   rl  r  )	r   rq   rr   r  r*   r   r(   rb   r   )r   r  r  r'  r&  r  s         rm   test_setitem_using_listz#TestDataset.test_setitem_using_list(  s    ")//!"4"455")//!"4"455!##;;=="D\Sz***3*%%HH",2E2E2G2GHHHSz!#s*****ro   zvar_list, data, error_regexrk  r0  r  ry  zDifferent lengthszEmpty list of variableszassign single DataArrayc                    t                      }t          j        t          |          5  |||<   d d d            d S # 1 swxY w Y   d S )NrX  )r*   rg  rh  r   )r   var_listrg   error_regexr'  s        rm   test_setitem_using_list_errorsz*TestDataset.test_setitem_using_list_errors8  s     "##]:[999 	$ 	$#F8	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   =AAc                   t                      }|                    g dd          }t          g ddd          }t          ||           t          |j                  ddgk    sJ t          |t                                 |                    d           }t          dg dfg dd	          }t          ||           |                    d
          }t          ddg dfidg dd          }t          ||           d S )Nr?   r=   rb  r   r   c                    | j         dz  S Nr=   r  r:  s    rm   r:  z)TestDataset.test_assign.<locals>.<lambda>Q  s    BD!G ro   rt  )r   r>   r\  r  r  )rd  r   )r   rC  r(   r  r   rq  rG  s       rm   test_assignzTestDataset.test_assignI  s   YYYYY!,,3344***F$%%#s3333WYY'''!3!344#yyy!1			BBCC***%%%**C#yyy!12!)))4L4LMM*****ro   c                   t                      }|                    g dd          }|                    t          d                    }t          t          d          dd          }t	          ||           |                    g dddg          }|                    ddd	gi          }|                    g ddd	g          }t	          ||           d S )
Nr?   r=   rb  r   r  r@   r   r  r  )r   rC  rq  r  r(   rG  s       rm   test_assign_coordszTestDataset.test_assign_coordsY  s    YYYYY!,,%%U%44e15566***YYY1a&11%%sS#J&78899yyyS#J977*****ro   c                b   t          t          dd                    }t                      }|                    dd          }t          ||           |j        i k    sJ d|j        d<   |                    ddi          }t          ||           |j        t          dd          k    sJ d S )Nr>   r=   rZ  r  r@   r  )r   rv  assign_attrsr(   r   )r   r&  r  r'  
new_actuals        rm   test_assign_attrszTestDataset.test_assign_attrsf  s    Q000ii!!A!++***yBs((#q22
X...|ta1~~~------ro   c                   t                      }t          j        t          d          5  |                    t          d                     |                    t          d                     d d d            d S # 1 swxY w Y   d S )Nr  rX  r\  )r   )r   rg  rh  r   rC  r  rq  r4  s     rm   test_assign_multiindex_levelz(TestDataset.test_assign_multiindex_levelr  s    %'']O
 
 
 	1 	1 KKaK)))uQxx000		1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   AA>>BBc                   t                      }t          j        t          d          5  |                    t          d                     d d d            n# 1 swxY w Y   t          j        t          d          5  |                    t          d                     d d d            n# 1 swxY w Y   |                    t          d                    }t          |j                  dk    sJ d S )Nz Updating MultiIndexed coordinaterX  r\  r  r>   )	r   rg  rV  r  rq  r  rC  r#  rY   )r   rg   updateds      rm   &test_assign_coords_existing_multiindexz2TestDataset.test_assign_coords_existing_multiindexz  s[   %''\-/RSSS 	+ 	+q***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ \-/RSSS 	$ 	$KK%((K###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ $$uQxx$007>""a''''''s#   $AA!A $B00B47B4c                    t                      }|                    t          d          t          d          t          d                    }|j        d         |j        d         cxur|j        d         usn J d S )Nr\  r  r   r   r   )r   rC  r  r  )r   rg   r'  s      rm   !test_assign_all_multiindex_coordsz-TestDataset.test_assign_all_multiindex_coords  s    %''uQxxq588LL OC ?9-. . . .?9-. . . . . . . .ro   c                    G d dt                     }t          dg di                              d                              d|          }|                    g d          }t          |j        d         |          sJ d S )Nc                      e Zd ZdS )LTestDataset.test_assign_coords_custom_index_side_effect.<locals>.CustomIndexNr  r   ro   rm   CustomIndexr=    r  ro   r>  r   ra  r   r  rt  )r   r   r  r  rq  r   r  )r   r>  r   r'  s       rm   +test_assign_coords_custom_index_side_effectz7TestDataset.test_assign_coords_custom_index_side_effect  s    	 	 	 	 	+ 	 	 	 C+,,,\#Z[)) 	
 !!III!..&/#.<<<<<<<ro   c                4   t                      }t          ddddgfi          }t          j        t          d          5  |                    |           d d d            n# 1 swxY w Y   t          ddt          d          fi          }t          j        t          d          5  |                    |           d d d            n# 1 swxY w Y   t          ddt          d          fi	          }t          |                    |          |           d S )
Nr   r   r   r>   z.*conflicting dimension sizes.*rX  r\  z)unable to determine.*coordinates or not.*r   )r   r   rg  rh  r   r  r  r(   )r   rg   r  s      rm   test_merge_multiindex_levelz'TestDataset.test_merge_multiindex_level  s   %''S1a&M233]:-OPPP 	 	JJu	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 S%((O455]J
 
 
 	 	 JJu	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Cq?;<<<E**D11111s#   A!!A%(A%'C		CCc                f   t          ddt          j        d          fidg di          }t          ddt          j        d          fidt          d          i          }|                                }t          t          d                    |d<   t          ||           |                                }dt          t          d                    f|d<   t          ||           |                                }t          t          d                    |j        d<   t          ||           d S )Nrg   r   r]  )r   r>   r=   r   r>   r   )r   rq   re  r  r   r  r(   rY   rE  s       rm   &test_setitem_original_non_unique_indexz2TestDataset.test_setitem_original_non_unique_index  s    FS")A,,$78#AWXXXFS")A,,$783a/JJ588nns***DqNN+s***!%((^^c*****ro   c           	     N   g d}t           j                            ddd          }t          |g d|t	          d          t	          d          g          }t          ||d          }|                    d	                                          }||d
<   t          ||           d S )N)joaquinmanolorE  r      )r@   r\  r\  )r   rowcolumnr\  rc  )firstsecondrJ  rK  )	rq   rr   randintr   r  r   r%  r  r(   )r   r   r   rv   r&  r'  s         rm   "test_setitem_both_non_unique_indexz.TestDataset.test_setitem_both_non_unique_index  s    000""1c955222E588USTXX;V
 
 
 Ue<<==g&&1133 x6*****ro   c                    t                      }t          j        t          d          5  t	          d          |d<   d d d            d S # 1 swxY w Y   d S r  )r   rg  rh  r   r  r4  s     rm   test_setitem_multiindex_levelz)TestDataset.test_setitem_multiindex_level  s    %'']O
 
 
 	' 	' $AhhDO	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A

AAc                   t                      }t          |j                  }t          |j                  |k    sJ |d= t          |j                  |dhz
  k    sJ |d= t          |j                  |ddhz
  k    sJ d|j        vsJ t	                      }t	          ddddgfi          }|d= t          ||           d S )Nr  r  r   r   r>   r=   )r*   r   r   rY   r   r(   )r   rg   	all_itemsr&  r'  s        rm   test_delitemzTestDataset.test_delitem  s    !!''	4>""i////L4>""i6(&:::::O4>""i692E&EEEEE++++99#aV}-..3K6*****ro   c                    t                      }t          j        t          d          5  |d= d d d            d S # 1 swxY w Y   d S )Nz)cannot remove coordinate.*corrupt.*index rX  r   )r   rg  rh  r   r4  s     rm   test_delitem_multiindex_levelz)TestDataset.test_delitem_multiindex_level  s    %'']J
 
 
 	  	  Y	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   ;??c                   t          dg ddgdgggfi          }g dggddggg}|D ]kfdt          fd|j                                        D                       }|                    |j                  }t          | |j                    lt          j        t          d	
          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr  r  r>   r=   r   rd  c                b    r+t          d                   t          | j                  z  gng S )Nr   )r   rZ   )r   r   s    rm   get_argsz*TestDataset.test_squeeze.<locals>.get_args  s-    7;CDGs16{{233Cro   c                >    i | ]\  }}| |j          |           S r   )rA  )rk   r   r   rW  s      rm   r   z,TestDataset.test_squeeze.<locals>.<dictcomp>  s0    OOO1IAIxx{{+OOOro   zcannot select a dimensionrX  r   )
r   r   r   r  rY   r(   rA  rg  rh  r   )r   rg   	test_argsr&  r   rW  s       @@rm   test_squeezezTestDataset.test_squeeze  sa   A3*>?@@!#seWSzl ;	 		< 		<DD D D D D OOOO8L8L8N8NOOO H  **4;77HX|t|T':;;;;]:-IJJJ 	 	LL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   0CCCc                   t          dddgfiddgi          }t          ddi          }|                    d          }t          ||           t          ddiddi          }|                    d          }t          ||           t          dddggfidgdgd          }t          ddi          }|                    d          }t          ||           t          dddgfiddgi          }|                    d	d
          }t          ||           t          ddg fidg i          }|                    d          }t          ||           d S )Nr  r   r>   r   Tr  Frb  r   )r  r  r  )r   rA  r(   r  s       rm   test_squeeze_dropzTestDataset.test_squeeze_drop  sw   aSz*S1#J77E1:&&<<T<**8,,,E1:Qx00<<U<++8,,,
aSE23A3aS5I5IJJE1:&&<<T<**8,,,EC!:.qc
;;<<Cd<338,,,|,sBi88<<T<**x(((((ro   c                |   t          ddg dfdddiddi	          }g d
g dg}dddgd}d}t          ||||j                  }|                                }t	          ||           |                    dd          }|                    ddi                              d          }t	          ||           d S )Nr>   r   ra  rZ  r  r  Conventionsr   r<  r  r   r   )r  r  )r  r   r  r   r  r   r  )r   r   r   to_arrayr(   r%  )r   r   rg   rY   rZ   r&  r'  s          rm   test_to_arrayzTestDataset.test_to_array  s    3			*++9 &)
 
 

 		999%Sz22 T64rx@@@6***U//??J#677>>uEE6*****ro   c                .   t           j                            d          }t           j                            d          }t          d          }t	          d|fd|fd|fd          }t          j        t          j        ||g          j        ddgt          j	        |d                    }|
                                }|                    |          sJ ||f            |                    d          
                                }|                    |          sJ ||f            t          |t	          j        |                     t           j                            d	d
          }t	          dd|fi          }dt          d          f|d<   t
          j                            g dg dgddg          }t          j        |                    d          dg|          }|
                                }|                    |          sJ t          |                    ddg          t	          j        |                     ddg}	|
                    |	          }|                    |          sJ ddg}	t
          j                            g dg dgddg          }t          j        |                                                    d          dg|          }|
                    |	          }|                    |          sJ dg}
t)          j        t,          d          5  |
                    |
           d d d            n# 1 swxY w Y   ddg}
t)          j        t,          d          5  |
                    |
           d d d            n# 1 swxY w Y   t          j        dg          }t	          j        |          }t	          dddgfiddgi          }t          ||           t          j                    }t	          j        |          }t	          dg i          }t          ||           t          j        dg i          }t	          j        |          }t	          dt/          g d !          idg i          }t          ||           t	          t          j	        d"g          dt          j        dgd#          fd$                              d          }|
                                j        d d ddgf         }t          j        dd"ggt          j	        dgd          ddg%          }|                    |          sJ ||f            t	          t          j        dgd#          t          j        dgd#          d          }|
                                }t
          j                            dgdggddg          }t          j        g g|           }|                    |          sJ ||f            d S )&Nr   r$  r%  r&  r   r   r   )columnsr  r=   r@   r  rb  r   r   )r   r   r   r>   r>   r>   )r   r   r  r   r   r  r   r   r  r   r>   r  )	dim_order)r   r   r   r   r  r  )r   r>   r   r>   r   r>   z,does not match the set of dimensions of thisrX  rd  r  r   rk  r  rs  r  r  )r   r   )r  rb  )rq   rr   r  r  r   rt   r  rv   r  r   r(  r  r  r(   from_dataframer   r  rf  rq  r  rg  rh  r   r   rH  r  )r   r   r   r%  r   r&  r'  r  r  	new_orderinvalid_orderrF   r  s                rm   test_to_and_from_dataframez&TestDataset.test_to_and_from_dataframe"  s   IOOBIOOBC83(#qBBCC<HaVc
"(13:O:O:O
 
 
 ""v&&::6(:::: s##0022v&&::6(:::: 	W3F;;<<< IOOAq!!cJ?+,,U$3M--!?!?!?@c
 . 
 
	 <		"uINNN""v&&&&& 	))QF)33W5KF5S5STTT #J	955v&&&&&#J	M--+++-?-?-?@c
 . 
 
	 <KKMM!!"%%uI
 
 
 955v&&&&&]L
 
 
 	5 	5 OOmO444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5
 c
]L
 
 
 	5 	5 OOmO444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 \1#'++A!~.1#??6***\^^'++7B-0006*** \3)$$'++C2J!?!?!?@7B-PP6***
 28UG,,C1#w9O9O3PQQRRWW X 
 
 ""&qqq3*}5<ZL!3 7 7 7#s
 
 
 v&&::6(::::28QC11!g8N8NOOPP""m''!qc
3*'EE<C000v&&::6(::::::s$   0MMM=N  N$'N$c                
   t          j        g d          }t          j        g d|          }t          j        g d|          }t          j        ||g dd          }|                    d                                          }t          |d                   d	k    sJ |                    dd
g                                          }t          |d                   dk    sJ t          |d
                   dk    sJ d S )Nr  r  r  rG   )r  r  r"  ra  r  r  r@   r  r=   )rt   r  r  r  r  r  r#  )r   r  r  r  rF   r   s         rm   test_from_dataframe_categoricalz+TestDataset.test_from_dataframe_categorical  s   !DDD
 
 
 Y,,,C888Y,,,C888\2CCDD\\$))++2d8}}!!!!\\4,''11332d8}}!!!!2d8}}!!!!!!ro   c           	        dd l }t          j        t          d          t	          d          t          j        ddd          d          }t          j        |	                    d          d          }t          j        |	                    d          d	          }t          |d
         j        |j                  sJ t          |d         j        |j                  sJ |d
         j                                        |d
         _        |d         j                                        |d         _        t          ||           t          j        |	                    dd
g          d          }t          j        |	                    dd
g          d	          }t          |d         j        |j                  sJ |d         j                                        |d         _        t          ||           d S )Nr   r   r$  r  r  r   Tr  Fr   rd  )r8   rt   r  r  r  rq   re  r   rd  r  r   rg   COOr  r(   )r   r8   df_base	ds_sparseds_denses        rm   test_from_dataframe_sparsez&TestDataset.test_from_dataframe_sparse  s   ,))$|"4"429QR;P;PQQ
 
 *7+<+<S+A+A$OOO	)'*;*;C*@*@OOO)C.-vz:::::)C.-vz:::::'n199;;	#'n199;;	#9---*7+<+<c3Z+H+HQUVVV	)'*;*;S#J*G*GPUVVV)C.-vz:::::'n199;;	#9-----ro   c                   t          j        dg i          }t          j        |          }t	          |d                   dk    sJ |                                }t	          |          dk    sJ |                    |          sJ d S )Nr  r   )rt   r  r   rd  r#  r(  r  r   r&  r   r'  s       rm    test_to_and_from_empty_dataframez,TestDataset.test_to_and_from_empty_dataframe  s    <,,#H--2e9~~""""""6{{av&&&&&&&ro   c                8   t           j                            ddgg dgddg          }t          j        dt	          j        d          i|	          }t          dd
g dg dgfiddgg dd
          }t          j        |          }t          ||           |j	        g dd d f         }t          j        |          }t          ||           |j	        d dd d f         }t          dd
g ddt          j
        t          j
        ggfiddgg dd
          }t          j        |          }t          ||           |j	        ddgd d f         }t          j        t          d          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr   r   ra  r   r   r   rd  r^  r  rb  r?   r  r   )r@   r=   r>   r   r\  r]  r\  r@   r   znon-unique MultiIndexrX  )rt   r   r   r  rq   re  r   rd  r(   ilocr  rg  rh  r   )	r   r  rF   r&  r'  df2df3r  df_nonuniques	            rm   test_from_dataframe_multiindexz*TestDataset.test_from_dataframe_multiindex  s   **S#J			+B3PS**UU\3	!-U;;;:			999567s)))44
 
 
 '++***g(((!!!+,',,***gbqb!!!en:			Arvrv+>?@As)))44
 
 
	 ',,+++w1vqqqy)]:-EFFF 	1 	1"<000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   -FFFc                   t          j        ddgdggddgddggddg          }t          j        dd	gdd
gd|          }t          ddgd	ggfddgd
ggfdddgdgd          }t          j        |          }t          ||           d S )Nr   r   r  r   r>   lev1lev2)r  codesr   r=   r@   )c1c2r  )rz  r{  r   )rt   r   r  r   rd  r(   )r   r  rF   r&  r'  s        rm   #test_from_dataframe_unsorted_levelsz/TestDataset.test_from_dataframe_unsorted_levels  s    #J(!Q!Q0@QWHX
 
 
 \!Q1v66eDDD'1#s4'1#s4  !#J88
 
 
 '++*****ro   c                    t          j        t          j        d                    }dd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non-unique columnsrX  )
rt   r  rq   r  rb  rg  rh  r   r   rd  )r   rF   s     rm   &test_from_dataframe_non_unique_columnsz2TestDataset.test_from_dataframe_non_unique_columns  s    \"(6**++U^
]:-BCCC 	' 	'"2&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   A--A14A1c                   t          j        t          d          t          t          dd                    t	          j        dd                              d          t	          j        ddd	
          g dt          j        t          d                    t          j        dd          t          j        ddd          d          }t           j	        
                    dgt          d          gddg          |_        t          j        |                                          }|                    t          j                  }|                    |          sJ d S )Nr   r>   r\  r@   r^  u1r  g      @rE  rG   rS   20130101rB   z
US/Eastern)rC   tz)r   r   r  r  r  fghr   r  r  r   )rt   r  r  r  rq   re  r~   Categoricalru   r   r   r  r   rd  r(  applyr  r  )r   rF   r8  r&  s       rm   5test_convert_dataframe_with_many_types_and_multiindexzATestDataset.test_convert_dataframe_with_many_types_and_multiindex  s*   \%[[%1++&&Yq!__++D11YsCy999(((^DKK00]:q999]:q\JJJ	 	
 
 =--ueAhh.?u~-VV-b11>>@@ 88BJ''""8,,,,,,,ro   rF  rg   )Tr  rv   rx   bool | Literal['list', 'array']c                D   t           j                            d          }t           j                            d          }t          d          }t	          d|fd|fd|fd          }dd|i dii ddid|                                i dd|                                i ddd}|rW|j        j                            d	d
i           i |d<   |j        j        |d         d         d<   dD ]}i |d         |         d<   |	                    ||          }	t           j
                            ||	           t	          j        |	          }
t          ||
           |rlt          |
j                  t          |j                  k    sJ |j        D ]8}t           j
                            |
|         j        ||         j                   9|                                }|d         d         d= |d         d         d= |d         d         d= t"          j        dk    rdnd}|d         d                             |dd           |d         d                             ddd           |d         d                             ddd           |	                    d|          }||k    sJ |                    d          }t	          j        |	                    ||                    }t          ||           |rlt          |j                  t          |j                  k    sJ |j        D ]8}t           j
                            ||         j        ||         j                   9dd|didd|dd|ddd}t          |t	          j        |                     d|d|ddd|dd}t          |t	          j        |                     d|i|ddd|dd}t)          j        t,          d          5  t	          j        |           d d d            d S # 1 swxY w Y   d S )Nr   r$  r%  r&  )r%  )rZ   rg   r   rZ  )rY   r   rZ   rb   r  r  rF  rY   rb   )rg   rF  rg   r   r   r9  z<U1z>U1r  )rH   r   rE  FrZ   rg   )rY   rZ   rb   )rg   rZ   )r   r%  r   z*cannot convert dict without the key 'dims'rX  )rq   rr   r  r  r   tolistr%  rF  r  to_dictrU  r'   	from_dictr(   r   r   r   r<  r=  r  rg  rh  r   )r   rF  rg   r   r   r%  r   r&  vvsr'  ds_rtvvexpected_no_data
endiantypeactual_no_datar  r  r  s                     rm   test_to_and_from_dictz!TestDataset.test_to_and_from_dict  s    IOOBIOOBC83(#qBBCCVQDDE"I$ahhjj2FF$ahhjj2FF 	/
 /
  	<DM  %000#%HZ 24$-HXs#J/! < <9;%c*:6699 	
&111 !&))U### 	Mu''3r|+<+<<<<<l M M
''b	(:BrFOLLLL $==??X&s+F3[)#.v6[)#.v6!mx77UUU
"3'..e/T/TUUU%c*11IPU2V2VWWW%c*11IPU2V2VWWWBB>1111 mmC((#K$7$7TH$7$U$UVVg... 	X{,--W5F1G1GGGGGl X X
''B(@'"+BVWWWW S!445(+Q77sTU>V>VWW
 

 	W.q11222 q))S))q))
 

 	W.q11222 !S))q))
 

 ]K
 
 
 	! 	! a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   3PPPc                f   t           j                            dd          }t           j                            dd          }t          j        dd          }g d}t          ddg|fddg|fd|fd|fd          }t          j        |                                          }t          ||           d S )	Nr   r@   r  rB   glS@gT@L   r%  rU   r   r   r%  rU   )	rq   rr   r  rt   ru   r   r  r  r(   )r   r   r   r%  rU   r   r8  s          rm   #test_to_and_from_dict_with_time_dimz/TestDataset.test_to_and_from_dict_with_time_dimX  s    IOOB""IOOB""M*b111ElA&ElA&1Xs|	 
 
 (66\*****ro   c                   t           j                            dd          }t           j                            dd          }t           j        |d<   t	          j        t	          j        dd                    }t           j        |d<   g d}t          ddg|fddg|fd|fd|fd	          }t          j        |	                    |
                    }t          ||           d S )Nr   r@   r=   r  rB   r  r%  rU   r  r8  )rq   rr   r  r  rt   r  ru   r   r  r  r(   )r   rg   r   r   r%  rU   r   r8  s           rm   "test_to_and_from_dict_with_nan_natz.TestDataset.test_to_and_from_dict_with_nan_nath  s     IOOB""IOOB""v!IbmJ;;;<<v!ElA&ElA&1Xs|	 
 
 ()>)>??\*****ro   c                   t           j                            d          }t           j                            d          }t          d          }t          j        d          t          j        g d          dd}t          d||fd||fd|fd          }|d	                                         |d
                                         dd}|	                                }||d         d         d         k    sJ d S )Nr   r$  i  )%   gfffff[r  r  )createdrY   
maintainerr%  r&  r  rY   rb   r   r   )
rq   rr   r  r  rE  rv   r   itemr  r  )r   r   r   r%  r   r   expected_attrsr'  s           rm   test_to_dict_with_numpy_attrsz)TestDataset.test_to_dict_with_numpy_attrs~  s    IOOBIOOBz$''h00011
 

 CE?#q%QxPPQQY',,..Ho,,..
 

  !4S!9'!BBBBBBBro   c                    t                      }t          j        t          j        |                    }t	          ||           |j        |j        k    sJ d S re   )r*   pickleloadsdumpsr(   rZ   )r   rg   r8  s      rm   test_picklezTestDataset.test_pickle  sR    !!|FL$6$677|,,,yL-------ro   c                6   t                      }t                                          |           dD ]}t          ||          }t	          j        t                    5  |                                 d d d            n# 1 swxY w Y   t	          j        t                    5  |d         j         d d d            n# 1 swxY w Y   |	                    d           |	                    t          d          dg          	                    dd	           d S )
NTF	decode_cfr  r   rD  r   rE  r  rF  )r   r*   r1  r   rg  rh  r$   rG  r   rH  rI  r   r   r  r   s       rm   test_lazy_loadzTestDataset.test_lazy_load  s   -//((///& 		D 		DIey999B344  			              344 " "6
!!" " " " " " " " " " " " " " " GGGGGr!G--222CCCC		D 		Ds$   A??B	B	#B==C	C	c                   t                      }t                                          |           dD ]N}t          ||          }t	          j        t                    5  |d         j         d d d            n# 1 swxY w Y   |j        j	         |
                    d           |
                    t          d          dg          
                    dd	           t          |           t          |d                                         j	        t                    sJ t          |d         
                    dd
                                          j	        t                    sJ |                                 Pd S )Nr  r  r  r   rD  r   rE  r  rF  ri  )r   r*   r1  r   rg  rh  r$   r   r  rg   rH  rI  r  r   rG  r"   rT  r  s       rm   test_lazy_load_duck_arrayz%TestDataset.test_lazy_load_duck_array  s   .00((///& 	 	Iey999B344 " "6
!!" " " " " " " " " " " " " " " GLLGGGGGr!G--222CCCHHH bjoo//46FGGGGG6
QQ//4466;=M     HHJJJJ#	 	s   A99A=	 A=	c                `   t           j                            dd          }t           j        |d d ddf<   t           j                            d          }t           j        |d<   t	          d|fd|fd          }|                    t          dd d          	          }|                    d
          }t          ||           |                    t          dd                    }|                    d          }t          ||           |                    dddg          }t          ||           |                    t          dd                     }|                    ddg          }t          ||           |                    t          d                    }|                    ddg          }t          ||           |                    d
g           }t          ||           |                    d
dg          }t          ||           |                    d
d          }t          ||           |                    dddg          }|                    g d          }t          ||           |                    dddg          }t          ||           |                    dd          }t          ||           |                    dd          }|                    g d          }t          ||           |                    d
d          }|                    ddg	          }t          ||           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            n# 1 swxY w Y   t          j
        t          d          5  |                    d
d            d d d            d S # 1 swxY w Y   d S )Nr\  r=   r   r  rZ  r   r  r>   rd  r   r@   re  r  r  )subsetr   )how)r  r  r?   )threshr  )r  ra  za single dataset dimensionrX  zinvalid howsomehowzmust specify how or thresh)rq   rr   r  r  r   rH  rI  dropnar(   rg  rh  r   ri  )r   r   r   r   r&  r'  s         rm   test_dropnazTestDataset.test_dropna  s   IOOAq!!F##A#q&	IOOA"j!_sAh@@AA77U1dA..7//3***77U1a[[7))3***3u~66***77U1d^^7,,3w//***77U1XX7&&3w//***3r**$$$3w//$$$3E**$$$3E5'::77YYY7''***3q%99***3q))$$$3q))77YYY7''***3q))77aV7$$$$$]:-JKKK 	 	IIe	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:^<<< 	* 	*IIcyI)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*]9,IJJJ 	% 	%IIctI$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s6   ,NNN4OOO>P##P'*P'c                   t          ddt          j        dt          j        dgfidg di          }|                    d          }t          ddg dfidg di          }t	          ||           |                    ddi          }t	          ||           t          ddi          }|                    |          }t	          ||           |                    d|j        i          }t	          ||           t          t          d          dt          d          fg	          }|                    |          }	|                    d          	                                }t	          ||	           |                    |          }
t	          ||
           |                    t          d                    }t	          ||           |                    |d d                   }t	          ||           t          j        |d
<   |                    ddi          }t          dg dft          j        ddg di          }t	          ||           t          j        t          d          5  |                    ddi           d d d            n# 1 swxY w Y   |                    i           }t	          ||           |                    t          ddi	                    }|                    d          }t	          ||           t          t          d          dddi          } |j        d          }|j        dk    sJ |j        |j        k    sJ t          d|iddi          }|                    ddi          }|j        |j        k    sJ |j        j        dk    sJ |j        j        |j        j        k    sJ d S )Nr   r   r>   r@   r{  r  )r  r>   r  r@   r\  r   r   rZ  zmust be containedrX  r   r  r  rf  r]  r  r[   r   r   r   r  )r   rq   r  rJ  r(   r   r   r  r%  r  rg  rh  r   rq  r   r   )r   r   r  r&  r  r  r  actual4r   actual5actual6actual7actual8actual9result1result2r[   actual10actual11s                      rm   test_fillnazTestDataset.test_fillna  s   cC"&!RVQ!789C;NOO ))B--C#~~~!67#|||9LMM7+++))S"I&&7+++b	""))E""7+++))S%'N++7+++ eAhheAhh'8999))A,,88C==++--7+++))H%%7+++))E!HH%%7+++))AbqbE""7+++ &3))S"I&&'bf55\\\7J
 
 	7+++ ]:-ABBB 	  	 IIsAh	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  ))B--W%%%))GC955566##b#))7+++uQxxc&$@@@29Q<<}####~))))c2Yvtn55599c1X&&~))))z#%%%%z24:------s   -JJJfuncc                .    |                      dd          S )Nr   r>   )clipr  s    rm   r:  zTestDataset.<lambda>=  s    166!Q<< ro   c                0    t          j        d          | z  S )Nr  )rq   rE  r  s    rm   r:  zTestDataset.<lambda>=  s    2:c??Q3F ro   c                    t          t          d          dddi          }t          d|iddi          } ||          j        |j        k    sJ t	          d	          5   ||          j        |j        k    sJ  ||          j        j        |j        j        k    sJ 	 d d d            n# 1 swxY w Y   t	          d	          5   ||          j        |j        k    sJ  ||          j        j        |j        j        k    sJ 	 d d d            n# 1 swxY w Y   t	          d
	          5   ||          j        |j        k    sJ  ||          j        j        |j        j        k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr]  r   r  r[   r  r   r  F
keep_attrsT)r   r  r   r   r   r   )r   r  r[   r   s       rm   test_propagate_attrsz TestDataset.test_propagate_attrs<  sf    uQxxc&$@@@c2Yvtn555 tBxx~))))E*** 	2 	2488>RX----488:#rtz11111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 E*** 	2 	2488>RX----488:#rtz11111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 D))) 	2 	2488>RX----488:#rtz11111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s9   "AB00B47B4ADD D4AFF
Fc           	        t          ddt          d          fi          }t          ddt          j        t          j        dddgfi          }|                    |dk              }t          ||           |                    |j        dk              }t          ||           |                    |j        j        dk              }t          ||           |                    d          }t          ||           |                    d	          }t          j	        t          j        gdz            |d         _        |                    d
          }t          ||           t          ddddgddggfi          }t          ddt          j        dgddggfi          }	|                    |dk              }
t          |	|
           t          t          d          dddi          } |j        |j        dk              }|j        dk    sJ |j        |j        k    sJ t          d|iddi          }|                    |dk              }|j        |j        k    sJ |j        j        dk    sJ |j        j        |j        j        k    sJ t          ddt          d          fi          }t          ddt          j        t          j        dddgfi          }|                    d           }t          ||           d S )Nr   r   r]  r=   r@   r\  r>   Tr  Frb  r   r  r[   r  r   r  c                    | dk    S Nr>   r   r  s    rm   r:  z(TestDataset.test_where.<locals>.<lambda>z  s
    QU ro   )r   r  rq   r  wherer(   r   r   r   rv   r   r   r   )r   r   r  r  r  r  r  	expected5r  	expected6r  r[   r  r  	expected9r  s                   rm   
test_wherezTestDataset.test_whereQ  s   cCq?+,,S3Aq(A"BCDD	((26""G,,,((24!8$$G,,,((24;?++G,,,((4..W%%%GGG&&	 ""&A 6 6	#((5//G,,, cJ!Q!Q(89:;;S:aV/D"EFGG	((26""G,,, uQxxc&$@@@"(29q=))|s""""}((((c2Yvtn555((26""}((((y~$$$$y"$*,,,, cCq?+,,S3Aq(A"BCDD	((??++G,,,,,ro   c           	        t          ddt          d          fidt          d          i          }t          ddg dfidt          d          i          }|                    |dk    d          }t          ||           |j        j        t          k    sJ |                    d d          }t          ||           |                    |dk    dd	          }|                    |dk    d          }t          j        ||d
          \  }}t          ||           |j        j        t          k    sJ t          j
        t          d          5  |                    |dk    |                    t          d                               d d d            n# 1 swxY w Y   t          j
        t          d          5  |                    |dk    |                    d                     d d d            d S # 1 swxY w Y   d S )Nr   r   r]  )r  r  r=   r@   r\  r>   r  c                    | dk    S r  r   r  s    rm   r:  z.TestDataset.test_where_other.<locals>.<lambda>  s
    AE ro   T)r  r  rm  rl  zcannot align .* are not equalrX  r@   r  zexact match requiredr=   re  )r   r  r  r'   r   rH   r  r|   r   rg  rh  r   rH  rI  rC  )r   r   r&  r'  expected_nodropr  s         rm   test_where_otherzTestDataset.test_where_other}  s]   cCq?+c588_==C#'8'8'8!9:S%((OLL"q&"%%Xv&&&x~$$$$//2..Xv&&&"q&66((262..hvVDDD8VX&&&x~$$$$]:-MNNN 	2 	2HHR!VRWWuQxxW00111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 ]:-DEEE 	- 	-HHR!VRYYY^^,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s$   <FFF>/G::G>G>c           
     4
   t          t          d          t          d          gdg          }t          t          d          dd          t          d          dd          gdg          }|                    |dk    d          }t          ||           t	          d|i          }t	          d|i          }|                    |dk    d          }t          ||           |                    |j        dk    d          }t          ||           t          j        t          d	
          5  |                    t          j
        d          dk    d           d d d            n# 1 swxY w Y   t          t          j        g d          t          j        g d          gdg          }t          t          j        g d          t          j        g d          gdg          }|                    |dk    d          }	t          ||	           t	          dg dfdg dfd          }t	          dt          j        dddgfddddt          j        gfd          }
|                    |dk    |dk     z  d          }t          |
|           t	          ddddgddggfi          }t	          ddt          j        dgddggfi          }|                    |dk    d          }t          ||           t	          ddddgddggfiddgddgddgt          j        t          j        gt          j        t          j        z  t          j        dz  ggfd          }t	          dddggfidgdgddgt          j        dz  ggfd          }|                    |dk    d          }t          ||           t	          dddgddggfdddgddggfd          }t	          dt          j        dgddggfdddgddggfd          }|                    |dk    d          }t          ||           t          j        dg dfdg dfdt          j
        d                              d          fd          }t          j        dt          j        dgfdt          j        ddgfdt          j
        d d!                              d"          fd          }|                    |dk    d          }|j        d         dk    sJ t          ||           d S )#Nr]  r   rX   r=   r>   Tr  r   z	must be arX  )r=   r_  r>   ry  r@   )r@   r>   r\  r]  rz  )r_  ry  r@   )r>   r]  rz  r{  r  rZ  r@   r\  r^  r   r_  rb  r   r  r   ra  r  rz  )r@   r@   r  r  g      "@r  )r   r  r  r(   r   r   rg  rh  ri  rq   re  rv   r  r  r  r|   rf  r  )r   rv   r  r  r   r  r  r  	expected4r  r  r  r  r  	expected7r  	expected8r  r  r  s                       rm   test_where_dropzTestDataset.test_where_drop  s   
 %((E!HH:SEBBBeAhhqrrlE!HHQRRL>NNN	++eaid+33G,,, c5\""S),--	((26(--G,,,((24!8$(//G,,,]9L999 	2 	2HHRYq\\A%DH111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 H___%%rx/H/H.IQTPU
 
 
 HYYY))))<)<(=SE
 
 
	 ++eaid+33G,,, S<<<0|||7LMMNN261a+,SAq!RV;L3MNN
 
	 ((BFrAv.T(::G,,, cJ!Q!Q(89:;;S:aV/D"EFGG	((26(--G,,, :AA/01VVCjBD"%=2524<2K"LM 
 
 
 :u%&A3sCjBEAI;--HII
 
 
	 ((26(--G,,, AA/0
aVaQRVDT7UVV
 
  BFA;A"78 Aq6Aq6"23 
 
	 ((26(--G,,, Z999%999% ")A,,"6"6v">">? 
 
 JBFA;'BFAq>* ")C"5"5"="=f"E"EF 
 
	 ((26(--}S!Q&&&&G,,,,,s   0.E**E.1E.c                J   t          t          j                            dd          ddg          }t          t          j        dd          d          }|                    |d	
          }t          t          j        d          ddg          }t          ||           d S )Nr  r   nCellsnVertLevelsrs  )r  rx   rG   Tr  )r   r   )r   rq   rr   r}   r  r  r(   )r   rv   maskr'  r&  s        rm   test_where_drop_emptyz!TestDataset.test_where_drop_empty  s    ")..b11=8QRRR&777hGGGT--RXg..h5NOOO6*****ro   c                    t          ddddgfi          }t          dddgfi          }|                    |dk    d          }t          ||           d S )Nr  r   r  r  r>   Tr  )r   r  r(   r  s       rm   test_where_drop_no_indexesz&TestDataset.test_where_drop_no_indexes  sd    ecC:./00EC#<011"'--6*****ro   c                   t                      }t          |                                j                  dk    sJ |                                }t          d |j                                        D                       }t          ||           t          |	                    dg          |	                    d                     dg dfddgddgfd	ddgfd
g dffD ]5\  }}t          |	                    |          j                  }||k    sJ 6t          |                    g           |           t          j        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   c                >    i | ]\  }}||                                 S r   r!  r9  s      rm   r   z+TestDataset.test_reduce.<locals>.<dictcomp>  s&    JJJ41aAquuwwJJJro   r  r  r  )r  rW   r  rW   r  )r  rW   r   r  r  rW   r  axis)r*   r#  r%  rY   r!  r   rb   r   r'   minr  rZ   rg  rh  r   )r   rg   r'  r&  reductexpected_dimsactual_dimss          rm   test_reducezTestDataset.test_reduce   s   !!499;;%&&!++++JJ4>3G3G3I3IJJJKKXv&&&TXX6(X++TXX&X-A-ABBB ---.f/0/01112	&
 	0 	0!FM txxFx33899K-/////TYY2Y&&---]:&& 	 	II1I	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   E77E;>E;c                :   t          j        ddg dfiddi          }t          j        ddiddi          }|                    d          }t          ||           |d                             d                                          }t          ||           d S )Nr   r   ra  r   r\  r   r=   )r|   r   r%  r(   r  r  s       rm   test_reduce_coordszTestDataset.test_reduce_coords  s    z3iii 013(CCC:sAhQx8883*** c$$//11*****ro   c           	        t          j        dt          j        d                              dd                              d          fdt          j        ddt          j        g          fd	          }|                    d
d          }t          j        |d                             d
          |d                             d
d          d	          }t          ||           d S )Nrb  r^  r@   r=   uintr  rp  rq  rZ  r   T)skipnar   r   )
r|   r   rq   re  rf  r~   rv   r  r%  r(   r  s       rm   test_mean_uint_dtypez TestDataset.test_mean_uint_dtype$  s    z ")A,,"6"6q!"<"<"C"CF"K"KLbhS"&'9::; 
 
 3t,,:s)..%%DINN3tN,L,LMM
 
 	*****ro   c                    t                      }t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S NzDataset does not containrX  bad_dimr  )r*   rg  rh  r   r%  r4  s     rm   test_reduce_bad_dimzTestDataset.test_reduce_bad_dim1  s    !!]:-HIII 	% 	%II)I$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   AAAc                Z   t          j        ddddgfdt          j        dgddggfd          }t	          |                    d          |                    d	                     t          j        ddddgfdddgdd
ggfd          }t	          ||                                           d S )Nr>   r   r=   rb  r@   r   r\  r  r   r_  )r|   r   rq   r  r(   rJ  cumsumr  s      rm   test_reduce_cumsumzTestDataset.test_reduce_cumsum6  s    z3A-zRVQK!Q;P.QRR
 
 	QS)9)9::::3A-zQFQF;K.LMM
 
 	4;;==11111ro   zreduct, expectedr  r  )r  rW   r  r  r  )r  rW   r  r  rW   )r  r  r  r  cumprodc                $   t                      }t          j        t          d          5   t	          ||          d           d d d            n# 1 swxY w Y    t	          ||          |          j        }t          |          |k    sJ d S r  )r*   rg  rh  r   r  rZ   r  )r   r  r&  r  rg   r'  s         rm   test_reduce_cumsum_test_dimsz(TestDataset.test_reduce_cumsum_test_dimsA  s      !!]:-HIII 	/ 	/GD$I....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ %t$$0005F||x''''''s   AAAc                   t          d          t          d          }ddgdgd}t          |                                          D ]i\  }}t          fd|D                       }t          j                            dd|	                              t          j                  }||d
dif|<   jd	                                vrd	                                vsJ t          	                                |	                                           t          	                    d          |	                    d                     d	                    d          vrd	                    d          v sJ d S )N,   r  r  r  )r  var5c              3  2   K   | ]}j         |         V  d S re   rs  )rk   r  r,  s     rm   rn   z6TestDataset.test_reduce_non_numeric.<locals>.<genexpr>Y  s)      551A555555ro   r   r  rR  r  r  r  r  r  )r*   sortedr   r   rq   rr   rL  r~   str_r%  r'   )r   r&  add_varsr   rZ   rR  rg   r,  s          @rm   test_reduce_non_numericz#TestDataset.test_reduce_non_numericT  sv    b))) b)))#V,vh??hnn..// 	9 	9GAt555555555D9$$Q$$77>>rwGGDdUJ$78E!HHUZZ\\))fEJJLL.H.H.H.HUZZ\\5::<<000UZZFZ++UZZFZ-C-CDDDUZZFZ3333%**QW*BXBX8X8X8X8X8X8Xro   z9ignore:Once the behaviour of DataArray:DeprecationWarningc                8   t          ddi          }t          ddddgfi          }ddg|j        d<   |                                }t          ||           t          ddi          }|                                }t          ||           t          ddi          }|                                }t          ||           t          ddi          }|                                }t          ||           t          ddi          }|                                }t          ||           t          ddi          }|                                }t          ||           t          dd	i          }t          ddt          j
        ddgd
          fi          }|                                }t          ||           t          ddi          }t          ddt          j
        ddgd          fi          }|                                }t          ||           d S )Nr   r   r   r   r  r   r   r>      aS1U1)r   rY   r  r(   r!  argminargmaxidxminidxmaxrq   rv   rq  s       rm   test_reduce_stringszTestDataset.test_reduce_stringsb  s    C:&&cC#s,-..r	#6***C:&&6***C8$$6***C8$$6***C:&&6***C9%%6***C;''cC3*d!;!;<=>>6***C:&&cC3*d!;!;<=>>6*****ro   c                   t          ddi          }t          ddi                                          }t          ||           t          ddi          }t          ddt          j        ddgd          fi                                          }t          ||           t          ddi          }t          dddd	gfi                                          }t          ||           d S )
Nr   r>   Tr@   r   r=   uint16y      ?      ?y              ?)r   sumr(   rq   rv   r{  s      rm   test_reduce_dtypeszTestDataset.test_reduce_dtypes  s    C8$$#t%%))++6*** C8$$#RXq!fh%?%?@ABBFFHH6***C=))#aW~.//33556*****ro   c                   t                      }ddd}t          |          }||_        |                                }|j        i k    sJ |j                                        D ]}|j        i k    sJ |                    d          }|j        |k    sJ |j                                        D ]\  }}|j        ||         j        k    sJ d S )Nvalue1iq  )attr1attr2Tr  )r*   rv  r   r%  rb   r   r   )r   rg   _attrsr   r   r   r   s          rm   test_reduce_keep_attrsz"TestDataset.test_reduce_keep_attrs  s    !!#d33V
 YY[[x2~~~~$$&& 	! 	!A7b===== YY$Y''x5    L&&(( 	, 	,DAq7d1gm+++++	, 	,ro   c                    t          ddddgfi          }t          dg dfi          }|                                }t          ||           |                    d          }t          ||           d S )Nr   r   r   r>   )r   r  r(   r  s       rm   test_reduce_argminzTestDataset.test_reduce_argmin  su    
 cC!Q=)**C"a>**6***36*****ro   c                   t          dddgfdddgfd          }t          dddd          }|                                }t          ||           t          ddddgfd          }|                    d          }t          ||           d S )Nr   r=   r   r  r   )r   r  r(   r  s       rm   test_reduce_scalarszTestDataset.test_reduce_scalars  s    C!Q=qaSzBBCC33446***#s<<==6*****ro   c                B   d }t          dddgg dgfi          }t          dddgfi          }|                    |d          }t          ||           t          j        t
          d          5  |                    |           d d d            d S # 1 swxY w Y   d S )	Nc                t    t          |t                    st          d          |                     |          S )Nznon-integer axis)r   r    ri  r%  )r   r  s     rm   mean_only_one_axiszATestDataset.test_reduce_only_one_axis.<locals>.mean_only_one_axis  s3    dM22 4 233366$<<ro   r   r   r   r   r>   r=   r@   r\  r=   z.missing 1 required positional argument: 'axis'rX  r   reducer(   rg  rh  ri  )r   r%  r   r&  r'  s        rm   test_reduce_only_one_axisz%TestDataset.test_reduce_only_one_axis  s   	  	  	 
 cS#J(9:;<<C#s,---s336***]N
 
 
 	* 	* II()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   1BBBc                >   d }t          dddgg dgfi          }t          ddi          }|                    |          }t          ||           t          j        t
          d          5  |                    |d	           d d d            d S # 1 swxY w Y   d S )
Nc                N    t          j        |                                           S re   )rq   r  flattenr  s    rm   	total_sumz2TestDataset.test_reduce_no_axis.<locals>.total_sum  s    6!))++&&&ro   r   r   r   r&  )r   r   z"unexpected keyword argument 'axis'rX  r  r'  )r   r-  r   r&  r'  s        rm   test_reduce_no_axiszTestDataset.test_reduce_no_axis  s    	' 	' 	' cS#J(9:;<<C?++9%%6***]9,QRRR 	* 	*IIiSI)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   -BBBc           	        t          dddgg dgfig ddgddgg dgfdd          }|                    d	
          }t          dddgt          j        |j        d	
          j        fid|j        i          }t          ||           |                    dd	
          }t          dddgt          j        |j        dd	          j        fi|j        |j        d          }t          ||           d S )Nr   r   r   r&  r   g     8)r   r   rU   r  r   T)keepdimsr  )r  r0  )r   r  )r   r%  rq   r   rg   r  r(   r   rG  s       rm   test_reduce_keepdimsz TestDataset.test_reduce_keepdims  s;   C:012$__Sc
___$56	 
 
 
 $''C:rwrtd;;;@ABCQSQU;
 
 
 	6***t,,C:rwrt!dCCCHIJBD))
 
 
 	6*****ro   r  )TFNq      ?r        ?c           
        t          d          }t          j        |j        j        d<   d ddgfD ]}|                    |||          t          |          rdj        vsJ ndj        v sJ |j        	                                D ]7\  }}|v sJ t          |         |                    |||                     8ddg}|                    |||          dj        v sJ t          fd	|D                       sJ d S )
Nr
  r  r   r   r  )r  r  quantiler  r  c              3  *   K   | ]}|j         vV  d S re   rs  )rk   r  ds_quantiles     rm   rn   z,TestDataset.test_quantile.<locals>.<genexpr>  s+      ::1K,,::::::ro   )r*   rq   r  r  rg   r7  r!   rZ   rb   r   r(   r   )r   r2  r  r   r  r  darr9  s          @rm   test_quantilezTestDataset.test_quantile  s]    3'''VT&6(+ 	 	C++aS+@@K|| 6!)999999![%55555L..00  Sk)))) $cll1#fl&M&M   
 vkk!Vk<<)))))::::c::::::::::ro   c                (   d}d}t          d|gt          j        dd          fi          }|                    |dk              }|                    |||          }|rdnt          j        }t          d|id	|i
          }t          ||           d S )Nrp  rW   r   r   r  r>   )r2  r  r  gffffff?r7  r   )r   rq   re  r  r7  r  r(   )r   r  r2  r  r   resultr  r&  s           rm   test_quantile_skipnaz TestDataset.test_quantile_skipna  s    cSE29Q#3#34566XXbAgqc&99)26C<Q@@@*****ro   r  midpointlowerc                v   t          d          }g d}|                    ||          }t          |j        |j                            ||                     t          |j        |j                            ||                     t          |j        |j                            ||                     d S )Nr
  r  r3  r  r4  rR  )r*   r7  r(   r  r  r  )r   r  r   r2  r=  s        rm   test_quantile_methodz TestDataset.test_quantile_method  s    3'''Qv..bg&6&6q&6&H&HIIIbg&6&6q&6&H&HIIIbg&6&6q&6&H&HIIIIIro   c                   t          d          }g d}t          j        d          5 }|                    ||           t	          |          dk    sJ 	 d d d            n# 1 swxY w Y   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
  r  rB  TrJ  )interpolationr>   z!interpolation and method keywordsrX  )r  rE  )r*   ry   rz   r7  r#  rg  rh  ri  )r   r  r   r2  r  s        rm   &test_quantile_interpolation_deprecatedz2TestDataset.test_quantile_interpolation_deprecated(  s   3'''$D111 	QKKK000 q66Q;;;;;		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $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(C C9CC			CC		CC!$C!c                *   t          d          }|                    d          }dgt          |j                  k    sJ |j        }|j                            d          }t          ||           t          |j                  t          |j                  k    sJ t          |j                  t          |j                  k    sJ t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Ni  r  r  r  zdoes not containrX  invalid_dim)
r*   rankr  rb   r  r'   rY   rg  rh  r   )r   r   rd  r   r   s        rm   	test_rankzTestDataset.test_rank7  s6   4(((GGFOOx4,,,,,,FGLL  QAH~~bi0000AH~~ah////]:-@AAA 	" 	"FF=!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s   %DDDc                8   t          ddt          j        dgfdg dfd          }t          j        d          5  t          j        t                    5  |                    d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nr   r   r=   r   )r\  r^  r@   r\  rZ  F)use_bottleneck)	r   rq   r  r|   r   rg  rh  RuntimeErrorrI  r  s     rm   test_rank_use_bottleneckz$TestDataset.test_rank_use_bottleneckH  s   C!RVQ0\\\7JKKLL^5111 	 	|,,                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   BA7+B7A;	;B>A;	?BBBc                    t          dt          j        dgfdt          j        d          }t          dddd          }|                                }t	          ||           d S )Nr   r>   r   r  )r   rq   r  countr(   r  s       rm   
test_countzTestDataset.test_countN  s`    C"&!-ABFCCDD33446*****ro   c                   t                      }d|j        d<   t          |                    t          j                  |                                           |                    d          }|                    d d          }t          ||           t          |                    d d          |                    d                     dd	}|                    |d
          }t          |d         d
|d         z             t          |d         |d                    |                    t          j                  }|                    d          }t          ||           d S )Nr  r  Tr  c                .    |                      d          S )NTr  )r%  r  s    rm   r:  z&TestDataset.test_map.<locals>.<lambda>[  s    AFFdF$;$; ro   c                    | S re   r   r  s    rm   r:  z&TestDataset.test_map.<locals>.<lambda>^  s    A ro   rW   r>   c                    || z  S re   r   )r   multiples     rm   scalez#TestDataset.test_map.<locals>.scale`  s    a<ro   r=   )rV  r  r  )r>   )	r*   r   r(   r"  rq   r%  rQ  r'   r  )r   rg   r&  r'  rW  s        rm   test_mapzTestDataset.test_mapT  sE   !!!
5"'**DIIKK888999--;;MM6***++$??PVAWAWXXX	  	  	  	  %!,,VF^Qf%5666	*DO<<<"*%%>>&))Xv&&&&&ro   c                   t                      }d|j        d<   t          j        t                    5  t          |                    t          j                  |                                           d d d            d S # 1 swxY w Y   d S )Nr  r  )	r*   r   rg  rV  r  r(   r  rq   r%  r4  s     rm   !test_apply_pending_deprecated_mapz-TestDataset.test_apply_pending_deprecated_mapk  s    !!!
5\344 	? 	?TZZ00$))++>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   A A??BBc                   dt          j        ddd          fddt          j        d                              dd          z  fd	}dg d
fdt          j        d          z  d}t          ||          }t           j        |d         d<   |S )Nr   r  i  rb  r  r  r@   r\  )r  r  r  r   )r   r   r  r6  )rq   re  rf  r   r  )r   r   rY   r   s       rm   r  z%TestDataset.make_example_math_datasetr  s    3S112bimm&;&;Aq&A&A AB
 
	 /b29Q<<6GHHY''&5	$	ro   c                   |                                  }t          ||
            t          ||dz              t          |d|z              t          ||t          j        d          z              t          |t          j        d          |z              |                    d          }|dz  }t          ||           d S )Nr   Tr  )r  r(   rq   rv   r   r  s      rm   test_dataset_number_mathz$TestDataset.test_dataset_number_math|  s    ++--bS!!!R!V$$$QV$$$R"(1++-...RXa[[2-...d##!V$$$$$ro   c                   |                                  }t          |                    t                    t          |                     t          |                    d           |dz              d d d fD ].}t          |                    |           ||                     /t          |                                |                                            t          j        t                    5  |j	         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 )Nc                    | dz   S )Nr\  r   r  s    rm   r:  z,TestDataset.test_unary_ops.<locals>.<lambda>  s
    !a% ro   r\  c                *    |                                  S re   )isnullr  s    rm   r:  z,TestDataset.test_unary_ops.<locals>.<lambda>  s    ahhjj ro   c                *    |                                  S re   )roundr  s    rm   r:  z,TestDataset.test_unary_ops.<locals>.<lambda>  s    aggii ro   c                6    |                      t                    S re   )r~   r  r  s    rm   r:  z,TestDataset.test_unary_ops.<locals>.<lambda>  s    ahhsmm ro   )r  r(   r"  absra  notnullrg  rh  AttributeErrorr  searchsorted)r   r   r  s      rm   test_unary_opszTestDataset.test_unary_ops  s   ++--c"gg...00"q&999 ! ##
 	5 	5D
 RVVD\\44884444rzz||m444 ]>** 	 	GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]>** 	 	OO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   6D

DD.EE
Ec                n   |                                                      fd          }t          |d         z
             t          |d          z              t          |d         j        z
             t          |d         j         z                                  d          }|d         z  }t          ||                               fd          }t          |d         z                                  d          }|d         z  }t          ||           t          dd         t          j        d          z   i          }t          |dg         t          j        d          z              t          |t          j        d          dg         z              d S )Nc                    | d         z
  S )Nr  r   r   r   s    rm   r:  z5TestDataset.test_dataset_array_math.<locals>.<lambda>      A5	M ro   r  Tr  c                    | d         z   S )Nr  r   rl  s    rm   r:  z5TestDataset.test_dataset_array_math.<locals>.<lambda>  rm  ro   r  r@   )r  r"  r(   r  r   r   rq   re  )r   r&  r'  r   s      @rm   test_dataset_array_mathz#TestDataset.test_dataset_array_math  s   ++--6611112225	>222BuI:?33325	(:#:;;;BuI$6#6#;<<<d##"U)6***6611112225	>222d##"U)6***E2e9ry||#;<==2ug;1#=>>>29Q<<"eW+#=>>>>>ro   c                   |                                  }t          ||d|z  z              t          ||dddz              |                    d           }t          |d|z             t          |||z              t          |||j        z              t          ||t	          |j                  z              |                    d          }t          |          }||z  }t          ||           |t          |          k    sJ t          ||k    |                                           |                    t          d                    }d|z  }t          |||z              t          |||z              d S )Nr   r  c                    d| z  S r,  r   r  s    rm   r:  z7TestDataset.test_dataset_dataset_math.<locals>.<lambda>  s
    AE ro   r=   Tr  rt  )
r  r(   r"  rb   rv  r   idrf  rH  rI  )r   r   r&  r'  expected_id
subsampleds         rm   test_dataset_dataset_mathz%TestDataset.test_dataset_dataset_math  ss   ++--R!b&[)))R!A"6"6677766//**1r6***27+++2#45552R\(:(:#:;;;d##jj"6***bjj((((r2::<<000WWuQxxW((
z>:?3332
?33333ro   c                t   |                                  }|                    ddg          }d|z  }||z   }t          ||           |                    t          d                    |                    t          dd                     z   }d|                    |j                  z  }t          ||           ||dg         z   }d|dg         z                      |j                  }t          ||           t          |t                      z   |j        
                                           t          t                      t                      z   t                                 t          ddi          }t          ||z   |j                            |                     t          t                      dz   t                                 |                    d	          }|                    t          d                    }||z  }||                    |          z   }t          ||           d S )
Nr>   r@   rt  r=   r  r  r   Tr  )r  rH  r(   rI  r  r   r'   r  rY   r   r  r   r0  )r   r   r  r&  r'  r  r  s          rm   test_dataset_math_auto_alignz(TestDataset.test_dataset_math_auto_align  s   ++--Aq6""v:f6***588$$rwwq$w'@'@@r{{RT{***VX&&&b%k!E7O**29556***gii)=)=)?)?@@@WYY.		:::eR[)))c29??3#7#7888 	Q		222d##%((##%**2...6*****ro   c                   |                                  }t          j        t                    5  |dxx         |z  cc<   d d d            n# 1 swxY w Y   t          j        t                    5  |d         xj        |z  c_        d d d            n# 1 swxY w Y   t          j        t
          d          5  ||dg         z  }d d d            n# 1 swxY w Y   t          t          j        d          ddi          }|	                    d	
          }t          j        t                    5  ||z  }d d d            n# 1 swxY w Y   t          ||           d S )Nr  zmust have the samerX  r  rA   r  r=   r   Tr  )r  rg  rh  ri  r  r   r   rq   r  r   r(   )r   r   r  r'  s       rm   test_dataset_math_errorsz$TestDataset.test_dataset_math_errors  s>   ++--]9%% 	 	uIIIOIII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9%% 	% 	%uI"$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]:-BCCC 	 	"eW+B	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 "-55sAhGGGd##]9%% 	 	eOF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$$$$$sG   AAA/BBB8CCC0EE	Ec           
        t          dt          j                            dd          fdt          j                            dd          fdt	          d          t	          d          dt          j                            dd          fd                                          }t          dj        j        j        fdj	        j        j        fdj
        j        j        j        dj        j        j        fd          }t          ||                               d          }}t          ||                               d	d
          }                    d           }t          ||           t                                                      }j        D ])|         j        d d d                  j        k    sJ *d} j        | }j        D ]1t%          fd|D                       }|         j        |k    sJ 2d}                    ddd          }j        D ]1t%          fd|D                       }|         j        |k    sJ 2t'          j        t*                    5                      dd           d d d            n# 1 swxY w Y                       ddd          }                    d          }t          ||           t'          j        t.                    5                      ddd          }t          ||           d d d            n# 1 swxY w Y   dt1                    vsJ d S )Nrb  r@   r\  r  rZ  )r   r   xyr   .r   r   c                2    |                      ddd          S )Nr   r   T)transpose_coords)r  r  s    rm   r:  z4TestDataset.test_dataset_transpose.<locals>.<lambda>  s    AKKS4K$P$P ro   r  )r  r  r  rW   c              3  :   K   | ]}|         j         v |V  d S re   rs  rk   r  r   r   s     rm   rn   z5TestDataset.test_dataset_transpose.<locals>.<genexpr>'  -      !J!J!r!uz//!////!J!Jro   r  r  c              3  :   K   | ]}|         j         v |V  d S re   rs  r  s     rm   rn   z5TestDataset.test_dataset_transpose.<locals>.<genexpr>.  r  ro   rM  rT   )rO  rN  r  )r   rq   rr   r  r  r  r   r   r  r   r   r   r{  r(   r"  r*   r   rZ   r   rg  rh  r   rV  rW  r  )r   r'  r&  re  r  expected_ellr   r   s         @@rm   test_dataset_transposez"TestDataset.test_dataset_transpose  s    ")//!Q"7"78 ")//!Q"7"78 
 1XX1XX!29??1a#8#89 

 

 

 rt{}-Z4OPPT[T[!25<>2 
 
 
 	6***c""6***c3''66PPQQ6*** 	6 	6A!9>$$B$'2a5:555554	y) 	3 	3A!!J!J!J!J!JY!J!J!JJJM!9>]22222 5	ffc22 	3 	3A!!J!J!J!J!JY!J!J!JJJM!9>]22222 ]:&& 	+ 	+LLk***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ c;XFF||C((v... \+&& 	3 	3\\#{\HHF\6222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 #b''!!!!!!s$   >J!!J%(J%)L77L;>L;c           	     t   t          t          dt          j        d          fdt          j        d          f                    }|                    ddd          }t          |d	         j                  t          d
          k    sJ t          |d         j                  t          d          k    sJ d S )N)r  r   r   rd  )r=   r@   r\  r]  )r   r  r   rd  )r@   r=   r\  r]  rZ  .rd  r   r   wxzyr   xwzy)r   rv  rq   r$  r  r  r  rZ   )r   r   r=  s      rm   6test_dataset_ellipsis_transpose_different_ordered_varszBTestDataset.test_dataset_ellipsis_transpose_different_ordered_varsA  s    ')>)>?',)?)?@  
 
 c3,,F3K$%%f5555F3K$%%f555555ro   c                    t                      }t          j        dd          |d<   |                                }t	          |j                                        t          j                  sJ d S )NrA   r   rB   rW   )r*   rt   r3  r  r   rW   r  PeriodIndex)r   r   
transposeds      rm   .test_dataset_retains_period_index_on_transposez:TestDataset.test_dataset_retains_period_index_on_transposeM  s^    _\2>>>6
\\^^
*/2244bnEEEEEEEro   c                    t          ddg dfi          }|                    d          }t          ddg dfi          }t          ||           d S )Nr  r   r]  r]  r^  r^  r   r>   r   r   diffr'   rG  s       rm   test_dataset_diff_n1_simplez'TestDataset.test_dataset_diff_n1_simpleU  s]    ec<<<0122EC#3455Xv&&&&&ro   c                >   t          ddg dfidg di          }|                    dd          }t          ddg dfidg di          }t          ||           |                    dd	          }t          ddg dfidg d
i          }t          ||           d S )Nr  r   r  r{  r@  labelr  r?   upperra  r  rG  s       rm   test_dataset_diff_n1_labelz&TestDataset.test_dataset_diff_n1_label[  s    ec<<<01C3FGGG,,EC#34sIII6FGGXv&&&G,,EC#34sIII6FGGXv&&&&&ro   c                   t          d          }|                    d          }i }t          t          j        |d         j        d          d|d         j        dd          iddg          |d<   t          t          j        |d         j        d          d|d         j        dd          iddg          |d<   |d         |d<   t          |d	|d	         j        i
          }d|d         j        f|j        d<   t          ||           d S )Nr>   r  r  r  r  r  r  r  rW   r   r  r  r*   r  r   rq   r   r   rY   r'   r   r   r'  expected_dictr&  s        rm   test_dataset_diff_n1z TestDataset.test_dataset_diff_n1e  s   1%%% )GBvJ%A...RZ&qrr*+V!
 !
f
 !*GBvJ%A...RZ&qrr*+V!
 !
f
 !#6
f=&"V*:K1LMMM&,bm.B%C	"Xv&&&&&ro   c                $   t          d          }|                    dd          }i }t          t          j        |d         j        dd          d|d         j        dd          iddg          |d<   t          t          j        |d	         j        dd          d|d         j        dd          iddg          |d	<   |d
         |d
<   t          |d|d         j        i          }d|d         j        f|j        d<   t          ||           d S )Nr>   r  r  r=   rN  r  )r  rN  r  r  r  rW   r   r  r  r  r  s        rm   test_dataset_diff_n2z TestDataset.test_dataset_diff_n2x  s(   1%%%1%% )GBvJ%A333RZ&qrr*+V!
 !
f
 !*GBvJ%A333RZ&qrr*+V!
 !
f
 !#6
f=&"V*:K1LMMM&,bm.B%C	"Xv&&&&&ro   c                    t          d          }t          j        t          d          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr>   r  zmust be non-negativerX  r  r  r  r*   rg  rh  r   r  r  s     rm   !test_dataset_diff_exception_n_negz-TestDataset.test_dataset_diff_exception_n_neg  s    1%%%]:-DEEE 	" 	"GGFbG!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"   AAAc                    t          d          }t          j        t          d          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr>   r  z'label' argument has torX  r  raise_mer  r  r  s     rm   %test_dataset_diff_exception_label_strz1TestDataset.test_dataset_diff_exception_label_str  s    1%%%]:-GHHH 	. 	.GGF*G---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.r  r  c                   dt          d          fg dd}ddi}t          ddg dfi||          }|                    d	|
          }|t          j        k    rt
          j        }n5t          |t                    r |	                    dt
          j                  }t          dd|d	dgfi||          }t          ||           t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   r@   r=   r  metarg   r  ra  r>   )r   r?  r=   
dimensionsrX  r
  ro  )r  r   shiftr   rW  rq   r  r   rv  getr(   rg  rh  r   )r   r?  rY   r   r   r'  r&  s          rm   
test_shiftzTestDataset.test_shift  sZ   tE{{+***== ec999-.>>A*55"" JJ
D)) 	7#rv66JEC*a);#<=vuMM6***]:];;; 	 	HHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   DD	Dc                   dt          d          fg dd}ddi}t          ddg dfi||          }|                    d	d
          }dt          d          fg dd}t          ddg dfi||          }t          ||           t	          j        t          d          5  |                    dd
           d d d            d S # 1 swxY w Y   d S )Nr   r   r  r  r  rg   r  ra  r>   Tr   roll_coordscab)r=   r  r@   r@   r>   r=   r  rX  r
  )r  r  r  r   rollr(   rg  rh  r   )r   rY   r   r   r'  	ex_coordsr&  s          rm   test_roll_coordszTestDataset.test_roll_coords  s6   tE{{+***== ec999-.>>1$// $u++.ZZZ@@	EC#34iGG6***]:];;; 	/ 	/GGG...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   !CC
C
c                v   dt          d          fg dd}ddi}t          ddg dfi||          }|                    d	
          }t          ddg dfi||          }t          ||           t	          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r   r  r  r  rg   r  ra  r>   r  r  r  rX  iA  )r   r  )r   rY   r   r   r'  r&  s         rm   test_roll_no_coordszTestDataset.test_roll_no_coords  s   tE{{+***== ec999-.>>1EC#34feDD6***]:];;; 	 	GGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   
B..B25B2c                   t          j        g dg dgt          d          t          d          dd          }|                    dd	
          }t          j        g dg dgdddgfdg dfg          }t	          ||           d S )Nra  r  r@   r=   rb  r  rX   r>   Tr  r  )r^  r\  r]  r   r   r   )r=   r   r>   r   )r|   r   r  r  r(   )r   r  r'  r&  s       rm   test_roll_multidimzTestDataset.test_roll_multidim  s    lYY			"qa11
 
 

 A400<YY			"S1a&MC;K+L
 
 
 	6*****ro   c                    ddi}t          ddd|fi|          }t          ddd|fi|          }t          |j        |           t          ddd|fi|          }t          |j        |           d S )	Nr  r  r   r   y      ?       @r  r>   r=   )r   r(   realimag)r   r   r   expected_reexpected_ims        rm   test_real_and_imagzTestDataset.test_real_and_imag  s    cB./u===sREN35AAA+...sREN35AAA+.....ro   c                   t          i 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>   r  r  r<  zcannot set attrrX  r=   )r   rg  rh  rg  r   r  r  r  s     rm   test_setattr_raiseszTestDataset.test_setattr_raises  s   R1eU^DDD]>1CDDD 	 	BI	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]>1CDDD 	 	BF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]>1CDDD 	 	BH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   AA
A
,B  BB&B;;B?B?c           
        t          d          }t          dd          }t          dd          }t          dgdg|fdgdg|fdgdg|fd	d
dgdgt          dd          fi          }|                    d           |                    d          }t          |j                  rJ |                    d          }|d         j        dk    sJ t          |d         |d                    |                    d          }|d
         j        dk    sJ t          |j                  rJ |                    d          }t          |j                  dk    sJ |j        D ]}||         j        dk    sJ |                    d           }t          |j                  dk    sJ |j        D ]}||         j        dk    sJ |                    d          }t          |j                  dk    sJ |j        D ]}||         j	        dk    sJ |                    dd          }t          |j                  rJ |                    dd          }|j        D ];}||         j        dk    sJ ||         j	        dk    sJ ||         j	        dk    sJ <|                    d d           }t          |j                  rJ d S )Nconvective_precipitation_flux)standard_nameair_potential_temperaturez0 m)r  heightz10 mr%  r   )temperature_0temperature_10precipitationrW   r  time_in_seconds)r  	long_namer   invalid_standard_namer  )r  r=   c                
    | d uS re   r   ro  s    rm   r:  z2TestDataset.test_filter_by_attrs.<locals>.<lambda>  s
    Qd] ro   )r  r>   c                    dS )NFr   ro  s    rm   r:  z2TestDataset.test_filter_by_attrs.<locals>.<lambda>  s    E ro   c                    dS )NTr   ro  s    rm   r:  z2TestDataset.test_filter_by_attrs.<locals>.<lambda>  s    D ro   )
rv  r   filter_by_attrsrx   rb   r  r'   r  r#  r  )r   preciptemp0temp10r   new_dsr  s          rm   test_filter_by_attrsz TestDataset.test_filter_by_attrs  s   $CDDD#>uMMM$?OOO#&%!e!4$'51#v"6#&%!f!5 
 cUQC3BS)T)T)TUV
 
 
 	)@AAA##2I#JJ())))) ##2Q#RRo&48WWWWWVO,b.ABBB ##.?#@@f~'+<<<<<())))) ##2M#NN6#$$))))# 	L 	LC#;,0KKKKKK ##+B+B#CC6#$$))))# 	L 	LC#;,0KKKKKK##6#226#$$))))# 	0 	0C#;%///// ##9% $ 
 
 ())))) ##5e $ 
 
 # 	0 	0C#;,0KKKKK#;%....#;%///// ##)/.. $ 
 
 ()))))))ro   c           
         t          dt          g ddgdg di          i          }|j        d         }|dz  j        d         }||u sJ d S )Nr  ra  r   r   r      rc  r=   )r   r   r  r  s       rm    test_binary_op_propagate_indexesz,TestDataset.test_binary_op_propagate_indexes#  sm    9YYYcUC;NOOOP
 
 ;s#q&"3'6!!!!!!ro   c                6   t          j        dddgi          }t          j        dddgi          }t          j        d          5  ||z   }d d d            n# 1 swxY w Y   t          j        dg di          }t          ||           t          j        ddd          }t          j        dd	d
          }t          j        ddi          }||z   }t          ||           t          j        d          5  t          j        t          j        dt          j        d          }||z   }t          ||           d d d            n# 1 swxY w Y   t          j        d          5  t          j        t          j        dd          }||z   }t          ||           d d d            n# 1 swxY w Y   t          j        d          5  t          j        dt          j        d
          }||z   }t          ||           d d d            d S # 1 swxY w Y   d S )Nr   r   r>   r=   ra  )arithmetic_joinr?   r  r@   )r  r"  r  r\  r  rm  rn  )r|   r   r   r'   rq   r  )r   	missing_2	missing_0r'  r&  r  r  s          rm   test_binary_op_join_settingz'TestDataset.test_binary_op_join_setting+  s   JaV}--	JaV}--	^G444 	+ 	+*F	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+:sIII.//VX&&& j1--..j1--..:uaj))sVX&&&^G444 	+ 	+z"&26"J"JKKH3YF***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
 ^F333 	+ 	+z"&";";<<H3YF***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+
 ^G444 	+ 	+z!BF";";<<H3YF***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+sI   AAA9AEEE'7F**F.1F.
7HHHr  r&  False)rr  r   Truec                    t          j        ddiddd          }t          j        ddiddd          }t          j        |          5  ||z   }d d d            n# 1 swxY w Y   |j        |k    sJ d S )	Nr   r>   r   r  r  r  )r  r"  r  )r|   r   r   r   )r   r  r&  r  r  	ds_results         rm   test_binary_ops_keep_attrsz&TestDataset.test_binary_ops_keep_attrsJ  s     j#qS)A)ABBBj#qS)A)ABBB^z222 	" 	"c	I	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" (******s   AA"%A"c           	     |   t          t          g ddgdg di          t          g ddg          dd	d
i          }t          |d          }|                    d          }g d|d         _        g d|d         _        |d         j        t          k    sJ |d         j        t          k    sJ t          ||           t          |dt                    }|                    d          }g d|d         _        g d|d         _        |d         j        t          k    sJ |d         j        t          k    sJ t          ||           t          |ddd          }|
                    dg dfdg df          }|d         j        t          k    sJ |d         j        t          k    sJ t          ||           t          |ddddt          i          }|
                    dg dfdg df          }|d         j        t          k    sJ |d         j        t          k    sJ t          ||           d S )Nra  r   r  rc  )r  r  gffffff
@r   rs  )r  r  r  r  r  r=   Tr  r  r  )r  r  r  r  )r?  rH   )TTTr>   ffffff@r  )r  r  r  )r   r   r   r   r   rH   r  r1  r(   rx   rC  rG  s       rm   test_full_likezTestDataset.test_full_likeY  s    			sLLL>QRRRse<<<  %.
 
 
 2q!!777%% )		 /~#s****~#u,,,,6*** 2$d;;;777%% 2 2 2 2 2 2~#t++++~#t++++6*** 2as334499iii 0c???5K9LL~#s****~#u,,,,6*** 2#*>*>tTlSSS99&8&8&8 9sOOO>T9UU~#t++++~#u,,,,6*****ro   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t          j        gfdt          j        ddgfd
dg di          }t          ||           t          |t          j        ||g                     t          g ddg dfg                              d          }|                    |          }t          j        ||g          }t          ||           d S )Nr   r   r   r   dsx0r   r>   r  dsx1)r  r  r  r   r  )r   r  r  dsy2)	r   r  combine_firstr   rq   r  r'   r|   r  )r   r  r  r'  r&  r  s         rm   test_combine_firstzTestDataset.test_combine_first  sX   !Q3c
"3!455@@f@MM!Q3c
"3!455@@f@MM##D))Aq"&>*S261a.4IJJ)
 
 
 	VX&&&VRXtTl33444 c???%;$<==HHfHUU##D))8T4L))VX&&&&&ro   c           
        t          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d	g          d          }t          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d	g          d          }t          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d	g          d          }|}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          g ddg dfg          }	|                    ||	g          }t          ||           |}t          ddgd	dd
gfg          }
|                    |
|g          }t          ||           t	          j        t                    5  |                    d          }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   dt          |j	                  v sJ |}|                    d          }t          ||           d }t          j                            |d!d"g#          }t          t          ddgddgddgddggd|fd	dd
gfg          t          ddgddgddgd$d%ggdd	g          d          }|                    d          }t          j                            t          t          |                    d!d"g#          }t          t          ddgddgddgddggd|fd	dd
gfg          t          d$d%gddgddgddggdd	g          d          }t          ||           |}|                    dd	g          }t          ||           |                    dd	gd          }t          ||           d S )&Nr>   r=   r@   r\  r]  r^  r   )r  r   r   r   r   r_  ry  rz  r   rs  )rk  r0  r  )r  c   b   F)	ascendingr  a   r   r   )r  _   r  r  r  P   rd  rk  zDataArray is not 1-D)r  )r   r   r  )r   r   r  r  r   r  r  )r   r   sortbyr'   rg  rh  r  r   r>  r  rt   r   r  r   r  )r   r   sorted1dsorted2dr&  daxr'  	dax_shortdax0dax1dayexcinfoindicesr  ds_midxmidx_reverseds                   rm   test_sortbyzTestDataset.test_sortby  s   VaVaV,___/EaQRV}.U  AAB8SzJJJ	 
 
 VaVaV,___/EaQRV}.U  B!Q!Q8SzJJJ	 
 
 VaVaV,___/EaQRV}.U  Q!Q!Q8SzJJJ	 
 
 ooo(>'?@@3VX&&& 3%00VR    r2h#Sz):(;<<	9%%VX&&&
 #)?(@AAc???%;$<==D$<((VX&&&RC!Q=/22C:&&VX&&& ]8$$ 	$ 	$YYs^^F	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ ]:&& 	('YYr#w''F	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(%W]););;;;;3VX&&& ;}(((GGVaVaVaV4T{S1a&M6R  AAB"bB#sTTT	 
 
 $$11(7##$$UEN 2 
 
 VaVaVaV4=)C!Q=9  R1b'Aq6Aq6B#sTTT 
 
 	VX&&& C:&&VX&&& C:77VR     s$   7II I=J%%J),J)c                   t          d          }dD ]9}t          ||         t          ||                     |t          |          v sJ :dD ]J}t          |d         |         t          |j        |                     |t          |d                   v sJ K|d         j        d         |j        j        k    sJ dt          |d                   v sJ d S )Nr>   r  r  r  r  rW   r  r  r  r  r  r  r  r  r  )r*   r'   r  r  r  r   r  )r   r   r   s      rm   test_attribute_accessz!TestDataset.test_attribute_access  s    1%%%V 	" 	"CC'"c"2"2333#b''>>>>>. 	* 	*CFC'"'3*?*?@@@#bj//)))))&z&"'+5555BvJ''''''ro   c                   t          d          }|                                }g d}|D ]
}||          t          |          t          |          k    sJ |d                                         }g d}|D ]}|d         |          t          |          t          |          k    sJ |                    ddg          }|                                }g d	}|D ]
}||          t          |          t          |          k    sJ |j                                        }g d
}|D ]}|j        |          t          |          t          |          k    sJ |d         j                                        }g d}|D ]}|d         j        |          t          |          t          |          k    sJ |j                                        }g d}|D ]}|j        |          t          |          t          |          k    sJ d S )Nr>   r  r  r  r  r  r  )dim12)	r  r  r  rW   r  r  r  r  r  )rW   r  r  r  r  )r  r  r  )r  r  r  r  )r*   _ipython_key_completions_r  r  rY   rb   )r   r   r'  r&  r  r  s         rm   test_ipython_key_completionz'TestDataset.test_ipython_key_completion
  se   1%%%--//VVV 	 	DtHHHf~~!1!11111 F5577... 	 	DvJtf~~!1!11111 ((&&!1(222244

 

 

  	 	DDMMMf~~!1!11111 4466>>> 	 	DIdOOOf~~!1!11111F"<<>>... 	$ 	$DvJd###f~~!1!11111 7799333 	 	DLf~~!1!1111111ro   c                
   t          d          }|                    ddd          }d|v sJ |                    ddd	          }d|v sJ d
|v sJ |                    dd          }t          |j                  dk    sJ d S )Nr>   r  r  r=   Ffullvar1_polyfit_coefficientsr  Tdim1_matrix_rankrW   r   )r*   polyfitr#  rb   )r   r   outs      rm   test_polyfit_outputzTestDataset.test_polyfit_output?  s    1%%%jjj//*c1111jjj..*c1111!S((((jj##3=!!Q&&&&&&ro   c                    t          d          }|                    d          }|                    ddt          j        |j        d                              t          j                            ||           d S )Nr>   r  Tr  r  r=   )r  )	r*   r   r  rq   re  r  r|   rU  r(   r  s      rm   test_polyfit_weightedz!TestDataset.test_polyfit_weightedL  sl    1%%%''t'$$


61	"(6*: ; ;
<<<

##B00000ro   c                   t          d          }t          j        d          5 }|j                            ddd           t          |          dk    sJ |d	         j        t          j        k    sJ |j                            ddd           t          |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nr>   r  TrJ  r  r   Fr  r   )	r*   ry   rz   r  r  r#  r  rq   RankWarning)r   r   rL  s      rm   test_polyfit_warningsz!TestDataset.test_polyfit_warningsT  s    1%%%$D111 	 RGOOFBUO333r77a<<<<a5>R^3333GOOFBTO222r77a<<<<<	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   BB66B:=B:c                &   t          d          }|                    dd          }|d         j        dk    sJ |d         j        d	k    sJ |d
         j        d	k    sJ |d         j        dk    sJ t          |j                  dddddk    sJ t
          j                            |d                             ddg          j	        d           t
          j                            |d         ddg         j	        t
          j
                   d S )Nr>   r  r>   r>   r  )r  constant_valuesr  )r  r  )ry  r  r  r  )r   ry  ry  r  r   r   r  r   r  r  )r*   r  r   rv  rZ   rq   rU  r'   rH  rg   r  )r   r   paddeds      rm   test_padzTestDataset.test_pad^  s   1%%%VR88f~#u,,,,f~#w....f~#w....f~#w....FK  QBPR$S$SSSSS

v 3 3!R 3 A A FKKK

v2w 7 <bfEEEEEro   )r  r   r&  rZ  defaultc                <   t          j        dddg|fdddg|fddddg|fdddg|fd|          }t          j        dg d	|fdddg|fddt          j        ddt          j        g|fdddg|fd|          }|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 )Nr   r>   r=   r   rZ  r  )r  r  r<  )r   r>   r=   r   r  r  r  constantr   )moder  )r  r  r  )r|   r   rq   r  r   r  rU  r(   )r   r  r   r&  r   keep_attrs_r'  s          rm   test_pad_keep_attrszTestDataset.test_pad_keep_attrsk  s    ZA&cAq65-ABBAw.cB7E5JKK
 
 

 :h/sQFE6JKKBFB262H=B7E*  
 
 
 $.#5ii:K000 	: 	:VVS&M
AVNNFJ''999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: &M
A*  
 
 	
##FH55555s   ;CCCc                   t          d          }d|j        d<   |j        |                    t                    j        k    sJ |j        j        |                    t                    j        j        k    sJ |                    t          d          j        rJ |                    t          d          j        j        rJ d S )Nr
  r  r  r  Fr  )r*   r   r~   r1  r  r4  s     rm   test_astype_attrszTestDataset.test_astype_attrs  s    S)))!
5zT[[//55555y$++e"4"4"9"?????;;u;77====;;u;77<BBBBBBro   parserpandaspythonenginenumexpr)marksbackendnumpydaskc                ,   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          j        dd          	                    dd          }t           j        
                    ddd          }	|dk    r8t          d|fd|fd|fd|fd|fd|	fdd|fd|fd|fd|fd|fd|	fd          }
n|dk    rt          dt          j        |d          fdt          j        |d          fdt          j        |d          fdt          j        |d          fdt          j        |d          fdt          j        |	d          fdd|fd|fd|fd|fd|fd|	f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                      5  |
                    d/||          }d d d            n# 1 swxY w Y   |
                    |d!k    |d%k    z  "          }t#          ||           t                      5  |
                    d0||          }d d d            n# 1 swxY w Y   |
                    ||z  d1k    "          }t#          ||           |d*k    rot                      5  |
                    d2||          }d d d            n# 1 swxY w Y   |
                    |d!k    |d%k    z  "          }t#          ||           t                      5  |
                    dd&||3          }d d d            n# 1 swxY w Y   |
                    |d!k    |d(k               }t#          ||           |d*k    rtt                      5  |
                    dd&d4||5          }d d d            n# 1 swxY w Y   |
                    |d!k    |d(k     |d-k              }t#          ||           t                      5  |
                    t%          dd&          ||#          }d d d            n# 1 swxY w Y   |
                    t%          |d!k    |d(k                         }t#          ||           |d*k    rt                      5  |
                    t%          dd&d4          ||#          }d d d            n# 1 swxY w Y   |
                    t%          |d!k    |d(k     |d-k                        }t#          ||           t'          j        t*                    5  |
                    d6           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  |
                    d6)           d d d            n# 1 swxY w Y   t'          j        t,                    5  |
                    d7"           d d d            n# 1 swxY w Y   t'          j        t,                    5  |
                    d8"           d d d            n# 1 swxY w Y   t'          j        t.                    5  |
                    d9"           d d d            d S # 1 swxY w Y   d S ):zTest querying a dataset.r  r   r   r>   r  r  r   r  r  T)rR  replace   r  r+  r   r   rd  rb  r  )r   r   r  r  r  r  )a2b2r~  r  e2f2r   r,  r@   )r2  r_  r  )r@   r_  )r@   r_  r  za2 > 5)r   r'  r$  Nr]  r  )r'  r$  zb2 > 502   zc2 < .5)r   r'  r$  r  rt  r%  zd2 == "bar")rd  r'  r$  r  r  z(a2 > 5) & (b2 > 50)z(a2 * b2) > 250   z(a2 > 5) and (b2 > 50))r   r   r'  r$  zd2 == 'bar')r   r   rd  r'  r$  za > 5zc < .5ze > 100z	spam > 50)rq   rr   r   re  rL  r>  choicer~   rw   rf  normalr   r[   
from_arrayr-   queryrH  r(   rv  rg  rh  r   rr  r7   )r   r*  r'  r$  r   r   r  r  r  r  r   r'  expects                rm   
test_queryzTestDataset.test_query  s#    		rIaQIa2..K1b!!I222TJJQQ
 
 Ia!!))"b11IQ55gqqqq$a)1-  ((((%q/*A.   BB$ r}Qq999:r}Qq999:r}Qq999:r}Qr:::;$bmAf&E&E&EF)2=:+N+N+NO  ((((%q/*A.   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,,, $%% 	V 	VXX 6vfXUUF	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	V 	VQUq2v.00((( $%% 	Q 	QXX 1&XPPF	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	QAES=))((( X'))  .vf "                 WWQ1r6 2W44FVV,,, $%% 	U 	UXXIfVXTTF	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	UAEq3w00((( X'))  #!! "                 WWA1s7U
WDDFVV,,, $%% 	 	XXx9---fV   F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 QAG55566((( X'))  8yMBBB!! "                 WWTQUCQ%ZIIIJJFVV,,, ]:&& 	 	HHW	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:&& 	  	 HHAH	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:&& 	  	 HHwH	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 ]:&& 	! 	!HHxH   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!]:&& 	" 	"HHyH!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"]122 	$ 	$HH{H###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$sD  6HH"H'JJJ!LL
L
	M..M25M27OO #O QQQR33R7:R7?T$$T(+T(.VVV"X		XX(Z

ZZ%)\\!\?^!!^%(^%_,,_03_0`33`7:`7a::a>a>ccc%d		ddr   )rF  rx   rg   r  r9   r   )rg   r  r9   r   ($  r   r   r   r)  r.  r5  r?  rL  rU  rl  rw  r|  rg  markr{   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/  r4  r1   rB  rK  r^  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r+  r2  rD  rH  rM  rP  rT  parametrizer   rW  rZ  r]  r>  bytesr_  rg  ru  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  xfailAssertionErrorr|   r   r   rq   rv   r  r  r  r  r
  r  r  r  r  r   r"  r%  r/   r/  r1  r9  r?  rB  rF  rH  rJ  rO  rS  r^  rd  ri  rl  ro  ru  ry  r  r  r  r  r  r  r  r  r  r5   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   rr   r  r)  r-  r/  r3  r5  r8  r:  r?  rA  rC  rM  rO  rR  rT  rZ  r\  r`  rg  ri  ro  rr  rx  r  r  r  r  r  r  r  r  r  r  r  r  re  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r"  r)  r.  r1  r;  r>  rC  rF  r.   rJ  rN  rQ  rX  rZ  r  r]  ri  ro  ru  rw  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  paramr  r  r  r  r  r	  r  r  r  r  r!  r#  r2   r;  r   ro   rm   r  r    s       8& 8& 8& 8&t#" #" #" #"J   " " " "*) ) ) ).$ $ $ $L+ + + +&   + + + + [ BCC/ / / DC/8. . . .<- - - - 
M 
M 
M 
M+ + + +B< < < <<
 <
 <
 <
|   
   . . . .$, , , ,! ! ! !46
 6
 6
 6
p)* )* )* )*VX X X X
+ + + +. . . .%+ %+ %+ %+N+ + + + ;  ;  ;  ;D+ + + +*
 
 
 
6) ) ) )*1 1 1 1* * * *, , , ,    6$ 6$ 6$ ]6$p    ]*?H ?H ?H ?HBW+ W+ W+ W+rX9 X9 X9 X9t@ @ @ @X X X X:GL GL GL GLR* * * *X+ + + +3 3 3 3. . . .*
3 
3 
3 
3	0 	0 	0 	0- - - -F F F F- - - -   4   4   ( [ <==[E [E [E >=[Ez/ / / /8   %Y %Y %Y %YNI I I IR R R R*+ + + +(M+ M+ M+ M+^8 8 8 8       H H H H+ + + +6 [\FIq#QQ?O?O+PQQ+ + + RQ+, [\FIq#QQ?O?O+PQQ+ + + RQ+. [WsEl332 2 2 432 [\FIq#qQR?S?S+TUU* * * VU*>+* +* +* +*Z	0 	0 	0 	0N N N N0$* $* $* $*L* * * *$* * * *   6 6 6 6& [Vfj%9::' ' ' ;:'1 1 1 1:U U U U(* (* (* (*T* * * *B
J 
J 
J 
J7 7 7 7,+ ,+ ,+ ,+\+ + + +- - - -^"& "& "& "&H       8!! !! !! !!F(+ (+ (+ (+TB B B B:+ + + + [n--[ $B$S("(Aq6*:*:;;!Q=   $B$S("(C8*<*<==#q?  	
 *8 8 8+  .-,8,/ / / /# # # #+2 +2 +2 +2Z6 6 6 6( ( ( (- - - -*1 1 1 1$	( 	( 	( 	(   ", , , ,(	+ 	+ 	+ 	+ S S S _S2U U U U2&C &C &C &CP(0 (0 (0 (0T.1 .1 .1 .1`0 0 0 0+ + + ++ + + +
#+ #+ #+ #+J8 8 8 8B$ $ $ $>+ + + +(       & & & &$ $ $ $
 [,E2rE3<0D5'2s|4%#3$+++R4U^USEE5>2>U^T#6#6#6B?5\53%%<S\4!4!4!4b"=		
 N N N N$8 8 8 8"- - - -@< < < <'8 '8 '8 '8R [$???#BK???#	
 6 6 6 66 6 6 6.9 9 9 9 / / / /   ) ) ) )* ,) ,) ,) _,)\+ + + ++ + + + A A A A	 	 	 	+ + + +! ! ! !,   + + + +$) ) ) ) / / / /- - - -*- - - -4# # # #1 1 1 1
	- 	- 	- 	-, , , ,$+ + + +1 1 1 1
J J J JZ Z Z Zx" " " "' ' ' '.' ' ' '.1 .1 .1 .1`' ' ' ' [WsEl330 0 0 430+ + + +  [% c
6(BIOOA$6$6778$
 ((F8RY__Q%7%7889;UV3Zq!f--/IJ	
 $ $ $ $
+ + + + + + + +
. 
. 
. 
.1 1 1 1
( 
( 
( 
(
 
 
 
= = = =2 2 2 2"+ + + +"
+ 
+ 
+ 
+' ' ' '+ + + +          ") ) ) ).+ + + +"^; ^; ^; ^;@" " " " . . . _.*' ' ' '1 1 1 16+ + + + ' ' ' '- - - -* [Z$77[V%<%<%<==]! ]! ]! >= 87]!~+ + + +  [V%<%<%<==+ + + >=+*C C C C*. . . .D D D D   .:% :% :% :%x>. >. >. >.@ ['')F)FPST 2 2 2 2$*- *- *- *-X- - - -,]- ]- ]- ]-~+ + + ++ + + +   2	+ 	+ 	+ 	++ + + +% % % %
	2 	2 	2 	2 [555655565556---.		
  [Vh	%:;;( ( ( <; (Y Y Y Y [C #+ #+ #+ #+J+ + + +, , , ,& [C + + + ++ + + +* * * * 
* 
* 
* 
*+ + + +4 [X':':':;;[S4$$">??; ; ; @? <;;* [Xe}55
+ 
+ 
+ 65
+ [X
G'<==J J J >=J [X
G'<==D D D >=D " " " "    + + + +' ' ' '.? ? ? ?  % % % %   *? ? ? ?,4 4 4 42+ + + +< [ BCC% % % DC%&@" @" @" @"D
6 
6 
6 
6F F F F' ' ' '' ' ' '' ' ' '&' ' ' '&" " " "
. . . .
 [\FIq#s|+LMM   NM"/ / / /
 
 
 
+ + + +/ / / /   A* A* A* A*F" " " "+ + + +> [	z"FLw///FLs377FCCC	
 + + + +)+ )+ )+ )+V' ' ' '$e! e! e! e!N( ( ( (32 32 32 32j' ' ' '1 1 1 1       F F F F [+++FLQQ//qq1A1AiPPPFLaa 0 0"AAAFLQQ//qq1A1AfMMM	
 6 6 6 64C C C C [X(';<<[8T<6<	BRAS#T#T#TU  [G\V\&HHHI \$ \$ \$   =<\$ \$ \$ro   r  test_elementsr>   r=   r   c                &   t          dddgfdddgfdddgfd                              d          }|dk    r|                                }t          dddgfdddgfdddgfd                              |           }t	          ||           d S )	NrP  r   r>   r  ra   rx   r,  r=   )r   r~   r=  isinr'   )rB  r*  r&  r=  s       rm   	test_isinrE  ?  s    A'A'A'
 
   fVnn  &>>##A'A'A'
 
   d=  """""ro   c                     t          dddgi          } t          j        t                    5  |                     |            d d d            d S # 1 swxY w Y   d S )Nr   r>   r=   )r   rg  rh  ri  rD  r:  s    rm   test_isin_datasetrG  W  s    	#1v		B	y	!	!  
                 s   AAAunaligned_coordsr   r<   )r>   r=   r   r  r  r?   r   r  rY   c                    t          j        g ddg|           }t          j        |          }||d<   t          j        d|i|          }t          ||           d S )Nra  r   rc  r   r   )r|   r   r   r'   )rH  rY   r   r&  r=  s        rm   2test_dataset_constructor_aligns_to_explicit_coordsrJ  ]  sj    & 	YYYcU3CDDDAz(((HHSMZa000F6"""""ro   c                     t          j        t          d          5  t          j        t          g ddh                     d d d            d S # 1 swxY w Y   d S )Nzhas invalid type <class 'set'>rX  ra  r\  )datesec)rg  rh  ri  r|   r   rv  r   ro   rm   "test_error_message_on_set_suppliedrN  z  s    	y(H	I	I	I 2 2

4YYYQC0001112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2s   'AAAr   c                    t          j        t          d          5  t          j        g ddg|            d d d            d S # 1 swxY w Y   d S )Nz(not a subset of the DataArray dimensionsrX  ra  r   rc  )rg  rh  r   r|   r   )rH  s    rm   +test_constructor_raises_with_invalid_coordsrP    s    	z)S	T	T	T E E
YYYcU3CDDDDE E E E E E E E E E E E E E E E E Es   AAAr   r@   T)indirectc                V    h d}t          |           }t          |          |k    sJ d S )N>   r  r%  piper  ra  r  )r  r   )r   some_expected_attrsr=  s      rm   test_dir_expected_attrsrU    s7    OOOWWFv;;-------ro   c                    d| d<   t          |           }d|vsJ t          j                            g d          }t	          j        d|j        |fi          }|d         }t          |           d S )Nr  r]  )r=   r  i'  r  sample_data)r  rq   rr   uniformr|   r   r   )r   r=  rW  r   rk  s        rm   test_dir_non_stringrY    sy    BqEWWFF???? )##)9)9)9#::K

MK$5{#CDEEA	
=	BGGGGGro   c                :    d| d<   t          |           }d|v sJ d S )Nuniunicode)r  r   r=  s     rm   test_dir_unicoder^    s-    ByMWWFro   c                     t                      5  t          ddddt          j        gfi          dk     d d d            d S # 1 swxY w Y   d S )Nr   r   r>   r=   ra   r   )r)   r   rq   r  r   ro   rm   +test_raise_no_warning_for_nan_in_binary_opsr`    s    			 < <3q!RVn 56777!;;< < < < < < < < < < < < < < < < < <s   &AA	AerrorrD  c                &    t          | |            d S re   )r%   r:  s    rm   "test_raise_no_warning_assert_closerc    s     Bro   r,  F
edge_orderc                   t           j                            d          }g d}t          j        |                    dd          ddg|dd|                    dd          fd	
          }| rt          r |j        ddi          }t          j        d|i          } |j	        d|          }t          j        t          j
        ||d         d|          |j        |j        
          }t          ||           t          |d         	                    d|          |	                    d|          d                    t          |d         |d                     |j	        d|          }t          j        t          j
        ||d         d|          |j        |j        
          }t          ||           t          ||	                    d|          d                    t          |d         	                    d|          |	                    d|          d                    t          j        t                     5   |j	        d           d d d            d S # 1 swxY w Y   d S )Nr  rq  gffffff?rr  g333333?gffffff?r4  gRQ?g?ry  r^  r   r   r@   rb  r   rd  r)  rc  r\  r  r   r  rd  rd  r>   r)  )rq   rr   rs   r|   r   r  r,   r=  r   differentiategradientrZ   rY   r'   rg  rh  r   )	r,  rd  r   coordr[   r   r'  r  r  s	            rm   test_differentiaterm    s    
		r	"	"B777E	
A3ZJA+GHH
 
 
B
     RXsAh	UBK	 	 B Rc:..F
B3aJ???Wy  J
 V$$$
5	
;;
44U;  
 C&+&&& Rc:..F
B3aJ???Wy  J
 V$$$))#*)EEeLMMM
5	
;;
44U;  
 
z	"	"                                       s   I""I&)I&r}  c                   t           j                            d          }t          j        g dd          }t	          j        |                    dd          ddg|d	d
|                    dd          fd          }| rt          r |j        ddi          } |j	        ddd          }t	          j        t          j
        ||d         j                            d          dd          |j        |j                  }t          ||            |j	        ddd          }t          j        ||dz            sJ |d         	                    ddd          }t          j        |d          sJ t	          j        |                    d          dgd|i          } |j	        dd          }t          j        |d          sJ d S )Nr  z
2004-07-13z
2006-01-13z
2010-08-13z
2010-09-13z
2010-10-11z
2010-12-13z
2011-02-13z
2012-08-13r  rG   ry  r^  r   r   r@   rb  rg  rc  r\  r>   r  rd  datetime_unitrq  r   rh  r     r  zdatetime64[ms]ri  )rq   rr   rs   rv   r|   r   r  r,   r=  rj  rk  r  _to_numericrZ   rY   r'   r  r~   )r,  r   rl  r[   r'  r  r  s          rm   test_differentiate_datetimeru    s    
		r	"	"BH		
 		
 		
   E 

A3ZJA+GHH
 
 
B
     RXsAh RcasCCCF
3 ,,3,??aTU	
 	
 	
 Wy  J V$$$bsqDDDG;vw|,,,,, W""31C"HHF;vs##### 
ell#344C5#u	V	V	VBRca000F;vs#######ro   Test requires cftime.)reasonc           
     4   t           j                            d          }t          j        ddd          }t          j        |                    dd          |dd|                    dd          fd	d
dg          }| rt          r |j        d
di          } |j	        d
dd          }t          j
        ||d
         j                            d          dd          }t          j        ||j        |j                  }t          ||            |j	        d
dd          }t!          ||dz             |d
         	                    d
dd          }t!          |t          j        |d
                                       t&                               d S )Nr  r'  ry  2Mr1  r^  r@   rW   r   rW   rd  t2drW   r   rX   r\  r>   r  rp  rr  r   rh  r  rs  )rq   rr   rs   r|   r-  r   r  r,   r=  rj  rk  r  rt  rY   rZ   r'   r%   	ones_liker~   r1  )r,  r   rl  r[   r'  expected_datar&  r  s           rm   test_differentiate_cftimer    s    
		r	"	"BOFAD999E	
AA}bhhq!nn.MNNc]
 
 
B  # #RXvqk""Rf#FFFFK
BvJ++#+>>QST  M |M")"'JJJH6"""bv!3GGGGFGbL))) Z%%f#%NNFFBLF44;;EBBCCCCCro   c                   t           j                            d          }g d}t          j        |                    dd          ddg|d|                    d          fdd	|                    dd          fd
          }| rt          r |j        ddi          }t          j        d|i          } |j	        d          }t          j        t          j
         |j                    |d         d          dgd |j                                        D                       }t          ||                                           t          |d         	                    d          |	                    d          d                    t!          |j        t%          |j                            sJ  |j	        d          }t          j        t          j
        ||d         d          dgd |j                                        D                       }t          ||                                           t          ||	                    d          d                    t          |d         	                    d          |	                    d          d                     |j	        d          }|j        dk    sJ t)          j        t,                    5   |j	        d           d d d            d S # 1 swxY w Y   d S )Nr  rf  ry  r^  r   r   r  r@   rb  r   rk  rd  r)  rc  r\  r  r   r  c                ,    i | ]\  }}d |j         v||S r  rs  r9  s      rm   r   z"test_integrate.<locals>.<dictcomp>E  *    HHHAc6G6G16G6G6Gro   r>   c                ,    i | ]\  }}d |j         v||S rt  rs  r9  s      rm   r   z"test_integrate.<locals>.<dictcomp>R  r  ro   r  r)  )rq   rr   rs   r|   r   r  r,   r=  r   	integratetrapzcomputerY   r   r%   r'   r   rg   r  rS  rg  rh  r   )r,  r   rl  r[   r   r'  r  r  s           rm   test_integrater  +  s   			r	"	"B777E	
A3Z288A;;'A/	
 
	
 	
 	
B     RXsAh	UBK	 	 B R\#F
r#wQ///UHH!2!2HHH  J
 J 0 0111E$$S))2<<+<+<U+CDDD fk4==11111 R\#F
RW1%%%UHH!2!2HHH  J
 J 0 0111c**51222E$$S))2<<+<+<U+CDDD R\*%%F;!	z	"	"  U                 s   K55K9<K9c                   t           j                            d          }g d}t          j        |                    dd          ddg|d|                    d          fdd	|                    dd          fd
          }| rt          r |j        ddi          }t          j        d|i          } |j	        d          }ddl
m} t          j         | |j                    |d         dd          ddg|j                  }t          ||                                           t          |d         	                    d          |	                    d          d                    t!          |j        t%          |j                            sJ  |j	        d          }t          j         |||d         dd          ddg|j                  }t          ||                                           t          ||	                    d          d                    t          |d         	                    d          |	                    d          d                     |j	        d          }|j        dk    sJ t)          j        t,                    5   |j	        d           d d d            d S # 1 swxY w Y   d S )N+   rf  ry  r^  r   r   r  r@   rb  r  rc  r\  r  r   )cumtrapzr  )r  initialr>   r  r=   r)  )rq   rr   rs   r|   r   r  r,   r=  r   cumulative_integratescipy.integrater  r  rY   r%   r'   r   rg   r  rS  rg  rh  r   )	r,  r   rl  r[   r   r'  r  r  r  s	            rm   test_cumulative_integrater  `  s     
		r	"	"B777E	
A3Z288A;;'A/	
 
	
 	
 	
B     RXsAh	UBK	 	 B %R$S))F )(((((r#wQ<<<3Zy  J
 J 0 0111
5	&&s++
$$U+   fk4==11111 %R$S))FRW1c2223Zy  J
 J 0 01110055e<===
5	&&s++
$$U+   %R$Z00F;!	z	"	" ' '&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   J55J9<J9which_datetimerq   cftimec           
        t           j                            d          }|dk    rt          j        g dd          }n2t          st          j        d           t          j        ddd	
          }t          j	        |
                    dd          |dd|
                    dd          fdddg          }| rt          r |j        ddi          } |j        dd          }t          j         |j                    j        t#          j        |d         j        d          d          }t          j	        |dgd |j                                        D                       }t+          ||                                           t-          |j        t/          |j                            sJ  |j        dd          }t+          ||dz             d S )Nr  rq   ro  r  rG   rv  r'  ry  2Dr1  r^  r@   rz  r{  rW   r   rX   r\  r  rr  r   r  c                ,    i | ]\  }}d |j         v||S rD  rs  r9  s      rm   r   z'test_trapz_datetime.<locals>.<dictcomp>  s*    KKKAfAF6J6J16J6J6Jro   rc  r  g      8@)rq   rr   rs   rv   r+   rg  skipr|   r-  r   r  r,   r=  r  r  r  rg   r   datetime_to_numericrY   r   r%   r   r  )	r,  r  r   rl  r[   r'  r~  r&  r  s	            rm   test_trapz_datetimer    s    
		r	"	"B	 	 	 
 
 
  	1K/000===	
AA}bhhq!nn.MNNc]
 
 
B  # #RXvqk""R\&444FH
*2f:?#NNN  M
 |UKK!2!2KKK  H
 Hfnn../// fk4==11111bl6555GFGdN+++++ro   c                     t                      } t          j        t                    5  | j         d d d            d S # 1 swxY w Y   d S re   )r   rg  rh  rg  __dict__)r  s    rm   test_no_dictr    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 Dataset 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>.MyDSNr  r   ro   rm   MyDSr    r  ro   r  Nz%MyDS must explicitly define __slots__)rg  rh  rg  r   r>  r  )r  r  s     rm   test_subclass_slotsr    s     
~	&	& !	 	 	 	 	7 	 	 	              
 qw<<BBBBBBBs   :>>c                 `    ddl m}  t                      } | |          } |            |u sJ dS )zClasses with __slots__ are incompatible with the weakref module unless they
    explicitly state __weakref__ among their slots
    r   )refN)weakrefr  r   )r  r   r'  s      rm   test_weakrefr    sC     	BBA133"999999ro   c            
        t          t          t          t          j        t                      g                                        } t          |           }| d         j        d         |d         j        d         usJ d S )Nro  r  r   )r   rv  r   rq   rv   rw   r   r   )r  rj  s     rm   test_deepcopy_obj_arrayr    sl    	)BHfhhZ$8$899:::	;	;B	"Be9Abi&6q&9999999ro   c                 2   t          j        ddgddgfi          } | | j        d<   |                     d           t          j        dd	gd
dgfi          }|| j        d<   | |j        d<   |                     d           |                    d           d S )Nr   r   r>   r=   r  Tr  r   r   r@   r\  )r|   r   r   r   )r   r  s     rm   test_deepcopy_recursiver    s     
SC51a&/*	+	+BBHW GGG *cSEAq6?+
,
,CBHWCIg GGGHH$Hro   c                   |                      d          }t          |                    d          dk                                              sJ |                      d          }t          |                    d          dk                                              sJ |                      dd          }t          |                    d          dk                                              sJ t          |                    d          dk                                              sJ |                      |                     d          |                     d                    }|j        | j        k    sJ d S )	Nr  )r  .r  r3  r4  )r  r!  r   )r  r   r  r   r!  r%  rZ   r]  s     rm   	test_clipr    s=   WWWF

33&..0011111WWWF

33&..0011111WW4W((F

34'//1122222

34'//1122222WW2773<<W88F;"'!!!!!!ro   c                  \    e Zd Zej                            dg d          dd            ZdS )TestDropDuplicateskeep)rJ  lastFr9   r   c                   t          j        dg dfdg dfddg di          }|dk    rg d}g d	}g d
}n|dk    rg d}g d}g d
}nddg}ddg}ddg}t          j        d|fd|fdd|i          }|                    d|          }t          ||           t	          j        t          d          5  |                    d|           d d d            d S # 1 swxY w Y   d S )NrW   )r   r]  r^  r_  )rz  r@   ry  r=   rZ  )r   r   r>   r=   r   rJ  )r   r^  r_  )rz  ry  r=   r?   r  rp  )r@   ry  r=   r^  r_  ry  r=   r>   )r  z['space'] not foundrX  r  )r|   r   drop_duplicatesr'   rg  rh  r   )r   r  r   r   r   rW   r&  r=  s           rm   test_drop_duplicates_1dz*TestDropDuplicates.test_drop_duplicates_1d!  s   Z<<<(/EFFLLL)
 
 

 7??		A		A99DDV^^		A		A99DDAAAAq6D:1+VQK00&$
 
 
 ##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   9CC"%C"Nr   )r   r   r   rg  r<  r=  r  r   ro   rm   r  r     sL        [V%=%=%=>>3 3 3 ?>3 3 3ro   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 )TestNumpyCoercionr9   r   c                    t          j        ddg dfiddg dfi          }t          |                                |           d S )Nr   r   ra  rU   r  r   )r|   r   r(   as_numpyr  s     rm   test_from_numpyz!TestNumpyCoercion.test_from_numpy@  sP    ZsIII./iii@P8QRRR+++++ro   c                    t          j        ddg dfiddg dfi          }|                    d          }t          |                                |                                           d S )Nr   r   ra  rU   r  r   r>   )r|   r   r=  r(   r  r  )r   r   
ds_chunkeds      rm   test_from_daskz TestNumpyCoercion.test_from_daskE  sk    ZsIII./iii@P8QRRRXXa[[
,,..

=====ro   c           	     6   ddl m} t          j        g d          }t	          j        dd ||d          fidd ||d	z   d
          fi          }t	          j        ddg dfidd|d	z   fi          }t          |                                |           d S )Nr   Quantityra  r   r   Par  rU   r@   r  r   )pintr  rq   rv   r|   r   r(   r  )r   r  r  r   r&  s        rm   test_from_pintz TestNumpyCoercion.test_from_pintL  s    !!!!!!hyyy!!Z3D11123C#'!=!=!=>?
 
 

 :sS)))$45usCRSGn>UVVV11111ro   c                >   dd l }t          j        g d          }|j                            |          }t          j        dddg|fidd|dz   fi	          }t          j        dddg|fidd|dz   fi	          }t          |                                |           d S )
Nr   ra  r   r   r   elevrb  r@   r   )	r8   rq   diagflatrk  
from_numpyr|   r   r(   r  )r   r8   r  sparrr   r&  s         rm   test_from_sparsez"TestNumpyCoercion.test_from_sparseY  s    k)))$$
%%c**ZC:u%&UQY8O/P
 
 
 :C:s#$fz376K-L
 
 
 	11111ro   c           	     R   dd l }t          j        g d          }t          j        dd|                    |          fidd|                    |dz             fi          }t          j        ddg dfidd|dz   fi          }t          |                                |           d S )Nr   ra  r   r   rU   r@   r   )cupyrq   rv   r|   r   r(   r  )r   cpr  r   r&  s        rm   test_from_cupyz TestNumpyCoercion.test_from_cupyh  s    hyyy!!Z3&'bhhsQw>O>O8P0Q
 
 
 :sS)))$45usCRSGn>UVVV11111ro   c           	     r   dd l }ddlm} t          j        g d          }|j                            |          }t          j        dd ||d          fidd ||d	          d
z  fi          }|                                }t          j        dd|fidd|d
z  fi          }t          ||           d S )Nr   r  ra  r   r   r  r  rU   r  r=   r   )
r,  r  r  rq   rv   r8  r|   r   r  r(   )r   r,  r  r  r  r   r=  r&  s           rm   test_from_pint_wrapping_daskz.TestNumpyCoercion.test_from_pint_wrapping_daskt  s     	!!!!!!hyyy!!J!!#&&Z3$///01C!3!7!7!7!!;<=
 
 

 :sS#J/cAg8OPPP*****ro   Nr   )r   r   r   r  r1   r  r3   r  r5   r  r0   r  r  r   ro   rm   r  r  ?  s        , , , ,
 > > > ]> 
2 
2 
2 ]
2 2 2 2 _2 	2 	2 	2 ]	2 + + + ] ]+ + +ro   r  c                     t          j        t          j        d          dg          } t          j        t          |                     }d| i}|                    |           dS )z;Tests that string keys to `variables` are permitted by mypyr   r   rs  r  r   )r   N)r|   r   rq   re  r   rv  rC  )r[   r   r  s      rm   test_string_keys_typingr    s\     
bimm3%	0	0	0B	D2JJJ		BBiGIII     ro   c                     t          j        ddggfddggfd          } t          j        t          t          j        d                    5  |                     ddg           d d d            d S # 1 swxY w Y   d S )	Nrb     r  r  zntranspose requires dims to be passed as multiple arguments. Expected `'y', 'x'`. Received `['y', 'x']` insteadrX  r   r   )r|   r   rg  rh  ri  r  r  r  r:  s    rm   test_transpose_errorr    s     
Z2$0*tf9MNN	O	OB	i|
 

 
 
 ! ! 	c3Z   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   A22A69A6re   )r9   r:   r   )r9   r   )r9   r   r   )
__future__r   r  r  r<  ry   collections.abcr   r   r   ior   textwrapr   typingr	   r
   r+  rq   r%  rt   rg  pandas.core.indexes.datetimesr   xarrayr|   r   r   r   r   r   r   r   r   r   r   xarray.coding.cftimeindexr   xarray.corer   r   r   xarray.core.commonr   r   xarray.core.coordinatesr   xarray.core.indexesr   r   xarray.core.pycompatr   r    xarray.core.utilsr!   xarray.testsr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   pandas.errorsr7   ImportErrorpandas.core.computation.ops
dask.arrayrv   r[   r  r<  r{   
pytestmarkr   r   r   r   InMemoryDataStorer   commonBackendArrayr   r   r  r=  rE  rG  r  rJ  rN  rP  rU  rY  r^  r`  rc  rm  ru  skipifr  r  r  r  r  r  r  r  r  r  r  r  r  r  r   ro   rm   <module>r     s
   " " " " " "  				 



  $ $ $ $ $ $                                      7 7 7 7 7 7                            2 1 1 1 1 1 / / / / / / / / / / 8 8 8 8 8 8 8 8 6 6 6 6 6 6 2 2 2 2 2 2 2 2 : : : : : : : : ' ' ' ' ' '                                             0C4444444 C C CBBBBBBBBC
	 	 	 	D	 Jx((  K:;;
KGHH
S- S- S- S- S-l8 8 8 8:& & & &   P P P P PH$> P P P2% % % % %ho: % % %N N N N NX%? N N N4c`$ c`$ c`$ c`$ c`$ c`$ c`$ c`$RA Aq6828QF3C3CYYPQSTvEVEV*WXX# # # YX#.    	iii	ujbj++,-	ujbj++,-	hbhyyy!!"	hhCiii0001	mm9995556	b		sIII	sJBJyyy))*+	ujbj++,-  S3			*:$;c999=M#NOO
# 
# 
# PO  
#2 2 2 2
 +sS*"*YYY:O:O4P.Q-STTE E E UTE
 sT22. . . 32.
 
 
 
   < < < <
 G$$td33   43 %$ $//1v..,  ,  ,  /. 0/, ^ >??$//-$ -$ -$ 0/ @?-$` 
N+BCC$//D D D 0/ DCD8 $//1 1 1 0/1h $//;' ;' ;' 0/ ;'| >??$//)D(+;<</, /, /, =< 0/ @?/,d   C C C C   : : : :   ," " " "3 3 3 3 3 3 3 3>D+ D+ D+ D+ D+ D+ D+ D+N! ! ! !! ! ! ! ! !s$   
C CC#C* *C21C2