
    G/Ph(                     h    d Z ddlmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZ  G d d          ZdS )z
Array API Inspection namespace

This is the namespace for inspection functions as defined by the array API
standard. See
https://data-apis.org/array-api/latest/API_specification/inspection.html for
more details.

    )dtypeboolintpint8int16int32int64uint8uint16uint32uint64float32float64	complex64
complex128c                   B    e Zd ZdZdZd Zd ZdddZdddd	Zd
 ZdS )__array_namespace_info__a  
    Get the array API inspection namespace for NumPy.

    The array API inspection namespace defines the following functions:

    - capabilities()
    - default_device()
    - default_dtypes()
    - dtypes()
    - devices()

    See
    https://data-apis.org/array-api/latest/API_specification/inspection.html
    for more details.

    Returns
    -------
    info : ModuleType
        The array API inspection namespace for NumPy.

    Examples
    --------
    >>> info = np.__array_namespace_info__()
    >>> info.default_dtypes()
    {'real floating': numpy.float64,
     'complex floating': numpy.complex128,
     'integral': numpy.int64,
     'indexing': numpy.int64}

    numpyc                     dddS )a^  
        Return a dictionary of array API library capabilities.

        The resulting dictionary has the following keys:

        - **"boolean indexing"**: boolean indicating whether an array library
          supports boolean indexing. Always ``True`` for NumPy.

        - **"data-dependent shapes"**: boolean indicating whether an array
          library supports data-dependent output shapes. Always ``True`` for
          NumPy.

        See
        https://data-apis.org/array-api/latest/API_specification/generated/array_api.info.capabilities.html
        for more details.

        See Also
        --------
        __array_namespace_info__.default_device,
        __array_namespace_info__.default_dtypes,
        __array_namespace_info__.dtypes,
        __array_namespace_info__.devices

        Returns
        -------
        capabilities : dict
            A dictionary of array API library capabilities.

        Examples
        --------
        >>> info = np.__array_namespace_info__()
        >>> info.capabilities()
        {'boolean indexing': True,
         'data-dependent shapes': True}

        T)zboolean indexingzdata-dependent shapes selfs    U/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/_array_api_info.pycapabilitiesz%__array_namespace_info__.capabilities?   s    L !%%)
 
 	
    c                     dS )a<  
        The default device used for new NumPy arrays.

        For NumPy, this always returns ``'cpu'``.

        See Also
        --------
        __array_namespace_info__.capabilities,
        __array_namespace_info__.default_dtypes,
        __array_namespace_info__.dtypes,
        __array_namespace_info__.devices

        Returns
        -------
        device : str
            The default device used for new NumPy arrays.

        Examples
        --------
        >>> info = np.__array_namespace_info__()
        >>> info.default_device()
        'cpu'

        cpur   r   s    r   default_devicez'__array_namespace_info__.default_devicek   s	    2 ur   N)devicec                    |dvrt          d|           t          t                    t          t                    t          t                    t          t                    dS )as  
        The default data types used for new NumPy arrays.

        For NumPy, this always returns the following dictionary:

        - **"real floating"**: ``numpy.float64``
        - **"complex floating"**: ``numpy.complex128``
        - **"integral"**: ``numpy.intp``
        - **"indexing"**: ``numpy.intp``

        Parameters
        ----------
        device : str, optional
            The device to get the default data types for. For NumPy, only
            ``'cpu'`` is allowed.

        Returns
        -------
        dtypes : dict
            A dictionary describing the default data types used for new NumPy
            arrays.

        See Also
        --------
        __array_namespace_info__.capabilities,
        __array_namespace_info__.default_device,
        __array_namespace_info__.dtypes,
        __array_namespace_info__.devices

        Examples
        --------
        >>> info = np.__array_namespace_info__()
        >>> info.default_dtypes()
        {'real floating': numpy.float64,
         'complex floating': numpy.complex128,
         'integral': numpy.int64,
         'indexing': numpy.int64}

        r   N<Device not understood. Only "cpu" is allowed, but received: )real floatingcomplex floatingintegralindexing)
ValueErrorr   r   r   r   )r   r   s     r   default_dtypesz'__array_namespace_info__.default_dtypes   sk    P &&   
 #7^^ %j 1 1dd	
 
 	
r   )r   kindc                "   |dvrt          d|           |t          t                    t          t                    t          t                    t          t
                    t          t                    t          t                    t          t                    t          t                    t          t                    t          t                    t          t                    t          t                    t          t                    dS |dk    r	dt          iS |dk    rOt          t                    t          t                    t          t
                    t          t                    dS |dk    rOt          t                    t          t                    t          t                    t          t                    d	S |d
k    rt          t                    t          t                    t          t
                    t          t                    t          t                    t          t                    t          t                    t          t                    dS |dk    r)t          t                    t          t                    dS |dk    r)t          t                    t          t                    dS |dk    rt          t                    t          t                    t          t
                    t          t                    t          t                    t          t                    t          t                    t          t                    t          t                    t          t                    t          t                    t          t                    dS t          |t                     r2i }|D ]+}|                    |                     |                     ,|S t          d|          )aV  
        The array API data types supported by NumPy.

        Note that this function only returns data types that are defined by
        the array API.

        Parameters
        ----------
        device : str, optional
            The device to get the data types for. For NumPy, only ``'cpu'`` is
            allowed.
        kind : str or tuple of str, optional
            The kind of data types to return. If ``None``, all data types are
            returned. If a string, only data types of that kind are returned.
            If a tuple, a dictionary containing the union of the given kinds
            is returned. The following kinds are supported:

            - ``'bool'``: boolean data types (i.e., ``bool``).
            - ``'signed integer'``: signed integer data types (i.e., ``int8``,
              ``int16``, ``int32``, ``int64``).
            - ``'unsigned integer'``: unsigned integer data types (i.e.,
              ``uint8``, ``uint16``, ``uint32``, ``uint64``).
            - ``'integral'``: integer data types. Shorthand for ``('signed
              integer', 'unsigned integer')``.
            - ``'real floating'``: real-valued floating-point data types
              (i.e., ``float32``, ``float64``).
            - ``'complex floating'``: complex floating-point data types (i.e.,
              ``complex64``, ``complex128``).
            - ``'numeric'``: numeric data types. Shorthand for ``('integral',
              'real floating', 'complex floating')``.

        Returns
        -------
        dtypes : dict
            A dictionary mapping the names of data types to the corresponding
            NumPy data types.

        See Also
        --------
        __array_namespace_info__.capabilities,
        __array_namespace_info__.default_device,
        __array_namespace_info__.default_dtypes,
        __array_namespace_info__.devices

        Examples
        --------
        >>> info = np.__array_namespace_info__()
        >>> info.dtypes(kind='signed integer')
        {'int8': numpy.int8,
         'int16': numpy.int16,
         'int32': numpy.int32,
         'int64': numpy.int64}

        r!   r"   N)r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   zsigned integer)r   r   r   r	   zunsigned integer)r
   r   r   r   r%   )r   r   r   r	   r
   r   r   r   r#   )r   r   r$   )r   r   numeric)r   r   r   r	   r
   r   r   r   r   r   r   r   )r)   zunsupported kind: )r'   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   
isinstancetupleupdatedtypes)r   r   r)   resks        r   r/   z__array_namespace_info__.dtypes   s   n &&    <dduuuu------ >> >>"9--#J//   6>>D>!###duuu	   %%%u------	   :duuuu------	 	 	 ?"" >> >>   %%%"9--#J//   9duuuu------ >> >>"9--#J//   dE"" 	C 0 0

4;;A;..////J6d66777r   c                     dgS )a-  
        The devices supported by NumPy.

        For NumPy, this always returns ``['cpu']``.

        Returns
        -------
        devices : list of str
            The devices supported by NumPy.

        See Also
        --------
        __array_namespace_info__.capabilities,
        __array_namespace_info__.default_device,
        __array_namespace_info__.default_dtypes,
        __array_namespace_info__.dtypes

        Examples
        --------
        >>> info = np.__array_namespace_info__()
        >>> info.devices()
        ['cpu']

        r   r   r   s    r   devicesz __array_namespace_info__.devicesA  s    2 wr   )	__name__
__module____qualname____doc__r   r   r(   r/   r3   r   r   r   r   r      s         > J*
 *
 *
X  6 (, 2
 2
 2
 2
 2
h  $$ E8 E8 E8 E8 E8N    r   r   N)r7   numpy._corer   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   <module>r9      s                                     &} } } } } } } } } }r   