
    d                      d dl mZ d dlZd dlmZmZ d dlmZmZ d dlmZm	Z	 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mZmZmZmZ d d	lmZmZmZ d d
lm Z m!Z!m"Z" d dl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZB  e.d          ZCddidgddidgddidgddddgddddggZDejE        d             ZF G d  d!e          ZG G d" d#eG          ZHe> G d$ d%eG                      ZIeA G d& d'                      ZJ G d( d)eG          ZK G d* d+          ZLd, ZM G d- d.          ZNd/ ZOejP        Q                    d0eeg           G d1 d2                      ZRejP        Q                    d3 ejS        d4d5          d6f ejS        d4d7          d8f ejT         ejS        d4d5          g          d6f ejT         ejS        d4d7          g          d8f ejU        d9d:          d6f ed;dd          d6f ejT         ed;dd          g          d6f ejU        d9d ejV        d<          =          d6f ejW         ejU        d9d ejV        d<          =                    d6fg	d> ?          dJdB            ZXe?dJdC            ZYejP        Q                    d3 ejZ        dDd5          d6f ejZ        dDd7          d8f ejT         ejZ        dDd5          g          d6f ejT         ejZ        dDd7          g          d8f ej[        dEd:          d6f e	dF          d6f ejT         e	dF          g          d6fgdG ?          dJdH            Z\e?dJdI            Z]dS )K    )annotationsN)ABCabstractmethod)copydeepcopydatetime	timedelta)dedent)Version)
Coordinate	DataArrayDatasetIndexVariableVariableset_options)dtypesduck_array_opsindexing)	full_like	ones_like
zeros_like)	BasicIndexerCopyOnWriteArrayDaskIndexingAdapterLazilyIndexedArrayMemoryCachedArrayNumpyIndexingAdapterOuterIndexerPandasIndexingAdapterVectorizedIndexer)
array_type)NDArrayMixin)as_compatible_dataas_variable)assert_allcloseassert_array_equalassert_equalassert_identicalassert_no_warningshas_pandas_version_tworaise_if_dask_computesrequires_bottleneckrequires_cupyrequires_daskrequires_pandas_version_tworequires_pintrequires_sparsesource_ndarraydaskx      )r6   r   r   r9   r8   )r8   r8   r9   r9   yr      )r9   r<   r9   r=   r8   r7   r   r5   z)r>   r9   r?   r7   )r>   r9   r7   r7   c                 |    t          t          d          t          j                            ddd                    S )Nxyzr=         dimsdata)r   listnprandomrand     :lib/python3.11/site-packages/xarray/tests/test_variable.pyvarrQ   <   s-    e29>>!Q+B+BCCCCrO   c                  z   e Zd Zedvd            Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd ZdwdZd Zd Zd Zej                            d          d             Zej                            d          d             Zd Zd Zd Zd Zd Zej                            d          d             Zej                            d          d             Zd Zej                            d          d             Zej                            d          ej                            d          d                         Z d  Z!d! Z"ej        #                    d"e$e%g          dxd%            Z&d& Z'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z-dyd-Z.d. Z/d/ Z0d0 Z1d1 Z2d2 Z3ej        #                    d3d4d5g          ej        #                    d6e$e%e4g          dzd9                        Z5dyd:Z6d; Z7dyd<Z8dyd=Z9dyd>Z:dyd?Z;d@ Z<dA Z=dB Z>dC Z?dD Z@dE ZAdF ZBdG ZCdH ZDdI ZEdJ ZFdK ZGdL ZHej        #                    dMdN ejI        dOej                            dP          Q           ejI        dRej                            dS          Q          dT ejI        dUej                            dV          Q          dWdXdYdZg	          ej        #                    d[eJ          ej                            d\          d]                                     ZKej        #                    d[eJ          d^             ZLej        #                    g d_ ejI        dd`dadbd`dadbdcd           ejI        d5d`dadbi ded           ejI        d4d`dadbd`dadbdfd          g          dg             ZMej        #                    dhdi          dj             ZNdk ZOej        #                    dld4d4gd5d5gg          ej        #                    dmg dn          do                         ZPej        #                    dpdqdrdrgdsd4fdtdqdrdsd4d4gfg          du             ZQdS ){VariableSubclassobjectsreturnr   c                    t           N)NotImplementedErrorselfargskwargss      rP   clszVariableSubclassobjects.clsB   s    !!rO   c                   dt          j        d          z  }|                     dg|ddi          }|j        dk    sJ t	          |j        |           |j        t          k    sJ |j        dk    sJ |j	        dk    sJ |j
        ddik    sJ |j        dk    sJ |j        d	k    sJ t          |          dk    sJ |j        ddik    sJ d S )
N      ?
   timefoobarr`   )r_   P   r8   )rK   aranger\   rH   r'   valuesdtypefloatshapesizesizesnbytesndimlenattrsrY   rI   vs      rP   test_propertiesz'VariableSubclassobjects.test_propertiesF   s    RYr]]"HHfXteU^44v""""18T***w%w%v||||w62,&&&&x2~~~~v{{{{1vv||||w5%.((((((rO   c                   |                      dgdt          j        d          z            }|j        i k    sJ ddi}||_        |j        |k    sJ t	          |j        t
                    sJ d|j        d<   |j        d         dk    sJ d S )Nr`   r^   r_   ra   rb   baz)r\   rK   re   ro   
isinstancedict)rY   rq   ro   s      rP   
test_attrsz"VariableSubclassobjects.test_attrsT   s    HHfXsRYr]]233w"}}}}w%!'4(((((wu~&&&&&&rO   c                    |                      dgt          j                            d                    }|ddi         }|d         }t	          ||           d S )Nr5   rF   r   )r\   rK   rL   randnr)   rY   rq   actualexpecteds       rP   test_getitem_dictz)VariableSubclassobjects.test_getitem_dict^   sQ    HHcUBIOOA..//C8Q46*****rO   c                   t          j        g d          }|                     dg|          }|t          ddg                   }|j        dk    sJ t          ||ddg                    |t          t          d                              }|j        dk    sJ t          ||           |t          t          dddg                             }|j        dk    sJ t          ||ddg                    |t          d                   }|j        dk    sJ t          ||d                    |t          d                    }|j        dk    sJ t          ||           d S )	Nr   r8   r7   r5   r   r8   r5   ar   rN   )rK   arrayr\   rv   rH   r'   slicer   )rY   rI   rq   v_news       rP   test_getitem_1dz'VariableSubclassobjects.test_getitem_1dd   si   x			""HHcUD!!$!Q...!zV####5$1v,///$t%%%&zV####5$'''$#1v..///0zV####5$1v,///$)))zR5$q'*** %++zV####5$'''''rO   c                @   |                      dgg d          }t          dddgddgg          }||         }|j        dk    sJ t          j        |j                  ddgddgfdf         }t          ||           t          dg d          }||         }t          |dd	g         |           |g d         }t          |dd	g         |           t          j	        t          d
          5  t          dg d          }||          d d d            d S # 1 swxY w Y   d S )Nr5   r   r   br   r8   .r   TFTr7   zBoolean indexer shouldmatchr   )r\   r   rH   rK   r   _datar'   r)   pytestraises
IndexError)rY   rq   indr   r|   s        rP   test_getitem_1d_fancyz-VariableSubclassobjects.test_getitem_1d_fancy}   s   HHcUIII&&zQFQF#344#zZ''''8AG$$q!fq!f%5s%:;5(+++ v22233#Aq6E***%%%&Aq6E***]:-FGGG 	 	6#6#6#677CcFF	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   +DDDc           	     F   |                      dgg d          }t          |                    d          t          dt          j                             t          |                    g d          |                      dgdt          j        dg                     t          |                    t          d                    |                      dgddg                     t          |                    g dd	
          |                      dgg d                     d S )Nr5   r   rN   )r   r   r8   r   r8   r7   
fill_value)r   r   r8   )r\   r)   _getitem_with_maskr   rK   nanr   rY   rq   s     rP   test_getitem_with_maskz.VariableSubclassobjects.test_getitem_with_mask   s   HHcUIII&&--b118B3G3GHHH  ,,dhhuq"&!n.M.M	
 	
 	
 	--eAhh773%!Q9P9PQQQ   <<HHcUKKK((	
 	
 	
 	
 	
rO   c           	     `   |                      dgg           }t          |                    d          t          dt          j                             t          |                    g d          |                      dgt          j        t          j        t          j        g                     d S )Nr5   r   rN   )r   r   r   )r\   r)   r   r   rK   r   r   s     rP    test_getitem_with_mask_size_zeroz8VariableSubclassobjects.test_getitem_with_mask_size_zero   s    HHcUB--b118B3G3GHHH  ..HHcURVRVRV455	
 	
 	
 	
 	
rO   c                    |                      dgg d          }t          dddgddgg          }t          |                    |d          |           d S )Nr5   r   r5   r;   r   r   r7   r   )r\   r   r)   r   )rY   rq   indexers      rP   !test_getitem_with_mask_nd_indexerz9VariableSubclassobjects.test_getitem_with_mask_nd_indexer   s`    HHcUIII&&:B"a'9::--g"-EEwOOOOOrO   Nc                p   |d         j         dk    sJ |d         j        dk    sJ |d         j        dk    sJ |                    |                                          sJ |                    |                                          sJ t          j                    5  t          j        dd           t          j
                            |j        d         |           t          j
                            |d         j        |           ddd           n# 1 swxY w Y   |\t          |j        d                   t          |          k    sJ t          |d         j                  t          |          k    sJ dS |dur0|j        d         j        |k    sJ |d         j        j        |k    sJ dS dS )zjGiven a 1-dimensional variable, verify that the variable is indexed
        like a numpy.ndarray.
        r   rN   r8   ignorezIn the future, 'NAT == x'NF)ri   rm   rj   equalsr   	identicalwarningscatch_warningsfilterwarningsrK   testingr(   rf   typerg   )rY   variableexpected_value0expected_dtypes       rP   _assertIndexedLikeNDArrayz1VariableSubclassobjects._assertIndexedLikeNDArray   s    { B&&&&{1$$$${1$$$$x}}/////!!(--//22222$&& 	I 	I#H.IJJJJ##HOA$6HHHJ##HQK$6HHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I
 !*++tO/D/DDDDD*++tO/D/DDDDDDD5((?1%+~====A;%+~==== )(==s   A,DDDc                    dt           j        ft          j        d          t           j        ffD ]4\  }}|                     dg|g          }|                     |||           5d S )Nr   r5   )rK   int_int32r\   r   rY   valuerg   r5   s       rP   test_index_0d_intz)VariableSubclassobjects.test_index_0d_int   sk    \BHQKK+BC 	< 	<LE5#((A**1eU;;;;	< 	<rO   c                    dt           j        ft          j        d          t           j        ffD ]4\  }}|                     dg|g          }|                     |||           5d S )Nr^   r5   )rK   float_float32r\   r   r   s       rP   test_index_0d_floatz+VariableSubclassobjects.test_index_0d_float   sl    !29-
3/LM 	< 	<LE5#((A**1eU;;;;	< 	<rO   c                    d}t          j        d          }|                     dg|g          }|                     |||           d S )Nra   U3r5   )rK   rg   r\   r   r   s       rP   test_index_0d_stringz,VariableSubclassobjects.test_index_0d_string   sI    HHcUUG$$&&q%77777rO    ignore:Converting non-nanosecondc                   t          ddd          }|                     dg|g          }|                     |t          j        |                     |                     dgt          j        |          g          }|                     |t          j        |          d           |                     dgt          j        |g                    }|                     |t          j        |          d           d S )N  r8   r5   datetime64[ns])r	   r\   r   rK   
datetime64pdDatetimeIndexrY   dr5   s      rP   test_index_0d_datetimez.VariableSubclassobjects.test_index_0d_datetime   s    T1a  HHcUQC  &&q"-*:*:;;;HHcUR]1--.//&&q"-*:*:<LMMMHHcUB,aS1122&&q"-*:*:<LMMMMMrO   c                r   t          d          }|                     dgt          j        |          g          }|                     |t          j        |          d           |                     dgt          j        |g                    }|                     |t          j        |          d           d S )Nr8   )hoursr5   timedelta64[ns])r
   r\   rK   timedelta64r   r   to_timedelta)rY   tdr5   s      rP   test_index_0d_timedelta64z1VariableSubclassobjects.test_index_0d_timedelta64   s    QHHcUR^B//011&&q".*<*<>OPPPHHcUBORD1122&&q".*<*<>OPPPPPrO   c                    t          j        dd          }|                     dg|g          }|                     ||           d S )NNaTnsr5   )rK   r   r\   r   r   s      rP   test_index_0d_not_a_timez0VariableSubclassobjects.test_index_0d_not_a_time   sF    M%&&HHcUQC  &&q!,,,,,rO   c                     G d d          } |d          }|                      d|g          }|                     ||d           d S )Nc                  &    e Zd Zd Zd Zd Zd ZdS )IVariableSubclassobjects.test_index_0d_object.<locals>.HashableItemWrapperc                    || _         d S rV   item)rY   r   s     rP   __init__zRVariableSubclassobjects.test_index_0d_object.<locals>.HashableItemWrapper.__init__   s     			rO   c                "    | j         |j         k    S rV   r   )rY   others     rP   __eq__zPVariableSubclassobjects.test_index_0d_object.<locals>.HashableItemWrapper.__eq__   s    yEJ..rO   c                *    t          | j                  S rV   )hashr   rY   s    rP   __hash__zRVariableSubclassobjects.test_index_0d_object.<locals>.HashableItemWrapper.__hash__   s    DI&rO   c                @    t          |           j         d| j        dS )Nz(item=))r   __name__r   r   s    rP   __repr__zRVariableSubclassobjects.test_index_0d_object.<locals>.HashableItemWrapper.__repr__   s$    t**-CCTYCCCCrO   N)r   
__module____qualname__r   r   r   r   rN   rO   rP   HashableItemWrapperr      sU        ! ! !/ / /' ' 'D D D D DrO   r   r8   r7   r=   r5   F)r   )r\   r   )rY   r   r   r5   s       rP   test_index_0d_objectz,VariableSubclassobjects.test_index_0d_object   sz    	D 	D 	D 	D 	D 	D 	D 	D #"9--HHS4&!!&&q$u&EEEEErO   c                l   t          j        dt                    }g d|d<   |                     d|          }t	          |j        |           t	          |d         j        |                                           t	          |                                j        |                                           d S )Nr8   rg   r   r   r5   )rK   emptyobjectr\   r'   rI   squeeze)rY   	listarrayr5   s      rP   test_0d_object_array_with_listz6VariableSubclassobjects.test_0d_object_array_with_list   s    HT000	 yy	!HHS)$$169---1Q49i&7&7&9&9:::199;;+Y->->-@-@AAAAArO   c                   t          j        dd          }||j        |                                fD ]}|                     d|          fdt          d          D             fdt          d          D             fdt          d          D             fD ]9}t          j        |d          }j        |j        k    sJ t          |           :d S )Nz
2011-09-01r_   periodstc                     g | ]
}|         S rN   rN   .0ir|   s     rP   
<listcomp>zJVariableSubclassobjects.test_index_and_concat_datetime.<locals>.<listcomp>  s    000!000rO   c                *    g | ]}||d z            S r   rN   r   s     rP   r   zJVariableSubclassobjects.test_index_and_concat_datetime.<locals>.<listcomp>  s&    :::1!q1u+&:::rO   c                "    g | ]}|g         S rN   rN   r   s     rP   r   zJVariableSubclassobjects.test_index_and_concat_datetime.<locals>.<listcomp>  s    22211#222rO   )
r   
date_rangerf   to_pydatetimer\   ranger   concatrg   r'   )rY   r   datestimesr{   r|   s        @rP   test_index_and_concat_datetimez6VariableSubclassobjects.test_index_and_concat_datetime  s   ]<<<<
 *"3Z5M5M5O5OP 		5 		5ExxU++H0000eBii000::::b		:::2222b		222 5 5
 "44~5555"8V44445		5 		5rO   c                    |                      dt          j        dd                    }t          j        dd          }|d         j        |k    sJ d S )Nr`   
2000-01-01rF   r   r   r   )r\   r   r   rK   r   rf   )rY   r5   r|   s      rP   test_0d_time_dataz)VariableSubclassobjects.test_0d_time_data  sR    HHVR]<CCCDD=t44t{h&&&&&&rO   c                   t          j        dd          }|df|j        df|j                            d          df|                                dffD ]\  }}|                     dg|          }|j        t          j        d          k    sJ t          |j        |j                   |j        j        t          j        d          k    sJ t          |j                  t          |          u }||k    sJ d S )	Nr  r=   r   Tdatetime64[s]Fr   r   )
r   r   rf   astyper   r\   rg   rK   r'   r3   rY   r   rf   preserve_sourcerq   same_sources         rP   test_datetime64_conversionz2VariableSubclassobjects.test_datetime64_conversion  s   lA666DM\4 \  1159  ""E*	(
 	2 	2#FO #''A7bh'7888888qx6668>RX.>%?%?????(22nV6L6LLK"k11111	2 	2rO   c                   t          j        dd          }|df|j        df|j                            d          df|                                dffD ]\  }}|                     dg|          }|j        t          j        d          k    sJ t          |j        |j                   |j        j        t          j        d          k    sJ t          |j                  t          |          u }||k    sJ d S )	Nr   r=   )startr   Ttimedelta64[s]Fr   r   )
r   timedelta_rangerf   r  to_pytimedeltar\   rg   rK   r'   r3   r  s         rP   test_timedelta64_conversionz3VariableSubclassobjects.test_timedelta64_conversion+  s   "A666DM\4 \  !122E:!!##U+	(
 	2 	2#FO #''A7bh'8999999qx6668>RX.?%@%@@@@@(22nV6L6LLK"k11111	2 	2rO   c                    t          j        d                              t                                        t                    }|                     d|          }|j        |j        k    sJ d S )NrF   r5   )rK   re   r  strr   r\   rg   )rY   rI   r{   s      rP   test_object_conversionz.VariableSubclassobjects.test_object_conversion;  sY    y||""3''..v66#t$$|tz))))))rO   c                    t          j        dd          }t          j        j        }t          j        |d          5  |                     dg|g           d d d            d S # 1 swxY w Y   d S )Nz
1250-01-01usOut of bounds nanosecondr   r   )rK   r   r   errorsOutOfBoundsDatetimer   r   r\   rY   rI   pderrors      rP   test_datetime64_valid_rangez3VariableSubclassobjects.test_datetime64_valid_range@  s    }\400)/]7*EFFF 	$ 	$HHcUTF###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$   A##A'*A'zpandas issue 36615reasonc                    t          j        dd          }t          j        j        }t          j        |d          5  |                     dg|g           d d d            d S # 1 swxY w Y   d S )N200000Dr  r   r   )rK   r   r   r  OutOfBoundsTimedeltar   r   r\   r  s      rP   test_timedelta64_valid_rangez4VariableSubclassobjects.test_timedelta64_valid_rangeG  s     ~h,,)0]7*EFFF 	$ 	$HHcUTF###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$r  c                &   |                      dgt          j        g dg d                    }t          ||g d                    |                      dgt          j        g d                    }|d         j        |j        d         k    sJ d S )Nr5   r   r=   r7   r8   )indexr   )r\   r   Seriesr)   Indexrf   r   s     rP   test_pandas_dataz(VariableSubclassobjects.test_pandas_dataO  s    HHcUBIiiiyyyAAABBAiiiL)))HHcUBHYYY//00t{ahqk))))))rO   c                    |                      dgt          j        ddd                    }|                                }|d         t          j        dd          k    sJ dt          |          v sJ d S )	Nr5   2000   B)r  r   freqr   )r/  zPeriod('2000-01-03', 'B'))r\   r   period_rangeloadPeriodreprr   s     rP   test_pandas_period_indexz0VariableSubclassobjects.test_pandas_period_indexU  sv    HHcUBO&"3OOOPPFFHHtryc2222222*d1gg555555rO   rg   np.typing.DTypeLikeNonec                   t          j        d|          }t          j        d|          }|                     dg|          }|                                }t          ||
            t          |t          |                     t          | j        |            t          ||dz              t          |d|z              t          ||dz             |t          u r?t          ||dz             t          |dz  |dz             t          |dz	  |dz	             t          ||z  j        |dz             t          ||z  j        |dz             t          ||z
  |dz
             t          ||z
  d|z
             |t          u r,t          ||z  ||z             t          ||z	  ||z	             |                     dg|dd	i          }t          d
          5  t          ||
            d d d            n# 1 swxY w Y   t          ||z   d|z             |                     dg|ddi          }t          ||z   |                     dg||z                                                        t          ||z  j        ||z             t          |dz  |z  dz
  |z   j        |dz  |z  dz
  |z              ||
 j        k    sJ ||
 j        j        k    sJ |d|z   j        k    sJ |d|z   j        j        k    sJ t          |
 t                    sJ t          |
 t                    rJ t          d|z   t                    sJ t          d|z   t                    rJ d S )NrF   r   r5   r   r8   r=   r7   unitsmetersF
keep_attrsra   rb   )rK   re   onesr\   to_base_variabler)   absr'   rf   intr   rg   ru   r   r   )rY   rg   r5   r;   rq   base_vv2ws           rP   test_1d_mathz$VariableSubclassobjects.test_1d_math[  s   Iau%%%GAU### HHcUA##%%!$$$Q(((QB;+++Q'''Q'''Q'''C<<VQ!V,,,qAvqAv...qAvqAv...AE>1a4000AE>1a40001q5!a%(((1q5!a%(((C<<qAvqAv...qAvqAv...XXseQ( 344E*** 	* 	*VbS)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	1q5!a%(((HHcUAu~..Q#A 6 6 G G I IJJJAE>1q5111 	AqD1HqL1,4adQhlQ6FGGG!
""""!)))))Q%%%%Q,,,,,1"h'''''qb-00000!a%*****a!e]3333333s   G==HHc                    t          j        d          }|                     dg|          }|                                }t	          dd          }t          ||           t          |          t          u sJ d S )NrF   r5   rN   r_   )rK   re   r\   sumr   r)   r   )rY   r5   rq   r{   r|   s        rP   test_1d_reducez&VariableSubclassobjects.test_1d_reduce  sm    IaLLHHcUAB##6***F||x''''''rO   c           
        t          j        d          }|                     dg|          }t          t          j        |          |           t          |                    t                    |                    t                               t          |                                |	                                           t          |
                    dd          |                     d|
                    dd                    	                                           t          t          j        |          |                     dgt          j        |                    	                                           t          t          j        |          t                    sJ t          t          j        |          t                    rJ d S )NrF   r5   r7   r=   )rK   re   r\   r'   asarrayr  rh   r)   argsortr=  clipsinru   r   r   rY   r5   rq   s      rP   test_array_interfacez,VariableSubclassobjects.test_array_interface  sD   IaLLHHcUA2:a==!,,,188E??AHHUOO<<<a&8&8&:&:;;;1txxQVVAq\\'B'B'S'S'U'UVVVDHHcUBF1II$>$>$O$O$Q$QRRR"&))X.....bfQii7777777rO   c              #  6  K   t          d          dt          j        d          z  dt          j        dt          j                  z  t	          j        dd          t          j        g dt                    fD ]}|                     d|          |fV  d S )Nr=   r^   r   r  r   )r   r   cr5   )	r   rK   re   r   r   r   r   r   r\   )rY   rI   s     rP   example_1d_objectsz*VariableSubclassobjects.example_1d_objects  s      !HH")A,,")ARZ0000M,222H___F333
 	. 	.D 88C&&-----	. 	.rO   c                   |                                  D ]\  }}t          |j        t          j        |                     t          t          j        |          t          j        |                     |d         j        t          j        |          d         k    sJ t          j        |d                   t          j        |          d         k    sJ d S )Nr   )rP  r'   rf   rK   rH  )rY   rq   rI   s      rP   test___array__z&VariableSubclassobjects.test___array__  s    ..00 	; 	;GAtqxD)9)9:::rz!}}bj.>.>???Q4;"*T"2"21"55555:ad##rz$'7'7'::::::		; 	;rO   c                   |                                  D ]=\  }}|                                }|                    |          sJ |                    |          sJ |                    |          sJ |d                             |d                   sJ |d                             |d                   sJ |d                             |d                   sJ |d d                             |d d                   sJ |d d                             |d d                   sJ |d d                             |d d                   sJ ?d S )Nr   r7   )rP  r   r   r   no_conflicts)rY   rq   _rA  s       rP   test_equals_all_dtypesz.VariableSubclassobjects.test_equals_all_dtypes  s[   ++-- 
	. 
	.DAqB88B<<;;r??""">>"%%%%%Q4;;r!u%%%%%Q4>>"Q%(((((Q4$$RU+++++RaR5<<2A2'''''RaR5??2bqb6*****RaR5%%b!f------
	. 
	.rO   c                    t          dddgz            }|                                 D ]2\  }}d|k    }t          ||           d|k     }t          ||           3d S )Nr5   r=   FrA   )r   rP  r)   )rY   r|   rq   rU  r{   s        rP   test_eq_all_dtypesz*VariableSubclassobjects.test_eq_all_dtypes  sy     CeW--++-- 	/ 	/DAqAXFXv...ax[FXv....		/ 	/rO   c           	        |                      dt          d          ddiddi          }|j        |d         |                                |                    t          d                     |                    ddi          |                    d	
          |                    d
          fD ]H}t          |	                                |	                                           |j
        |j
        k    sJ Id S )Nr5   r=   ra   r8   rb   r7   .r   TdeepF)r\   r   Tr   iselr   set_dimsr   r)   r=  encodingrY   r|   r{   s      rP   test_encoding_preservedz/VariableSubclassobjects.test_encoding_preserved  s    88CqE1:qzBBJSMMME$KKM((sAh''MMtM$$MMuM%%
 
	8 
	8F X6688&:Q:Q:S:STTT$77777
	8 
	8rO   c                n   ddi}|                      dgg d|          }|j        |k    sJ |                                }|j        |k    sJ |j        i k    sJ ddi}|                      dgg d|          }|j        |k    sJ |                                }|j        |k    sJ |j        i k    sJ d S )Nscale_factorr8   r   r   )r_  r_   )r\   r_  reset_encoding)rY   	encoding1v1rA  	encoding3v3v4s          rP   test_reset_encodingz+VariableSubclassobjects.test_reset_encoding  s    #Q'	XXseYYYX;;{i''''  {i''''{b     $R(	XXseYYYX;;{i''''  {i''''{b      rO   c           
        t          j        d          }t          j        dd          }|                     dg|          }|                     dg|          }t          t	          ddgt          j        ||g                    t	          j        ||gd                     t          t	          ddgt          j        ||g                    t	          j        ||fd                     t          t	          ddgt          j        ||g                    t	          j        ||fd                     t          j        t          d          5  t	          j        |t	          dg|          gd           d d d            n# 1 swxY w Y   t	          j        ||gt          j        ddd	          t          j        d
dd	          gd          }t	          dt          j        ||g          
                    d                    }t          ||           t	          ddgt           j                            d                    }t          |t	          j        |d d         |dd          gd                     t          |t	          j        |d d         |dd         |dd          gd                     t          |t	          j        |d d
         |d
d          gd                     t          |t	          j        |d d d df         |d d dd f         gd                     t          j        t          d          5  t	          j        |d d df         |d d d
d f         gd           d d d            d S # 1 swxY w Y   d S )NrF   r_   r   r   zVariable has dimensionsr   rO  r   r7   r8   )	positionsdimF)orderr`   r5   )r_         zall input arrays must have)rK   re   r\   r)   r   r   r   r   r   
ValueErrorravelrL   )rY   r5   r;   rq   rB  r{   r|   s          rP   test_concatz#VariableSubclassobjects.test_concat  s   IaLLIaHHcUAHHcUAc3Z1a&!1!122HOQFC4P4P	
 	
 	
 	c3Z1a&!1!122HOQFC4P4P	
 	
 	
 	c3Z1a&!1!122HOQFC4P4P	
 	
 	
 ]:-GHHH 	: 	:OQ# 2 23S999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: FryB22BIaQ4G4GHc
 
 
 C1a&!1!1!7!7c!7!B!BCC6***fc]BI$4$4W$=$=>>HOQrrUAabbENFCCDDDHOQrrUAacFAabbE,BFKKLLLHOQrrUAabbENFCCDDDHOQqqq"1"uXqABBx,@#FFGGG]:-JKKK 	6 	6OQqqq!tWa122h/555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s$   'FFF.NNNc           	        |                      dt          j        d          ddi          }|                      dt          j        d                    }|                      dt          j        t          j        d          t          j        d          g                                                    }d|j        d<   t          |t          j	        ||gd                     d S )Nr   rF   ra   rb   )
r\   rK   re   r<  concatenater=  ro   r)   r   r   )rY   rq   rB  r|   s       rP   test_concat_attrsz)VariableSubclassobjects.test_concat_attrs  s    HHS")A,,77HHS"'!**%%881rwqzz :;;
 




 	 !&u8?Aq63#?#?@@@@@rO   c                V   dD ]}|                      dt          j        dg|                    }|                      dt          j        dg|                    }t          j        ||gd          }t          dt          j        ddg|                    }t          ||           d S )N)SUanimalhorser   aardvark)r\   rK   r   r   r   r(   )rY   kindr5   r;   r{   r|   s         rP   test_concat_fixed_len_strz1VariableSubclassobjects.test_concat_fixed_len_str  s     	+ 	+D28WIT#B#B#BCCA28ZL#E#E#EFFA_aVX66F"(GZ3HPT*U*U*UVVH6****	+ 	+rO   c                b   |                      dg d          }|                      dddg          }t          j        ||gd          }t          dt          j        d                              t                              }t          ||           |j        j	        |j        j	        k    sJ d S )Nr5   )01234rm  rF   )
r\   r   r   rK   re   r  r  r)   rg   r~  rY   r   r   r{   r|   s        rP   test_concat_number_stringsz2VariableSubclassobjects.test_concat_number_strings  s    HHS///**HHS3*%%!QS111C1!4!4S!9!9::6***| HN$7777777rO   c                .   |                      dddg          }|                      ddg          }t          j        ||gd          }t          dt          j        g dt
                              }t          ||           |j        t
          k    sJ d S )Nr5   r   r8   twor  )r   r8   r  r   )r\   r   r   rK   r   r   r)   rg   r  s        rP   test_concat_mixed_dtypesz0VariableSubclassobjects.test_concat_mixed_dtypes(  s    HHS1a&!!HHS5'""!QS111C---v!F!F!FGG6***|v%%%%%%rO   r[  TFr  booltype[object]c                <   |                      ddt          j        d          z                      |          ddi          }|                    |          }t          |          t          |          u sJ t          ||           |j        |j        k    sJ | j         t          u rW|r+t          |j
                  t          |j
                  usJ n*t          |j
                  t          |j
                  u sJ t          |t	          |                     d S )Nr5   r^   r_   ra   rb   rZ  )r\   rK   re   r  r   r   r)   rg   r   r3   rf   )rY   r[  r  rq   rB  s        rP   	test_copyz!VariableSubclassobjects.test_copy0  s    HHS32.66v>>OOFFFAww$q''!!!!Aw!'!!!!8x L%ah//~ah7O7OOOOOO%ah//>!(3K3KKKKKDGG$$$$$rO   c                &   |                      dddg          }||j        d<   |                    d           |                      ddd	g          }||j        d<   ||j        d<   |                    d           |                    d           d S )
Nr5   r   r8   r   TrZ  r;   r7   r=   )r\   ro   r   )rY   rq   rA  s      rP   test_copy_deep_recursivez0VariableSubclassobjects.test_copy_deep_recursive?  s     HHS1a&!! 	
D XXcAq6"" 	
D
TrO   c                   t           j                            ddgddgddggd          }|                     d	|          }d
D ]}|                    |          }t          |j        t                    sJ t          |                                t           j                  sJ t          |j        j
        |j        j
                   d S )Nr   r   r8   r7   r   )oner  threenamesr5   )TFrZ  )r   
MultiIndexfrom_productr\   r   ru   r   r    to_indexr'   r   )rY   midxrq   r[  rB  s        rP   test_copy_indexz'VariableSubclassobjects.test_copy_indexT  s    }))3Z!Q"b*2I * 
 
 HHS$! 	= 	=DD!!Aag'<=====ajjllBM:::::qw}agm<<<<		= 	=rO   c                    t          dddgddggddi          }t          j        dd	gd
dgg          }|                    |          }|                                }||_        t          ||           d S )Nr         ?       @@333333@ra   rb         @      @gffffff@+   rI   )r   rK   r   r   rI   r)   rY   orignew_datar{   r|   s        rP   test_copy_with_dataz+VariableSubclassobjects.test_copy_with_data_  s}    
c3Z#s$<uenMM8c3Z#r344))99;; 6*****rO   c                    t          dddgddggddi          }dd	g}t          j        t          d
          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r  r  r  r  ra   rb   r  r  must match shape of objectr   r  )r   r   r   rr  r   rY   r  r  s      rP   test_copy_with_data_errorsz2VariableSubclassobjects.test_copy_with_data_errorsg  s    
c3Z#s$<uenMM:]:-JKKK 	% 	%II8I$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   AA!$A!c                   t          dt          j        d                    }t          j        dd          }|                    |          }t          dt          j        dd                    }t	          ||           d S )Nr5   rF   r_   r  )r   rK   re   r   r)   r  s        rP   test_copy_index_with_dataz1VariableSubclassobjects.test_copy_index_with_datam  sn    S")A,,//9Q##)) bi2&6&6776*****rO   c                   t          dt          j        d                    }t          j        dd          }t          j        t
          d          5  |                    |           d d d            n# 1 swxY w Y   t          j        t
          d          5  ||_        d d d            n# 1 swxY w Y   t          j        t
          d          5  ||_        d d d            d S # 1 swxY w Y   d S )	Nr5   rF   r-  r  r   r  zCannot assign to the .datazCannot assign to the .values)	r   rK   re   r   r   rr  r   rI   rf   r  s      rP    test_copy_index_with_data_errorsz8VariableSubclassobjects.test_copy_index_with_data_errorst  s   S")A,,//9Q##]:-JKKK 	% 	%II8I$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]:-JKKK 	! 	! DI	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!]:-LMMM 	# 	#"DK	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s6   A66A:=A:B00B47B4C++C/2C/c                &   t          dddgddggddi          }|                                }t          ||           t          j        d                              d	d	          }|                    |
          }t          |j        |           d S )Nr   r  r  r  r  ra   rb   rE   r7   r  )r   _replacer)   rK   re   reshaper'   rI   )rY   rQ   resultr  s       rP   test_replacez$VariableSubclassobjects.test_replace~  s    zS#Jc
#;eU^LL%%%9Q<<''1--8,,6;11111rO   c           	     l   |                      dt          j        d          dt          j        d          z  z
  ddi          }|                      dt          j        d          ddi          }t          |j        |           |                      dt          j        d           ddi          }t          |j        |           |                      dt          j        dt          j        d          dz  z                                                      }t          t          |          |           d S )Nr5   r=   y              ?ra   rb   r7   )
r\   rK   re   r)   realimagsqrtr=  r&   r>  )rY   rq   expected_reexpected_imexpected_abss        rP   test_real_and_imagz*VariableSubclassobjects.test_real_and_imag  s    HHS")A,,bill)::UENKKhhsBIaLL5%.AA---hhsRYq\\ME5>BB---xxRWQ11B-B%C%CDDUUWWA-----rO   c                    |                      dddt          j        g          }t          dd          }t	          |                                |           d S )Nr5   r8   y               @rN   y      ?      ?)r\   rK   r   r   r&   meanrY   rq   r|   s      rP   test_aggregate_complexz.VariableSubclassobjects.test_aggregate_complex  sJ    HHS1b"&/**B))(+++++rO   c                    t          j        t          j        dd                    }|                     d|          }t          |           |j        dk    sJ d S )Nr_   int64r   r5   )r   CategoricalrK   re   r\   printrg   rp   s      rP   test_pandas_cateogrical_dtypez5VariableSubclassobjects.test_pandas_cateogrical_dtype  sW    ~bi':::;;HHS$aw'!!!!!!rO   c                    t          j        dt          j        d          dd          }|                     d|          }t          |           dt          |j                  v r|j        dk    sJ d S d S )Nr  zAmerica/New_Yorkr_   1h)r  tzr   r/  r5   r   )r   r   pytztimezoner\   r  r  rg   rp   s      rP   test_pandas_datetime64_with_tzz6VariableSubclassobjects.test_pandas_datetime64_with_tz  s    }}/00	
 
 
 HHS$aTZ007h&&&& 10&&rO   c                
   t           j                            t          d          ddgg          }|                     d|          }t          t          dd          |d                    t          ||d d                     d S )Nabcr   r8   r5   rN   )r   r   )r   r  r  rJ   r\   r)   r   )rY   idxrq   s      rP   test_multiindexz'VariableSubclassobjects.test_multiindex  su    m(($u++1v)>??HHS#"h//1666AaaaD!!!!!rO   c                ~   |                      dt          j        d                    }|j        }|                    d          }|j        p|                                 t          |j                  t          |          u sJ t          |j                  t          |          u sJ t          ||           d S d S )Nr5   rF   TrZ  )	r\   rK   re   r   r   chunksr1  r   r)   )rY   r   	orig_datacopieds       rP   	test_loadz!VariableSubclassobjects.test_load  s    bill++K	&&<JJLLL$$Y7777%%i8888UF+++++	  rO   c                   |                      ddgg dg dg          }|                                j        }|ddgddgf         }|j        dk    sJ t	          ||ddg         d d ddgf                    |ddg         }|j        dk    sJ t	          ||ddg                    t          dgddg          }|t          ddg|                   }|j        d	k    sJ t	          ||ddg         d d ddgf                    |t          d
dgg d                   }|j        dk    sJ t	          ||d         d                    t          dd          }|t          |                   }|t          d                   }t	          ||           t          j        d
dg          }t          j
        t          d          5  |t          dddgg          |f          d d d            n# 1 swxY w Y   t          dgg d          }t          j
        t          d          5  |t          |                    d d d            d S # 1 swxY w Y   d S )Nr5   r;   r   r=   rE   rF   r   r8   r   r   )r5   r   TFFTFrN   r7   r;   zBoolean array size 2 is r   r   TFFzBoolean indexer should be)r\   computerI   rH   r'   r   rv   rK   r   r   r   r   )rY   rq   v_datar   r   r|   s         rP   test_getitem_advancedz-VariableSubclassobjects.test_getitem_advanced  s   HHc3Z)))YYY!788! Aq6Aq6"#zZ''''5&!Q.QF";<<<1a&	zZ''''5&!Q.111 uq!f%%$!Q3'''(zZ''''5&!Q.QF";<<< $$*>*>*>???@zZ''''5&)A,/// r1oo$+++TAYYY<5(+++ he}%%]:-HIII 	3 	3hzQF8,,c122	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 u22233]:-IJJJ 	 	dSkkkNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   G,,G03G0%I		IIc                2   |                      dgg d          }|                                j        }|t          j        dg                   }t          ||d                    |t          j        dgd                   }t          ||d                    d S )Nr5   r   r   uint64r   )r\   r  rI   rK   r   r'   rY   rq   r  r   s       rP   test_getitem_uint_1dz,VariableSubclassobjects.test_getitem_uint_1d  s    HHcUIII&&!"(A3-- 5&),,,"(A3h///05&),,,,,rO   c                   |                      ddgg dg dg          }|                                j        }|t          j        dg                   }t          ||dgd d f                    |t          j        dgd                   }t          ||dgd d f                    |t          j        d                   }t          ||dd d f                    d S )Nr5   r;   r   r  r   r  r   )r\   r  rI   rK   r   r'   r  r  s       rP   test_getitem_uintz)VariableSubclassobjects.test_getitem_uint  s    HHc3Z)))YYY!788!"(A3-- 5&!aaa.111"(A3h///05&!aaa.111")A,,5&AAA,/////rO   c                   |                      dgg d          }|                                j        }|t          j        dg          d                  }t          ||d                    |t          j        d                   }t          ||d                    |t          dt          j        d                             }t          ||d                    d S )Nr5   r   r   rN   )r\   r  rI   rK   r   r'   r   r  s       rP   test_getitem_0d_arrayz-VariableSubclassobjects.test_getitem_0d_array  s    HHcUIII&&!"(A3--"#5&),,,"(1++5&),,,(2rx{{++,5&),,,,,rO   c           	     8   |                      ddgg dg dg          }|                                j        }t          ddgg dg dg          }||         }|j        d	k    sJ t          ||g dg dgd d f                    t          ddgg dg dg          }||         }|j        d
k    sJ t          ||g dg dgd d f                    t          ddgg dg dg          }|t          |                   }|j        dk    sJ t          ||d d g dg dff                    t          ddgddgddgg          }|t          ddg|                   }|j        dk    sJ t          ||ddg         d d |f                    t          dgddg          }|||f         }|j        dk    sJ t          ||ddgddgf                    t          ddgddgddgg          }|t          d|                   }|j        dk    sJ t          |d         |d         ddg                    t          |d         |d         ddg                    t          ddgddgddgg          }|t          t          d           |                   }|j        dk    sJ t          ||d d ddgddggf                    t          ddgddgddgg          }|t          |t          d                              }|j        d	k    sJ t          ||ddgddggd d f                    t          ddgddgddgg          }|t          |t          d d                             }|j        d	k    sJ t          ||ddgddggt          d d          f                    t          dgddg          }||d df         }|j        dk    sJ t          ||ddgddgf                    |                      g dg dg dgg          }t          ddgdgg          }||d d d d f         }t          g d|j        t          j	        df                   }t          ||           t          g dg dg dggg          }t          dgdg          }||d d dddf         }t          ddgdgg          }t          ||           t          g dt          j        d                              ddd                    }t          dgg d          }|d d |f         }t          dt          j        d                     }|j        d!         |d<   |j        d"         |d<   |j        d#         |d<   t          ||           |d d |j        f         }|j        d$k    sJ d S )%Nr5   r;   r   r  r   r   r   r8   r8   )r8   r8   r   )r   r   r;   )r5   r   r;   r7   r8   r   r  )r5   r   r   r   r8   r   r   r   r7   r5   r;   rA   r   rE   rF   rq  )r   r   r;   rA   .)rB  r5   r;   rA   rq  <   r=   rE   rF   r@   r=   rF   r9   r:   rB   )r=   r=   rF   )r\   r  rI   r   rH   r'   rv   r   rK   newaxisr)   re   r  zerosri   )rY   rq   r  r   r   r|   s         rP   test_getitem_fancyz*VariableSubclassobjects.test_getitem_fancy  s   HHc3Z)))YYY!788!SzIIIyyy#9::#z_,,,,5&)))YYY)?)B"CDDD SzIIIyyy#9::#z_,,,,5&)))YYY)?)B"CDDDSzIIIyyy#9::$+++z_,,,,5&YYY			,B)B"CDDDSzQFQF#344$!Q3'''(z_,,,,5&!Q.C"8999 uq!f%%#s(zV####5&!Q!Q"8999 SzQFQF#344$c"""#zZ''''58VAY1v%677758VAY1v%6777 SzQFQF#344$t,,,-z_,,,,5&aVaV,<)<"=>>>SzQFQF#344$d,,,-z_,,,,5&1a&1a&)9111)<"=>>>SzQFQF#344$dA///0z_,,,,5&1a&1a&)95q>>)I"JKKK uq!f%%#rr'
zV####5&!Q!Q"8999 HH___			999'=&>??SzQC5))#qqq!!!)000!&S2IJJ))))))iii-C,D+EFFuqc""#qqq!A#q.!S#J!..))) ___bimm&;&;Aq!&D&DEEuiii((!!!S&	J(8(899fTlfTlfTl)))!!!SX+{i''''''rO   c                d   |                      ddgg dg dg          }t          j        t          d          5  |ddgdd	gg          d d d            n# 1 swxY w Y   t	          d
gg d          }t	          d
gddg          }t          j        t          d          5  |||f          d d d            n# 1 swxY w Y   t	          d
dgddgddgg          }t          j        t          d          5  |t          |                    d d d            n# 1 swxY w Y   t	          g dt          j        d                              ddd                    }t	          dgddg          }t          j        t          d          5  |d d |f          d d d            d S # 1 swxY w Y   d S )Nr5   r;   r   r  zlabeled multi-r   r   r8   r7   r   r  zDimensions of indexers r   TFz2-dimensional booleanr   r  r  r=   rE   rF   zDimensions of indexers mis)	r\   r   r   r   r   rv   rK   re   r  )rY   rq   ind_xind_yr   s        rP   test_getitem_errorz*VariableSubclassobjects.test_getitem_error_  s   HHc3Z)))YYY!788]:->??? 	  	 1v1v	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  #			**#A'']:-GHHH 	 	eUlOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 SzT5ME4=#ABB]:-EFFF 	 	dSkkkNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ___bimm&;&;Aq!&D&DEEuq!f%%]:-JKKK 	 	aaafII	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sG   AAA!B88B<?B<6DD DF%%F),F)moder  medianz!median is not implemented by Daskmarksreflectzdask.array.pad bugedgelinear_rampz5pint bug: https://github.com/hgrecco/pint/issues/1026maximumminimum	symmetricwrapxr_arg, np_argz5ignore:dask.array.pad.+? converts integers to floats.c                F   t          j        d                              ddd          }|                     g d|          } |j        dd|i|}t          j        |||          }t          ||           t          |j        t          |j                            sJ d S )	N   rE   r=   r7   r  r  )r  rN   )	rK   re   r  r\   padr'   ru   r   r   )rY   r  xr_argnp_argrI   rq   r{   r|   s           rP   test_padz VariableSubclassobjects.test_pads  s    : y##++Aq!44HH___d++++D+F++6$T22268,,,&,QW6666666rO   c                   t          j        d                              ddd          }|                     g d|          } |j        d
i |}t          j        t          j        |j                            t                              |dt           j	                  }t          ||           t          |j        t          |j                            sJ t          j        |dt          	                              ddd          }|                     g d|          } |j        d
ddd|}t          j        t          j        |j                  |dd          }t          ||           d S )Nr  rE   r=   r7   r  constantr  constant_valuesFr   rN   )rK   re   r  r\   r  r   rI   r  rh   r   r'   ru   r   r   r   r  )rY   r  r  rI   rq   r{   r|   s          rP   test_pad_constant_valuesz0VariableSubclassobjects.test_pad_constant_values  s]   y##++Aq!44HH___d++6HQV]]5))**F	
 
 
 	68,,,&,QW66666 |D%t444<<Q1EEHH___d++HJHHHH6HQVf:u
 
 
 	68,,,,,rO   )r;  ro   r|   r8   r7   r   default)idFalseTruec                   t          j        dt                    }|                     dg||          }|dn|}t	          |          5  |                    ddidt           j                  }|j        |k    sJ 	 d d d            n# 1 swxY w Y   |                    ddidt           j        |	          }|j        |k    sJ d S )
Nr_   r   r5   r  r:  r:   r  r	  )r  r
  r;  )rK   re   rh   r\   r   r  r   ro   )rY   r;  ro   r|   rI   rq   keep_attrs_r{   s           rP   test_pad_keep_attrsz+VariableSubclassobjects.test_pad_keep_attrs  s    y5)))HHcUD%((#-#5ii:K000 	, 	,UUC=z26URRF<8+++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,
 &MF!	  
 
 |x''''''s   
2B		BBzd, w))r5   r=   )r;   rF   c                   |                      g dt          j        d                              ddd                    }|                    |||dz             }|j        ddd	|dz   fk    sJ |j        |j        |fz   k    sJ |                    |||dz   d
          }|j        ddd	|dz   fk    sJ |j        |j        |fz   k    sJ |                                                    |||dz   d
          }t          ||           t          |j
        t          j                  r9t          j        t                    5  d|d<   d d d            d S # 1 swxY w Y   d S d S )Nr  `	  (      r7   _windowr5   r;   rA   T)center      ?r   )r\   rK   re   r  rolling_windowrH   ri   r1  r'   ru   r   ndarrayr   r   rr  )rY   r   rB  rq   	v_rollingv_loadeds         rP   test_rolling_windowz+VariableSubclassobjects.test_rolling_window  s    HH___bi&<&<&D&DRQ&O&OPP$$Q1y=99	~#sCY!?????!'QD.0000$$Q1y=$FF	~#sCY!?????!'QD.0000 6688**1aYt*LL9h/// agrz** 	"z** " "!" " " " " " " " " " " " " " " " " "	" 	"s    EEEc                D   |                      dt          j        g dt                              }t	          ddd          } |j        di |dt          j        d}t          d	t          j        t          j        d
dgg dg dddt          j        ggt                              }t          ||            |j        di |ddd}|                      d	t          j        g dg dg dg dgt                              }t          ||           |                      dt          j	        ||dz  g                    } |j        di |ddd}|                      dt          j	        |j
        |j
        dz  gd                    }t          ||           d S )Nr5   )r8   r7   r=   rE   r   r=   xw)rm  window
window_dimTr  r   )r5   r   r8   r7   r   )r7   r=   rE   rE   F        )r   r   r8   r   )r;   r5   皙?)r;   r5   r   r   axisrN   )r\   rK   r   rh   rv   r  r   r   r(   stackrI   )rY   r5   r[   r{   r|   s        rP   test_rolling_1dz'VariableSubclassobjects.test_rolling_1d  s   HHS"(<<<u===>>#aD999!!KKFK4BFKKKKH&!QIII1bf~Fe  
 
 	VX&&&!!IIFI5SIIII88HiiiIIIyyyAOOO
 
 	VX&&&HHZ1a#g,!7!788!!IIFI5SIIII88bhx}s7J'KRSTTT
 
 	VX&&&&&rO   r  rH   )r   r;   rA   )rA   r5   c                   |                      dt          j        d                              ddd                              t
                              }ddg}|                    ||d |D             |t          j                  }|}t          |||          D ]-\  }}}	|                    ||| d	|	t          j                  }.t          ||           d S )
Nr  P     rq  rp  r=   c                    g | ]}| d S )rB  rN   )r   ks     rP   r   z;VariableSubclassobjects.test_nd_rolling.<locals>.<listcomp>  s    ...A1...rO   )rm  r!  r"  r  r   rB  )
r\   rK   re   r  r  rh   r  r   zipr(   )
rY   r  rH   r5   r!  r{   r|   rm  wincents
             rP   test_nd_rollingz'VariableSubclassobjects.test_nd_rolling  s     HHIi  ((Aq1188??
 
 Q!!.....v " 
 
 !$77 	 	NCd..!9996 /  HH 	VX&&&&&rO   zdim, window, window_dim, centerr5   r=   x_w)r5   r=   )r4  r4  Tc                F   |                      dt          j        d                              ddd                              t
                              }t          j        t                    5  |	                    ||||           d d d            d S # 1 swxY w Y   d S )Nr  r,  r-  rq  rp  )rm  r!  r"  r  )
r\   rK   re   r  r  rh   r   r   rr  r  )rY   rm  r!  r"  r  r5   s         rP   test_rolling_window_errorsz2VariableSubclassobjects.test_rolling_window_errors  s     HHIi  ((Aq1188??
 
 ]:&& 	 	%	    	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   /BBBrT   r   rV   )rg   r5  rT   r6  rT   r6  )r[  r  r  r  rT   r6  )Rr   r   r   r   r\   rr   rw   r}   r   r   r   r   r   r   r   r   r   r   markr   r   r   r   r   r   r  r  r  r  r  r  xfailr$  r*  r4  parametrizerh   r?  rC  rF  rM  rP  rR  rV  rX  ra  rj  rt  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  param_PAD_XR_NP_ARGSr  r  r  r  r)  r3  r6  rN   rO   rP   rS   rS   A   s?       " " " ^") ) )' ' '+ + +( ( (2  (

 

 


 
 
P P P
> > > >0< < <
< < <
8 8 8 [ BCC	N 	N DC	N [ BCCQ Q DCQ- - -
F F F$B B B5 5 5' ' ' [ BCC2 2 DC2 [ BCC2 2 DC2* * *
 [ BCC$ $ DC$ [233[ BCC$ $ DC 43$* * *6 6 6 [Wucl3314 14 14 4314f( ( (8 8 8. . .; ; ;. . ./ / /8 8 8! ! ! !"6 6 6@A A A+ + +8 8 8& & & [VdE]33[XsC'899% % % :9 43%   *	= 	= 	=+ + + +% % % %+ + + +# # # #2 2 2	. 	. 	., , ," " "' ' '" " ", , ,& & &P- - -0 0 0- - -U( U( U(n  ( [FLk''/R'SS   FL!2!2:N!2!O!O   FLk''R (     '	
 0 [-??[@ 7 7  @?1 87 [-??- - @?-0 [+++FLQQ//qq1A1AiPPPFLaa 0 0"AAAFLQQ//qq1A1AfMMM	
 ( ( (& [V%9::" " ;:"(' ' '6 [Xtuen'EFF[V%I%I%IJJ' ' KJ GF'0 [	*1a&%&*!UT4L)	
     rO   rS   c                  z   e Zd ZdadZ ej        d          d             Zd Zd Zej	        
                    d	          d
             Zej	        
                    d	          d             Zd Zd Zej	        
                    d	          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej	                            dej         ddg          d              Z!d! Z"d" Z#d# Z$d$ Z%ej	        
                    d	          d%             Z&d& Z'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z-d- Z.d. Z/d/ Z0d0 Z1d1 Z2d2 Z3d3 Z4d4 Z5e6d5             Z7ej	                            d6g d7          ej	                            d8d9d:gd9d;gg          ej	                            d< e8d=d>d>gd>d?ggd=d@d@gd@dAgg                    dB                                     Z9e:ej	                            d8d9d:gd9d;gg          ej	                            d<d?dAgd?gdAggg          dC                                     Z;ej	                            dDdEdFg          ej	                            dG ej<        de:H          dIg          dbdK                        Z=ej	                            dDdEdFg          dbdL            Z>e:dM             Z?ej	                            d8dNdOdgd9dgg          dP             Z@e:e6dQ                         ZAdR ZBe6dS             ZCdT ZDdU ZEdV ZFe:dW             ZGdX ZHdY ZIdZ ZJd[ ZKd\ ZLd] ZMd^ ZNdcd`ZOd=S )dTestVariablerT   r   c                    t          |i |S rV   )r   rX   s      rP   r\   zTestVariable.cls.  s    ((((rO   Tautousec                    t           j                            d                              t           j                  | _        d S Nr_   r=   rK   rL   r  float64r   r   s    rP   setupzTestVariable.setup1  -    !!'**11"*==rO   c                x   t          ddg| j                  }t          |j        | j                   t          |j        | j                   t          |j                  | j        u sJ t          j        t                    5  t          j
        
                    d          |_        d d d            n# 1 swxY w Y   t          j
        
                    d          }||_        t          |j                  |u sJ t          j
        
                    d          }||_        t          |j                  |u sJ d S )Nr`   r5   rF   rE  )r   r   r'   rI   rf   r3   r   r   rr  rK   rL   )rY   rq   d2d3s       rP   test_data_and_valuesz!TestVariable.test_data_and_values5  sN   fc]DF++1646***18TV,,,ah''461111]:&& 	+ 	+y''**AH	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ Yg&&ah''2----Yg&&af%%++++++s   %B33B7:B7c                L   t          g t          j        d                    }|                                dk    sJ t	          |                                          t
          u sJ t          dt          j        d                    }d|                    d          k    sJ d S )Nr$  r   r5   rF   r7   )	r   rK   r   r   r   rh   r   re   searchsortedr   s     rP   test_numpy_same_methodsz$TestVariable.test_numpy_same_methodsD  s    RC))vvxx1}}}}AFFHH~~&&&&#ry||,,ANN1%%%%%%%%rO   r   c                f   t          j        dd          }t          j        d          t          j        d          t	          ddd          fD ]b}t          g |          }|j        t          j        d          k    sJ |j        |k    sJ |j        j        t          j        d          k    sJ cd S )Nr  r   z2000-01-01T00r   r8   r   )rK   r   r   	Timestampr	   r   rg   rf   rY   r|   rf   rq   s       rP   !test_datetime64_conversion_scalarz.TestVariable.test_datetime64_conversion_scalarL  s    =t44M,''L))T1a  
 	@ 	@F
 V$$A7bh'78888888x''''8>RX.>%?%??????	@ 	@rO   c                f   t          j        dd          }t          j        dd          t          j        d          t	          d          fD ]b}t          g |          }|j        t          j        d          k    sJ |j        |k    sJ |j        j        t          j        d          k    sJ cd S )Nl     "R: r   r8   r"  z1 daydaysr   )rK   r   r   	Timedeltar
   r   rg   rf   rS  s       rP   "test_timedelta64_conversion_scalarz/TestVariable.test_timedelta64_conversion_scalarY  s    >"6==N1c""L!!1
 	A 	AF
 V$$A7bh'89999998x''''8>RX.?%@%@@@@@@	A 	ArO   c                6   t          g d          }|j        t          j        d          k    sJ |j        dk    sJ t          g t          j        d                    }|j        t          j        d          k    sJ |j        t          dd          k    sJ d S )Nra   r   S3ascii)r   rg   rK   rf   string_bytesr   s     rP   test_0d_strzTestVariable.test_0d_strf  s    Rw"(4..((((x5    RE**++w"(4..((((x500000000rO   c                    t          g t          j        d                    }|j        t	          j        d          k    sJ |j        t	          j        dd          k    sJ d S )Nr  r   r   )r   r   rR  rg   rK   rf   r   r   s     rP   test_0d_datetimezTestVariable.test_0d_datetimeo  s^    Rl3344w"(#3444444x2=t<<<<<<<<rO   c                    t          j        d          t          j        dd          fD ]Q}t	          g |          }|j        t          j        d          k    sJ |j        t          j        dd          k    sJ Rd S )N1sr8   sr   i ʚ;r   )r   r   rK   r   r   rg   rf   )rY   r   rq   s      rP   test_0d_timedeltazTestVariable.test_0d_timedeltat  s    ?4((".C*@*@A 	; 	;BR  A7bh'89999998r~eT:::::::	; 	;rO   c                B   t           j                            dd          }t           j        |d<   t	          d|dg dd          }t	          d|dg dd          }|                    |          sJ |                    |          sJ t	          d|	          }|                    |          rJ t	          d|	          }|                    |          sJ |                    |          rJ t          |          }t           j                            dd          |j        d d <   |                    |          rJ |                    d           rJ |                    |          rJ |                    d           rJ |                    |          rJ d S )
Nr_   r=   r9   )dim1dim2r   )att1att2)rI   ro   )rg  dim3r  )	rK   rL   rM   r   r   r   r   r   rf   )rY   r   rf  rA  rh  ri  v5s          rP   test_equals_and_identicalz&TestVariable.test_equals_and_identical{  s   INN2q!!&$&Qq)))6T6TUUU&Qq)))6T6TUUUyy}}||B&Q///99R==   &Q///yy}}<<#####b\\y~~b!,,	!!!99R==   99T??"""99Q<<<<%%%%%<<??"""""rO   c                h   t          dt          j                  }t          dt          j        t          j        g          }|                    |          sJ |                    |          rJ |                    |          rJ t          dt          j        g          }|                    |          sJ |                    |          rJ |                    |          rJ |                    d           rJ t          dt          j        gdz            }|                    |          rJ d S )NrN   r5   r=   )r   rK   r   broadcast_equalsr   r   )rY   rf  rA  rh  ri  s        rP   test_broadcast_equalsz"TestVariable.test_broadcast_equals  s   b"&!!sbfbf-..""2&&&&&99R==   <<#####sbfX&&""2&&&&&99R==   <<#####&&t,,,,,sbfX\**&&r*******rO   c                   t          dddt          j        t          j        g          }t          dt          j        ddt          j        g          }|                    |          sJ |                    |          rJ |                    |          rJ |                    |          rJ |                    d           rJ t          dt          j        ddt          j        g          }|                    |          rJ t          j        ddt          j        t          j        g          }|                    |          rJ |                    |          rJ t          d|g          }|                    |          sJ d S )Nr5   r8   r7   r=   r;   )rB  r5   )r   rK   r   rT  r   ro  r   r   )rY   rf  rA  rh  r   ri  s         rP   test_no_conflictszTestVariable.test_no_conflicts  sa   saBFBF344sbfaBF344r"""""99R==   &&r*****<<#####??4(((((sbfaBF344??2&&&&&HaBFBF+,,??1%%%%%??1%%%%%j1#&&r"""""""rO   c                   t          j        d          }t          d|          }t          d|ddiddi          }t          |t	          |                     t          d|i          }t	          |d                                                   }t          ||           t          |d         t                    rJ t          t	          |d                   t                    sJ |j        |j	        |j
        |j        f}t          |t	          |                     t          j        t          d	          5  t	          t          |                     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 d            n# 1 swxY w Y   t	          |d          }t          |                                |           t	          d          }t          g d          }t          ||           t          j        d                              d          }t          d|          }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        d t)          d          D                       }t	          |d          j        j        dk    sJ t          j        d t)          d          D                       }	t	          |	d          j        j        dk    sJ t          j        t                    5  t	          dt/          g           f           d d d            d S # 1 swxY w Y   d S )Nr_   r5   myattrvalrc  r8   )ro   r_  ztuple of formr   )fivesixsevenz&without an explicit list of dimensionsnamer   	   r=   r=   r   z without explicit dimension nameszhas more than 1-dimensionc                R    g | ]$}t          d dd          t          |          z   %S )i  r8   rV  r   r   r5   s     rP   r   z1TestVariable.test_as_variable.<locals>.<listcomp>  s4    SSSAxa++iQ.?.?.??SSSrO   r`   Mc                .    g | ]}t          |           S )rV  )r
   r~  s     rP   r   z1TestVariable.test_as_variable.<locals>.<listcomp>  s#    <<<Qya(((<<<rO   m)rK   re   r   r)   r%   r   r=  ru   rH   rf   ro   r_  r   r   	TypeErrortuplerr  to_index_variabler  r   r   rg   r~  r   )
rY   rI   r|   expected_extradsrQ   xarray_tupler{   dtr   s
             rP   test_as_variablezTestVariable.test_as_variable  s   y}}C&&!h..!9L
 
 
 	;x#8#8999c8_%%"S'""33553'''bgx00000+bg..99999 ! #	
 	\)B)BCCC]9,<=== 	% 	%d$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%]:-=>>> 	2 	20111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2]9,UVVV 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 T,,,3355v>>>QB??6***y||##F++J--]:-PQQQ 	( 	(3''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(]:-IJJJ 	, 	,s++++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, XSSrSSSTT2v&&,1S8888X<<%))<<<==2v&&,1S8888]9%% 	. 	.imm,---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.sl   :E##E'*E'	F%%F),F)G''G+.G+&KKK*LLLO..O25O2c                    t          ddgg dg dgddi          }t          d                                          }|t          |          k    sJ d S )Nr`   r5   r   r  ra   rb   z
        <xarray.Variable (time: 2, x: 3)>
        array([[1, 2, 3],
               [4, 5, 6]])
        Attributes:
            foo:      bar
        )r   r   stripr3  r  s      rP   	test_reprzTestVariable.test_repr  si    fc]YYY			$:UENKK
 
 %'' 	 477""""""rO   c                    t          dt          t          j        d                              }dt	          |          v sJ t          |j        t                    sJ d S )Nr5   g     jAz200000 values with dtype)r   r   rK   re   r3  ru   r   r   s     rP   test_repr_lazy_dataz TestVariable.test_repr_lazy_data  sX    S,RYs^^<<==)T!WW4444!'#56666666rO   c                   t           j                            d          }t          ddg|          }|                    d          \  }}}t	          |          t
          j        k    sJ |                    dt          ddd          f          \  }}}t	          |          t
          j        k    sJ |                    dddgf          \  }}}t	          |          t
          j        k    sJ |                    ddgdf          \  }}}t	          |          t
          j        k    sJ |                    ddgddgf          \  }}}t	          |          t
          j        k    sJ |                    ddgt          ddd          f          \  }}}t	          |          t
          j        k    sJ t          d	ddg          }|                    |t          ddd          f          \  }}}t	          |          t
          j        k    sJ t          d
ddg          }|                    |df          \  }}}t	          |          t
          j        k    sJ t          d	ddg          }|                    ||f          \  }}}t	          |          t
          j	        k    sJ t          dddgddgg          }|                    |df          \  }}}t	          |          t
          j	        k    sJ dS )z*Tests indexer type was correctly detected.r_      r5   r;   r   r8   r   rp  r7   r8   r   r  r=   r   N)
rK   rL   r   _broadcast_indexesr   r   r   r   r   r!   )rY   rI   rq   rU  r   vinds         rP   test_detect_indexer_typez%TestVariable.test_detect_indexer_type   s   y))c3Z&&((00	3CyyH11111((!U1a^^)<==	3CyyH11111((!aV55	3CyyH11111((1a&!55	3CyyH11111((1a&1a&)9::	3CyyH11111((1a&%1a..)ABB	3CyyH11111A''(($aA)?@@	3CyyH11111A''(($33	3CyyH11111A''(($66	3CyyH66666
aVaV$455(($33	3CyyH6666666rO   c           	         t           j                            d          }t          ddg|          fd} |dt                      |dt	          d d           ft                      |t          g d          t	          d d           ft                      |t          g d          t          g d          ft                      |dd	gd	ft
                      |dd	gd	d
gft
                      |t          ddd	g          d	ft
                      |t          ddd	g          t	          d d           ft
                      |t          ddd	g          t          ddd	g          ft
                      |t          ddd	g          dd	gft                      |t          ddd	g          t          ddd	g          ft                      |t          ddd	gd	d
gg          t          ddd	gd	d
gg          ft                     d S )Nr  r5   r;   c                ^                         |           \  }}}t          ||          sJ d S rV   )r  ru   )keyobject_typerH   index_tuple	new_orderrq   s        rP   assert_indexer_typez;TestVariable.test_indexer_type.<locals>.assert_indexer_type,  s9    +,+?+?+D+D(D+yk;7777777rO   r  r   r=   rq  r8   r7   rA   r   )rK   rL   r   r   r   r   r!   )rY   rI   r  rq   s      @rP   test_indexer_typezTestVariable.test_indexer_type'  sc   y))c3Z&&	8 	8 	8 	8 	8
 	FL111QdD 1 12LAAAXb!__eD$.?.?@,OOOXb!__xA@,OOO 	aVQK666aVaV,l;;;XsaV44a8,GGGXsaV44eD$6G6GH,WWWsaV$$hq!f&=&=>	
 	
 	

 	XsaV44q!f=?PQQQsaV$$hq!f&=&=>@Q	
 	
 	
 	q!fq!f%566q!fq!f%566 	
 	
 	
 	
 	
rO   c           	        t           j                            d          }t          ddg|          }t          ||d d                     t          ||d                    t          t          dg|d                   |d                    t          t          dg|d d df                   |d d df                    t          t          ddg|d dd df                   |d dd df                    t          dgt          j        d                    }t          dgt          j        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         ||d d         |d d         f                    t          |d dd df         |t          d          t          d          f                    t          |          D ]*\  }}t          t          dg||                   |           +t          j	        t          d
          5  t          t          g d                     d d d            n# 1 swxY w Y   d|j        d d <   t          j        |j        dk              sJ d|t          d          t          d	          f<   t          |j        t          j        d                     d S )Nr  r5   r;   .r   r=   r7   r_   r  ziteration over a 0-dr   r8   )rK   rL   r   r)   re   rf   r   	enumerater   r   r  iterallr'   r<  )rY   rI   rq   r5   r;   nr   s          rP   
test_itemszTestVariable.test_itemsL  s^   y))c3Z&&AaaaD!!!AcF###3%a111Q48883%aaad44a1g>>>3*d2A2rr6l;;Qrr2A2vYGGGcUBIbMM**cUBIbMM**AahK(((AaD!!!2A2!a%)))111abb51QQQQY<0002A2qrr6Aa!eQ!Vm$45552A2rr6AaeQrrUlO4442A2rr6AeAhha&8$9::: || 	= 	=GAtXseT!W55t<<<<]9,CDDD 	" 	""a!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" vah!m$$$$$"#%))U2YY
18RWX%6%677777s   ,KKKc                   |                      ddgg dg dg          }|d         }|j        dk    sJ t          ||j        d                    |d d         }|j        dk    sJ t          ||j        d d                    |dg         }|j        dk    sJ t          ||j        dg                    |g          }|j        dk    sJ t          ||j        g                     |t	          d	                   }|j        dk    sJ t          ||j        d                    |t	          dt          d                              }|j        dk    sJ t          ||j        d                    |t	          dd
                   }|j        dk    sJ t          ||j        d                    |t	          d
                   }|j        d	k    sJ t          ||j        d d d
f                    |t          d           d
f         }|j        d	k    sJ t          ||j        d d d
f                    |d         }|dxx         dz  cc<   t          ||j        d                    d S )Nr5   r;   r   r  r   r  r7   r   r   r8   rN   r  r9   .c   )r\   rH   r'   r   rv   r   )rY   rq   r   s      rP   test_getitem_basiczTestVariable.test_getitem_basick  s   HHc3Z)))YYY!788 !zV####5!'!*--- "1"zZ''''5!'"1"+... 1#zZ''''5!'1#,///"zZ''''5!'"+... $)))zV####5!'!*---$eDkk***+zV####5!'!*---$a...!zR5!'$-000$)))zV####5!'!!!Q$-000 5;;"#zV####5!'!!!Q$-000 $c


b


5!'$-00000rO   c           	     P   t          dg dg dg          }t          |                    ddgddgf          t          dt          j        t          j        gdt          j        gg                     t          |                    t          d          g df          |           d S )Nr   r   r  r   r   r8   r7   )r   r)   r   rK   r   r   r   s     rP   test_getitem_with_mask_2d_inputz,TestVariable.test_getitem_with_mask_2d_input  s    Z)))YYY!788  2q'Ar7!344Z2626"2QK!@AA	
 	
 	
 	--uQxx.CDDaHHHHHrO   c                   t          ddg| j                  }t          |                    t	          d                     |           t          |                    d          |d                    t          |                    t	          dd                    |d d                    t          |                    d          |d d df                    t          |                    ddg          |d d ddgf                    t          |                    g           |g                     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          ||                    dd                     d S )Nr`   r5   rc   r   r=   r   r7   zNDimensions {'not_a_dim'} do not exist. Expected one or more of \('time', 'x'\)r   )	not_a_dimwarn)r  missing_dimsr   )
r   r   r)   r]  r   r   r   rr  warnsUserWarningr   s     rP   	test_iselzTestVariable.test_isel  sC   fc]DF++U4[[111555Q1...U1a[[111RaR5999!a1g...1a&))1QQQAY<888R!B%000]
 
 
 	  	 
 FFQF	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  \
 
 
 	5 	5
 FFQVF444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	AFFQXFFFGGGGGs$   E55E9<E9F??GGc                    t          g t          j        d                    }t          |d         |           t          g t          j        d                    }t          |d         |           d S )NasdfrN   )r   rK   r]  r)   unicode_r   s     rP   test_index_0d_numpy_stringz'TestVariable.test_index_0d_numpy_string  sb    RF++,,2"""RV,,--2"""""rO   c                    t          ddg          d         d         }t          dd          }t          ||           d S )Nr5   tmaxr   rN   )r   r)   )rY   r{   r|   s      rP   test_indexing_0d_unicodez%TestVariable.test_indexing_0d_unicode  sB    3&**1-b1B''*****rO   r   r7   r  c                   t          dg d          }t          ||                    d                     ||                    d          usJ t          dt          j        t          j        dddg          }t          ||                    d                     |t
          j        k    rt          j        }n|}t          d|ddddg          }t          ||                    d|	                     t          ddddd
|g          }t          ||                    d|	                     t          d|gd
z            }t          ||                    d
|	                     t          ||                    d|	                     t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          dg dddi          }t          ||                    d                     t          d|ddddgddi          }t          ||                    d|	                     d S )Nr5   r8   r7   r=   rE   rF   r   r   r8   r7   r=   rE   )r5   r   rF   r   rq  	dimensionr   rA   ra   rb   )
r   r)   shiftrK   r   r   NAr   r   rr  )rY   r   rq   r|   fill_value_exps        rP   
test_shiftzTestVariable.test_shift  sh   S///**AGGaGLL)))!$$$$C"&"&!Q!:;;177Q7<<000""  VNN'NC.!Q1!=>>177Q:7#F#FGGGC!Q1n!=>>177RJ7#G#GHHHC.!1A!566177Q:7#F#FGGG177Q:7#F#FGGG]:\::: 	 	GGaGLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 S///E5>::AGGaGLL)))C.!Q1!=u~NN177Q:7#F#FGGGGGs   *GGGc                    t          dddgddgg          }t          dt          j        t          j        gt          j        dgg          }t          ||                    dd                     d S )Nr   r8   r7   r=   rE   )r   rK   r   r)   r  r  s      rP   test_shift2dzTestVariable.test_shift2d  sg    Z1a&1a&!122J"&"&)9BFA;(GHH177Q!7#4#455555rO   c                   t          dg d          }t          ||                    d                     ||                    d          usJ t          dg d          }t          ||                    d                     t          ||                    d                     t          ||                    d                     t          dg d	          }t          ||                    d
                     t          ||                    d                     t          j        t
          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr5   r  r   r   )rF   r8   r7   r=   rE   r8   rq  )rE   rF   r8   r7   r=   r7   r  r   r  )r   r)   rollr   r   rr  r  s      rP   	test_rollzTestVariable.test_roll  s   S///**AFFQFKK(((####C11166A6;;///166B6<<000166A6;;///C11166A6;;///166B6<<000]:\::: 	 	FFQFKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   E((E,/E,c                    t          dt          j                            dd                    }dD ]J\  }}dD ]B}t          j        |j        ||          } |j        di ||ij        }t          ||           CKd S )Nr   rF   rq  ))r   r5   )r8   r;   )r  r   r8   r-  r  r&  rN   )r   rK   rL   ry   r  rf   r'   )rY   rq   r'  rm  r  r|   r{   s          rP   test_roll_consistencyz"TestVariable.test_roll_consistency  s    ZA!6!677- 	5 	5ID#* 5 5718U>>>//3,//6"8V44445	5 	5rO   c           	        t          ddg| j                  }t          ddg| j        j                  }t          ||                                           t          |                                |j                   t
          j                            dddd          }t          g d|          }t          g dt          j        d	|                    }|j	        d
k    sJ t          ||                    dddd                     t          ||                    ddd                     t          ||                    dddd                     t          ||                    dddd                     t          ||                    dddd                     t          g dt          j        d|                    }t          ||                    dddd                     t          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            d S # 1 swxY w Y   d S )Nr`   r5   r7   r=   rE   rF   r   r   rO  r   )r   r   rO  r   z
abcd->dbca)rF   r=   rE   r7   r   r   rO  r   .r   rO  r   r   z
abcd->bcdar  r   )r  r  )r   r   r\  r)   	transposerK   rL   ry   einsumri   r   r   rr  r  r  )	rY   rq   rA  r5   rB  w2w3r{   expected_ells	            rP   test_transposezTestVariable.test_transpose  s   fc]DF++sFmTVX..BLLNN+++,,,IOOAq!Q'')))1--***BIlA,F,FGGx<''''Q[[c3<<===Q[[c377888Q[[c3<<===Q[[c3<<===BLLc3<<===***BIlA,F,FGGBLLc3<<=== ]:&& 	* 	*KK[)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* S+HEE{{3''v... \+&& 	3 	3KK[vK>>>\6222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s$   H''H+.H+)J>>KKc                    ddt          j        d          t          j        dd          d t                      fD ]6}t	          g |          }|                                }t          ||           7d S )N      @r   r8   r  r8   h)rK   r   r   r   r   r  r)   )rY   r   r   r{   s       rP   test_transpose_0dzTestVariable.test_transpose_0d+  s     M,''N1c""HH
 
	/ 
	/E  E**H''))FVX....
	/ 
	/rO   c                   t          ddgdgg          }t          t          g d          |                                           t          t          dgdg          |                    d                     t          t          dgdg          |                    dg                     t          t          dgdg          |                    d                     t          t          g d          |                    ddg                     t          ddgddgg          }t          t          dgddg          |                                           t          t          dgddg          |                    d                     t          j        t
          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr5   r;   r8   r7   zcannot select a dimensionr   )r   r)   r   r   r   rr  r   s     rP   test_squeezezTestVariable.test_squeeze9  s   c3Z1#''"a!))++6663%!--qyy~~>>>3%!--qyy#/?/?@@@3%!--qyy~~>>>"a!))S#J*?*?@@@c3Z1a&**3%!Q00!))++>>>3%!Q00!))C..AAA]:-IJJJ 	 	IIcNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   )GGGc                   t          g dt          j                            ddd                    }|                    d          dk    sJ |                    dg          dk    sJ |                    ddg          d	k    sJ |                    g d
          dk    sJ t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr  r7   r=   rE   r5   r   )r   r;   r  )rA   r;   r5   r  znot found in array dimr   foobar)r   rK   rL   ry   get_axis_numr   r   rr  r   s     rP   test_get_axis_numzTestVariable.test_get_axis_numG  s1   ___biooaA&>&>??~~c""a''''~~se$$,,,,~~sCj))V3333~~ooo..);;;;]:-FGGG 	% 	%NN8$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   >C!!C%(C%c                   t          dgddg          }|                    ddg          }t          ddgdgdgg          }t          ||           |                    ddg          }t          ||j                   |                    ddd          }t          ddgddgddgg          }t          ||           t          dgddg          }|                    d          }|}t          ||           t	          j        t          d	          5  |                    d
g           d d d            d S # 1 swxY w Y   d S )Nr5   r   r8   r;   r7   r   ra   zmust be a supersetr   rA   )r   r^  r)   r\  r   r   rr  rz   s       rP   test_set_dimszTestVariable.test_set_dimsP  s   cUQF##S#J''S#J!qc
33***S#J'',,,!!,,--S#J!Q!Q(899***eWq!f%%E""***]:-BCCC 	 	JJu	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   D66D:=D:c                    t          g d          }|                    dd          }t          j        dt                    }t          d          D ]}d||<   t          dg|          }t          ||           d S )Nr  r   r=   r   r=   r5   )r   r^  rK   r   r   r   r)   )rY   rq   r{   
exp_valuesr   r|   s         rP   test_set_dims_object_dtypez'TestVariable.test_set_dims_object_dtypee  s    R""FD))Xd&111
q 	% 	%A$JqMMSE:..*****rO   c                <   t          ddgddgddggddi          }|                    d	
          }t          dg d|j                  }t          ||           |                    d
          }t          d|j        j        |j                  }t          ||           |                    d
          }t          ||           |                    dd                              dd          }t          d|j        |j                  }t          ||           d S )Nr5   r;   r   r8   r7   r=   ra   rb   r   r  rA   r   r8   r7   r=   r   r*  rN   r  )XYr  r  )r   r(  ro   r)   rI   r\  r  rz   s       rP   
test_stackzTestVariable.test_stackn  s   c3Z1a&1a&!1E5>BB:&&Cqw77***6""J!'::***2###6V,,66sC@@J88*****rO   c                b   t          ddgddgddgg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            d S # 1 swxY w Y   d S )Nr5   r;   r   r8   r7   r=   ra   rb   invalid existing dimr   )x1r  cannot create a new dimr   )r   r   r   rr  r(  r   s     rP   test_stack_errorszTestVariable.test_stack_errors  s5   c3Z1a&1a&!1E5>BB]:-DEEE 	 	GGgG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:-GHHH 	 	GGfG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AA!A B$$B(+B(c                   t          dg dddi          }|                    ddd          }t          ddd	gdd
gg|j                  }t          ||           |                    dd	d          }t          ddgd	gdgd
gg|j                  }t          ||           |                    ddi          }t          dg d|j                  }t          ||           d S )NrA   r  ra   rb   r7   r   r  r   r8   r=   rE   r5   )r   unstackro   r)   rz   s       rP   test_unstackzTestVariable.test_unstack  s    S,,,7711--..J!Q!Q(8!'BB***11--..J!qcA3(<agFF***c1X&&Cqw77*****rO   c                   t          dg 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 d d            n# 1 swxY w Y   t          j        t          d
          5  |                    ddi	           d d d            d S # 1 swxY w Y   d S )NrA   r  r  r   r5   rE   )ra   r  r  zthe product of the new dimrF   )r   r   r   rr  r  r(  r   s     rP   test_unstack_errorsz TestVariable.test_unstack_errors  s   S,,,'']:-DEEE 	$ 	$II3(I###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$]:-GHHH 	 	GGfG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:-JKKK 	" 	"IIaI!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s5   AAA9BB #B C((C,/C,c                <   t          ddgddgddgg          }|                    ddi          }t          ddg|j                  }t          ||           |                    ddi	          }t          ddg|j        j                  }t          ||           d S )
Nr5   r;   r   r8   r7   r=   rA   r  r   )r   r  rI   r)   r\  rz   s       rP   test_unstack_2dzTestVariable.test_unstack_2d  s    c3Z1a&1a&!122c1X&&S#J//***c1X&&S#J11*****rO   c                    t          ddgddgddgg          }|                    d                              ddd          }t          ||           d S )	Nr5   r;   r   r8   r7   r=   r   r  )r   r(  r  r)   )rY   rq   r{   s      rP   test_stack_unstack_consistencyz+TestVariable.test_stack_unstack_consistency  sd    c3Z1a&1a&!122:&&..qq1A1A.BB#####rO   c                Z   t           j                            dd          }t          ddg|          }t	          ||z  t          ddgt          j        d||                               t	          ||d         z  t          ddgt          j        d||d                                        t	          |d         |z  t          ddgt          j        d|d         |                               t	          |d         |d d df         z  t          ddgt          j        d	|d         |d d df                                        t           j                            dd
d          }t          g d|          }t	          ||z  t          g dt          j        d||                               t	          ||z  t          g dt          j        d||                               t	          ||d         z  t          g dt          j        d||d                                        d S )Nr7   r=   r   r   z	ab,ab->abr   zab,b->abzb,ab->bazb,a->barE   rF   )r   rO  r   r  zab,bcd->abcdr  zbcd,ab->bcdazab,cd->abcd)rK   rL   ry   r   r)   r  )rY   r5   rq   r;   rB  s        rP   test_broadcasting_mathz#TestVariable.test_broadcasting_math  s   IOOAq!!c3Z##Q#sRY{Aq5Q5Q R RSSSQqT8S#J	*aQRSTQU8V8V#W#WXXX18S#J	*aPQdTU8V8V#W#WXXXaD1QQQT7NHc3Z9adAaaaQRdG1T1TUU	
 	
 	
 IOOAq!$$___a((E8000")NAq2Q2QRR	
 	
 	
 	E8000")NAq2Q2QRR	
 	
 	
 	!Hh333RY}aQRSTQU5V5VWW	
 	
 	
 	
 	
rO   c                   t          dgt          j        d                    }t          dgt          j        d                    }t          ddgt          j        d                              dd                    }t	          j        t          d          5  ||z    d d d            n# 1 swxY w Y   t	          j        t          d          5  ||z    d d d            d S # 1 swxY w Y   d S )Nr5   r_   rF   d   zmismatched lengthsr   zduplicate dimensions)r   rK   re   r  r   r   rr  )rY   r   r   rO  s       rP   test_broadcasting_failuresz'TestVariable.test_broadcasting_failures  sV   cUBIbMM**cUBIaLL))c3Z3!7!7B!?!?@@]:-BCCC 	 	EE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]:-DEEE 	 	EE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s$   B,,B03B0C%%C),C)c                   t          j        d          }t          dg|          }|}|dz  }||u sJ t          |j                  |u sJ t          |j        t          j        d          dz              t          j        t          d          5  |t          dt          j        d                    z  }d d d            d S # 1 swxY w Y   d S )NrF   r5   r8   zdimensions cannot changer   r;   )	rK   re   r   r3   rf   r'   r   r   rr  )rY   r5   rq   rA  s       rP   test_inplace_mathzTestVariable.test_inplace_math  s   IaLLcUA
aBwwwwah''1,,,,18RYq\\A%5666]:-HIII 	- 	-#ry||,,,A	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   &CC
Cc                    t          j        d          }t          dg|          }t          j        t
          d          5  |dz  }d d d            d S # 1 swxY w Y   d S )NrF   r5   z(Values of an IndexVariable are immutabler   r8   )rK   re   r   r   r   r  rL  s      rP   test_inplace_math_errorz$TestVariable.test_inplace_math_error  s    IaLL3%##]H
 
 
 	 	 FA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc           	        t          ddg| j        ddi          }t          |                    t          j        d          t          dg| j                            d                               t          |                    t          j        d          |                    t          j        d                     t          |                    t          j        ddg          t          g | j                            d                               t          |                    t          j                  t          g | j                                                             t          |                    t          j        d                              t          j        d          t          g | j                            d                                                               t          |                    d          |                    t          j        d                     t          j	        t          d	
          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr5   r;   ignored
attributesr   r&  r  r  zcannot supply bothr   )rm  r'  )r   r   r)   reducerK   stdr  r&   r   r   rr  r   s     rP   test_reducezTestVariable.test_reduce  s$   c3Z)\)BCC"&#..#

PQ
@R@R0S0STTT"&q11188BF83L3LMMMHHRVc3Z(((2tvzzvz7N7N*O*O	
 	
 	
 	"&))8B

+E+EFFFHHRWc""))"&#66R!,,002233	
 	
 	
 	sQXXbgs%;%;<<<]:-BCCC 	$ 	$FFsF###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   	I..I25I2c                   d }dd l }|                    |d|           t          ddt          j        dg          }t          j        t          d          5  t          d	
          5  |	                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          d
          5  |	                                 d d d            d S # 1 swxY w Y   d S )Nc                      t          d          )Nshould not have been called)RuntimeError)rZ   r[   s     rP   raise_if_calledz@TestVariable.test_reduce_use_bottleneck.<locals>.raise_if_called  s    <===rO   r   nanminr5   r$  r  r  r   Tuse_bottleneckF)

bottlenecksetattrr   rK   r   r   r   r  r   min)rY   monkeypatchr  bnrq   s        rP   test_reduce_use_bottleneckz'TestVariable.test_reduce_use_bottleneck  s   	> 	> 	> 	 B/:::S3,--]</LMMM 	 	D111                	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ... 	 	EEGGG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sH   B (B	=B 	B	B B	B  B$'B$;CC!$C!skipna)TFNq      ?r^         ?z	axis, dimNr   r8   r5   r;   c                r   | j                                         }t          j        |d<   t	          ddg|          }|                    |||          }|dv rt          j        nt          j        } ||t          j        |          dz  |          }	t          j	        
                    |j        |	           d S )Nr9   r5   r;   )rm  r  )TNr  r&  )r   r   rK   NaNr   quantilenanpercentile
percentiler   r   r&   rf   )
rY   r  r'  rm  r  r   rq   r{   _percentile_funcr|   s
             rP   test_quantilezTestVariable.test_quantile  s     FKKMM&$c3Z##A3v66/5/E/E2++2=##Arx{{S'8tDDD

""6=(;;;;;rO   c                p   t          ddg| j                                      ddi          }|                    ||          }t	          |j        t                    sJ t          j        | j        t          j	        |          dz  |          }t          j
                            |j        |           d S )Nr5   r;   r7   r  r  r&  )r   r   chunkr  ru   rI   dask_array_typerK   r  r   r   r&   rf   )rY   r  r'  rm  rq   r{   r|   s          rP   test_quantile_daskzTestVariable.test_quantile_dask  s     c3Z((..Qx88A3''&+77777#DFBHQKK#,=DIII

""6=(;;;;;rO   methodmidpointloweruse_daskr  Fr6  c                   t          ddg| j                  }|r|                    ddi          }t          j        g d          }|                    |d|          }t          t          j                  t          d          k    rt          j        | j        |d|          }nt          j        | j        |d|	          }|rt          |j
        t                    sJ t          j                            |j        |           d S )
Nr5   r;   r7   r  r^   r  rm  r!  z1.22r8   )r'  r!  )r'  interpolation)r   r   r  rK   r   r  r   __version__nanquantileru   rI   r  r   r&   rf   )rY   r!  r$  rq   r  r{   r|   s          rP   test_quantile_methodz!TestVariable.test_quantile_method  s    
 c3Z(( 	"a!!AH&&&''A3v662>""gfoo55~dfaaGGGHH~dfaavNNNH 	<fk?;;;;;

""6=(;;;;;rO   c                n   t          ddg| j                  }t          j        g d          }t	          j        t          d          5  |                    |d|          }d d d            n# 1 swxY w Y   |                    |d|          }t          j        	                    |j
        |j
                   t          j        d	          5  t	          j        t          d
          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 )Nr5   r;   r&  z<`interpolation` argument to quantile was renamed to `method`r   )rm  r(  r'  T)recordz!interpolation and method keywords)rm  r(  r!  )r   r   rK   r   r   r  FutureWarningr  r   r&   rf   r   r   r   r  )rY   r!  rq   r  r{   r|   s         rP   'test_quantile_interpolation_deprecationz4TestVariable.test_quantile_interpolation_deprecation3  s    c3Z((H&&&''\P
 
 
 	B 	B ZZs&ZAAF		B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B ::aS:88

""6=(/BBB$D111 	L 	Ly0STTT L L

1#VF
KKKL L L L L L L L L L L L L L L	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	LsH   	A..A25A2D*,DD*D	D*D	D**D.1D.c                    t          ddg| j                                      ddi          }t          j        t
          d          5  |                    dd           d d d            d S # 1 swxY w Y   d S )Nr5   r;   r7   zconsists of multiple chunksr   r^   r  )r   r   r  r   r   rr  r  r   s     rP   test_quantile_chunked_dim_errorz,TestVariable.test_quantile_chunked_dim_errorF  s    c3Z((..Qx88 ]:-KLLL 	% 	%JJsJ$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   A--A14A1gr%  c                    t          ddg| j                  }t          j        t          d          5  |                    |d           d d d            d S # 1 swxY w Y   d S )Nr5   r;   z'Quantiles must be in the range \[0, 1\]r   r  )r   r   r   r   rr  r  )rY   r  rq   s      rP   test_quantile_out_of_boundsz(TestVariable.test_quantile_out_of_boundsN  s    c3Z(( ]H
 
 
 	# 	# JJqcJ"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   AAAc                    t          dgddt          j        ddg                              d          }t	          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )	Nr5         @r  r        @r7   zarrays stored as daskr   )r   rK   r   r  r   r   r  rankr   s     rP   test_rank_dask_raisesz"TestVariable.test_rank_dask_raisesX  s     cUS#rvsC899??BB]9,DEEE 	 	FF3KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A22A69A6c                $   t          dgddt          j        ddg          }t          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 )Nr5   r5  r  r  r6  Fr
  )r   rK   r   r   r   r   r  r7  r   s     rP   test_rank_use_bottleneckz%TestVariable.test_rank_use_bottleneck_  s	   cUS#rvsC899... 	 	|,,  s              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   BA-!B-A1	1B4A1	5BB	B	c                   dd l }t          ddgddt          j        dgg          }|                    |j        d          }|                    |j        d          }t          j                            |                    d          j	        |           t          j                            |                    d          j	        |           t          dgg d          }|
                    |j        d          }t          j                            |                    d          j	        |           t          dgg d	          }|
                    |j        d          }t          j                            |                    d          j	        |           t          dgd
dt          j        ddg          }t          dgddt          j        ddg          }t          |                    dd          |           t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr   r5   r;   r=   rE   r8   r&  r&  )rO  r   r   r5  r  r  r6  r  r  r^   T)pctz	not foundr   )r  r   rK   r   nanrankdatarI   r   r&   r7  rf   rankdatar(   r   r   rr  )rY   r  rq   expect_0expect_1expectv_expects          rP   	test_rankzTestVariable.test_ranke  s/    c3Z1a"3!455>>!&q>11>>!&q>11

""166#;;#5x@@@

""166#;;#5x@@@cUIII&&QV!,,

""166#;;#5v>>>cUOOO,,QV!,,

""166#;;#5v>>>cUS#rvsC899SED$S#ABBQVVCTV**H555]:\::: 	 	FF3KKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   H??IIc                    t          j        dd          }t          dg|          }t          g d          }t          ||                                           d S )NrF   z>f4r   r5   )rK   r<  r   r)   rE  )rY   rI   rq   r|   s       rP   test_big_endian_reducez#TestVariable.test_big_endian_reduce  sR    wq&&&cUD!!B??15577+++++rO   c           
     (   t          dt          j        dt          j        ddg                    }t	          |                                t          g d                     t	          |                    d          t          g d                     t	          |                    d          t          g t          j                             t	          t          j        |          t          g d                     t	          |                                t          g d                     t	          |                    d	
          t          dt          j        g d                               t	          |                    d	
          t          dt          j        g d                               t	          |	                                t          g d                     t	          |
                                t          g d                     t          dg d          }t	          |                                t          g d                     t	          |                    d          t          g d                     t          dt          j        dd                    }|                    dd          dk    sJ t	          |                                t          g t          j        d                               d S )Nr5   r8   r7   r=   T)r  Frq  r   r&  )r8   r8   r=   rq  )r8   r8   r7   rq  gUUUUUU?r  r  r   r  r   )r  rm  z
2000-01-03)r   rK   r   r   r)   r  prodcumsumcumprodrQ   r  anyr  r   r   argmaxmaxrR  r   s     rP   test_reduce_funcszTestVariable.test_reduce_funcs  sS   S"(Arvq!#455668B??333t,,hr1oo>>>u--xBF/C/CDDDXb!__5558B??333q))8C,,,9O9O+P+PQQQ**HS"(<<<:P:P,Q,QRRR(2w"7"7888Xb!__555S...//(2t"4"45553"e)<)<===S"-a@@@AAxxtx--2222(2r|L/I/I"J"JKKKKKrO   c                z   t          ddg| j                  }t          |                    d          t          |j        t          j        | j        d                               t          |                    dd          t          |j        t          j        | j        dd                               t          |                    dd          t          |j        t          j        | j        dd                               t          |                    ddgd          t          |j        t          j        | j        d	d                               t          g d
          }t          |                    d          t          g t          j        |j        d                               d S )Nr5   r;   Tkeepdimsrm  rP  r   r'  rP  r8   )r8   r   r  )r   r   r)   r  rH   rK   rI   r   s     rP   test_reduce_keepdimsz!TestVariable.test_reduce_keepdims  s   c3Z((FFDF!!8AFBGDFT4R4R4R#S#S	
 	
 	
 	FFsTF**QVRWTV!dCCCDD	
 	
 	
 	FFsTF**QVRWTV!dCCCDD	
 	
 	
 	FFSzDF11QVRWTV&4HHHII	
 	
 	

 RFFDF!!8B0N0N0N#O#O	
 	
 	
 	
 	
rO   c                8   dd l }t          ddg| j                                                  }|                    d          }t          |j        |j        j                  sJ t          |j	        t          j        | j        d                    }t          ||           |                    dd          }t          |j        |j        j                  sJ t          |j	        t          j        | j        dd                    }t          ||           d S )	Nr   r5   r;   TrO  rQ  r8   rR  )
dask.arrayr   r   r  r  ru   rI   r   ArrayrH   rK   r)   )rY   r4   rq   r{   r|   s        rP   test_reduce_keepdims_daskz&TestVariable.test_reduce_keepdims_dask  s    c3Z((..00&&&+tz'788888AFBGDFT$B$B$BCC***C$//&+tz'788888AFBGDFT$J$J$JKK*****rO   c                J   ddd}t          ddg| j        |          }|                                }t          |j                  dk    sJ |j        i k    sJ |                    d          }t          |j                  t          |          k    sJ |j        |k    sJ d S )	Ntestr   r8  	long_namer5   r;   r   Tr:  )r   r   r  rn   ro   )rY   _attrsrq   vms       rP   test_reduce_keep_attrsz#TestVariable.test_reduce_keep_attrs  s    !	::c3Z00 VVXX28}}!!!!x2~~~~ VVtV$$28}}F++++x6!!!!!!rO   c                l   ddd}t          ddgt          j                            dd          |          }t          ddgt          j                            dd          |          }||z
  }|j        i k    sJ t          d          5  ||z
  }d d d            n# 1 swxY w Y   |j        |k    sJ d S )	NrY  r   rZ  r5   r;   r=   Tr:  )r   rK   rL   ry   ro   r   )rY   r\  r   r   r   s        rP   test_binary_ops_keep_attrsz'TestVariable.test_binary_ops_keep_attrs  s    !	::c3ZA!6!6??c3ZA!6!6??Ew"}}}}D))) 	 	AA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	w&      s   
BB #B c           	        t          g d          }t          dgdddt          j        g                                          }t	          ||           t          dgt          j        dddt          j        gt                              }|                                }t	          ||           t          dgg d	                                          }t	          ||           |j        t          k    sJ t          dgddg          }t          dd
gddt          j        gg dg                              d
          }t	          ||           d S )Nr=   r5   r8   r7   r  r  r  r   r   r;   r   )r8   r8   r8   )	r   rK   r   countr)   r   r   rg   r?  )rY   r|   r{   rq   s       rP   
test_countzTestVariable.test_count  s3   B??3%!Q26!23399;;6***cUBHc3RV%<FKKKLL6***3%!4!4!455;;==6***|s""""SEAq6**3*1bf~yyy&ABBHHMM6*****rO   c                L   t          ddgg dg dg          }d|d<   |d         dk    sJ t          ddgg dg dg          }d|t          ddg          <   t          |ddg         t          j        |ddg                              t          ddgg dg dg          }d|t          d	d
g          <   t          |d         t          j        |d                              t          ddgg dg dg          }d|t          d	d
gg d          <   |d         dk    sJ d S )Nr5   r;   r   r=   r7   r  r8   r  r   r   TFr  r   )r   rv   r'   rK   r   r   s     rP   test_setitemzTestVariable.test_setitem  sP   c3Z)))YYY!788$w!||||c3Z)))YYY!788$!Q...1aV9bl1aV9&=&=>>> c3Z)))YYY!788#$$$


 1Q4ad!3!3444c3Z)))YYY!788;<$$"6"6"6
7
7
78w!||||||rO   c           
        d } |t           j                            dd          t          dgddg          t          dgddg          d            |t           j                            dd          t          dgddg          t          dgddg          t          dd                      |t           j                            dd          t          dgddg          t          dgddg          t          ddd	g                      |t           j                            dd          t	          d           t          dgddg          t          ddd	g                      |t           j                            dd          t          dd
gddgg          t          dd
gddgg          d            |t           j                            dd          t          dd
gddgg          t          dd
gddgg          dg            |t           j                            dd          t          dd
gddgd	dgg          t          dd
gddgddgg          d	dg           t          g dt          j        d                    }t          dgddg          }d|t          ||          <   t          g dt          j        d                    }d|dd d df<   d|dd d df<   t          ||           t          ddgt          j        d                    }t          dd
gddgg          }d||d d f<   t          ddgddgddgddgg          }t          ||           t          j	        t          d          5  t          j        d          |||f<   d d d            n# 1 swxY w Y   t          ddgg dg dg          }t          dgddg          }t          ddgt          j        dt                    dz            |t          |          <   t          |d         t          j        |d                   dz             t          |d         t          j        |d                   dz             |j        dk    sJ t          ddgt          j        d                              dd	                    }t          dgddg          }|t          |          xx         dz  cc<   t          ddgdd	gddgddgg          }t          ||           t          dgddg          }|t          |          xx         dz  cc<   t          ddgd	dgddgddgg          }t          ||           d S )Nc                    |                                  }||||f<   t          ddg|           }||t          ||          <   t          ||           d S )Nr5   r;   r   )r   r   rv   r'   )r   key_xkey_yrf   r|   rq   s         rP   assert_assigned_2dz;TestVariable.test_setitem_fancy.<locals>.assert_assigned_2d  s]    zz||H%+HUE\"#sU++A(.AdUe$$$%x+++++rO   rE   r=   r   r   r8   )ri  rj  rf   rN   r7   r   rF   r  )rE   r=   r7   r@   r5   r;   )r=   r7   zshape mismatchr   )r8   r7   r8   re  r  )r7   r=   r   r_   r   r   rq  )rK   rL   ry   r   r   r<  rv   r)   r   r   rr  r  r?  r'   r   rH   re   r  )rY   rk  rq   r   r|   s        rP   test_setitem_fancyzTestVariable.test_setitem_fancy  s.   	, 	, 	, 	IOOAq!!C51a&))C51a&))		
 	
 	
 	
 	IOOAq!!C51a&))C51a&))B??		
 	
 	
 	
 	IOOAq!!C51a&))C51a&))SAq6**		
 	
 	
 	
 	IOOAq!!++C51a&))SAq6**		
 	
 	
 	
 	IOOAq!!C:Ax00C:Ax00		
 	
 	
 	
 	IOOAq!!C:Ax00C:Ax003		
 	
 	
 	
 	IOOAq!!C:AA'788C:AA'788q6		
 	
 	
 	
 ___bgi&8&899uq!f%% !$


OOORWY-?-?@@AAAqAAAq1%%% c3Z11SzQF8,,#qqq&	S#J!Q!Q!Q(@AA1%%%]:->??? 	. 	.(9--Ac3hK	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. c3Z)))YYY!788uq!f%%!3*bgfC.H.H.H2.MNN$+++1Q4ad!3!3b!89991Q4ad!3!3b!8999v#### c3Z1!5!5a!;!;<<uq!f%%	$+++!S#J!Q!Q!Q(@AAH%%%uq!f%%	$+++!S#J!Q!Q!Q(@AAH%%%%%s   N--N14N1c                   |                      dgg d          }|                    ddidd          }|                      dgg d          }t          ||           |                    ddiddd	          }|                      dgg d
          }t          ||           |                    ddit          j        dd          }|                      dgddg          }t          ||           |                      g dt          j        d                              ddd                    }ddit          j        ddfddit          j        ddidfdddt          j        ddddffD ]\  }}}}|                    ||||            d S )Nr5   )r   r8   r7   r=   rE   r7   r  r  )boundaryfunc)r^   r  rE   right)ro  rn  side)r   r  r  trim)ro  rq  rn  r  r  r  r  r  r  leftr=   r   )	r\   coarsenr)   rK   r  re   r  r  rL  )rY   rq   r{   r|   windowsro  rq  rn  s           rP   test_coarsenzTestVariable.test_coarsena  s   HHcUOOO,,C8e&AA88SE===11***C8&5wOO88SE===11***C8"'&QQ88SEC:..*** HH___bi&<&<&D&DRQ&O&OPP1Xrw/1Xry3-71rvvU/H/HI.
 	5 	5)GT4
 IIgtXt4444	5 	5rO   c                   |                      ddgt          j        d                              dd                    }|                    dddd	
          }|                    ddid	
                              ddid	
          }t          ||           |                      ddgt          j        d                              dd                    }|                    dddd	d          }|                    ddid	d                              ddid	d          }t          ||           |                      ddgdt          j        d                              dd          z            }t          j        |d<   t          j        |d<   |                    dddd	d          }|                    ddidd                              ddidd          dz  }|                    |          rJ |dxx         dz  cc<   |dxx         dz  cc<   t          ||           |                      dt          j        dt          j	                                      dd                    }|                    t          dd          dd          }|                      ddt          j        d          z            }t          ||           t          j        |d<   t          j        |d<   d|d<   d|d<   |                    t          dd          dd          }t          ||           |                    t          dd          ddd          }|                      dt          j        d gd!t          j        gg          }t          ||           |                    t          dd          ddd"          }|                      dd#d gd!d$gg          }t          ||           d S )%Nr5   r;   H   rq     r=   rE   r   r  )ro  T   r-  rr  )ro  rn  r  )r7   rE   r  rE  r  gtE]t?r:      r   r7   rb  exactrB   r9   )r   r   F)ro  rn  r     *   Tr_   #   )r\   rK   re   r  rt  r(   r   r   r&   r   rv   r<  rz   s       rP   test_coarsen_2dzTestVariable.test_coarsen_2dx  s   HHc3Z6!2!2!:!:1b!A!ABB++&9999c1XF933;;S!H6;RRVX&&&HHc3Z6!2!2!:!:1b!A!ABB++&6JJ99c1XFV9DDLL!H6F M 
 
 	VX&&& HHc3Zry'8'8'@'@B'G'G!GHH&$&$++&6JJIIsAhUVI<<DDauv E    	 ==*****'!'!)))HHZ5
!C!C!C!K!KAq!Q!QRR4!q>>>'JJ88JBGFOO(;<<VX&&&&$F&	4!q>>>'JJVX&&&4!q>>>PUVV88J"&"BF|(DEEVX&&&4!q>>>PTUU88J"bB8(<==VX&&&&&rO   r  c           	        ddd}t          t          |d           }t          d          5  t          dgt	          j        ddd	          |
                              ddi|dd          }d d d            n# 1 swxY w Y   |j        i k    sJ t          d          5  t          dgt	          j        ddd	          |
                              ddi|dd          }d d d            n# 1 swxY w Y   |j        |k    sJ d S )NrY  r   rZ  Fr:  coordr8   r_   r  )ro   r|  rs  )ru  ro  rn  rq  T)getattrr   r   r   rK   linspacert  ro   )rY   	operationr\  	test_funcnews        rP   test_coarsen_keep_attrsz$TestVariable.test_coarsen_keep_attrs  s   !	::NIt<<	 E*** 	 	G9bk!R&=&=VLLLTT !9wV U  C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 yB D))) 	 	G9bk!R&=&=VLLLTT ! 	 U  C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 yF""""""s%   AA99A= A=!AC..C25C2r7  r8  )r  )Pr   r   r   r\   r   fixturerH  rM  rP  r9  r   rT  rY  r_  ra  re  rm  rp  rr  r  r  r  r  r  r  r  r  r  r  r  r;  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r-   r  r0  r  r/   r   r<  r+  r/  r1  r3  r8  r:  rC  rE  rM  rS  rW  r^  r`  rc  rf  rl  rv  r  r  rN   rO   rP   r?  r?  -  s       ) ) ) ) V^D!!!> > "!>, , ,& & & [ BCC
@ 
@ DC
@ [ BCC
A 
A DC
A1 1 1= = =
 [ BCC; ; DC;# # #2+ + +"# # #(3. 3. 3.j# # #7 7 7
%7 %7 %7N#
 #
 #
J8 8 8>/1 /1 /1bI I IH H H,# # #+ + + [\FIq#+>??!H !H @?!HF6 6 6
  $5 5 53 3 3> [ BCC/ / DC/  % % %  *+ + ++ + +"  + + +" " "+ + +$ $ $

 
 
.  - - -  $ $ $"     [X':':':;;[S4$$">??[SS$A3A/$cUS#J1OPP < <  @? <;
< [S4$$">??[[As8qcC5\*BCC< < DC @? ]< [X
G'<==[\V\$m<<<eD < < <  >=<$ [X
G'<==L L L >=L$ % % ]% [S4qcD!9"=>># # ?>#    ]
     2, , ,L L L,
 
 
0 + + ]+"" " "
! 
! 
!+ + +"  $[& [& [&z5 5 5.1' 1' 1'h# # # # # #rO   r?  c                  X    e Zd ZddZd Zej        j         fd            Zej        j         fd            Z	ej        j         fd            Z
ej        j        ej                            d           fd	                        Z fd
Z fdZd Zej                            dddg          ej                            dg d          ej                            dddg          d                                     Zej                            d           fd            Z xZS )TestVariableWithDaskrT   r   c                >    t          |i |                                S rV   )r   r  rX   s      rP   r\   zTestVariableWithDask.cls  s!    (((..000rO   c                D   t          ddgt          j        d                    }|j        J |                                }|j        dk    sJ |j        j        }|                    d          }|j        dk    sJ |j        j        |k    sJ |                    d          }|j        dk    sJ |j        j        |k    sJ |                    d	          j        j        |                    d	          j        j        k    sJ |                                j        J d
d lm	} |                    d          }t          |j        |j                  sJ d|j        j        v sJ |                    dd          }|j        dk    sJ |j        j        |k    sJ d S )Ndim_0dim_1)r=   rE   )r  )rE   )r6   rB   r  r|  )r  r>   r7   r   	testname_ry  r=   )r  r  )r   rK   r<  r  r  rI   rz  r1  rU  r   ru   rV  )rY   	unblockedblockedfirst_dask_namedas        rP   
test_chunkzTestVariableWithDask.test_chunk  s   gw/AA	'''//##~----!,+//)9/::~!11111| O3333///00~////| O3333 q!!&+yq/A/A/F/KKKKK||~~$,,, 	 //{/33',11111gl///// ///33~////| O333333rO   c                H    t                                                       d S rV   )superr   rY   	__class__s    rP   r   z3TestVariableWithDask.test_0d_object_array_with_list  s    ..00000rO   c                H    t                                                       d S rV   )r  rM  r  s    rP   rM  z)TestVariableWithDask.test_array_interface  s!     	$$&&&&&rO   c                H    t                                                       d S rV   )r  r  r  s    rP   r  z$TestVariableWithDask.test_copy_index      !!!!!rO   z4ignore:elementwise comparison failed.*:FutureWarningc                H    t                                                       d S rV   )r  rX  r  s    rP   rX  z'TestVariableWithDask.test_eq_all_dtypes  s!     	""$$$$$rO   c                H    t                                                       d S rV   r  r  r  s    rP   r  z'TestVariableWithDask.test_getitem_fancy  s    ""$$$$$rO   c                H    t                                                       d S rV   )r  r   r  s    rP   r   z*TestVariableWithDask.test_getitem_1d_fancy  s    %%'''''rO   c           	        dd l m} t          dg|                    dd                    }t          dddgddgg          }t	          |                    |d          |                     dddgddgg                     d S )	Nr   r5   r=   r  r   r   r7   r   )rU  r   r   re   r)   r   r\   )rY   r  rq   r   s       rP   r   z6TestVariableWithDask.test_getitem_with_mask_nd_indexer	  s    cUBIIaI2233:B"a'9::  R 88HHZ1b'B7!344	
 	
 	
 	
 	
rO   rm  r5   r;   r!  )r=   rp  r  r  TFc           	        dd l }dd lm} |j                            d           t          dt          j        t          j                            dd          t                              }t          d|
                    |dd	g
                    }|                    ||d|t          j                  }t                      5  |                    ||d|t          j                  }	d d d            n# 1 swxY w Y   t          |	j        |j                  sJ |	j        |j        k    sJ t%          |	|           d S )Nr   zsingle-threaded)	schedulerr   r  r  r   )rq  r  r  r-     rp  r  r!  r#  )r4   rU  r   configsetr   rK   rL   ry   rh   
from_arrayr  r   r,   ru   rI   rV  ri   r(   )
rY   rm  r!  r  r4   r  r5   dxr|   r{   s
             rP   test_dask_rollingz&TestVariableWithDask.test_dask_rolling	  s    	"3444Z")//#r*B*B%!P!P!PQQj"--;NPQ:R-"S"STT##&RV $ 
 
 $%% 	 	&&VXf '  F	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 &+rx00000|x~----VX&&&&&s   %C77C;>C;zDhttps://github.com/pydata/xarray/issues/6209#issuecomment-1025116203r  c                H    t                                                       d S rV   )r  r  r  s    rP   r  z$TestVariableWithDask.test_multiindex#	  s!     	!!!!!rO   r7  )r   r   r   r\   r  r   r9  r:  r   rM  r  r   rX  r  r   r   r;  r  r  __classcell__r  s   @rP   r  r    s       1 1 1 1 4  4  4D [1 1 1 1 1 [' ' ' ' ' [" " " " " [[ VWW% % % % XW %% % % % %( ( ( ( (
 
 
 [US#J//[Xzzz22[Xe}55' ' 65 32 0/'( [U   " " " " " " " " "rO   r  c                      e Zd Zd ZdS )TestVariableWithSparsec                    t          j        d                              dd          }t          d|                              d          }|                                }t          ||           d S )Nry  r=   rE   r   r   r   )rK   re   r  r   
_as_sparse	_to_denser)   )rY   rI   rQ   r{   s       rP   test_as_sparsez%TestVariableWithSparse.test_as_sparse.	  sb    y}}$$Q**z4((33r3BBf%%%%%rO   N)r   r   r   r  rN   rO   rP   r  r  *	  s#        & & & & &rO   r  c                  :    e Zd Zd"dZd Zd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zej                            deeg          d             Zd Zd Zej        j         fd            Zej        j         fd            Zej        j         fd            Zej        j         fd            Zej        j        ej                            dg d          ej                            de           fd                                    Zej        j         fd            Zej        j         fd            Zej        j         fd            Zej        j         fd            Z ej        j         fd            Z!ej        j         fd            Z"d#d!Z# xZ$S )$TestIndexVariablerT   r   c                    t          |i |S rV   )r   rX   s      rP   r\   zTestIndexVariable.cls6	  s    d-f---rO   c                    t          j        t          d          5  t          dd           d d d            d S # 1 swxY w Y   d S )Nzmust be 1-dimensionalr   rN   r   )r   r   rr  r   r   s    rP   	test_initzTestIndexVariable.test_init9	  s    ]:-EFFF 	! 	!"a   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s   :>>c                    dt          j        d          z  }t          dg|ddi          }t          j        |d                              |                                          sJ d S )Nr^   r_   r`   ra   rb   ry  )rK   re   r   r   r)  r   r  rp   s      rP   test_to_indexzTestIndexVariable.test_to_index=	  sb    RYr]]"6(D5%.99x6***44QZZ\\BBBBBBBrO   c                   t           j                            ddgddggd          }t          d|i          }|j        j                                                            |                    d	                    sJ d S )
Nr   r   r8   r7   )r  r  r  r5   )coordsr  )	r   r  r  r   r  r   r  r   get_level_values)rY   r  r  s      rP   test_to_index_multiindex_levelz0TestIndexVariable.test_to_index_multiindex_levelB	  s{    }))C:1v*>n)UUS$K(((v''))001F1Fu1M1MNNNNNNNrO   c                    t           j                            ddgddgg          }t          dg|ddi          }|                                j        dk    sJ d S )	Nr   r   r8   r7   r5   ra   rb   )	x_level_0	x_level_1)r   r  r  r   r  r  )rY   r  rq   s      rP   #test_multiindex_default_level_namesz5TestIndexVariable.test_multiindex_default_level_namesG	  s^    }))C:1v*>??3%u~66zz||!%???????rO   c                   t          dt          j        d                    }t          |j        t
                    sJ t          |j        t          j                  sJ t          |j	        k    sJ t          t          j        d          |           t          |j        j	        k    sJ t          j        t          d          5  d|d d <   d d d            d S # 1 swxY w Y   d S )Nr5   r5  r=   zcannot be modifiedr   r   )r   rK   re   ru   r   r    rI   r  rh   rg   r'   rf   r   r   r  rY   r5   s     rP   	test_datazTestIndexVariable.test_dataL	  s   #ry~~..!'#899999!&"*-----29Q<<+++&&&&]9,ABBB 	 	AaaaD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   CC"Cc                    t          ddg          }|j        dk    sJ t          j        t                    5  d|_        d d d            d S # 1 swxY w Y   d S )Nr5         $@r;   )r   rz  r   r   AttributeError)rY   r  s     rP   	test_namezTestIndexVariable.test_nameV	  s    cD6**zS    ]>** 	 	EJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                    t           j                            ddgddggddg          }t          d|          }|j        |j        k    sJ t          d	d
g          j        J d S )Nr   r   r8   r7   level_1level_2r  r5   r;   r  )r   r  r  r   level_namesr  )rY   r  r5   s      rP   test_level_namesz"TestIndexVariable.test_level_names]	  s|    }))3Z!Q I(> * 
 
 #t$$}
****S4&))5=====rO   c                   t           j                            ddgddggddg          }t          d|          }t          d|                    d                    }t          |                    d          |           t          j        t          d	
          5  t          ddg                              d           d d d            d S # 1 swxY w Y   d S )Nr   r   r8   r7   r  r  r  r5   zhas no MultiIndexr   r;   r  level)
r   r  r  r   r  r)   get_level_variabler   r   rr  )rY   r  r5   r  s       rP   test_get_level_variablez)TestIndexVariable.test_get_level_variablef	  s/   }))3Z!Q I(> * 
 
 #t$$T%:%:9%E%EFF--i88'BBB]:-ABBB 	C 	C#v&&99'BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   %CCCc                v   t          j        dd          }t          d|d d                   t          d|dd                    g}t          d|          }t          j        |d          }t	          ||           t          |                                t           j                  sJ t          t          d                    t          t          dd                    g}t          j        |d|          }t	          ||           t          |                                t           j                  sJ d S )Nr  r_   r   r   rF   r  )rm  rl  )
r   r0  r   r   r)   ru   r  PeriodIndexrJ   r   )rY   r   r  r|   r{   rl  s         rP   test_concat_periodsz%TestIndexVariable.test_concat_periodsq	  s   /,;;;WRaR[11=gabbk3R3RS g..%f#666***&//++R^<<<<<%((^^T%2,,%7%78	%f#KKK***&//++R^<<<<<<<rO   c                x   t           j                            g dddgg          }t          d|d d                   t          d|dd                    g}t          d|          }t          j        |d          }t          ||           t          |                                t           j                  sJ d S )Nr   r   r   r5   r7   r  )r   r  r  r   r   r)   ru   r  )rY   r  r  r|   r{   s        rP   test_concat_multiindexz(TestIndexVariable.test_concat_multiindex~	  s    m(()))c3Z)@AAS!W--}S#abb'/J/JK c**%f#666***&//++R];;;;;;;rO   rg   c                x   t          dt          j        dg|                    }t          dt          j        dg|                    }t          dt          j        ddg|                    }t          j        ||g          }|                    |          sJ t          j        |j        |          sJ d S )Nr5   r   r   r   )r   rK   r   r   r   
issubdtyperg   )rY   rg   r   r   r|   r{   s         rP   test_concat_str_dtypez'TestIndexVariable.test_concat_str_dtype	  s    #rxU;;;<<#rxU;;;<< bhSz&G&G&GHH%q!f--)))))}V\51111111rO   c                    t          j        t          d          5  t          dg d          }d d d            n# 1 swxY w Y   t	          |t
                    sJ d S )N
deprecatedr   r5   r   )r   r  Warningr   ru   r   r  s     rP   test_coordinate_aliasz'TestIndexVariable.test_coordinate_alias	  s    \'666 	+ 	+3			**A	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+!]+++++++s   ;??c                    t          j        ddgd          }t          d|          }|d         j        |d         k    sJ d S )Nl   +j( l   Rj( r   r   r   r   )rK   r   r   rI   )rY   r   rq   s      rP   test_datetime64z!TestIndexVariable.test_datetime64	  sN    H)+>?GWXXX#q!!tyAaD      rO   c                H    t                                                       d S rV   )r  r  r  s    rP   r  z$TestIndexVariable.test_getitem_error	      ""$$$$$rO   c                H    t                                                       d S rV   )r  r  r  s    rP   r  z'TestIndexVariable.test_getitem_advanced	  s    %%'''''rO   c                H    t                                                       d S rV   r  r  s    rP   r  z$TestIndexVariable.test_getitem_fancy	  r  rO   c                H    t                                                       d S rV   r  r  s    rP   r  z#TestIndexVariable.test_getitem_uint	  r  rO   r  )	r  r  r  r  r  r  r  r  r  r   c                N    t                                          |||           d S rV   )r  r  )rY   r  r  r  r  s       rP   r  zTestIndexVariable.test_pad	  s'    " 	vv.....rO   c                L    t                                          ||           d S rV   )r  r  )rY   r  r  r  s      rP   r  z*TestIndexVariable.test_pad_constant_values	  s#    ((88888rO   c                H    t                                                       d S rV   )r  r  r  s    rP   r  z%TestIndexVariable.test_rolling_window	  s    ##%%%%%rO   c                H    t                                                       d S rV   )r  r)  r  s    rP   r)  z!TestIndexVariable.test_rolling_1d	  r  rO   c                H    t                                                       d S rV   )r  r3  r  s    rP   r3  z!TestIndexVariable.test_nd_rolling	  r  rO   c                H    t                                                       d S rV   )r  r6  r  s    rP   r6  z,TestIndexVariable.test_rolling_window_errors	  s    **,,,,,rO   c                H    t                                                       d S rV   )r  r  r  s    rP   r  z!TestIndexVariable.test_coarsen_2d	  r  rO   r6  c                    t          ddg          }|                                }||usJ d|_        |j        dk    sJ d S )Nr5   r   r  r   )r   r  rH   )rY   r   r   s      rP   test_to_index_variable_copyz-TestIndexVariable.test_to_index_variable_copy	  sS     #u%%!!zzzzvrO   )rT   r   r8  )%r   r   r   r\   r  r  r  r  r  r  r  r  r  r  r   r9  r;  r  r^  r  r  r  skipr  r  r  r  r=  r  r  r  r)  r3  r6  r  r  r  r  s   @rP   r  r  5	  sd       . . . .! ! !C C C
O O O
@ @ @
    > > >	C 	C 	C= = =< < < [WsEl332 2 432, , ,
! ! ! [% % % % % [( ( ( ( ( [% % % % % [% % % % % [[
	
 
	
 
	
  [-??/ / / / @?   / [9 9 9 9 9 [& & & & & [" " " " " [" " " " " [- - - - - [" " " " "               rO   r  c                      e Zd Zd Zd Zd Zej                            d          d             Z	e
dd            Zdd	Zedd
            ZddZddZd ZdS )TestAsCompatibleDatac                @   t           j        t          t          f}|D ]}t          j        d          t          j        dd          t          j        dd          j        fD ]:} ||          }t          |          t          t          |                    u sJ ;d S )Nr=   r  r   )
rK   rH  r    r   re   r   r   rf   r3   r$   )rY   typesr   rI   r5   s        rP   test_unchanged_typesz)TestAsCompatibleData.test_unchanged_types	  s    24FG 	R 	RA	!lA666lA666= R R
 AdGG%a((N;Ma;P;P,Q,QQQQQQR	R 	RrO   c                ,   g dgt          j        g dg          fD ]v}t          |          }t          t	          j        |          |           t          j        t          |          k    sJ t	          j        |          j        |j        k    sJ wd S )Nr   )	r   	DataFramer$   r'   rK   rH  r  r   rg   )rY   input_arrayr{   s      rP   test_converted_typesz)TestAsCompatibleData.test_converted_types	  s    &YYKyyyk)B)BC 	A 	AK'44Frz+66???:f----:k**0FL@@@@@		A 	ArO   c                F   t           j                            t          j        d                    }t          j        d          }t	          |          }t          ||           t          j        t                    |j        k    sJ t           j                            t          j        d          ddgz  dgz             }t          j        d          }t           j        |d<   t	          |          }t          ||           t          j        t                    |j        k    sJ t           j                            dd	gddg          }d|j
        _        t           j        d	g}t	          |          }t          ||           t          j        t                    |j        k    sJ t          t                      t           j        j        
          }t          t                      t           j        
          }t          ||           |j        |j        k    sJ d S )NrF   rE   FT)maskr  r   r  r  rG   )rK   maMaskedArrayre   r$   r'   rg   r?  r   rh   flags	writeabler   r  masked)rY   originalr|   r{   s       rP   test_masked_arrayz&TestAsCompatibleData.test_masked_array	  s   5$$RYq\\229Q<<#H--8V,,,x}},,,,5$$RYq\\UGtf8L$MM9S>>v#H--8V,,,x&,....5$$c3ZtUm$DD#( FC=#H--8V,,,x&,.... uwwRU\:::rv6668V,,,|x~------rO   r   c                r   t          j        d          }t          |          }||k    sJ t           j        t	          |          k    sJ t          j        d          |j        k    sJ t          j        t          j        d          g          }t          |          }t          j        |          |k    sJ t           j        t	          |          k    sJ t          j        d          |j        k    sJ t          j        t          j        dd          g          }t          |          }t          j        |          |k    sJ t           j        t	          |          k    sJ t          j        d          |j        k    sJ |t          t          j        |                    u sJ t          j        dd          }t          t          ddd                    }t          j        |          |k    sJ t           j        t	          |          k    sJ t          j        d          |j        k    sJ d S )Nr  r   r   r   r8   )
rK   r   r$   r  r   rg   r   rH  r3   r	   r`  s      rP   test_datetimez"TestAsCompatibleData.test_datetime
  s   =..#H--6!!!!zT&\\))))x())V\99998R]<889::#H--z(##v----zT&\\))))x())V\99998R]<>>?@@#H--z(##v----zT&\\))))x())V\9999>"*V*<*<=======t44#HT1a$8$899z(##v----zT&\\))))x())V\999999rO   rT   r6  c                   t          j        d          }t          j        dd|          }|                    t          j        d|                    }t          j                    5  t          j        d           t          |          }d d d            n# 1 swxY w Y   |j
        |k    sJ |j
        j        t          j        d|          k    sJ t          j        |          }t          j                    5  t          j        d           t          |          }d d d            n# 1 swxY w Y   t          j                            ||j                   |j        t          j        d          k    sJ d S )	N
US/Easternr,  r8   r   r  rd  r   r   r   )r  r  r   r   r  DatetimeTZDtyper   r   simplefilterr$   r   rg   r(  rK   r   r'   rf   )rY   r  times_nstimes_sr{   seriess         rP   test_tz_datetimez%TestAsCompatibleData.test_tz_datetime+
  s   ]<((=r::://""4S""="=>>$&& 	1 	1!(+++'00F	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 |w&&&&|!R%7b%A%AAAAA7##$&& 	0 	0!(+++'//F	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	
%%ffm<<<|rx(899999999s$   '$BBB;$D++D/2D/c                h   t          dddgddggddi          }|                    d	
          }ddgddgg|_        t          |t	          |d                     d	d	gd	d	gg|_        |j        t          k    sJ t          |t	          |d	t                               t          j        t          d          5  t	          |ddg           d d d            n# 1 swxY w Y   t          j        t          d          5  t	          |d	dt          i           d d d            d S # 1 swxY w Y   d S )Nr   r  r  r  r  ra   rb   rH   rI   ro   TrZ  r7   r   zmust be scalarr   r  z'dtype' cannot be dict-liker5   )
r   r   rf   r)   r   rg   r  r   r   rr  )rY   r  rA  s      rP   test_full_likez#TestAsCompatibleData.test_full_like?
  s   C:Sz":5%.
 
 
 %%sc3Z04!3!3444 d|4|t####4T!B!B!BCCC ]:->??? 	( 	(dS#J'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( ]:-JKKK 	5 	5dDd4444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s$   ;CC!C D''D+.D+c           	     p   t          dddgddggddi                              d	          fd
} |t          d          j        t	          j        j        d                      |t          dt                    t          t	          j        j        dt                               t          d          j        j        }|                                D ]U}t          |t                    r"|D ]}t          |t          j                  rJ 9t          |t          j                  rJ Vd S )Nr   r  r  r  r  ra   rb   r  )r:   )r7   c                    | j         |k    sJ | j        j        k    sJ | j        j        k    sJ | j        j        k    sJ | j        j        k    sJ t          | j        |           d S rV   )rg   ri   rH   ro   r  r'   rf   )r{   expect_dtypeexpect_valuesr  s      rP   checkz7TestAsCompatibleData.test_full_like_dask.<locals>.check[
  s    <<////<4:----;$)++++<4:----=DK////v}m<<<<<rO   r7   Tr   r8   )r   r  r   rg   rK   rf   r  rI   r4   ru   r  r  )rY   r  dskrq   vir  s        @rP   test_full_like_daskz(TestAsCompatibleData.test_full_like_daskU
  s]   C:Sz":5%.
 
 

%

 		= 	= 	= 	= 	= 	ia  $*bl4;.J.JKKKdD---Ld$777	
 	
 	
 a  %* 	5 	5A!U## 5 : :B)"bj999999: &a444444	5 	5rO   c                   t          dddgddggddi          }t          t          |          t          |d	                     t          t          |t          
          t          |d	t          
                     d S )Nr   r  r  r  r  ra   rb   r  r   r   )r   r)   r   r   r?  rY   r  s     rP   test_zeros_likez$TestAsCompatibleData.test_zeros_likeu
  s    C:Sz":5%.
 
 
 	D))9T1+=+=>>>D444ias6S6S6STTTTTrO   c                   t          dddgddggddi          }t          t          |          t          |d	                     t          t          |t          
          t          |d	t          
                     d S )Nr   r  r  r  r  ra   rb   r  r8   r   )r   r)   r   r   r?  r  s     rP   test_ones_likez#TestAsCompatibleData.test_ones_like|
  s    C:Sz":5%.
 
 
 	4)D!*<*<===4s333YtQc5R5R5RSSSSSrO   c                Z    G d dt                     } G d d|t          j                  } G d d          } |t          j        d                    }t          d|d	d
i          }t          |j        t          j                  sJ  |t          j        d                    }t          d|d	d
i          }t          |j        |          sJ  |t          j        d                    }t          d|          }t          |j        	                                |          sJ d S )Nc                      e Zd Zd ZdS )?TestAsCompatibleData.test_unsupported_type.<locals>.CustomArrayc                    || _         d S rV   )r   rY   r   s     rP   r   zHTestAsCompatibleData.test_unsupported_type.<locals>.CustomArray.__init__
  s    "


rO   Nr   r   r   r   rN   rO   rP   CustomArrayr  
  s#        # # # # #rO   r#  c                      e Zd ZdS )CTestAsCompatibleData.test_unsupported_type.<locals>.CustomIndexableN)r   r   r   rN   rO   rP   CustomIndexabler%  
  s        DrO   r&  c                      e Zd Zd ZdS )HTestAsCompatibleData.test_unsupported_type.<locals>.CustomWithValuesAttrc                    || _         d S rV   )rf   r!  s     rP   r   zQTestAsCompatibleData.test_unsupported_type.<locals>.CustomWithValuesAttr.__init__
  s    #rO   Nr"  rN   rO   rP   CustomWithValuesAttrr(  
  s#        $ $ $ $ $rO   r*  r=   r5   ra   rb   r  rN   rG   )
r#   r   ExplicitlyIndexedrK   re   r   ru   r   r  r   )rY   r#  r&  r*  r   r  s         rP   test_unsupported_typez*TestAsCompatibleData.test_unsupported_type
  sh   	# 	# 	# 	# 	#, 	# 	# 	#	 	 	 	 	k8+E 	 	 		$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ BIaLL))cuenEEE$*bj11111	!--cuenEEE$*o66666$$RYq\\22Re,,,$*//++-ABBBBBBBrO   Nr8  )r   r   r   r  r  r  r   r9  r   r  r0   r  r  r/   r  r  r  r,  rN   rO   rP   r  r  	  s       	R 	R 	RA A A. . .6 [ BCC: : DC:4 !: : : ! :&5 5 5 5, 5 5 5 ]5>U U U UT T T TC C C C CrO   r  c                     t                      5  t          dddt          j        g          dk     d d d            d S # 1 swxY w Y   d S )Nr5   r8   r7   r   )r*   r   rK   r  rN   rO   rP   +test_raise_no_warning_for_nan_in_binary_opsr.  
  s    			 * *q!RVn%%))* * * * * * * * * * * * * * * * * *s   ">AAc                      e Zd ZdZ ej        d          d             Zd Zd Zd Z	d Z
d	 Zd
 Zed             ZdS )TestBackendIndexingz0Make sure all the array wrappers can be indexed.TrA  c                    t           j                            d                              t           j                  | _        d S rD  rF  r   s    rP   setUpzTestBackendIndexing.setUp
  rI  rO   c                    t          j        |                    ddgddg          | j        ddg         d d ddgf                   sJ d S )Nrp  r=   r7   r8   r   )rK   allcloser]  r   r   s     rP   check_orthogonal_indexingz-TestBackendIndexing.check_orthogonal_indexing
  sS    {166QFq!f655tvq!f~aaa!Qi7PQQQQQQQrO   c                    t          dddg          }t          dddg          }t          j        |                    ||          | j        ||f                   sJ d S )NrA   r   r7   r8   r   )r   rK   r4  r]  r   )rY   rq   r  r  s       rP   check_vectorized_indexingz-TestBackendIndexing.check_vectorized_indexing
  sa    q!f%%q!f%%{166EU633TVE5L5IJJJJJJJrO   c           	     h   t          dt          | j                            }|                     |           |                     |           t          j        t          d          5  t          dt          t          | j                                      }d d d            d S # 1 swxY w Y   d S )Nr   rG   z NumpyIndexingAdapter only wraps r   )r   r   r   r5  r7  r   r   r  r   s     rP   test_NumpyIndexingAdapterz-TestBackendIndexing.test_NumpyIndexingAdapter
  s    *+?+G+GHHH&&q)))&&q)))]9,OPPP 	 	&:;OPTPV;W;W&X&X  A	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   )1B''B+.B+c                   t          dt          | j                            }|                     |           |                     |           t          dt          t          | j                                      }|                     |           t          dt          t          | j                                      }|                     |           d S Nr   rG   )r   r   r   r5  r7  r   r   s     rP   test_LazilyIndexedArrayz+TestBackendIndexing.test_LazilyIndexedArray
  s    *+=df+E+EFFF&&q)))&&q)))#$6tv$>$>??
 
 
 	&&q)))"45I$&5Q5Q"R"R
 
 
 	&&q)))))rO   c                T   t          dt          | j                            }|                     |           |                     |           t          dt          t          | j                                      }|                     |           |                     |           d S r;  )r   r   r   r5  r7  r   r   s     rP   test_CopyOnWriteArrayz)TestBackendIndexing.test_CopyOnWriteArray
  s    *+;DF+C+CDDD&&q)))&&q)))*+;<Ntv<V<V+W+WXXX&&q)))&&q)))))rO   c                T   t          dt          | j                            }|                     |           |                     |           t          dt          t          | j                                      }|                     |           |                     |           d S r;  )r   r   r   r5  r7  r   r   s     rP   test_MemoryCachedArrayz*TestBackendIndexing.test_MemoryCachedArray
  s    *+<TV+D+DEEE&&q)))&&q)))*+;<Mdf<U<U+V+VWWW&&q)))&&q)))))rO   c                   dd l m} |                    | j                  }t	          dt          |                    }|                     |           |                     |           t	          dt          t          |                              }|                     |           |                     |           d S )Nr   r   rG   )	rU  r   rH  r   r   r   r5  r7  r   )rY   r  rq   s      rP   test_DaskIndexingAdapterz,TestBackendIndexing.test_DaskIndexingAdapter
  s    ZZ*+>r+B+BCCC&&q)))&&q)))*+;<OPR<S<S+T+TUUU&&q)))&&q)))))rO   N)r   r   r   __doc__r   r  r2  r5  r7  r9  r<  r>  r@  r/   rB  rN   rO   rP   r0  r0  
  s        ::V^D!!!> > "!>R R RK K K
  * * * * * ** * * 
* 
* ]
* 
* 
*rO   r0  c                   |                      d          }|                    d          dk    sJ |                      d          }|                    d          dk    sJ |                      dd          }|                    d          dk    sJ |                    d          dk    sJ |                      |                     d          |                     d	                    }|j        | j        k    sJ t          |j        t          j         | j        |                     d          j        t          j        d d d d f         |                     d	          j        d d d d t          j        f                              d S )
Nr^   )r  .)rL  r  r  )r  rL  r5   rA   )	rJ  r  rL  r  rH   r'   rI   rK   r  )rQ   r  s     rP   	test_cliprE  
  sh   XX#XF::c??c!!!!XX#XF::c??c!!!!XX$DX))F::c??d""""::c??d""""XX#((3--SXXc]]X;;F;#(""""
HHHSMMrz111aaa/0HHSMMqqq!!!RZ/0	
 	
    rO   Varc                      e Zd Zd Zed             Zed             Zed             Z	e
d             Zeed                         ZdS )TestNumpyCoercionc                     |dg d          }t          |                                |           t          j                            |                                t          j        g d                     d S )Nr5   r   )r)   as_numpyrK   r   r(   to_numpyr   )rY   rF  rq   s      rP   test_from_numpyz!TestNumpyCoercion.test_from_numpy  sc    CYYYq)))



bhyyy.A.ABBBBBrO   c                @    |dg d          }|                     d          }t          |                                |                                           t          j                            |                                t	          j        g d                     d S )Nr5   r   r8   )	r  r)   rJ  r  rK   r   r(   rK  r   )rY   rF  rq   	v_chunkeds       rP   test_from_daskz TestNumpyCoercion.test_from_dask  s~    CYYYGGAJJ	++--qyy{{;;;



bhyyy.A.ABBBBBrO   c                   dd l }t          j        g d          }t          j                    5  t          j        d|j                    |d|                    |d                    }d d d            n# 1 swxY w Y   t          |	                                 |d|                     t          j
                            |                                |           d S Nr   r   r   )categoryr5   r  )r8  )pintrK   r   r   r   r  UnitStrippedWarningQuantityr)   rJ  r   r(   rK  )rY   rF  rS  arrrq   s        rP   test_from_pintz TestNumpyCoercion.test_from_pint  s   hyyy!! $&& 	8 	8!(T5MNNNNCs#6677A	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	ss3}}555



c22222s   =A77A;>A;c                   |t           u rt          j        d           dd l}t	          j        g d          }|                    g dg dgg d          }t          ddg|          }t          |	                                t          ddg|                     t          j
                            |                                |           d S )NzCan't have 2D IndexVariablesr   r   r   )r  rI   r5   r;   )r   r   r  sparserK   diagflatCOOr   r)   rJ  r   r(   rK  )rY   rF  rY  rV  sparrrq   s         rP   test_from_sparsez"TestNumpyCoercion.test_from_sparse"  s    -K6777k)))$$

999iii"8yyy
IIc3Z''xc
C'@'@AAA



c22222rO   c                n   |t           u rt          j        d           dd l}t	          j        g d          } |d|                    |                    }t          |                                 |d|                     t          j        	                    |
                                |           d S )Nz6cupy in default indexes is not supported at the momentr   r   r5   )r   r   r  cupyrK   r   r)   rJ  r   r(   rK  )rY   rF  cprV  rq   s        rP   test_from_cupyz TestNumpyCoercion.test_from_cupy0  s    -KPQQQhyyy!!CRXXc]]##ss3}}555



c22222rO   c                ,   dd l }dd l}t          j        g d          }|j                            t          j        g d                    }t          j                    5  t          j        d|j                    |d|	                    |d                    }d d d            n# 1 swxY w Y   |
                                }t          | |d|                     t          j                            |                                |           d S rQ  )r4   rS  rK   r   r  r   r   r  rT  rU  rJ  r)   r   r(   rK  )rY   rF  r4   rS  rV  r   rq   r  s           rP   test_from_pint_wrapping_daskz.TestNumpyCoercion.test_from_pint_wrapping_dask<  s;    	hyyy!!J!!"(999"5"566 $&& 	6 	6!(T5MNNNNCq4455A	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 S#///



c22222s    =B))B-0B-N)r   r   r   rL  r/   rO  r1   rW  r2   r]  r.   ra  rc  rN   rO   rP   rH  rH    s        C C C C C ]C 3 3 ]3 3 3 _3 	3 	3 ]	3 3 3 ] ]3 3 3rO   rH  )rf   warns_under_pandas_version_twor  r   Frd  Tr,  r   r   r  r  c                    |  S rV   rN   r   s    rP   <lambda>rf  _      Q& rO   )idsrT   r6  c                   t          | t          j        t          j        t          j        f          rdgng }|rKt          rDt          j        t          d          5  t          ||           }d d d            n# 1 swxY w Y   nOt          j                    5  t          j        d           t          ||           }d d d            n# 1 swxY w Y   |j        j        dk    r!|j        t          j        d          k    sJ d S |j        j        j        t          j        dt'          j        d                    k    sJ d S )	Nr`   !non-nanosecond precision datetimer   errorr  r   r   r  )ru   rK   r  r   r)  r(  r+   r   r  r  r   r   r   r  rg   r~  r   r   r  r  r  rf   rd  rH   rQ   s       rP    test_datetime_conversion_warningrm  O  s   & "&2:rx*KLLTF88RTD% )*@ )\+-PQQQ 	) 	)4((C	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) $&& 	) 	)!'***4((C	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) y~yBH%566666666
 y$(:$---)
 )
 
 
 
 
 
 
s$   A88A<?A<%CCCc                    t          j        dd          dft          j        t          j        dd                    dft          j        ddt          j        d                    t          j        dt          j        d                    ft          j        t          j        ddt          j        d                              t          j        dt          j        d                    fg} | D ]\\  }}t          j        t          d	          5  t          d
g|
                    |                    }d d d            n# 1 swxY w Y   ]|j        j        dk    r!|j        t          j        d          k    sJ d S |j        j        j        t          j        dt          j        d                    k    sJ d S )Nr,  r8   r   r  r  r  rd  rj  r   r`   r  r   r   )r   r   r(  r  r  r  r   r  r  r   r  rg   r~  rK   r   r   )casesrI   rg   rQ   s       rP   1test_pandas_two_only_datetime_conversion_warningsrp  v  s   
 
vq	)	)	)?;	2=333	4	4oFM&!l0K0KLLLsDM,$?$?@@	

 IbmFA$-:U:UVVVWWsDM,$?$?@@	
E  9 9e\+-PQQQ 	9 	9F8T[[%7%788C	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 y~yBH%566666666
 y$(:$---)
 )
 
 
 
 
 
 
s   %EE
	E
	r_   r  rV  c                    |  S rV   rN   r   s    rP   rf  rf    rg  rO   c                   t          | t          j        t          j        f          rdgng }|rKt
          rDt          j        t          d          5  t          ||           }d d d            n# 1 swxY w Y   nOt          j                    5  t          j        d           t          ||           }d d d            n# 1 swxY w Y   |j        t          j        d          k    sJ d S )Nr`   "non-nanosecond precision timedeltar   rk  r   )ru   rK   r  r   r)  r+   r   r  r  r   r   r   r  rg   rl  s       rP   !test_timedelta_conversion_warningrt    s^    "&2:rx*@AAIF88rD% )*@ )\+-QRRR 	) 	)4((C	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) $&& 	) 	)!'***4((C	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 9!233333333s$   A--A14A1%B==CCc                    t          j        dd                              d          } t          j        t
          d          5  t          dg|           }d d d            n# 1 swxY w Y   |j        t          j        d          k    sJ d S )	Nr  r8   r   r  rs  r   r`   r   )	r   r  r  r   r  r  r   rg   rK   )rI   rQ   s     rP   1test_pandas_two_only_timedelta_conversion_warningrv    s     c1---445EFFD	k)M	N	N	N ' 'x&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 9!233333333s   A##A'*A'r8  )^
__future__r   r   r  r   r   r   r   r	   r
   textwrapr   numpyrK   pandasr   r   r  packaging.versionr   xarrayr   r   r   r   r   r   xarray.corer   r   r   xarray.core.commonr   r   r   xarray.core.indexingr   r   r   r   r   r   r   r    r!   xarray.core.pycompatr"   xarray.core.utilsr#   xarray.core.variabler$   r%   xarray.testsr&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r  r=  r  rQ   rS   r?  r  r  r  r  r.  r0  rE  r9  r;  rH  r   r   r   r  r(  rm  rp  r   r  rt  rv  rN   rO   rP   <module>r     s   " " " " " "  # # # # # # # #         ( ( ( ( ( ( ( (                 % % % % % % W W W W W W W W W W W W W W W W 8 8 8 8 8 8 8 8 8 8 ? ? ? ? ? ? ? ? ? ?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 , + + + + + * * * * * * @ @ @ @ @ @ @ @                               " *V$$ 
6],-	1X'(	6],-!9:45 D D Di i i i ic i i iXS# S# S# S# S#* S# S# S#l$ c" c" c" c" c"2 c" c" c"L & & & & & & & &j  j  j  j  j / j  j  j ZyC yC yC yC yC yC yC yCx* * *
F* F* F* F* F* F* F* F*R  0 = 9::G3 G3 G3 G3 G3 G3 G3 ;:G3T 0	|T	*	*E2	|S	)	)40	=2=t445	6	6>	=2=s334	5	5t<	vq	)	)	)51	$1		u%	88D!Q''(	)	)51	vq]T]<-H-H	I	I	I5QBImbmFA-$-:U:UVVVWW	
 	!   $
 
 
% $
* 
 
 
 
< 0	D	!	!5)	C	 	 $'	>2>"d++,	-	-u5	>2>"c**+	,	,d3		C	+	+	+U3				E"	99!$$$%	&	&. 	   
4 
4 
4 
4 4 4 4 4 4 4rO   