
    `VgP                        d Z ddlmZ ddlmZmZmZ ddlZddl	m
Z
mZmZ ddlmZ ddlmZmZ ddlmZ dd	lmZmZ  ed
d      Z G d de      Z G d de      ZddZy)zc
Base class for the internal managers. Both BlockManager and ArrayManager
inherit from this class.
    )annotations)LiteralTypeVarfinalN)	ArrayLikeDtypeObjShapeAbstractMethodError)find_common_typenp_can_hold_element)PandasObject)Indexdefault_indexTDataManager)boundc                  $   e Zd ZU ded<   edd       Zedd       Zedd       Zedd       Z	edd       Z
	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd	Ze	 	 d	 	 	 	 	 	 	 	 	 dd
       ZddZedd       Z	 	 d	 	 	 	 	 	 	 ddZedd       ZddZddZddZy) r   zlist[Index]axesc                    t        |       Nr
   selfs    [/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/core/internals/base.pyitemszDataManager.items*   s    !$''    c                ,    t        | j                        S r   )lenr   r   s    r   __len__zDataManager.__len__.   s    4::r   c                ,    t        | j                        S r   )r   r   r   s    r   ndimzDataManager.ndim2   s    499~r   c                :    t        d | j                  D              S )Nc              3  2   K   | ]  }t        |        y wr   )r   ).0axs     r   	<genexpr>z$DataManager.shape.<locals>.<genexpr>8   s     1SW1s   )tupler   r   s    r   shapezDataManager.shape6   s    1tyy111r   c                    t        | j                  |         }t        |      }|dk(  rt        | j                        dk(  ry ||k7  rt        d| d| d      y )N   r   z#Length mismatch: Expected axis has z elements, new values have z	 elements)r   r   r   
ValueError)r   axis
new_labelsold_lennew_lens        r   _validate_set_axiszDataManager._validate_set_axis:   sl     diio&j/19TZZA- 5gY ?&iy2   r   Nc                    t        |       r   r
   )r   new_axisindexerr,   
fill_value
allow_dupscopy
only_slices           r   reindex_indexerzDataManager.reindex_indexerK   s     "$''r   c                r    | j                   |   j                  |      \  }}| j                  ||||d|      S )z4
        Conform data manager to new index.
        F)r,   r4   r6   r7   )r   reindexr8   )r   	new_indexr,   r4   r7   r3   s         r   reindex_axiszDataManager.reindex_axisW   sK     "YYt_44Y?	7##!! $ 
 	
r   c                    t        |       )z
        To be implemented by the subclasses. Only check the column values
        assuming shape and indexes have already been checked.
        r
   )r   others     r   _equal_valueszDataManager._equal_valuesm   s    
 "$''r   c                    t        |t              sy| j                  |j                  }}t        |      t        |      k7  ryt	        d t        ||      D              sy| j                  |      S )z5
        Implementation for DataFrame.equals
        Fc              3  D   K   | ]  \  }}|j                  |        y wr   )equals)r$   ax1ax2s      r   r&   z%DataManager.equals.<locals>.<genexpr>   s     NxsC3::c?Ns    )
isinstancer   r   r   allzipr?   )r   r>   	self_axes
other_axess       r   rB   zDataManager.equalst   s^    
 %- $		5:::	y>S_,N3y*3MNN!!%((r   c                    t        |       r   r
   )r   f
align_keysignore_failureskwargss        r   applyzDataManager.apply   s     "$''r   c                (    | j                  d|      S )NrO   )func)rO   )r   rQ   s     r   isnazDataManager.isna   s    zz'z--r   c                     y)NT r   s    r   is_consolidatedzDataManager.is_consolidated   s    r   c                    | S r   rT   r   s    r   consolidatezDataManager.consolidate   s    r   c                     y r   rT   r   s    r   _consolidate_inplacez DataManager._consolidate_inplace   s    r   )returnr   )rZ   int)rZ   r	   )r,   r[   r-   r   rZ   None)NFTF)r   r   r,   r[   r5   boolr6   r]   r7   r]   rZ   r   )NF)
r   r   r;   r   r,   r[   r7   r]   rZ   r   )r   r   r>   r   rZ   r]   )r>   objectrZ   r]   )r   r   rL   zlist[str] | NonerM   r]   rZ   r   )r   r   rZ   r   )rZ   r]   rZ   r\   )__name__
__module____qualname____annotations__propertyr   r   r   r!   r(   r0   r8   r<   r?   rB   rO   rR   rU   rW   rY   rT   r   r   r   r   $   sr    ( (     2 2  *   
(
( 	
( 
( 
( 
( 

( 
  


 

 
 

 
*( ) )$ (, %	(( %( 	( 
( . .r   c                  ^    e Zd Zedd       Zeedd              Zd	dZd
ddZe	dd       Z
y)SingleDataManagerc                     y)Nr*   rT   r   s    r   r!   zSingleDataManager.ndim   s    r   c                     | j                   d   S )zW
        Quick access to the backing array of the Block or SingleArrayManager.
        r   )arraysr   s    r   arrayzSingleDataManager.array   s     {{1~r   c                    | j                   }t        |t        j                        rt	        |j
                  |      }|||<   y)a'  
        Set values with indexer.

        For Single[Block/Array]Manager, this backs s[indexer] = value

        This is an inplace version of `setitem()`, mutating the manager/values
        in place, not returning a new Manager (and Block), and thus never changing
        the dtype.
        N)rj   rE   npndarrayr   dtype)r   r3   valuearrs       r   setitem_inplacez!SingleDataManager.setitem_inplace   s8     jj c2::& (		59EGr   c                    | j                   } ||      }t        t        |            }t        |       j	                  ||      }|S )z
        ignore_failures : bool, default False
            Not used; for compatibility with ArrayManager/BlockManager.
        )rj   r   r   type
from_array)r   rQ   rM   rp   resindexmgrs          r   grouped_reducez SingleDataManager.grouped_reduce   s?     jj3ic#h'4j##C/
r   c                    t        |       r   r
   )clsrp   rv   s      r   rt   zSingleDataManager.from_array   s    !#&&r   N)rZ   z
Literal[1])rZ   r   r_   )F)rM   r]   )rp   r   rv   r   )r`   ra   rb   rd   r!   r   rj   rq   rx   classmethodrt   rT   r   r   rf   rf      sN        ( ' 'r   rf   c                0    t        |       syt        |       S )z
    Find the common dtype for `blocks`.

    Parameters
    ----------
    blocks : List[DtypeObj]

    Returns
    -------
    dtype : np.dtype, ExtensionDtype, or None
        None is returned when `blocks` is empty.
    N)r   r   )dtypess    r   interleaved_dtyper~      s     v;F##r   )r}   zlist[DtypeObj]rZ   zDtypeObj | None)__doc__
__future__r   typingr   r   r   numpyrl   pandas._typingr   r   r	   pandas.errorsr   pandas.core.dtypes.castr   r   pandas.core.baser   pandas.core.indexes.apir   r   r   r   rf   r~   rT   r   r   <module>r      sk    #   
 .
 *
 C}%w, wt1' 1'h$r   