
    ^j                          G d  d      Z y)c                       e Zd ZU dZdZeedf   ed<   ed        Z	ed        Z
ed        Zed        Zed	        Zed
        Zed        Zd Zd Zd Zd Zd Z eeed      Zd Zd Zd ZddZd Zd Zd Zd fd	Zed        Z xZ S )spmatrixa  This class provides a base class for all sparse matrix classes.

    .. warning::

       SciPy sparse is shifting from a sparse matrix interface to a sparse
       array interface. In the next few releases we expect to deprecate the
       sparse matrix interface. For documentation of the matrix
       interface, see the :ref:`spmatrix interface docs <spmatrix_api>`.
       For guidance on converting existing code to sparse arrays, see
       :ref:`Migration from spmatrix to sparray <migration_to_sparray>`.

    This class also serves as the namespace for SciPy sparse matrix types.
    It cannot be instantiated.  Most of the work is provided by subclasses.
    )   .	_allow_ndc                     ddl m} |S )N   )
bsr_matrix)_bsrr   )selfr   s     M/opt/ringagent/.cad-venv/lib/python3.12/site-packages/scipy/sparse/_matrix.py_bsr_containerzspmatrix._bsr_container       $    c                     ddl m} |S )Nr   )
coo_matrix)_coor   )r
   r   s     r   _coo_containerzspmatrix._coo_container   r   r   c                     ddl m} |S )Nr   )
csc_matrix)_cscr   )r
   r   s     r   _csc_containerzspmatrix._csc_container   r   r   c                     ddl m} |S )Nr   )
csr_matrix)_csrr   )r
   r   s     r   _csr_containerzspmatrix._csr_container!   r   r   c                     ddl m} |S )Nr   )
dia_matrix)_diar   )r
   r   s     r   _dia_containerzspmatrix._dia_container&   r   r   c                     ddl m} |S )Nr   )
dok_matrix)_dokr    )r
   r    s     r   _dok_containerzspmatrix._dok_container+   r   r   c                     ddl m} |S )Nr   )
lil_matrix)_lilr$   )r
   r$   s     r   _lil_containerzspmatrix._lil_container0   r   r   c                 $    | j                  |      S N)_matmul_dispatchr
   others     r   __mul__zspmatrix.__mul__6   s    $$U++r   c                 $    | j                  |      S r(   )_rmatmul_dispatchr*   s     r   __rmul__zspmatrix.__rmul__9   s    %%e,,r   c                      ddl m}  || |      S )Nr   )matrix_power)linalgr1   )r
   powerr1   s      r   __pow__zspmatrix.__pow__=   s    (D%((r   c                 ~    | j                  |d      j                  | j                        }|j                  | _        y)z$Set the shape of the matrix in-placeF)copyN)reshapeasformatformat__dict__)r
   shapenew_selfs      r   	set_shapezspmatrix.set_shapeD   s2     <<E<2;;DKKH ))r   c                     | j                   S )zGet the shape of the matrix)_shaper
   s    r   	get_shapezspmatrix.get_shapeK       {{r   zShape of the matrix)fgetfsetdocc                 "    | j                         S )z7Upcast matrix to a floating point format (if necessary))	_asfptyper@   s    r   asfptypezspmatrix.asfptypeR   s    ~~r   c                 "    | j                         S )z3Maximum number of elements to display when printed.)_getmaxprintr@   s    r   getmaxprintzspmatrix.getmaxprintV   s      ""r   c                     | j                   S )zMatrix storage format)r9   r@   s    r   	getformatzspmatrix.getformatZ   rB   r   c                 &    | j                  |      S )zNumber of stored values, including explicit zeros.

        Parameters
        ----------
        axis : None, 0, or 1
            Select between the number of values across the whole array, in
            each column, or in each row.
        )axis)_getnnz)r
   rO   s     r   getnnzzspmatrix.getnnz^   s     |||&&r   c                 >    | j                         j                         S )zReturn the Hermitian transpose of this matrix.

        See Also
        --------
        numpy.matrix.getH : NumPy's implementation of `getH` for matrices
        )	conjugate	transposer@   s    r   getHzspmatrix.getHi   s     ~~))++r   c                 $    | j                  |      S )zgReturns a copy of column j of the matrix, as an (m x 1) sparse
        matrix (column vector).
        )_getcol)r
   js     r   getcolzspmatrix.getcolr        ||Ar   c                 $    | j                  |      S )z`Returns a copy of row i of the matrix, as a (1 x n) sparse
        matrix (row vector).
        )_getrow)r
   is     r   getrowzspmatrix.getrowx   rZ   r   c                 $    t         |   ||      S )a  
        Return a dense representation of this sparse matrix.

        Parameters
        ----------
        order : {'C', 'F'}, optional
            Whether to store multi-dimensional data in C (row-major)
            or Fortran (column-major) order in memory. The default
            is 'None', which provides no ordering guarantees.
            Cannot be specified in conjunction with the `out`
            argument.

        out : ndarray, 2-D, optional
            If specified, uses this array (or `numpy.matrix`) as the
            output buffer instead of allocating a new array to
            return. The provided array must have the same shape and
            dtype as the sparse matrix on which you are calling the
            method.

        Returns
        -------
        arr : numpy.matrix, 2-D
            A NumPy matrix object with the same shape and containing
            the same data represented by the sparse matrix, with the
            requested memory order. If `out` was passed and was an
            array (rather than a `numpy.matrix`), it will be filled
            with the appropriate values and returned wrapped in a
            `numpy.matrix` object that shares the same memory.
        )supertodense)r
   orderout	__class__s      r   ra   zspmatrix.todense~   s    < wuc**r   c                     ddl m}  || |      S )a  
        Return a parametrized wrapper around the `~scipy.sparse.spmatrix` type.

        .. versionadded:: 1.16.0

        Returns
        -------
        alias : types.GenericAlias
            A parametrized `~scipy.sparse.spmatrix` type.

        Examples
        --------
        >>> import numpy as np
        >>> from scipy.sparse import coo_matrix

        >>> coo_matrix[np.int8]
        scipy.sparse._coo.coo_matrix[numpy.int8]
            )GenericAlias)typesrg   )clsargrg   s      r   __class_getitem__zspmatrix.__class_getitem__   s    ( 	'C%%r   r(   )NN)!__name__
__module____qualname____doc__r   tupleint__annotations__propertyr   r   r   r   r   r"   r&   r,   r/   r4   r=   rA   r;   rH   rK   rM   rQ   rU   rY   r^   ra   classmethodrk   __classcell__)rd   s   @r   r   r      s    "&IuS#X%             
,-)* )).0E #	',+@ & &r   r   N)r    r   r   <module>rw      s   r& r&r   