
    MhF                       % S SK Jr  S SKJr  S SKrS SKJr  S SKJ	r	  S SK
JrJr   " S S\5      r " S	 S
\5      rSr\ " S S\5      5       r\ " S S\5      5       r\ " S S\5      5       r\ " S S\5      5       r\ " S S\5      5       r\ " S S\5      5       r\ " S S\5      5       r\ " S S\5      5       r\R0                  " \R2                  5      \" 5       \R0                  " \R4                  5      \" 5       \R0                  " \R6                  5      \" 5       \R0                  " \R8                  5      \" 5       \R0                  " \R:                  5      \" 5       \R0                  " \R<                  5      \" 5       \R0                  " \R>                  5      \" 5       \R0                  " \R@                  5      \" 5       0r!S\"S'   g)    )annotations)ClassVarN)register_extension_dtype)is_integer_dtype)NumericArrayNumericDtypec                      \ rS rSrSr\R                  " \R                  5      r\	r
\SS j5       r\S	S j5       r\S
S j5       rSrg)IntegerDtype   a  
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.
c                    [         $ )zI
Return the array type associated with this dtype.

Returns
-------
type
)IntegerArrayclss    L/var/www/html/env/lib/python3.13/site-packages/pandas/core/arrays/integer.pyconstruct_array_type!IntegerDtype.construct_array_type   s
         c                    [         $ )N)NUMPY_INT_TO_DTYPEr   s    r   _get_dtype_mappingIntegerDtype._get_dtype_mapping(   s    !!r   c           	         UR                  USUS9$ ! [         ab  nUR                  X#S9nXQ:H  R                  5       (       a  Us SnA$ [        SUR                   S[        R                  " U5       35      UeSnAff = f)z
Safely cast the values to the given dtype.

"safe" in this context means the casting is lossless. e.g. if 'values'
has a floating dtype, each value must be an integer.
safe)castingcopy)r   Nz"cannot safely cast non-equivalent z to )astype	TypeErroralldtypenp)r   valuesr   r   errcasteds         r   
_safe_castIntegerDtype._safe_cast,   s    		==T=BB 	]]5]4F %%''4V\\N$rxxPUFWX	s     
A?'A:A?
0A::A? N)returnztype[IntegerArray])r'   dict[np.dtype, IntegerDtype])r!   
np.ndarrayr   znp.dtyper   boolr'   r)   )__name__
__module____qualname____firstlineno____doc__r    r   int64_default_np_dtyper   _checkerclassmethodr   r   r$   __static_attributes__r&   r   r   r
   r
      s[     *H  " "  r   r
   c                  (    \ rS rSrSr\rSrSrSr	Sr
g)r   @   a;  
Array of integer (optional missing) values.

Uses :attr:`pandas.NA` as the missing value.

.. 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
   r   r&   N)r+   r,   r-   r.   r/   r
   
_dtype_cls_internal_fill_value_truthy_value_falsey_valuer4   r&   r   r   r   r   @   s#    >@ J  MMr   r   a  
An ExtensionDtype for {dtype} integer data.

Uses :attr:`pandas.NA` as its missing value, rather than :attr:`numpy.nan`.

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

Methods
-------
None

Examples
--------
For Int8Dtype:

>>> ser = pd.Series([2, pd.NA], dtype=pd.Int8Dtype())
>>> ser.dtype
Int8Dtype()

For Int16Dtype:

>>> ser = pd.Series([2, pd.NA], dtype=pd.Int16Dtype())
>>> ser.dtype
Int16Dtype()

For Int32Dtype:

>>> ser = pd.Series([2, pd.NA], dtype=pd.Int32Dtype())
>>> ser.dtype
Int32Dtype()

For Int64Dtype:

>>> ser = pd.Series([2, pd.NA], dtype=pd.Int64Dtype())
>>> ser.dtype
Int64Dtype()

For UInt8Dtype:

>>> ser = pd.Series([2, pd.NA], dtype=pd.UInt8Dtype())
>>> ser.dtype
UInt8Dtype()

For UInt16Dtype:

>>> ser = pd.Series([2, pd.NA], dtype=pd.UInt16Dtype())
>>> ser.dtype
UInt16Dtype()

For UInt32Dtype:

>>> ser = pd.Series([2, pd.NA], dtype=pd.UInt32Dtype())
>>> ser.dtype
UInt32Dtype()

For UInt64Dtype:

>>> ser = pd.Series([2, pd.NA], dtype=pd.UInt64Dtype())
>>> ser.dtype
UInt64Dtype()
c                  Z    \ rS rSr% \R
                  rSrS\S'   \	R                  SS9rSrg)		Int8Dtype   Int8ClassVar[str]nameint8r   r&   N)r+   r,   r-   r.   r    rB   typerA   __annotations___dtype_docstringformatr/   r4   r&   r   r   r=   r=      s(    77D D- %%F%3Gr   r=   c                  Z    \ rS rSr% \R
                  rSrS\S'   \	R                  SS9rSrg)	
Int16Dtype   Int16r@   rA   int16rC   r&   N)r+   r,   r-   r.   r    rL   rD   rA   rE   rF   rG   r/   r4   r&   r   r   rI   rI      (    88D!D-!%%G%4Gr   rI   c                  Z    \ rS rSr% \R
                  rSrS\S'   \	R                  SS9rSrg)	
Int32Dtype   Int32r@   rA   int32rC   r&   N)r+   r,   r-   r.   r    rR   rD   rA   rE   rF   rG   r/   r4   r&   r   r   rO   rO      rM   r   rO   c                  Z    \ rS rSr% \R
                  rSrS\S'   \	R                  SS9rSrg)	
Int64Dtype   Int64r@   rA   r0   rC   r&   N)r+   r,   r-   r.   r    r0   rD   rA   rE   rF   rG   r/   r4   r&   r   r   rT   rT      rM   r   rT   c                  Z    \ rS rSr% \R
                  rSrS\S'   \	R                  SS9rSrg)	
UInt8Dtype   UInt8r@   rA   uint8rC   r&   N)r+   r,   r-   r.   r    r[   rD   rA   rE   rF   rG   r/   r4   r&   r   r   rX   rX      rM   r   rX   c                  Z    \ rS rSr% \R
                  rSrS\S'   \	R                  SS9rSrg)	UInt16Dtype   UInt16r@   rA   uint16rC   r&   N)r+   r,   r-   r.   r    r`   rD   rA   rE   rF   rG   r/   r4   r&   r   r   r]   r]      (    99D"D-"%%H%5Gr   r]   c                  Z    \ rS rSr% \R
                  rSrS\S'   \	R                  SS9rSrg)	UInt32Dtype   UInt32r@   rA   uint32rC   r&   N)r+   r,   r-   r.   r    rf   rD   rA   rE   rF   rG   r/   r4   r&   r   r   rc   rc      ra   r   rc   c                  Z    \ rS rSr% \R
                  rSrS\S'   \	R                  SS9rSrg)	UInt64Dtype   UInt64r@   rA   uint64rC   r&   N)r+   r,   r-   r.   r    rk   rD   rA   rE   rF   rG   r/   r4   r&   r   r   rh   rh      ra   r   rh   r(   r   )#
__future__r   typingr   numpyr    pandas.core.dtypes.baser   pandas.core.dtypes.commonr   pandas.core.arrays.numericr   r   r
   r   rF   r=   rI   rO   rT   rX   r]   rc   rh   r   rB   rL   rR   r0   r[   r`   rf   rk   r   rE   r&   r   r   <module>rr      s   "   < 6-< -`I< IX> F 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 6, 6 6 6, 6 6 6, 6 6 HHRWWy{HHRXX
HHRXX
HHRXX
HHRXX
HHRYYHHRYYHHRYY	4 0 	r   