
    Bwg(                     `    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y)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                   @    e Zd ZdZdZd Zd ZdddZdddd	Zd
 Zy)__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    L/var/www/horilla/myenv/lib/python3.12/site-packages/numpy/_array_api_info.pycapabilitiesz%__array_namespace_info__.capabilities?   s    L !%%)
 	
    c                      y)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 r   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   sR    P &8 
 #7^ %j 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(  r;t        t              t        t              t        t
              t        t              dS |dk(  r;t        t              t        t              t        t              t        t              dS |d	k(  rst        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               r,i }|D ]#  }|j#                  | j%                  |             % |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"   )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   sV   n &8  <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

4;;A;./0J-dX6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      s7    > J*
X6 (, 2
h  $$ 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   