o
    h(                     @   sZ   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 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                   @   sJ   e Zd ZdZdZdd Zdd Zddd	d
ZdddddZd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                 C   s
   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 selfr   r   i/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/numpy/_array_api_info.pycapabilities?   s   &z%__array_namespace_info__.capabilitiesc                 C   s   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   r   r   r   default_devicek   s   z'__array_namespace_info__.default_deviceN)devicec                C   s4   |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   r   r   r   default_dtypes   s   (z'__array_namespace_info__.default_dtypes)r   kindc                C   s  |dvrt d| |du r9t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rAdtiS |dkrTttttttttdS |dkrgt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rttttdS |dkrt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ri }|D ]}|| j|d q|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kr   r   r   r(      s   7

z__array_namespace_info__.dtypesc                 C   s   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   r   r   r   devicesA  s   z __array_namespace_info__.devices)	__name__
__module____qualname____doc__r   r   r"   r(   r+   r   r   r   r   r      s    ,4 r   N)r/   numpy._corer   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   <module>   s    D	