
    uki                     z    d Z ddlZddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
  G d dej                        Zy)	zBase JAX Sparse object.    N)Sequence)core)util)Arrayc                      e Zd ZU dZej
                  ed<   eedf   ed<   e	ed<   e	ed<   dZ
d Ze	d	efd
       Ze	d	efd       Zdeedf   dee   fdZd Zej$                  d        Zeej$                  d               Zej$                  d d       Ze	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$y)!	JAXSparsez-Base class for high-level JAX sparse objects.data.shapensedtypeNc                      | j                   d   S Nr   )r
   selfs    X/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jax/experimental/sparse/_base.py__len__zJAXSparse.__len__$   s    ::a=    returnc                 @    t        j                  | j                        S N)mathprodr
   r   s    r   sizezJAXSparse.size'   s    99TZZ  r   c                 ,    t        | j                        S r   )lenr
   r   s    r   ndimzJAXSparse.ndim+   s    tzz?r   argsc                8    t        j                  |      | _        y r   )r   canonicalize_shaper
   )r   r   r
   s      r   __init__zJAXSparse.__init__/   s    ((/DJr   c                 R   | j                   j                  }	 | j                  }| j                  }t	        | j
                        }| d| | d|d}t        | j                  t        j                        r%t        | j                        j                   d| d}|S #  | d}Y TxY w)N(z, nse=)z(<invalid>)[])	__class____name__r   r   listr
   
isinstancer	   r   Tracertype)r   namer   r   r
   repr_s         r   __repr__zJAXSparse.__repr__2   s    >>""D0HHcjje4::e awugWvQ/e$))T[[)dii))*!E7!4eL#k"es   -B B&c                      y r    r   s    r   tree_flattenzJAXSparse.tree_flatten@       r   c                      y r   r0   )clsaux_datachildrens      r   tree_unflattenzJAXSparse.tree_unflattenD   s     r   c                      y r   r0   )r   axess     r   	transposezJAXSparse.transposeI   r2   r   c                 "    | j                         S r   )r:   r   s    r   TzJAXSparse.TM   s    >>r   c                 V    | j                         d   D ]  }|j                           | S r   )r1   block_until_ready)r   args     r   r>   zJAXSparse.block_until_readyQ   s0      "1% 	Kr   c                 2    t        | j                   d      )Nz.sumNotImplementedErrorr&   )r   r   kwargss      r   sumzJAXSparse.sumX   s    
 05
66r   c                 2    t        | j                   d      )Nz.__neg__rA   r   s    r   __neg__zJAXSparse.__neg__[       
 09
::r   c                 2    t        | j                   d      )Nz.__pos__rA   r   s    r   __pos__zJAXSparse.__pos__^   rG   r   c                 2    t        | j                   d      )Nz.__matmul__rA   r   others     r   
__matmul__zJAXSparse.__matmul__a   s    
 0<
==r   c                 2    t        | j                   d      )Nz.__rmatmul__rA   rK   s     r   __rmatmul__zJAXSparse.__rmatmul__d       
 0=
>>r   c                 2    t        | j                   d      )Nz.__mul__rA   rK   s     r   __mul__zJAXSparse.__mul__g   rG   r   c                 2    t        | j                   d      )Nz	.__rmul__rA   rK   s     r   __rmul__zJAXSparse.__rmul__j       
 0	:
;;r   c                 2    t        | j                   d      )Nz.__add__rA   rK   s     r   __add__zJAXSparse.__add__m   rG   r   c                 2    t        | j                   d      )Nz	.__radd__rA   rK   s     r   __radd__zJAXSparse.__radd__p   rU   r   c                 2    t        | j                   d      )Nz.__sub__rA   rK   s     r   __sub__zJAXSparse.__sub__s   rG   r   c                 2    t        | j                   d      )Nz	.__rsub__rA   rK   s     r   __rsub__zJAXSparse.__rsub__v   rU   r   c                 2    t        | j                   d      )Nz.__getitem__rA   )r   items     r   __getitem__zJAXSparse.__getitem__y   rP   r   r   )%r'   
__module____qualname____doc__jaxr   __annotations__tupleintproperty__hash__r   r   r   r   r    r.   abcabstractmethodr1   classmethodr7   r:   r<   r>   rD   rF   rI   rM   rO   rR   rT   rW   rY   r[   r]   r`   r0   r   r   r   r      s8   5		/	sCx-	/ ( !C ! ! C  05, 0 0         7;;>?;<;<;<?r   r   )rc   rj   collections.abcr   r   rd   jax._srcr   r   jax._src.typingr   	StrictABCr   r0   r   r   <module>rq      s1     
 $  
   !`? `?r   