
    >ie              
         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	m
Z d dlmZmZ d dlmZ  ej        d          Z eej                  Zer ej        dd	           g d
 d d d d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5  ej        d6 ej                            e ed7          k     d89          :           ej        d; ej                            e ed7          k     d89          :           ej        d< ej                            e ed7          k     d89          :          Zej                            d=e          d>             Zej                            e ed?          k     d@9          dA             ZdB ZdC ZdD ZdE Z dF Z!dG Z"ej                            dHeeg          ej                            dIg dJ          ej                            dKdLdMg          dN                                     Z#dS )O    )annotationsN)parse)nannumelnumel)	assert_eqsparsenumbaz0.40.0)
minversionc                    | S N xs    <lib/python3.11/site-packages/dask/array/tests/test_sparse.py<lambda>r      s    a     c                *    t          j        |           S r   )daexpm1r   s    r   r   r      s    bhqkk r   c                    d| z  S N   r   r   s    r   r   r      
    a!e r   c                    | dz  S r   r   r   s    r   r   r      r   r   c                    | dz  S r   r   r   s    r   r   r      s
    ad r   c                    | | z   S r   r   r   s    r   r   r      r   r   c                    | | z  S r   r   r   s    r   r   r      r   r   c                    | d         S )Nr   r   r   s    r   r   r      s
    ad r   c                    | d d df         S N   r   r   s    r   r   r      s    a1g r   c                     | d dd ddf         S )Nr!      r   r   s    r   r   r      s    aD!A# r   c                    | j         S r   )Tr   s    r   r   r       s    ac r   c                ,    t          j        | d          S )N)r!   r   r   )r   	transposer   s    r   r   r   !   s    bl1i(( r   c                *    t          j        |           S r   r   nanmeanr   s    r   r   r   "       bjmm r   c                .    t          j        | d          S Nr!   axisr)   r   s    r   r   r   #   s    bj### r   c                *    t          j        |           S r   )r   nanmaxr   s    r   r   r   $       bill r   c                *    t          j        |           S r   )r   nanminr   s    r   r   r   %   r2   r   c                *    t          j        |           S r   )r   nanprodr   s    r   r   r   &   r+   r   c                *    t          j        |           S r   )r   nanstdr   s    r   r   r   '   r2   r   c                *    t          j        |           S r   )r   nanvarr   s    r   r   r   (   r2   r   c                *    t          j        |           S r   )r   nansumr   s    r   r   r   )   r2   r   c                *    |                                  S r   sumr   s    r   r   r   0       aeegg r   c                .    |                      d          S )Nr   )order)momentr   s    r   r   r   1   s    ahhQh r   c                *    |                                  S r   meanr   s    r   r   r   2   s    affhh r   c                .    |                      d          S r-   rE   r   s    r   r   r   3   s    aff!fnn r   c                *    |                                  S r   )stdr   s    r   r   r   4   r@   r   c                *    |                                  S r   )varr   s    r   r   r   5   r@   r   c                f    |                      t          j        | j        d                             S N)dotnparangeshaper   s    r   r   r   6   s"    aeeBIagbk**++ r   c                f    |                      t          j        | j        d                             S rM   )rO   rP   eyerR   r   s    r   r   r   7   s"    aeeBF172;''(( r   c                r    t          j        | t          j        | j        d d                   ddg          S )Nr   r   r!   axes)r   	tensordotrP   onesrR   r   s    r   r   r   8   s0    bl1bgagbqbk22&&9IJJJ r   c                .    |                      d          S Nr   r.   r>   r   s    r   r   r   9       aeeemm r   c                .    |                      d          S r\   )maxr   s    r   r   r   :   r]   r   c                .    |                      d          S )Nr!   r   r.   r>   r   s    r   r   r   ;   s    aeee   r   c                @    |                      t          j                  S r   )astyperP   
complex128r   s    r   r   r   <   s    ahhr}%% r   c                .    |                      d           S )Nc                    | dz  S r   r   r   s    r   r   z<lambda>.<locals>.<lambda>=   s
    QU r   )
map_blocksr   s    r   r   r   =   s    all??++ r   c                6    |                      d ddd          S )Nc                    | dz  S r   r   r   s    r   r   z<lambda>.<locals>.<lambda>>   
    a!e r   r   Tnonedepthtrimboundarymap_overlapr   s    r   r   r   >   s    ammOO14&mQQ r   c                6    |                      d ddd          S )Nc                    | dz  S r   r   r   s    r   r   z<lambda>.<locals>.<lambda>?   rj   r   r   Frk   rl   rp   r   s    r   r   r   ?   s    ammOO156mRR r   c                ,    |                      d          S r    )roundr   s    r   r   r   @   s    aggajj r   c                x    |                      | j        d         | j        d         z  | j        d         f          S )Nr   r!   r   )reshaperR   r   s    r   r   r   A   s.    aiiagaj0!'!*=>> r   c                     t          |           S r   )absr   s    r   r   r   B   s    c!ff r   c                    | dk    S )Ng      ?r   r   s    r   r   r   C   s
    a#g r   c                ,    |                      d          S )N)   r|   r|   rechunkr   s    r   r   r   D       aii	"" r   c                ,    |                      d          S )Nr   r   r!   r}   r   s    r   r   r   E   r   r   c                *    t          j        |           S r   )rP   isneginfr   s    r   r   r   F       bk!nn r   c                *    t          j        |           S r   )rP   isposinfr   s    r   r   r   G   r   r   c                *    t          j        |           S r   )rP   
zeros_liker   s    r   r   r   I   s    "-"" r   z0.13.0z,https://github.com/pydata/xarray/issues/5654)reason)marksc                *    t          j        |           S r   )rP   	ones_liker   s    r   r   r   P   s    ",q// r   c                .    t          j        | d          S )Nr   
fill_value)rP   	full_liker   s    r   r   r   W   s    ",qQ/// r   funcc                   t           j                            dd          }d||dk     <   |                    t          j        j                  } | |          } | |          }t          ||d           |j        rf|                                }t          |t          j                  s:|dk    
                                t          j        |j                  d	z  k    sJ d S d S d S )
Nr   r#   r|   r!   r   r   chunksr   皙?F)
check_metar!   r   )r   randomrg   r   COO
from_numpyr   rR   compute
isinstancer?   rP   prod)r   r   yxxyyzzs         r   
test_basicr   `   s    
	955AAa#gJ	VZ*++A	aB	aBb"''''	x ;ZZ\\"fj)) 	;!G==??RWRX%6%6%:::::; ;	; 	;::r   z0.7.0+10z2fixed in https://github.com/pydata/sparse/pull/256c                    t           j                            dd          } d| | dk     <   t           j                            dd          }d||dk     <   |                     t          j        j                  }|                    t          j        j                  }t          t          j        | |d	          t          j        ||d	                     t          t          j        | |d
	          t          j        ||d
	                     t          t          j        | |d	          t          j        ||d	                     d S )Nr   r   r   r   r   )r|   r#   r   r   )r   r   rW   )r!   r!   )ra   )r!   r   )r   r   rg   r   r   r   r   rY   )r   r   r   r   s       r   test_tensordotr   r   s(   
 		955AAa#gJ
	955AAa#gJ	
fj+	,	,B	
fj+	,	,Bbl1af---r|B/P/P/PQQQbl1af---r|B/P/P/PQQQ
Q 0111
R"2333    r   c                 8   t           j                            dd          } d| | dk     <   t          j                            |                                           }|                     t          j        j                  } t          | j        t          j                  sJ t          | dz   j        t          j                  sJ t          | 	                    d          j        t          j                  sJ t          | 
                    d          j        t          j                  sJ t          | d dd d d	f         j        t          j                  sJ t          |                     d
          j        t          j                  sJ t          | |z
  j        t          j                  sJ t          |                                 j        t          j                  sJ t          t          j        | | g          j        t          j                  sJ t          t          j        | | d d         | g          j        t          j                  sJ t          t          j        | | g          j        t          j                  sJ t          t          j        | d d         | d d         g          j        t          j                  sJ t          t          j        | d d         | d d         g          j        t          j                  sJ d S )N
   r      r   r   r   r   r!   r.   r   r   )r   r   )r   r   r   r   r   r   rg   r   _metar?   rK   r~   persistrP   concatenatestack)r   zs     r   test_metadatar      st   
	&11AAa#gJ
aiikk**A	VZ*++Aagvz*****q1umVZ00000aeeemm)6:66666aeeemm)6:66666aCCaCj&
33333aii''-vz:::::q1umVZ00000aiikk'44444bnaV,,2FJ?????bna2A2]3396:FFFFFbh1v&&,fj99999bh"1"q!u~..4fjAAAAAbnaeQrrU^44:FJGGGGGGGr   c                    t          j        d           t          j                            dd          } d| | dk     <   |                     t
          j        j                  } |                                 }d|v sJ d|v sJ d	|vsJ d S )
Njinja2r   r   r   r   r   r   r   Bytes)	pytestimportorskipr   r   rg   r   r   r   _repr_html_)r   texts     r   test_html_reprr      s    
!!!
	&11AAa#gJ	VZ*++A==??DD====t$r   c            	     2   d }  t          j        |                       }t          j        |dt          j                            t          j        d                              }t          |j
        t          j                  sJ t          ||           d S )Nc                 d    t           j                            t          j        d                    S )Nr#   )r   r   r   rP   rT   r   r   r   fz!test_from_delayed_meta.<locals>.f   s     z$$RVAYY///r   )r#   r#   r!   )rR   meta)daskdelayedr   from_delayedr   r   r   rP   rT   r   r   r   )r   dr   s      r   test_from_delayed_metar      s    0 0 0 	QA
fj.C.CBF1II.N.NOOOAagvz*****aOOOOOr   c                 R   t           j                            t          j        d                    } t          j        | d          }t          |j        t           j                  sJ t          ||           t          |
                                t           j                  sJ d S )Nr   r   r   )r   r   r   rP   rT   r   
from_arrayr   r   r   r   )r   r   s     r   test_from_arrayr      s    
bfRjj))A
a'''Aagvz*****aOOOaiikk6:.......r   c                 >   t          j        dd          } |                     t          j        j        t          j                            t          j        d                              }t          |j        t          j                  sJ t          ||           d S )Nr   r   r   r!   )r   )
r   rT   rg   r   r   r   rP   r   r   r   r   r   s     r   test_map_blocksr      ss    
r!A	VZ*1F1Frvayy1Q1QRRAagvz*****aOOOOOr   c                     t           j                            t          j        d                    } t
          j                            | d          }t          |t           j                  sJ d S )Nr!   r   )ndim)	r   r   r   rP   rT   r   utilsmeta_from_arrayr   r   s     r   test_meta_from_arrayr      sW    
bfQii((A
   ++Aa$$$$$$$r   r   r/   )r   rV   NkeepdimsTFc                   t           j                            d          }d||dk     <   t           j        ||dk    <   t          j                            |d          }t           | |||           | |||                     d S )Nr   r   r   g?g        r   )r/   r   )rP   r   nanr   r   r   r   )r   r/   r   r   xss        r   
test_numelr      s     		##AAa#gJAa#gJ			qS		1	1BadX...bth0W0W0W    r   )$
__future__r   numpyrP   r   packaging.versionr   parse_versionr   
dask.arrayarrayr   dask.array.reductionsr   r   dask.array.utilsr   r   r   __version__SPARSE_VERSIONparammarkxfail	functionsparametrizer   skipifr   r   r   r   r   r   r   r   r   r   r   <module>r      s   " " " " " "      4 4 4 4 4 4        1 1 1 1 1 1 1 1 & & & & & &		X	&	&v122	 6 FH5555HKHH OH O	H
 NH OH OH NH H H MH )(H H $#H H  !H" #H$ %H& 'H( )H6 7H8  9H: ;H< =H> ?H@ AHB ,+CHD )(EHF KJGHH IHJ KHL ! MHN &%OHP ,+QHR RQSHT SRUHV WHX ?>YHZ [H\ ]H^ #"_H` #"aHb cHd eHf FL""k]]8444A   
 
  gHt FL!!k]]8444A   
 
  uHB FL//k]]8444A   
 
  CH	V ++; ; ,+;" ]]:...?    	 "H H H*
 
 
  / / /  % % % 5("344!2!2!233dE]33	 	 43 43 54	 	 	r   