
    Owg+                    (   d Z ddlmZ ddlmZmZmZmZmZ ddl	Z
ddlmZmZ ddlmZmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZ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$m%Z%m&Z&m'Z'm(Z(  G d d      Z) G d de      Z* G d de*      Z+ddZ,ddZ-y)zc
Base class for the internal managers. Both BlockManager and ArrayManager
inherit from this class.
    )annotations)TYPE_CHECKINGAnyLiteralcastfinalN)using_copy_on_writewarn_copy_on_write)algoslibAbstractMethodError)validate_bool_kwarg)find_common_typenp_can_hold_element)ExtensionDtypeSparseDtype)PandasObject)extract_array)Indexdefault_index)	ArrayLikeAxisIntDtypeObjSelfShapec                      e Zd Zd Zy)_AlreadyWarnedc                    d| _         y NF)warned_alreadyselfs    Q/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/core/internals/base.py__init__z_AlreadyWarned.__init__8   s     $    N)__name__
__module____qualname__r%    r&   r$   r   r   7   s    $r&   r   c                     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	 d'	 	 	 d(dZed)d       Zed*d       Zed+d       Zed,d-d       Zed.d/d       Zed0d       Zed)d       Ze	 	 d1	 	 	 	 	 	 	 	 	 d2d       Zd0dZd0dZd3dZd4dZd)dZd5dZy)6DataManagerzlist[Index]axesc                    t        |       Nr   r"   s    r$   itemszDataManager.itemsF   s    !$''r&   c                ,    t        | j                        S r/   )lenr0   r"   s    r$   __len__zDataManager.__len__J   s    4::r&   c                ,    t        | j                        S r/   )r2   r-   r"   s    r$   ndimzDataManager.ndimN   s    499~r&   c                :    t        d | j                  D              S )Nc              3  2   K   | ]  }t        |        y wr/   )r2   ).0axs     r$   	<genexpr>z$DataManager.shape.<locals>.<genexpr>T   s     1SW1s   )tupler-   r"   s    r$   shapezDataManager.shapeR   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)r2   r-   r0   
ValueError)r#   axis
new_labelsold_lennew_lens        r$   _validate_set_axiszDataManager._validate_set_axisV   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_indexerg   s     "$''r&   c                r    | j                   |   j                  |      \  }}| j                  ||||d|      S )z4
        Conform data manager to new index.
        F)r@   rH   rJ   rK   )r-   reindexrL   )r#   	new_indexr@   rH   rK   rG   s         r$   reindex_axiszDataManager.reindex_axiss   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_values   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)r8   ax1ax2s      r$   r:   z%DataManager.equals.<locals>.<genexpr>   s     NxsC3::c?Ns    )
isinstancetyper-   r2   allziprS   )r#   rR   	self_axes
other_axess       r$   rV   zDataManager.equals   sb    
 %d, $		5:::	y>S_,N3y*3MNN!!%((r&   c                    t        |       r/   r   r#   f
align_keyskwargss       r$   applyzDataManager.apply        "$''r&   c                    t        |       r/   r   r`   s       r$   apply_with_blockzDataManager.apply_with_block   re   r&   c                (    | j                  d|      S )Nrd   )func)rd   )r#   ri   s     r$   isnazDataManager.isna   s    zz'z--r&   c           
         |t        j                  d |      }| j                  d||||t               t	                     S )N)limitfillna)valuerl   inplacedowncast	using_cowalready_warned)libalgosvalidate_limitrg   r	   r   )r#   rn   rl   ro   rp   s        r$   rm   zDataManager.fillna   sM    ++D>E$$)+)+ % 
 	
r&   c                l    |rddg}ndg}t        |d      }| j                  d|||t                     S )NrR   condTextract_numpywhere)rb   rR   rv   rq   )r   rg   r	   )r#   rR   rv   alignrb   s        r$   ry   zDataManager.where   sL    !6*J J!%t<E$$!)+ % 
 	
r&   c                    |rddg}ndg}t        |d      }d }t               rt               }|sd|_        | j	                  d|||t               |      S )NnewmaskTrw   putmask)rb   r}   r|   rq   rr   )r   r
   r   r!   rg   r	   )r#   r}   r|   rz   warnrb   rr   s          r$   r~   zDataManager.putmask   sl    J J48C+-N04-$$!)+) % 
 	
r&   c                *    | j                  d||      S )Nround)decimalsrq   )rg   )r#   r   rq   s      r$   r   zDataManager.round   s#    $$ % 
 	
r&   c           	         t        |d      }t        j                  |      rJ t        j                  |      rJ | j                  d|||t	               t                     S )Nro   replace)
to_replacern   ro   rq   rr   )r   r   is_list_likerg   r	   r   )r#   r   rn   ro   s       r$   r   zDataManager.replace   sf    %gy9##J///##E***$$!)+)+ % 
 	
r&   c                R     | j                   	 di |t               t               dS )Nrq   rr   )_replace_regexrg   r	   r   )r#   rc   s     r$   replace_regexzDataManager.replace_regex  s5    $t$$

 *+)+	
 	
r&   c           
         t        |d      }| j                  d||||t               t                     }|j	                          |S )zdo a list replacero   replace_list)src_list	dest_listro   regexrq   rr   )r   rg   r	   r   _consolidate_inplace)r#   r   r   ro   r   bms         r$   r   zDataManager.replace_list  sS     &gy9"")+)+ # 
 	!	r&   c                V     | j                   	 dd|i|t               t               dS )Nro   r   )interpolater   r#   ro   rc   s      r$   r   zDataManager.interpolate"  s?    $t$$

 
 *+)+
 	
r&   c                V     | j                   	 dd|i|t               t               dS )Nro   r   )pad_or_backfillr   r   s      r$   r   zDataManager.pad_or_backfill+  s?    $t$$

 
 *+)+
 	
r&   c                R    |t         j                  u rd }| j                  d||      S )Nshift)periodsrH   )r   
no_defaultrg   )r#   r   rH   s      r$   r   zDataManager.shift4  s+    'J$$Wg*$UUr&   c                     y)NTr*   r"   s    r$   is_consolidatedzDataManager.is_consolidated=  s    r&   c                    | S r/   r*   r"   s    r$   consolidatezDataManager.consolidate@  s    r&   c                     y r/   r*   r"   s    r$   r   z DataManager._consolidate_inplaceC  s    r&   )returnr   )r   int)r   r   )r@   r   rA   r   r   None)NFTF)
r@   r   rI   boolrJ   r   rK   r   r   r   r    )rO   r   r@   r   rK   r   r   r   )rR   r   r   r   )rR   objectr   r   r/   )rb   zlist[str] | Noner   r   )r   r   )rl   z
int | Nonero   r   r   r   )rz   r   r   r   )TT)rz   r   r   r   r   r   )F)r   r   rq   r   r   r   )ro   r   r   r   )FF)
r   	list[Any]r   r   ro   r   r   r   r   r   )r   r   r   r   )r   r   )r   r   )r'   r(   r)   __annotations__propertyr0   r   r3   r5   r<   rD   rL   rP   rS   rV   rd   rg   rj   rm   ry   r~   r   r   r   r   r   r   r   r   r   r   r*   r&   r$   r,   r,   A   s?    ( (     2 2  *   
( 	
( 
( 
( 
( 

( 
  

 

 
 

 
*( ) )$ (,( %(
 
( (,( %(
 
( . . 
 
 
 
 
 
, 
 
 
 
 
 
 
   	
  
 ,

Vr&   r,   c                  \    e Zd Zedd       Zeedd              Zd	d
dZd Ze	dd       Z
y)SingleDataManagerc                     y)Nr>   r*   r"   s    r$   r5   zSingleDataManager.ndimH  s    r&   c                     | j                   d   S )zW
        Quick access to the backing array of the Block or SingleArrayManager.
        r   )arraysr"   s    r$   arrayzSingleDataManager.arrayL  s     {{1~r&   c                    | j                   }t        |t        j                        rt	        |j
                  |      }t        |t        j                        r"|j                  dk(  rt        |      dk(  r|d   }|||<   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.
        r>   )r   .N)r   rY   npndarrayr   dtyper5   r2   )r#   rG   rn   r   arrs        r$   setitem_inplacez!SingleDataManager.setitem_inplaceU  sc     jj c2::& (		59EeRZZ(UZZ1_Uq&MEGr&   c                    | j                   } ||      }t        t        |            }t        |       j	                  ||      }|S r/   )r   r   r2   rZ   
from_array)r#   ri   r   resindexmgrs         r$   grouped_reducez SingleDataManager.grouped_reducem  s=    jj3ic#h'4j##C/
r&   c                    t        |       r/   r   )clsr   r   s      r$   r   zSingleDataManager.from_arrayu  s    !#&&r&   N)r   z
Literal[1])r   r   )T)r   r   r   r   )r   r   r   r   )r'   r(   r)   r   r5   r   r   r   r   classmethodr   r*   r&   r$   r   r   G  sN        0 ' 'r&   r   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)r2   r   )dtypess    r$   interleaved_dtyper   z  s     v;F##r&   c                &   t        | t              r(| j                  } t        t        j
                  |       } | S t        | t              rt	        j
                  d      } | S | t	        j
                  t              k(  rt	        j
                  d      } | S )Nr   )rY   r   subtyper   r   r   r   str)r   s    r$   ensure_np_dtyper     st     %%RXXu%
 L	 
E>	*" L 
"((3-	"Lr&   )r   zlist[DtypeObj]r   zDtypeObj | None)r   r   r   znp.dtype).__doc__
__future__r   typingr   r   r   r   r   numpyr   pandas._configr	   r
   pandas._libsr   rs   r   pandas.errorsr   pandas.util._validatorsr   pandas.core.dtypes.castr   r   pandas.core.dtypes.dtypesr   r   pandas.core.baser   pandas.core.constructionr   pandas.core.indexes.apir   r   pandas._typingr   r   r   r   r   r   r,   r   r   r   r*   r&   r$   <module>r      s    #  
 . 7
 * 2
  $ $C, CL0' 0'f$&
r&   