"""
This type stub file was generated by pyright.
"""

import numpy as np
from pandas.core.dtypes.base import register_extension_dtype
from pandas.core.arrays.numeric import NumericArray, NumericDtype

class IntegerDtype(NumericDtype):
    """
    An ExtensionDtype to hold a single size & kind of integer dtype.

    These specific implementations are subclasses of the non-public
    IntegerDtype. For example we have Int8Dtype to represent signed int 8s.

    The attributes name & type are set when these subclasses are created.
    """
    _default_np_dtype = ...
    _checker = ...
    @classmethod
    def construct_array_type(cls) -> type[IntegerArray]:
        """
        Return the array type associated with this dtype.

        Returns
        -------
        type
        """
        ...
    


class IntegerArray(NumericArray):
    """
    Array of integer (optional missing) values.

    .. versionchanged:: 1.0.0

       Now uses :attr:`pandas.NA` as the missing value rather
       than :attr:`numpy.nan`.

    .. warning::

       IntegerArray is currently experimental, and its API or internal
       implementation may change without warning.

    We represent an IntegerArray with 2 numpy arrays:

    - data: contains a numpy integer array of the appropriate dtype
    - mask: a boolean array holding a mask on the data, True is missing

    To construct an IntegerArray from generic array-like input, use
    :func:`pandas.array` with one of the integer dtypes (see examples).

    See :ref:`integer_na` for more.

    Parameters
    ----------
    values : numpy.ndarray
        A 1-d integer-dtype array.
    mask : numpy.ndarray
        A 1-d boolean-dtype array indicating missing values.
    copy : bool, default False
        Whether to copy the `values` and `mask`.

    Attributes
    ----------
    None

    Methods
    -------
    None

    Returns
    -------
    IntegerArray

    Examples
    --------
    Create an IntegerArray with :func:`pandas.array`.

    >>> int_array = pd.array([1, None, 3], dtype=pd.Int32Dtype())
    >>> int_array
    <IntegerArray>
    [1, <NA>, 3]
    Length: 3, dtype: Int32

    String aliases for the dtypes are also available. They are capitalized.

    >>> pd.array([1, None, 3], dtype='Int32')
    <IntegerArray>
    [1, <NA>, 3]
    Length: 3, dtype: Int32

    >>> pd.array([1, None, 3], dtype='UInt16')
    <IntegerArray>
    [1, <NA>, 3]
    Length: 3, dtype: UInt16
    """
    _dtype_cls = IntegerDtype
    _internal_fill_value = ...
    _truthy_value = ...
    _falsey_value = ...


_dtype_docstring = ...
@register_extension_dtype
class Int8Dtype(IntegerDtype):
    type = np.int8
    name = ...
    __doc__ = ...


@register_extension_dtype
class Int16Dtype(IntegerDtype):
    type = np.int16
    name = ...
    __doc__ = ...


@register_extension_dtype
class Int32Dtype(IntegerDtype):
    type = np.int32
    name = ...
    __doc__ = ...


@register_extension_dtype
class Int64Dtype(IntegerDtype):
    type = np.int64
    name = ...
    __doc__ = ...


@register_extension_dtype
class UInt8Dtype(IntegerDtype):
    type = np.uint8
    name = ...
    __doc__ = ...


@register_extension_dtype
class UInt16Dtype(IntegerDtype):
    type = np.uint16
    name = ...
    __doc__ = ...


@register_extension_dtype
class UInt32Dtype(IntegerDtype):
    type = np.uint32
    name = ...
    __doc__ = ...


@register_extension_dtype
class UInt64Dtype(IntegerDtype):
    type = np.uint64
    name = ...
    __doc__ = ...


INT_STR_TO_DTYPE: dict[str, IntegerDtype] = ...
