o
    W۷i                     @  sT   d dl mZ d dlmZ d dlmZ dddZdd Zdd	 ZdddZ	dd Z
d
S )    )annotations)_core)_routines_manipulationc                 C  s   t | ||S )a\  Moves the specified axis backwards to the given place.

    Args:
        a (cupy.ndarray): Array to move the axis.
        axis (int): The axis to move.
        start (int): The place to which the axis is moved.

    Returns:
        cupy.ndarray: A view of ``a`` that the axis is moved to ``start``.

    .. seealso:: :func:`numpy.rollaxis`

    )r   rollaxis)aaxisstart r	   R/home/ubuntu/vllm_env/lib/python3.10/site-packages/cupy/_manipulation/transpose.pyr      s   r   c                 C  s   |  ||S )a-  Swaps the two axes.

    Args:
        a (cupy.ndarray): Array to swap the axes.
        axis1 (int): The first axis to swap.
        axis2 (int): The second axis to swap.

    Returns:
        cupy.ndarray: A view of ``a`` that the two axes are swapped.

    .. seealso:: :func:`numpy.swapaxes`

    )swapaxes)r   axis1axis2r	   r	   r
   r      s   r   c                 C  s0   t |dst |dst| ||S t| ||S )aG  Moves axes of an array to new positions.

    Other axes remain in their original order.

    Args:
        a (cupy.ndarray): Array whose axes should be reordered.
        source (int or sequence of int):
            Original positions of the axes to move. These must be unique.
        destination (int or sequence of int):
            Destination positions for each of the original axes. These must
            also be unique.

    Returns:
        cupy.ndarray:
        Array with moved axes. This array is a view of the input array.

    .. seealso:: :func:`numpy.moveaxis`

    __len__)hasattrr   _move_single_axisr   moveaxis)r   sourcedestinationr	   r	   r
   r   *   s   r   Nc                 C  s
   |  |S )af  Permutes the dimensions of an array.

    Args:
        a (cupy.ndarray): Array to permute the dimensions.
        axes (tuple of ints): Permutation of the dimensions. This function
            reverses the shape by default.

    Returns:
        cupy.ndarray: A view of ``a`` that the dimensions are permuted.

    .. seealso:: :func:`numpy.transpose`

    )	transpose)r   axesr	   r	   r
   r   E   s   
r   c                C  s&   | j dk rtd| j  t| ddS )a  
    Transposes a matrix (or a stack of matrices) ``x``.

    This function is Array API compatible.

    Parameters
    ----------
    x : ndarray
        Input array having shape (..., M, N) and whose two innermost
        dimensions form ``MxN`` matrices.

    Returns
    -------
    out : ndarray
        An array containing the transpose for each matrix and having shape
        (..., N, M).

    See Also
    --------
    transpose : Generic transpose method.
    numpy.matrix_transpose

       z6Input array must be at least 2-dimensional, but it is )ndim
ValueErrorr   )xr	   r	   r
   matrix_transposeW   s
   

r   )r   )N)
__future__r   cupyr   
cupy._corer   r   r   r   r   r   r	   r	   r	   r
   <module>   s    

