
    ,Vh                    &   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	                    Z
 G d
 de
      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G 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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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJ ddlKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZU ddlVmWZWmXZX dd lYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZi dd!ljmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZ erdd"lmZmZmZmZmZ y#eZeZeZeZeZy#)$z(Private counterpart of ``numpy.typing``.    )annotations   )ufunc)
set_module)TYPE_CHECKINGfinalznumpy.typingc                  $     e Zd ZdZd fdZ x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*]

    c                \    h d}| j                   |vrt        d      t        |           y )N>	   _8Bit_16Bit_32Bit_64Bit_80Bit_96Bit_128Bit_256Bitr
   z*cannot inherit from final class "NBitBase")__name__	TypeErrorsuper__init_subclass__)clsallowed_names	__class__s     F/home/dcms/DCMS/lib/python3.12/site-packages/numpy/_typing/__init__.pyr   zNBitBase.__init_subclass__8   s/    
 <<},HII!#    )returnNone)r   
__module____qualname____doc__r   __classcell__)r   s   @r   r
   r
   
   s    )V$ $r   r
   c                      e Zd Zy)r   Nr   r   r     r   r   r   r   C       r   r   c                      e Zd Zy)r   Nr$   r%   r   r   r   r   F   r&   r   r   c                      e Zd Zy)r   Nr$   r%   r   r   r   r   I   r&   r   r   c                      e Zd Zy)r   Nr$   r%   r   r   r   r   L   r&   r   r   c                      e Zd Zy)r   Nr$   r%   r   r   r   r   O   r&   r   r   c                      e Zd Zy)r   Nr$   r%   r   r   r   r   R   r&   r   r   c                      e Zd Zy)r   Nr$   r%   r   r   r   r   U   r&   r   r   c                      e Zd Zy)r   Nr$   r%   r   r   r   r   X   r&   r   r      )_NestedSequence)	_NBitByte
_NBitShort	_NBitIntC	_NBitIntP_NBitInt	_NBitLong_NBitLongLong	_NBitHalf_NBitSingle_NBitDouble_NBitLongDouble))
_BoolCodes_UInt8Codes_UInt16Codes_UInt32Codes_UInt64Codes
_Int8Codes_Int16Codes_Int32Codes_Int64Codes_Float16Codes_Float32Codes_Float64Codes_Complex64Codes_Complex128Codes
_ByteCodes_ShortCodes
_IntCCodes
_IntPCodes	_IntCodes
_LongCodes_LongLongCodes_UByteCodes_UShortCodes_UIntCCodes_UIntPCodes
_UIntCodes_ULongCodes_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)NDArray	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)_UFunc_Nin1_Nout1_UFunc_Nin2_Nout1_UFunc_Nin1_Nout2_UFunc_Nin2_Nout2_GUFunc_Nin2_Nout1N)r!   
__future__r    r   _utilsr   typingr   r   r
   r   r   r   r   r   r   r   r   _nested_sequencer/   _nbitr0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   _char_codesr;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   _scalarsrd   re   rf   rg   rh   ri   rj   rk   rl   rm   _shapern   ro   _dtype_likerp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   _array_liker   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _ufuncr   r   r   r   r   r%   r   r   <module>r      sf   . "   ' N3$ 3$  3$n	h 		g 		W 		V 		V 		V 		V 		F 	   * * * * * * * * * * *V      $     0   r   