o
    ðT·j�(  ã                   @   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   úX/home/dinkstrade/pdmp-scanner/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r†t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rË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 t|tƒrâi }|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	