
    Eg+                    <   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-dS ) 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dS )_AlreadyWarnedc                    d| _         d S NF)warned_alreadyselfs    O/var/www/sysmax/venv/lib/python3.11/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
	 	 	 	 dAdBdZe	 	 dCdDd            ZdEdZedFd            Z	 dGdHd!Z	 dGdHd"ZedId#            ZedJd'            ZedKd)            ZedLdMd+            ZedNdOd.            ZedPd/            ZedId0            Ze	 	 dQdRd5            ZdPd6ZdPd7ZdSd9ZdTd:ZdId;ZdUd<ZdS )VDataManagerzlist[Index]axesreturnr   c                     t          |           Nr   r"   s    r$   itemszDataManager.itemsF   s    !$'''r&   intc                *    t          | j                  S r0   )lenr1   r"   s    r$   __len__zDataManager.__len__J   s    4:r&   c                *    t          | j                  S r0   )r4   r-   r"   s    r$   ndimzDataManager.ndimN   s    49~~r&   r   c                >    t          d | j        D                       S )Nc              3  4   K   | ]}t          |          V  d S r0   )r4   ).0axs     r$   	<genexpr>z$DataManager.shape.<locals>.<genexpr>T   s(      11SWW111111r&   )tupler-   r"   s    r$   shapezDataManager.shapeR   s!    11ty111111r&   axisr   
new_labelsNonec                    t          | j        |                   }t          |          }|dk    rt          | j                  dk    rd S ||k    rt          d| d| d          d S )N   r   z#Length mismatch: Expected axis has z elements, new values have z	 elements)r4   r-   r1   
ValueError)r#   r?   r@   old_lennew_lens        r$   _validate_set_axiszDataManager._validate_set_axisV   s     dio&&j//199TZA-- D2g 2 2&2 2 2    r&   NFT
allow_dupsboolcopy
only_slicer   c                     t          |           r0   r   )r#   new_axisindexerr?   
fill_valuerH   rJ   rK   s           r$   reindex_indexerzDataManager.reindex_indexerg   s     "$'''r&   	new_indexc                ~    | j         |                             |          \  }}|                     ||||d|          S )z4
        Conform data manager to new index.
        F)r?   rO   rJ   rK   )r-   reindexrP   )r#   rQ   r?   rO   rK   rN   s         r$   reindex_axiszDataManager.reindex_axiss   sQ     "Yt_44Y??	7##!! $ 
 
 	
r&   otherc                     t          |           )z
        To be implemented by the subclasses. Only check the column values
        assuming shape and indexes have already been checked.
        r   )r#   rU   s     r$   _equal_valueszDataManager._equal_values   s    
 "$'''r&   objectc                   t          |t          |                     sdS | j        |j        }}t          |          t          |          k    rdS t	          d t          ||          D                       sdS |                     |          S )z5
        Implementation for DataFrame.equals
        Fc              3  F   K   | ]\  }}|                     |          V  d S r0   )equals)r:   ax1ax2s      r$   r<   z%DataManager.equals.<locals>.<genexpr>   s0      NNxsC3::c??NNNNNNr&   )
isinstancetyper-   r4   allziprW   )r#   rU   	self_axes
other_axess       r$   r[   zDataManager.equals   s    
 %d,, 	5 $	5::	y>>S__,,5NN3y*3M3MNNNNN 	5!!%(((r&   
align_keyslist[str] | Nonec                     t          |           r0   r   r#   frd   kwargss       r$   applyzDataManager.apply        "$'''r&   c                     t          |           r0   r   rg   s       r$   apply_with_blockzDataManager.apply_with_block   rk   r&   c                0    |                      d|          S )Nrj   )func)rj   )r#   ro   s     r$   isnazDataManager.isna   s    zz'z---r&   limit
int | Noneinplacec           
         |t          j        d |          }|                     d||||t                      t	                                S )N)rq   fillna)valuerq   rs   downcast	using_cowalready_warned)libalgosvalidate_limitrm   r	   r   )r#   rv   rq   rs   rw   s        r$   ru   zDataManager.fillna   s[    +D>>>E$$)++)++ % 
 
 	
r&   alignc                    |rddg}ndg}t          |d          }|                     d|||t                                S )NrU   condTextract_numpywhere)rd   rU   r~   rx   )r   rm   r	   )r#   rU   r~   r|   rd   s        r$   r   zDataManager.where   sa     	=!6*JJ J!%t<<<E$$!)++ % 
 
 	
r&   warnc                    |rddg}ndg}t          |d          }d }t                      rt                      }|sd|_        |                     d|||t                      |          S )NnewmaskTr   putmask)rd   r   r   rx   ry   )r   r
   r   r!   rm   r	   )r#   r   r   r|   r   rd   ry   s          r$   r   zDataManager.putmask   s     	9JJ J4888C 	5+--N 504-$$!)++) % 
 
 	
r&   decimalsrx   c                2    |                      d||          S )Nround)r   rx   )rm   )r#   r   rx   s      r$   r   zDataManager.round   s(    $$ % 
 
 	
r&   c           	         t          |d          }t          j        |          rJ t          j        |          rJ |                     d|||t	                      t                                S )Nrs   replace)
to_replacerv   rs   rx   ry   )r   r   is_list_likerm   r	   r   )r#   r   rv   rs   s       r$   r   zDataManager.replace   sz    %gy99#J/////#E*****$$!)++)++ % 
 
 	
r&   c                X     | j         	 di |t                      t                      dS )N_replace_regexrx   ry   )r   rm   r	   r   )r#   ri   s     r$   replace_regexzDataManager.replace_regex  sL    $t$
 

 *++)++	
 
 
 
 	
r&   src_list	list[Any]	dest_listregexc           
         t          |d          }|                     d||||t                      t                                }|                                 |S )zdo a list replacers   replace_list)r   r   rs   r   rx   ry   )r   rm   r	   r   _consolidate_inplace)r#   r   r   rs   r   bms         r$   r   zDataManager.replace_list  sg     &gy99"")++)++ # 
 
 	!!!	r&   c                \     | j         	 dd|i|t                      t                      dS )Ninterpolaters   r   )r   r   r#   rs   ri   s      r$   r   zDataManager.interpolate"  sV    $t$
 

 
 *++)++
 
 
 
 	
r&   c                \     | j         	 dd|i|t                      t                      dS )Npad_or_backfillrs   r   )r   r   r   s      r$   r   zDataManager.pad_or_backfill+  sV    $t$
 

 
 *++)++
 
 
 
 	
r&   periodsc                R    |t           j        u rd }|                     d||          S )Nshift)r   rO   )r   
no_defaultrm   )r#   r   rO   s      r$   r   zDataManager.shift4  s/    ''J$$Wg*$UUUr&   c                    dS )NTr*   r"   s    r$   is_consolidatedzDataManager.is_consolidated=  s    tr&   c                    | S r0   r*   r"   s    r$   consolidatezDataManager.consolidate@  s    r&   c                    d S r0   r*   r"   s    r$   r   z DataManager._consolidate_inplaceC  s    r&   )r.   r   )r.   r2   )r.   r   )r?   r   r@   r   r.   rA   )NFTF)
r?   r   rH   rI   rJ   rI   rK   rI   r.   r   r    )rQ   r   r?   r   rK   rI   r.   r   )rU   r   r.   rI   )rU   rX   r.   rI   r0   )rd   re   r.   r   )r.   r   )rq   rr   rs   rI   r.   r   )r|   rI   r.   r   )TT)r|   rI   r   rI   r.   r   )F)r   r2   rx   rI   r.   r   )rs   rI   r.   r   )FF)
r   r   r   r   rs   rI   r   rI   r.   r   )r   r2   r.   r   )r.   rI   )r.   rA   )r'   r(   r)   __annotations__propertyr1   r   r5   r7   r>   rG   rP   rT   rW   r[   rj   rm   rp   ru   r   r   r   r   r   r   r   r   r   r   r   r   r*   r&   r$   r,   r,   A   s         ( ( ( X(    U    X 2 2 2 X2    U*   
( 
( 
( 
( 
( 
  
 
 
 
 U
*( ( ( ( ) ) ) U)$ (,( ( ( ( ( (,( ( ( ( ( . . . U. 
 
 
 U
 
 
 
 U
 
 
 
 
 U
, 
 
 
 
 U
 
 
 
 U
 
 
 
 U
 
     U,
 
 
 

 
 
 
V V V V           r&   r,   c                  v    e Zd Zedd            Zeedd                        Zddd
Zd Ze	dd            Z
dS )SingleDataManagerr.   
Literal[1]c                    dS )NrC   r*   r"   s    r$   r7   zSingleDataManager.ndimH  s    qr&   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&   Tr   rI   rA   c                    | j         }t          |t          j                  rt	          |j        |          }t          |t          j                  r&|j        dk    rt          |          dk    r|d         }|||<   dS )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.
        rC   )r   .N)r   r^   npndarrayr   dtyper7   r4   )r#   rN   rv   r   arrs        r$   setitem_inplacez!SingleDataManager.setitem_inplaceU  sv     j c2:&& 	: (	599EeRZ(( 	"UZ1__Uq&MEGr&   c                    | j         } ||          }t          t          |                    }t          |                               ||          }|S r0   )r   r   r4   r_   
from_array)r#   ro   r   resindexmgrs         r$   grouped_reducez SingleDataManager.grouped_reducem  sI    jd3iic#hh''4jj##C//
r&   r   r   r   c                     t          |           r0   r   )clsr   r   s      r$   r   zSingleDataManager.from_arrayu  s    !#&&&r&   N)r.   r   )r.   r   )T)r   rI   r.   rA   )r   r   r   r   )r'   r(   r)   r   r7   r   r   r   r   classmethodr   r*   r&   r$   r   r   G  s           X    X U    0   ' ' ' [' ' 'r&   r   dtypeslist[DtypeObj]r.   DtypeObj | Nonec                B    t          |           sdS 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)r4   r   )r   s    r$   interleaved_dtyper   z  s%     v;; tF###r&   r   r   np.dtypec                *   t          | t                    r"| j        } t          t          j        |           } n[t          | t                    rt	          j        d          } n1| t	          j        t                    k    rt	          j        d          } | S )NrX   )r^   r   subtyper   r   r   r   str)r   s    r$   ensure_np_dtyper     sz     %%% #RXu%%	E>	*	* #""	"(3--		""Lr&   )r   r   r.   r   )r   r   r.   r   ).__doc__
__future__r   typingr   r   r   r   r   numpyr   pandas._configr	   r
   pandas._libsr   rz   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 7 7 7 7 7              
 * ) ) ) ) ) 2 2 2 2 2 2       
               $ $ $ $ $ $ $ $C C C C C, C C CL0' 0' 0' 0' 0' 0' 0' 0'f$ $ $ $&
 
 
 
 
 
r&   