U
    b                     @  s   d dl mZ ddlmZ ddlmZ d dlmZmZm	Z	m
Z
 d dlZd ddd	d
dddZd
dd
dddZddd
dd
dddZdd
d
dddZdd
d
dddZdddd
dd
dddZdd
d
d d!d"Zd dddd
dd#d$ZdS )%    )annotations   )Array)result_type)ListOptionalTupleUnionNaxisz%Union[Tuple[Array, ...], List[Array]]zOptional[int]r   )arraysr   returnc               C  s0   t |  }tdd | D } ttj| ||dS )z
    Array API compatible wrapper for :py:func:`np.concatenate <numpy.concatenate>`.

    See its docstring for more information.
    c                 s  s   | ]}|j V  qd S N_array.0a r   K/tmp/pip-unpacked-wheel-cxuynqjx/numpy/array_api/_manipulation_functions.py	<genexpr>   s     zconcat.<locals>.<genexpr>)r   dtype)r   tupler   _newnpZconcatenate)r   r   r   r   r   r   concat   s    
r   int)xr   r   c               C  s   t t| j|S )z
    Array API compatible wrapper for :py:func:`np.expand_dims <numpy.expand_dims>`.

    See its docstring for more information.
    )r   r   r   expand_dimsr   r   r   r   r   r   r      s    r   z%Optional[Union[int, Tuple[int, ...]]]c               C  s   t tj| j|dS )zx
    Array API compatible wrapper for :py:func:`np.flip <numpy.flip>`.

    See its docstring for more information.
    r
   )r   r   r   flipr   r   r   r   r   r    #   s    r    zTuple[int, ...])axesr   r   c                C  s   t t| j|S )z
    Array API compatible wrapper for :py:func:`np.transpose <numpy.transpose>`.

    See its docstring for more information.
    )r   r   r   Z	transposer   )r   r!   r   r   r   permute_dims.   s    r"   )shaper   r   c                C  s   t t| j|S )z~
    Array API compatible wrapper for :py:func:`np.reshape <numpy.reshape>`.

    See its docstring for more information.
    )r   r   r   reshaper   )r   r#   r   r   r   r$   7   s    r$   zUnion[int, Tuple[int, ...]])shiftr   r   r   c               C  s   t tj| j||dS )zx
    Array API compatible wrapper for :py:func:`np.roll <numpy.roll>`.

    See its docstring for more information.
    r
   )r   r   r   rollr   )r   r%   r   r   r   r   r&   @   s    r&   )r   r   r   c                C  s   t tj| j|dS )z~
    Array API compatible wrapper for :py:func:`np.squeeze <numpy.squeeze>`.

    See its docstring for more information.
    r
   )r   r   r   squeezer   r   r   r   r   r'   O   s    r'   c               C  s.   t |   tdd | D } ttj| |dS )zz
    Array API compatible wrapper for :py:func:`np.stack <numpy.stack>`.

    See its docstring for more information.
    c                 s  s   | ]}|j V  qd S r   r   r   r   r   r   r   `   s     zstack.<locals>.<genexpr>r
   )r   r   r   r   r   stack)r   r   r   r   r   r(   X   s    r(   )
__future__r   Z_array_objectr   Z_data_type_functionsr   typingr   r   r   r	   Znumpyr   r   r   r    r"   r$   r&   r'   r(   r   r   r   r   <module>   s   			