o
    %æÑg@  ã                   @   s  d Z ddlmZ ddlmZ eedƒG dd„ dƒƒƒZeedƒG d	d
„ d
eƒƒƒZeedƒG dd„ deƒƒƒZeedƒG dd„ deƒƒƒZeedƒG dd„ deƒƒƒZ	eedƒG dd„ de	ƒƒƒZ
eedƒG dd„ de
ƒƒƒZeedƒG dd„ deƒƒƒZeedƒG dd„ deƒƒƒZdS )z>A module with the precisions of generic `~numpy.number` types.é   )Ú
set_moduleé    )Úfinalznumpy.typingc                       s"   e Zd ZdZ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

        >>> S = TypeVar("S", bound=npt.NBitBase)
        >>> T = TypeVar("T", bound=npt.NBitBase)

        >>> def add(a: np.floating[S], b: np.integer[T]) -> np.floating[S | T]:
        ...     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*]

    ÚreturnNc                    s(   h d£}| j |vrtdƒ‚tƒ  ¡  d S )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__© úW/root/parts/websockify/install/lib/python3.10/site-packages/numpy/_typing/_nbit_base.pyr   4   s   
zNBitBase.__init_subclass__)r   N)r   Ú
__module__Ú__qualname__Ú__doc__r   Ú__classcell__r   r   r   r   r      s    +r   znumpy._typingc                   @   ó   e Zd ZdS )r   N©r   r   r   r   r   r   r   r   =   s    r   c                   @   r   )r   Nr   r   r   r   r   r   C   ó    r   c                   @   r   )r   Nr   r   r   r   r   r   H   r   r   c                   @   r   )r   Nr   r   r   r   r   r   M   r   r   c                   @   r   )r
   Nr   r   r   r   r   r
   R   r   r
   c                   @   r   )r	   Nr   r   r   r   r   r	   W   r   r	   c                   @   r   )r   Nr   r   r   r   r   r   \   r   r   c                   @   r   )r   Nr   r   r   r   r   r   a   r   r   N)r   Ú_utilsr   Útypingr   r   r   r   r   r   r
   r	   r   r   r   r   r   r   Ú<module>   s<    5