U
    #c                     @  s  d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	 e	edG dd dZ
G d	d
 d
e
ZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZddlmZ ddlmZmZmZmZmZmZmZmZmZm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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZG ddlHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZR ddlSmTZTmUZU ddlVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZf dd lgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{ dd!l|m}Z}m~Z~mZ erdd"lmZmZmZmZmZ neZeZeZeZeZd#S )$z(Private counterpart of ``numpy.typing``.    )annotations)ufunc)
set_module)TYPE_CHECKINGfinalznumpy.typingc                      s&   e Zd ZdZdd fddZ  ZS )NBitBasea  
    A type representing `numpy.number` precision during static type checking.

    Used exclusively for the purpose static type checking, `NBitBase`
    represents the base of a hierarchical set of subclasses.
    Each subsequent subclass is herein used for representing a lower level
    of precision, *e.g.* ``64Bit > 32Bit > 16Bit``.

    .. versionadded:: 1.20

    Examples
    --------
    Below is a typical usage example: `NBitBase` is herein used for annotating
    a function that takes a float and integer of arbitrary precision
    as arguments and returns a new float of whichever precision is largest
    (*e.g.* ``np.float16 + np.int64 -> np.float64``).

    .. code-block:: python

        >>> from __future__ import annotations
        >>> from typing import TypeVar, TYPE_CHECKING
        >>> import numpy as np
        >>> import numpy.typing as npt

        >>> T1 = TypeVar("T1", bound=npt.NBitBase)
        >>> T2 = TypeVar("T2", bound=npt.NBitBase)

        >>> def add(a: np.floating[T1], b: np.integer[T2]) -> np.floating[T1 | T2]:
        ...     return a + b

        >>> a = np.float16()
        >>> b = np.int64()
        >>> out = add(a, b)

        >>> if TYPE_CHECKING:
        ...     reveal_locals()
        ...     # note: Revealed local types are:
        ...     # note:     a: numpy.floating[numpy.typing._16Bit*]
        ...     # note:     b: numpy.signedinteger[numpy.typing._64Bit*]
        ...     # note:     out: numpy.floating[numpy.typing._64Bit*]

    None)returnc              	     s6   ddddddddd	h	}| j |kr(td
t   d S )Nr   _256Bit_128Bit_96Bit_80Bit_64Bit_32Bit_16Bit_8Bitz*cannot inherit from final class "NBitBase")__name__	TypeErrorsuper__init_subclass__)clsZallowed_names	__class__ :/tmp/pip-unpacked-wheel-b2rbor69/numpy/_typing/__init__.pyr   8   s           
zNBitBase.__init_subclass__)r   
__module____qualname____doc__r   __classcell__r   r   r   r   r   
   s   +r   c                   @  s   e Zd ZdS )r
   Nr   r   r   r   r   r   r   r
   C   s   r
   c                   @  s   e Zd ZdS )r   Nr   r   r   r   r   r   F   s   r   c                   @  s   e Zd ZdS )r   Nr   r   r   r   r   r   I   s   r   c                   @  s   e Zd ZdS )r   Nr   r   r   r   r   r   L   s   r   c                   @  s   e Zd ZdS )r   Nr   r   r   r   r   r   O   s   r   c                   @  s   e Zd ZdS )r   Nr   r   r   r   r   r   R   s   r   c                   @  s   e Zd ZdS )r   Nr   r   r   r   r   r   U   s   r   c                   @  s   e Zd ZdS )r   Nr   r   r   r   r   r   X   s   r      )_NestedSequence)
	_NBitByte
_NBitShort	_NBitIntC	_NBitIntP_NBitInt_NBitLongLong	_NBitHalf_NBitSingle_NBitDouble_NBitLongDouble)'
_BoolCodes_UInt8Codes_UInt16Codes_UInt32Codes_UInt64Codes
_Int8Codes_Int16Codes_Int32Codes_Int64Codes_Float16Codes_Float32Codes_Float64Codes_Complex64Codes_Complex128Codes
_ByteCodes_ShortCodes
_IntCCodes
_IntPCodes	_IntCodes_LongLongCodes_UByteCodes_UShortCodes_UIntCCodes_UIntPCodes
_UIntCodes_ULongLongCodes
_HalfCodes_SingleCodes_DoubleCodes_LongDoubleCodes_CSingleCodes_CDoubleCodes_CLongDoubleCodes
_DT64Codes
_TD64Codes	_StrCodes_BytesCodes
_VoidCodes_ObjectCodes)
_CharLike_co_BoolLike_co_UIntLike_co_IntLike_co_FloatLike_co_ComplexLike_co_TD64Like_co_NumberLike_co_ScalarLike_co_VoidLike_co)_Shape
_ShapeLike)	DTypeLike
_DTypeLike_SupportsDType_VoidDTypeLike_DTypeLikeBool_DTypeLikeUInt_DTypeLikeInt_DTypeLikeFloat_DTypeLikeComplex_DTypeLikeTD64_DTypeLikeDT64_DTypeLikeObject_DTypeLikeVoid_DTypeLikeStr_DTypeLikeBytes_DTypeLikeComplex_co)	ArrayLike
_ArrayLike_FiniteNestedSequence_SupportsArray_SupportsArrayFunc_ArrayLikeInt_ArrayLikeBool_co_ArrayLikeUInt_co_ArrayLikeInt_co_ArrayLikeFloat_co_ArrayLikeComplex_co_ArrayLikeNumber_co_ArrayLikeTD64_co_ArrayLikeDT64_co_ArrayLikeObject_co_ArrayLikeVoid_co_ArrayLikeStr_co_ArrayLikeBytes_co_ArrayLikeUnknown_UnknownType)NDArray_DType_GenericAlias)_UFunc_Nin1_Nout1_UFunc_Nin2_Nout1_UFunc_Nin1_Nout2_UFunc_Nin2_Nout2_GUFunc_Nin2_Nout1N)r   
__future__r   Znumpyr   Znumpy.core.overridesr   typingr   r   r   r
   r   r   r   r   r   r   r   Z_nested_sequencer!   Z_nbitr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   Z_char_codesr,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   _scalarsrS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   Z_shaper]   r^   Z_dtype_liker_   r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   Z_array_likero   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   Z_generic_aliasr   r   r   Z_ufuncr   r   r   r   r   r   r   r   r   <module>   s<   70)0HX
