
    i                       U d dl mZ d dlmZmZmZ d dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZmZ erd dlmZ  G d	 d
e      Z e	d       G d de             ZdZe e	d       G d de                    Ze e	d       G d de                    Z ej0                  ej2                         e        ej0                  ej4                         e       iZded<   y)    )annotations)TYPE_CHECKINGAnyClassVarN)
set_module)register_extension_dtype)is_float_dtype)NumericArrayNumericDtype)Callablec                      e Zd ZU dZej
                  Z ej                  ej                        Z	e
Zded<   ddZed	d       Zed
d       Zy)FloatingDtypea  
    An ExtensionDtype to hold a single size of floating dtype.

    These specific implementations are subclasses of the non-public
    FloatingDtype. For example we have Float32Dtype to represent float32.

    The attributes name & type are set when these subclasses are created.
    zCallable[[Any], bool]_checkerc                    t         S )zq
        Return the array type associated with this dtype.

        Returns
        -------
        type
        )FloatingArray)selfs    X/app/cer_product_mecsu/.venv/lib/python3.12/site-packages/pandas/core/arrays/floating.pyconstruct_array_typez"FloatingDtype.construct_array_type(   s
         c                    t         S )N)NUMPY_FLOAT_TO_DTYPE)clss    r   _get_dtype_mappingz FloatingDtype._get_dtype_mapping2   s    ##r   c                (    |j                  ||      S )z{
        Safely cast the values to the given dtype.

        "safe" in this context means the casting is lossless.
        )copy)astype)r   valuesdtyper   s       r   
_safe_castzFloatingDtype._safe_cast6   s     }}U}..r   N)returnztype[FloatingArray])r    dict[np.dtype, FloatingDtype])r   
np.ndarrayr   znp.dtyper   boolr    r"   )__name__
__module____qualname____doc__npnan_internal_fill_valuer   float64_default_np_dtyper	   r   __annotations__r   classmethodr   r    r   r   r   r      s`     66 ,&4H#4 $ $ / /r   r   zpandas.arraysc                      e Zd ZdZeZy)r   a  
    Array of floating (optional missing) values.

    .. warning::

       FloatingArray is currently experimental, and its API or internal
       implementation may change without warning. Especially the behaviour
       regarding NaN (distinct from NA missing values) is subject to change.

    We represent a FloatingArray with 2 numpy arrays:

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

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

    See :ref:`integer_na` for more.

    Parameters
    ----------
    values : numpy.ndarray
        A 1-d float-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
    -------
    FloatingArray

    See Also
    --------
    array : Create an array.
    Float32Dtype : Float32 dtype for FloatingArray.
    Float64Dtype : Float64 dtype for FloatingArray.
    Series : One-dimensional labeled array capable of holding data.
    DataFrame : Two-dimensional, size-mutable, potentially heterogeneous tabular data.

    Examples
    --------
    Create a FloatingArray with :func:`pandas.array`:

    >>> pd.array([0.1, None, 0.3], dtype=pd.Float32Dtype())
    <FloatingArray>
    [0.1, <NA>, 0.3]
    Length: 3, dtype: Float32

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

    >>> pd.array([0.1, None, 0.3], dtype="Float32")
    <FloatingArray>
    [0.1, <NA>, 0.3]
    Length: 3, dtype: Float32
    N)r$   r%   r&   r'   r   
_dtype_clsr/   r   r   r   r   B   s    ?B Jr   r   a`  
An ExtensionDtype for {dtype} data.

This dtype uses ``pd.NA`` as missing value indicator.

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

Methods
-------
None

See Also
--------
CategoricalDtype : Type for categorical data with the categories and orderedness.
IntegerDtype : An ExtensionDtype to hold a single size & kind of integer dtype.
StringDtype : An ExtensionDtype for string data.

Examples
--------
For Float32Dtype:

>>> ser = pd.Series([2.25, pd.NA], dtype=pd.Float32Dtype())
>>> ser.dtype
Float32Dtype()

For Float64Dtype:

>>> ser = pd.Series([2.25, pd.NA], dtype=pd.Float64Dtype())
>>> ser.dtype
Float64Dtype()
pandasc                  X    e Zd ZU ej                  ZdZded<   ej                  d      Z
y)Float32DtypeFloat32ClassVar[str]namefloat32r   N)r$   r%   r&   r(   r8   typer7   r-   _dtype_docstringformatr'   r/   r   r   r4   r4      *     ::D#D-#%%I%6Gr   r4   c                  X    e Zd ZU ej                  ZdZded<   ej                  d      Z
y)Float64DtypeFloat64r6   r7   r+   r9   N)r$   r%   r&   r(   r+   r:   r7   r-   r;   r<   r'   r/   r   r   r?   r?      r=   r   r?   r!   r   )
__future__r   typingr   r   r   numpyr(   pandas.util._decoratorsr   pandas.core.dtypes.baser   pandas.core.dtypes.commonr	   pandas.core.arrays.numericr
   r   collections.abcr   r   r   r;   r4   r?   r   r8   r+   r   r-   r/   r   r   <module>rI      s    "   . < 4
 (&/L &/R OBL B BJ  J H7= 7  7 H7= 7  7 BHHRZZ,.BHHRZZ,.7 3 r   