
    dXp                    2   d dl mZ d dlZd dl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mZ d dlmZ d dlmZmZmZ e
j        j        Ze
j        Ze
j        j        Z e
j        d          Z ed          Zd Zd	 Zd
 Zd ZddZ  G d d          Z!e
j        "                    ddddddddd ed ed                    g	          d             Z#e
j        "                    dg  e!d          d f e!d!          d f e!d"e$#          d$f e!d%d d&'          d$f e!d(d)d*id+,          d$f e!d-          d$f e!d.          d$f e!d/          d$f e!d0          d f e!d1d)2          d f e!d3 e%d*d4          5          d$f e!d6          d$f e!d7          d$f e!d8          d f e!d9          d$f e!d:          d$f e!d;          d$f e!d<d=>          d$f e!d?d@dAiB          d$f e!dC          d$f e!dD          d$f e!dEd)dFd*dGiB          d$f e!dH edIdFdA                    d f e!dJ edIdFdA                    d f e!dK edIdFdA                    d f e e!dL          d$ edM           edN          g           e e!dO          d$ edP           edN          g           e e!dQ          d$ edR                     e e!dS edIdFdA           edIdFdA          gT          d$ ed                     e e!dU          d$ edV                     e e!dW          d$ edX                     e e!dY          d$ edZ                     e!d[d           d$f e e!d\d]          d  ed^                     e e!d_          d  ed`                     e e!da          d            e e!db          d            e e!dc edIdFdA          d          d$ ede                     e e!dfdgd)d]idFh          d$ edi                     e!dj          d f e e!dkdlm          d$ edn                     e e!dod)2          d  edp                     e e!dqd+d)r          d$ ed                     e e!dsd)d*dtu          d$ edi                     e e!dvd*5          d$ ede                     e e!dw          d  edx                     e!d+          d f e e!dy          d  edz                     e e!d{          d  ed                     e!d| edIdFdA          dlk    }          d$fe&~          d             Z'e
j        "                    d e!d          d$f e e!d          d  ed                     e e!d          d  ed                     e e!ddl          d$ ed                    g          d             Z( G d d          Z)e
j        "                    dg d          d             Z*e
j        "                    dg  e!d          d f e!d!          d f e!dddi          d$f e!d e d)dIi          j+        d&z   5          d$f e!d"e$          d$f e!d%d d&'          d$f e!d-          d$f e!d.          d$f e!d/          d$f e!d0          d f e!dd)          d$f e!dd)          d$f e!ddd*id*          d$f e!d1d)          d f e!dd)          d f e!dK e dFdFdA                    d f e!dd)          d$f e!d3 e%d d           e%d*d4          dA          d$f e!d6          d$f e!d7          d$f e!d8          d f e!d          d$f e!dd)g di          d$f e!dd          d$f e!d          d$f e!dd$          d$f e!dd)          d$f e!d;          d$f e!dg d5          d$f e!dv          d$f e!dd)d           d$f e!d?d)dg          d$f e!dD          d$f e!dH edIdFdA                    d f e!dJ edIdFdA                    d f e e!dL          d$ edP           edN          g           e e!dO          d$ edM           edN          g           e e!dQ          d$ edR                     e e!dd)2          d  ed                     e!d e dIdFdA                    d$f e e!dU          d  edV                     e e!dW          d$ edX                     e e!dY          d$ edZ                     e e!dd)          d  ed                     e e!d e dIdFdA                    d$ ed                     e e!dd)          d  ed                     e e!dd)          d  ed                     e!d[d           d$f e e!dd) ej,        dI          dlz   i          d$ ed                     e e!d e dIdFdA ej,        dI          dlz    ej,        dF          dlz   dA                    d$ ed                     e e!dd)          d$ ed                     e e!dg d          d  ed                     e e!d\d]          d  ed^                     e e!da          d            e e!db          d            e e!d_          d  ed`                     e!d9          d$f e!dd+d&          d$f e!dj          d f e e!dkdlm          d  edn                     e e!dod)          d  edp                     e e!dqd+d)r          d  ed                     e e!d e dIdFdA ej,        dI          dlz    ej,        dF          dlz   dA                    d$ ed                     e!d:d*d$          d$f e e!dg dd*dgA          d$ ed                     e e!dw          d  edx                     e!d+          d f e e!dy          d  edz                     e e!d| e dIdFdA          dlk              d  ed                    e&~          d             Z-e
j        "                    d e!d          d$f e e!dg d          d  ed                    g          d             Z. G d d          Z/ G d d          Z0ed             Z1ed             Z2ed             Z3dS )    )annotationsN)dedent)	DataArrayVariable)
array_type)assert_equalassert_identicalrequires_dasksparsec                    t          | t                    sJ t          |t                    sJ t          j                            |                                 |                                           d S N)
isinstancesparse_array_typenptestingr   todense)abs     8lib/python3.11/site-packages/xarray/tests/test_sparse.pyassert_sparse_equalr      s^    a*+++++a*+++++JAIIKK55555    c                t    t          j        t          j        |                                         |           S r   )r   arangemathprodreshapeshapes    r   make_ndarrayr      s*    9TYu%%&&..u555r   c                <    t                               | dd          S )Ng?r   )densityrandom_state)r   randomr   s    r   make_sparrayr$   "   s    ==!=<<<r   c           	         t          j        t          |                                           t	          t          |                                                               S )Nr   )xrr   tuplekeysr$   values)dim_lengthss    r   
make_xrvarr+   &   sN    ;k  !!<eK<N<N<P<P6Q6Q#R#R#R  r   testc                
   |d |                                  D             }t          j        t          t	          |                                                     t	          |                                          ||          S )Nc                >    i | ]\  }}|t          j        |          S  )r   r   ).0dns      r   
<dictcomp>z make_xrarray.<locals>.<dictcomp>.   s&    BBBda!RYq\\BBBr   r   )dimscoordsname)itemsr&   r   r$   r'   r)   r(   )r*   r5   r6   s      r   make_xrarrayr8   ,   sz    ~BBk.?.?.A.ABBB<5!3!3!5!5667776;;==!!	   r   c                       e Zd Zd Zd Zd ZdS )doc                0    || _         || _        || _        d S r   methargskwargs)selfr=   r>   r?   s       r   __init__zdo.__init__8   s    		r   c                    | j                                         }d| j         v rt          t          |d                   |d<    t          || j                  | j        i |S )Nfunc)r?   copygetattrr   r=   r>   )r@   objr?   s      r   __call__zdo.__call__=   s\    !!##T[  $R88F6N&wsDI&&	<V<<<r   c                8    d| j          d| j         d| j         dS )Nzobj.z(*z, **)r<   r@   s    r   __repr__zdo.__repr__E   s)    @di@@49@@$+@@@@r   N)__name__
__module____qualname__rA   rG   rK   r/   r   r   r:   r:   7   sF          
= = =A A A A Ar   r:   propchunksdatar4   dtypeencodingimagnbytesndimr)   Coercion to densereason)marksc                J    t          ddd          }t          ||            d S N
      xy)r+   rE   )rO   vars     r   test_variable_propertyrc   I   s/     2A&&
'
'CCr   zfunc,sparse_outputallFanyastyperR   Tclip   )minmaxcoarsenr`      sum)windowsrC   computeconjrD   countget_axis_numdimisel   r`   isnullloadmeannotnullrollroundset_dims)r`   ra   zr4   stackflatr_   )
dimensionsto_base_variable	transposeunstackr^   )x1x2broadcast_equalsr]   equals	identicalargmaxz$Missing implementation for np.argminz!ignore:Behaviour of argmin/argmaxargminz$Missing implementation for np.argmaxargsortz''COO' object has no attribute 'argsort'concat)	variables	conjugatez)'COO' object has no attribute 'conjugate'cumprodz(Missing implementation for np.nancumprodcumsumz'Missing implementation for np.nancumsumfillnaitem)ri   ri   z$'COO' object has no attribute 'item'medianz'Missing implementation for np.nanmedianrk   rj   no_conflicts)otherzmixed sparse-dense operationpadconstant)mode
pad_widths
fill_valuez!Missing implementation for np.padr   quantile      ?)qz+Missing implementation for np.nanpercentilerankz2Only implemented for NumPy arrays (via bottleneck)reduce)rC   ru   rolling_windowx_win)ru   window
window_dimshiftstdz$Missing implementation for np.nanstdrb   z$Missing implementation for np.nanvarto_dictwhere)cond)idsc                j   t          ddd          }t          j        |j        |j                                                  } | |          } | |          }t          |t          j                  rLt          |j        t          j                  r-|	                    |j                                                  }|rXt          |j        t          j                  sJ t          j        |j                                        |j        d          sJ d S t          j        ||d          sJ d S )Nr]   r^   r_   )rQ   T	equal_nan)r+   r&   r   r4   rQ   r   r   r   SparseArrayrD   r   allcloserC   sparse_outputvar_svar_dret_sret_ds         r   test_variable_methodr   \   s   N Ra(())EK
EJ$6$6$8$899EDKKEDKKE %%% 6*UZAS*T*T 6


 2 2 4 4
55 9%*f&899999{5:--//tLLLLLLLL{5%488888888r   squeezeto_indexto_index_variablesearchsortedz,'COO' object has no attribute 'searchsorted'c                   t          ddi          }t          j        |j        |j                                                  } | |          } | |          }|rVt          |j        t          j                  sJ t          j
        |j                                        |j                  sJ d S t          j
        ||          sJ d S )Nr`   r]   )r+   r&   r   r4   rQ   r   r   r   r   r   r   r   s         r   test_1d_variable_methodr      s     Ry!!EK
EJ$6$6$8$899EDKKEDKKE )%*f&899999{5:--//<<<<<<<{5%(((((((r   c                      e Zd Z ej        d          d             Zd Zd Zej        	                    d          d             Z
ej        	                    d          d             Zd	 Zd
 Zd ZdS )TestSparseVariableTautousec                    t                               ddd          | _        t          j        d| j                  | _        d S )Nrw      r   r   r"   r!   r_   )r   r#   rQ   r&   r   rb   rJ   s    r   setUpzTestSparseVariable.setUp  s4    MM&q#MFF	;z4955r   c                >    | j         j        | j        j        k    sJ d S r   )rb   rU   rQ   rJ   s    r   test_nbyteszTestSparseVariable.test_nbytes  s"    x$)"2222222r   c                @   t          | j        j         | j                    t          t          | j                  j        t          | j                             t          | j                                        j        | j                                                   d S r   )r   rb   rQ   absr~   rJ   s    r   test_unary_opz TestSparseVariable.test_unary_op  sp    TX]NTYJ777CMM.DI???DHNN,,149??3D3DEEEEEr   zignore::FutureWarningc                    t          t          j        | j                  t          j        | j                  j                   d S r   )r   r   sinrQ   rb   rJ   s    r   test_univariate_ufuncz(TestSparseVariable.test_univariate_ufunc  s3    BF49--rvdh/?/?/DEEEEEr   c                   t          t          j        | j        d          t          j        | j        d          j                   t          t          j        | j        d          t          j        d| j                  j                   d S Nr   )r   r   maximumrQ   rb   rJ   s    r   test_bivariate_ufuncz'TestSparseVariable.test_bivariate_ufunc  sf    BJty!44bj16M6M6RSSSBJty!44bjDH6M6M6RSSSSSr   c                X    t          d          }|t          | j                  k    sJ d S )Nzq            <xarray.Variable (x: 4, y: 6)>
            <COO: shape=(4, 6), dtype=float64, nnz=12, fill_value=0.0>)r   reprrb   )r@   expecteds     r   	test_reprzTestSparseVariable.test_repr$  s8    J
 

 4>>))))))r   c                    | j         }t          j        t          j        |                    }t	          |j        |j                   d S r   )rb   pickleloadsdumpsr   rQ   )r@   v1v2s      r   test_picklezTestSparseVariable.test_pickle,  s<    X\&,r**++BGRW-----r   c                   t          j        ddt           j        dg          }t          j                            |          }t          d|          }t          j        |                    d          j	        
                                t          j        d          k              sJ t          j        |                                dk              sJ d S )Nr   ri      r`   rm   rw   )r   arraynanr   COO
from_numpyr   rd   r   rQ   r   r   rr   )r@   r   sr   s       r   test_missing_valuesz&TestSparseVariable.test_missing_values1  s    HaBFA&''J!!!$$a  vell1oo*2244	!DEEEEEvekkmmq()))))))r   N)rL   rM   rN   pytestfixturer   r   r   markfilterwarningsr   r   r   r   r   r/   r   r   r   r     s        V^D!!!6 6 "!63 3 3F F F
 [ 788F F 98F [ 788T T 98T* * *. . .
* * * * *r   r   )attrsrP   r5   rQ   r4   rR   rS   rT   indexeslocr6   rU   rV   plotrealr   sizesizesstrvariablec                J    t          ddd          }t          ||            d S r\   )r8   rE   )rO   arrs     r   test_dataarray_propertyr   9  s/    4 Ra((
)
)CCr   assign_attrsfoobarassign_coordsdiff	drop_varsexpand_dimsr   axis	get_index	integrater   persistreindex)ri   rm   r   renamereorder_levelsreset_coords)dropreset_indexsel)r   ri   rm   sortby)	ascendingra   r   bfillz"Missing implementation for np.flipcombine_firstdifferentiatez&Missing implementation for np.gradientdotz$Missing implementation for np.einsumdropnaffillinterpr5   interp_likez.Indexing COO with more than one iterable indexinterpolate_naisinz"Missing implementation for np.isinpipe)rC   r   reindex_like)r`   roll_coordsz4Conversion of dense to sparse when using sparse maskc                   t          dddt          j        d          t          j        d          d          }t          j        |j                                        |j        |j                  } | |          } | |          }|rXt          |j        t          j                  sJ t          j        |j                                        |j        d          sJ d S t          j        ||d          sJ d S )Nr]   r^   r_   r  r5   r4   Tr   r8   r   r   r&   r   rQ   r   r5   r4   r   r   r   r   rC   r   arr_sarr_dr   r   s         r   test_dataarray_methodr"  W  s    j q	"BIaLL"I"I  E L++--elTTTEDKKEDKKE 9%*f&899999{5:--//tLLLLLLLL{5%488888888r   c                   t          ddidt          j        d          i          }t          j        |j                                        |j        |j                  } | |          } | |          }|rXt          |j        t          j                  sJ t          j        |j                                        |j        d          sJ d S t          j        ||d          sJ d S )Nr`   r]   r  r  Tr   r  r  s         r   test_datarray_1d_methodr$    s     #rC2+?@@@EL++--elTTTEDKKEDKKE 9%*f&899999{5:--//tLLLLLLLL{5%488888888r   c                  R   e Z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ed             Zd Zd Zd Zej        	                    d          d             Zej        	                    d          d             Zej        	                    d          d             Zej        	                    d          d             Zej        	                    d          d             Zej        	                    d          d             Zej        	                    d          d             Zej        j	        d             Zej        j	        d             Zej        j	        d              Zd!S )"TestSparseDataArrayAndDatasetTr   c                J   t                               ddd          | _        t          j        | j        dt          d          idd	          | _        | j                                        | _        t          j        | j        dt          d          idd	          | _	        d S )
Nr   r   r   r   r`   rw   r_   r   )r5   r4   r6   )
r   r#   sp_arr&   r   rangesp_xrr   ds_ards_xrrJ   s    r   r   z#TestSparseDataArrayAndDataset.setUp3  s    ]]63]GG
\JU1XXZe
 
 

 Z''))
\JU1XXZe
 
 



r   c                    | j         }t          ||                    d                              d                     d S )Nr`   )r*  r   
to_datasetto_arrayr@   r`   s     r   test_to_dataset_roundtripz7TestSparseDataArrayAndDataset.test_to_dataset_roundtrip>  s9    JQS))2237788888r   c                   t          j        t          j                            t          j        d                    dgdg di          }t          j        t          j                            t          j        d                    dgdg di          }t          j        ||d          \  }}t          |j	        t          j
                  sJ t          |j	        t          j
                  sJ t          j        |j        d         j	        g dk              sJ t          j        |j        d         j	        g dk              sJ d S )	Nrw   r`   r   r   cr1   r4   r5   r   r   r1   einnerjoin)r   r   r1   r&   r   r   r   r   r   r   alignr   rQ   r   rd   r5   r@   a1b1a2b2s        r   
test_alignz(TestSparseDataArrayAndDataset.test_alignB  s6   \J!!")A,,//---.
 
 

 \J!!")A,,//---.
 
 

 "bw///B"'6#566666"'6#566666vbin)___<=====vbin)___<=======r   zJCOO objects currently do not accept more than one iterable index at a timerX   c           
        t          j        | j        ddgt          j        | j        j        d                   t          j        | j        j        d                   d          }t          j        | j        ddgt          j        d| j        j        d         dz             t          j        d| j        j        d         dz             d          }t          j        ||d          \  }}t          j        |j        d         t          j        d| j        j        d                   k              sJ t          j        |j        d         t          j        d| j        j        d                   k              sJ t          j        |j        d         |j        d         k              sJ t          j        |j        d         |j        d         k              sJ d S )	Nr`   ra   r   ri   r_   r5  r8  r9  )	r&   r   r(  r   r   r   r<  rd   r5   )r@   A1A2B1B2s        r   test_align_2dz+TestSparseDataArrayAndDataset.test_align_2dS  s   
 \JsYtz/233Ytz/233 
 
 
 \JsYq$*"21"5"9::Yq$*"21"5"9:: 
 
 
 "bw///Bvbin	!TZ5Ea5H(I(IIJJJJJvbin	!TZ5Ea5H(I(IIJJJJJvbin	#677777vbin	#67777777r   c                   t          j        t          j                            t          j        d                    dgdg di          }t          j        t          j                            t          j        d                    dgdg di          }t          j        ||d          \  }}t          |j	        t          j
                  sJ t          |j	        t          j
                  sJ t          j        |j        d         j	        g dk              sJ t          j        |j        d         j	        g dk              sJ d S )	Nrw   r`   r3  r5  r6  outerr9  )r   r   r4  r1   r7  r;  r=  s        r   test_align_outerz.TestSparseDataArrayAndDataset.test_align_outerp  s<   \J!!")A,,//---.
 
 

 \J!!")A,,//---.
 
 

 "bw///B"'6#566666"'6#566666vbin)-F-F-FFGGGGGvbin)-F-F-FFGGGGGGGr   c                @   t          j        d| j        i          }t          j        d| j        i          }t          j        d| j        i          }t          j        |||gd          }t	          |d         j        t                              | j        | j        | j        gd                     t          j        | j        | j        | j        gd          }t	          |j        t                              | j        | j        | j        gd                     d S )	Nr1   	data_varsr`   rt   r   r   ra   ri   )	r&   Datasetr*  r   r   rQ   r   concatenater(  )r@   ds1ds2ds3outs        r   test_concatz)TestSparseDataArrayAndDataset.test_concat  s   jC#4555jC#4555jC#4555ic3S111HM
DJ
C!LL	
 	
 	

 iTZ<#FFFHf(($*dj$*)MTU(VV	
 	
 	
 	
 	
r   c                   t          dddd          }|                    d          }t          j                            t          j        d          t          j        d          gddg	          }t          j        |j	        
                    d
          ddg|dddg          }t          ||           |                                }t          ||           d S )Nrm   r   rw   )wr`   ra   r_   r  r`   ra   )names)rm   r   ri   )rW  r   rW  r   r   )r8   r   pd
MultiIndexfrom_productr   r   r&   r   rQ   r   r   r   r	   )r@   r   stackedr   r   roundtrippeds         r   
test_stackz(TestSparseDataArrayAndDataset.test_stack  s    3344))j)))M&&	!bill'CCQT:&VV<HW%%aV!'<'<C:
 
 
 	Xw'''((l+++++r   c                F   t          j        t          j                            t          j        d                    dgddt          j                            t          j        dd                    fi          }t          d          }|t          |          k    sJ d S )Nrw   r`   ra   i8rg   r5  z            <xarray.DataArray (x: 4)>
            <COO: shape=(4,), dtype=float64, nnz=4, fill_value=0.0>
            Coordinates:
                y        (x) int64 <COO: nnz=3, fill_value=0>
            Dimensions without coordinates: x)
r&   r   r   r   r   r   onesr   r   r   )r@   r   r   s      r   test_dataarray_reprz1TestSparseDataArrayAndDataset.test_dataarray_repr  s    LJ!!"'!**--#vz44RYq5M5M5MNNOP
 
 

 1
 
 477""""""r   c                J   t          j        ddt          j                            t          j        d                    fiddt          j                            t          j        dd                    fi          }t          d          }|t          |          k    sJ d S )	Nr   r`   rw   ra   ra  rg   rN  r5   a              <xarray.Dataset>
            Dimensions:  (x: 4)
            Coordinates:
                y        (x) int64 <COO: nnz=3, fill_value=0>
            Dimensions without coordinates: x
            Data variables:
                a        (x) float64 <COO: nnz=4, fill_value=0.0>)
r&   rO  r   r   r   r   rb  r   r   r   r@   dsr   s      r   test_dataset_reprz/TestSparseDataArrayAndDataset.test_dataset_repr  s    ZS&*"7"7

"C"CDE#vz44RYq5M5M5MNNOP
 
 
 E	
 	
 488######r   c           	        t          j        ddt          j                            t          j        d                    fi                                          }t          d          }|t          |          k    sJ d S )Nr   r`   rw   rM  z            <xarray.Dataset>
            Dimensions:  (x: 4)
            Dimensions without coordinates: x
            Data variables:
                a        (x) float64 dask.array<chunksize=(4,), meta=sparse.COO>)
r&   rO  r   r   r   r   rb  chunkr   r   rf  s      r   test_sparse_dask_dataset_reprz;TestSparseDataArrayAndDataset.test_sparse_dask_dataset_repr  s    ZS&*"7"7

"C"CDE
 
 

%'' 	 T
 
 488######r   c                f   t          j        t          j                            t          j        d                    dgddt          j                            t          j        d                    fi          }t          j	        t          j
        |                    }t          ||           d S )Nrw   r`   ra   r5  )r&   r   r   r   r   r   rb  r   r   r   r   r	   r@   r>  r@  s      r   test_dataarray_picklez3TestSparseDataArrayAndDataset.test_dataarray_pickle  s    \J!!"'!**--#vz44RYq\\BBCD
 
 

 \&,r**++R     r   c           
     j   t          j        ddt          j                            t          j        d                    fiddt          j                            t          j        d                    fi          }t          j	        t          j
        |                    }t          ||           d S )Nr   r`   rw   ra   re  )r&   rO  r   r   r   r   rb  r   r   r   r   r	   )r@   rQ  rR  s      r   test_dataset_picklez1TestSparseDataArrayAndDataset.test_dataset_pickle  s    jS&*"7"7

"C"CDE#vz44RYq\\BBCD
 
 
 l6<,,--c"""""r   c                n   | j         }| j        }|                    dd                                          }|                    dd                                          }t	          |j        t          j                  sJ t          j	        |j        |j        
                                          sJ d S )Nrm   trim)r`   boundary)r,  r*  rl   r{   r   rQ   r   r   r   r   r   r@   r>  r@  m1m2s        r   test_coarsenz*TestSparseDataArrayAndDataset.test_coarsen  s    ZZZZ!fZ--2244ZZ!fZ--2244"'6#566666{27BGOO$5$56666666r   zNo implementation of np.padc                n   | j         }| j        }|                    dd                                          }|                    dd                                          }t	          |j        t          j                  sJ t          j	        |j        |j        
                                          sJ d S Nrm   T)r`   center)r,  r*  rollingr{   r   rQ   r   r   r   r   r   rt  s        r   test_rollingz*TestSparseDataArrayAndDataset.test_rolling  s    ZZZZ!DZ))..00ZZ!DZ))..00"'6#566666{27BGOO$5$56666666r   rW   c                n   | j         }| j        }|                    dd                                          }|                    dd                                          }t	          |j        t          j                  sJ t          j	        |j        |j        
                                          sJ d S ry  )r,  r*  rolling_expr{   r   rQ   r   r   r   r   r   rt  s        r   test_rolling_expz.TestSparseDataArrayAndDataset.test_rolling_exp  s    ZZ^^a^--2244^^a^--2244"'6#566666{27BGOO$5$56666666r   zNo implementation of np.einsumc                    | j                             | j         d                   }| j                            | j        d                   }t          ||           d S r   )xp_xrr  r(  r   rm  s      r   test_dotz&TestSparseDataArrayAndDataset.test_dot  sJ    Z^^DJqM**Z^^DJqM**Rr   z'Groupby reductions produce dense outputc                j   | j         }| j        }|                    d                              d          }|                    d                              d          }t	          |j        t          j                  sJ t          j	        |j        |j        
                                          sJ d S )Nr`   .)r,  r*  groupbyr{   r   rQ   r   r   r   r   r   r@   r   r   ru  rv  s        r   test_groupbyz*TestSparseDataArrayAndDataset.test_groupby  s    ZZZZ__!!#&&ZZ__!!#&&"'6#566666{27BGOO$5$56666666r   c                    | j                                         }dg df|j        d<   |                    d                                           |                    d                              d           d S )Nr`   )r   r   r   r   abF)skipna)r*  rD   r5   r  firstr0  s     r   test_groupby_firstz0TestSparseDataArrayAndDataset.test_groupby_first  sm    JOO3334			$			$U+++++r   c                z   | j         }| j        }|                    dg d                              d          }|                    dg d                              d          }t	          |j        t          j                  sJ t          j	        |j        |j        
                                          sJ d S )Nr`   )r   r      r]   )bins.)r,  r*  groupby_binsrn   r   rQ   r   r   r   r   r   r  s        r   test_groupby_binsz/TestSparseDataArrayAndDataset.test_groupby_bins  s    ZZ__S}}}_5599#>>__S}}}_5599#>>"'6#566666{27BGOO$5$56666666r   zResample produces dense outputc           
     h   t          j        t          j        ddd          t	          j        ddt	          j        d                    gd	
          }|                                }t          	                    |j
                  |_
        |                    d                                          }|                    d                                          }t          |j
        t          j                  sJ t          j        |j
        |j
                                                  sJ d S )Nr         )numz
1999-12-15ri   )months)periodsfreqtimer  zQS-DEC)r  )r&   r   r   linspacerZ  
date_range
DateOffsetrD   r   r   rQ   resampler{   r   r   r   r   )r@   t1t2ru  rv  s        r   test_resamplez+TestSparseDataArrayAndDataset.test_resample  s   \K22&&&lBR]RS=T=T=TUUU 
 
 
 WWYY**RW%%[[h['',,..[[h['',,.."'6#566666{27BGOO$5$56666666r   c                    | j         }| j        }dg didg dig dg ddfD ]5} |j        d	i |} |j        d	i |}t          j        ||d          sJ 6d S )
Nr`   )rm   r   rw   )ri   d   rm   e   r   )      @r   g      @)rm   r  r   r_   Tr   r/   )r,  r*  r  r   r   )r@   r   r   r?   ru  rv  s         r   test_reindexz*TestSparseDataArrayAndDataset.test_reindex,  s    ZZ)))%%%&--kkk22
 	7 	7F
 %%f%%B%%f%%B;r26666666	7 	7r   c                    | j         }t          j        ||                    d          g                                          }t          |t          j                  sJ d S )Nr   )r*  r&   merger  r/  r   r   r   )r@   r`   ra   s      r   
test_mergez(TestSparseDataArrayAndDataset.test_merge9  sR    JHa%)**3355!V/0000000r   c                ~   t          j        d          }|dk    }t          j        |                              |           t
          j                            |          }|dk    }t          j        |                              |           t          j        |          }|dk    }|                    |           d S )Nr]   r   )r   r   r&   r   r   r   r   r   )r@   r   r   r   r`   s        r   
test_wherez(TestSparseDataArrayAndDataset.test_where?  s    IbMM1u
Qd###J!!!$$1u
Qd###LOO1u	r   N)rL   rM   rN   r   r   r   r1  rB  r   xfailrH  rK  rU  r_  rc  rh  r
   rk  rn  rp  rw  r|  r  r  r  r  r  r  r  r  r  r/   r   r   r&  r&  2  s       V^D!!!
 
 "!
9 9 9> > >" [#   8 8	 82H H H"
 
 
, , ,# # # $ $ $" $ $ ]$! ! !# # #7 7 7 [;<<7 7 =<7 [1227 7 327 [>??  @?
 [GHH7 7 IH7 [GHH, , IH, [GHH7 7 IH7 [>??7 7 @?7 [
7 
7 
7 [1 1 1
 [    r   r&  c                  V    e Zd Zej                            d          d             ZdS )TestSparseCoordszCoercion of coords to denserX   c           	         t          j        t          j                            t          j        d                    dgdt          j                            g d          i           d S )Nrw   r`   )ri   rm   r   rw   r5  )r&   r   r   r   r   r   r   rJ   s    r   test_sparse_coordsz#TestSparseCoords.test_sparse_coordsO  sa    
J!!")A,,//..|||<<=	
 	
 	
 	
 	
 	
r   N)rL   rM   rN   r   r   r  r  r/   r   r   r  r  N  sB        [;<<
 
 =<
 
 
r   r  c                    t           j                            t          j        g d                    } t          |           }|                    d          }|j        dk    sJ t          |j	        j
        t           j                  sJ t          ||           |                    d          }|                    d          }|j        ddik    sJ t          ||           d S )Nr   r   ri   rm   rm   )rm   rm   r   )r6   dim_0r  )r   r   r   r   r   r   rj  rP   r   rQ   _metar	   r.  )r   r   acrg  dscs        r   
test_chunkr  X  s    
bh|||4455A!A	
B9	!!!!bgmVZ00000R	
3		B
((1++C:'6*****S"r   c                    dd l t          j                            t	          j        g d                    fd_        t                    } j        	                    |           }j        	                    |           }j        	                    | dz             }||k    sJ ||k    sJ t          | j        t          j                  sJ |                     d          }j        	                    |          }j        	                    |dz             }||k    sJ t          |j        j        t          j                  sJ d S )Nr   r  c                 B     j                             j                  S r   )basenormalize_token__dict__)daskr   s   r   <lambda>z!test_dask_token.<locals>.<lambda>n  s    $)";";AJ"G"G r   ri   rm   )r  r   r   r   r   r   __dask_tokenize__r   r  tokenizer   rQ   rj  r  )	r   r  r  t3r  t4t5r  r   s	          @@r   test_dask_tokenr  g  s5   KKK
bh|||4455A HGGGGA!A			A		B			A		B			AE	"	"B88888888affj)))))	
B			B		B			BF	#	#B8888bgmVZ0000000r   c                 0   t           j                            t          j        g d                    } t          |           }|                    d          }|j        j        }t          j
        d |d          j        j        }t          ||           d S )Nr  rm   c                    | S r   r/   rx   s    r   r  z7test_apply_ufunc_check_meta_coherence.<locals>.<lambda>  s    a r   parallelized)r  )r   r   r   r   r   r   rj  rQ   r  r&   apply_ufuncr   )r   r   r  sparse_metaresults        r   %test_apply_ufunc_check_meta_coherencer    s|    
bh|||4455A!A	
B'-K^KK.AAAFLF,,,,,r   )Nr,   )4
__future__r   r   r   textwrapr   numpyr   pandasrZ  r   xarrayr&   r   r   xarray.core.pycompatr   xarray.testsr   r	   r
   r   r   paramr  importorskipr   r   r   r   r$   r+   r8   r:   parametrizerc   intslicer   r   r   r   r   r`   r   r"  r$  r&  r  r  r  r  r/   r   r   <module>r     sm   " " " " " "                      & & & & & & & & + + + + + + F F F F F F F F F F+		X	&	&Jx(( 6 6 66 6 6= = =     A A A A A A A A$ 
hee+>???@@@
   
 A	EEA	EEA 
HC	 	 	 $'A 
Fq	!	!	!4(	A
 
IQxe	4	4	4d;A 
IA 
FTA 
FTA 
GeA 
N	$	$	$e,A 
FeeAqkk	"	"	"D)A 
HtA 
FTA 
FUA 
IA  
FT!A" 
Gd#A$ 
J_	-	-	-t4%A& 
G 4	5	5	5t<'A( 
		&)A* 
K$+A, 
I3q(:(:";	<	<	<dC-A. 


!+<+< = =	>	>F/A0 
Hjjr!2!233	4	4e<1A2 
K"1$5$566	7	7?3A4 	BxLLCDDDBCC	
 	
 	
5AD 	BxLLCDDDBCC	
 	
 	
EAT 	ByMM%HIII	
 	
 	
UA^ 	BJRa0011JRa0011   %2333
	
 
	
 
	
_At 	B{OO%JKKK	
 	
 	
uA~ 	ByMM%IJJJ	
 	
 	
AH 	BxLL%HIII	
 	
 	
IAR 
Ha$SAT 	Bvv%EFFF	
 	
 	
UA^ 	BxLL%HIII	
 	
 	
_Ah 	bbiiiAj 	bbiikAl 	B~ZZbq0A0A%B%BCCC%=>>>	
 	
 	
mAv 	Bu:3-ANNN%BCCC	
 	
 	
wA@ 
FUAAB 	BzS!!!%LMMM	
 	
 	
CAL 	Bv3%STTT	
 	
 	
MAV 	Bxe---%2333	
 	
 	
WA` 	BSwGGG%BCCC	
 	
 	
aAj 	Bw!d%%7U*V*V*V	
 	
 	
kAp 	BuIIuEE1W$X$X$X	
 	
 	
qAv 
EEwAx 	BuIIuEE1W$X$X$X	
 	
 	
yA~ 	bbmmU%%7J*K*K*KLLLA@ 
G**2A%6%677#=	>	>	>EAAD 	I  E EL9 9ME EL9" 	Ibbnne558K+L+L+LMMMbb$%%uEEAT4U4U4UVVVB~s##%MNNN	
 	
 	
		 
) 
) 
))* )* )* )* )* )* )* )*X 
   2 3 2
 o	EEo	EEo 
NUEN	+	+T2o 
O||S"I6681<	=	=	=tD	o
 
Hc		D!o 
Fq	!	!	!4(o 
Io 
FTo 
FTo 
Geo 
FC$o 
K		t$o 
MC8!	,	,	,d3o 
NC	 	 %(o 
K		u%o  
KAA&6&677	8	8%@!o" 
K		t$#o$ 
F%%1++EE!QKK88	9	94@%o& 
Ht'o( 
FT)o* 
FU+o, 
I-o. 
IYYY'	(	($//o0 
He		d#1o2 
		t$3o4 
N	&	&	&-5o6 
M3		&7o8 
Gd9o: 
EYYY			&;o< 
Gd=o> 
HcU	+	+	+T2?o@ 
GSz	"	"	"D)AoB 
K$CoJ 


!+<+< = =	>	>FKoL 
Hjjr!2!233	4	4e<MoN 	BxLLCDDDBCC	
 	
 	
Oo^ 	BxLLCDDDBCC	
 	
 	
_on 	ByMM%HIII	
 	
 	
oox 	BwC   %CDDD	
 	
 	
yoB 
O\\*;*;<<	=	=tDCoD 	B{OO%JKKK	
 	
 	
EoN 	ByMM%IJJJ	
 	
 	
OoX 	BxLL%HIII	
 	
 	
Yob 	B$$%GHHH	
 	
 	
col 	Bull!#4#45566%EFFF	
 	
 	
mov 	bb3ee;N.O.O.OPPPwox 	bb#UU:M-N-N-NOOOyoz 
Ha${o| 	Bxibimmc&9 :;;;%2333	
 	
 	
}oF 	B1%%!*2!4929Q<<#;MNN    %OPPP
	
 
	
 
	
Go\ 	bb!3''UUBU5V5V5VWWW]o^ 	Bvyyy!!%CDDD	
 	
 	
_oh 	Bvv%EFFF	
 	
 	
ior 	bbiisot 	bbiiuov 	BxLL%HIII	
 	
 	
wo@ 
IAoB 
FQ	'	'	'.CoD 
FUEoF 	BzS!!!%LMMM	
 	
 	
GoP 	BvsOO%STTT	
 	
 	
QoZ 	Bxe---%2333	
 	
 	
[od 	B1%%!*2!4929Q<<#;MNN    %OPPP
	
 
	
 
	
eoz 
FaT	*	*	*D1{o| 	Bu			aV,,,%OPPP	
 	
 	
}oF 	BuIIuEE1W$X$X$X	
 	
 	
GoL 
EEMoN 	BuIIuEE1W$X$X$X	
 	
 	
OoT 	Bw2A%6%677#=>>%UVVV	
 	
 	
Uo` 	e  s sh9 9is sh9 	IB~yyy))%MNNN	
 	
 	

 

9 
9
 

9Y Y Y Y Y Y Y Yx
 
 
 
 
 
 
 
    1 1 1. - - - - -r   