o
    $j+                     @  s  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rjddl#m$Z$m%Z%m&Z&m'Z'm(Z( G dd dZ)G dd deZ*G dd de*Z+d ddZ,d!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                   @  s   e Zd Zdd ZdS )_AlreadyWarnedc                 C  s
   d| _ d S NF)warned_alreadyself r!   [/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/pandas/core/internals/base.py__init__8   s   
z_AlreadyWarned.__init__N)__name__
__module____qualname__r#   r!   r!   r!   r"   r   7   s    r   c                   @  sn  e Zd ZU ded< edVddZedWdd	ZedWd
dZedXddZ	edYddZ
				dZd[ddZe		d\d]d d!Zd^d#d$Zed_d&d'Z	d`dad*d+Z	d`dad,d-Zedbd.d/Zedcd3d4Zeddd6d7Zededfd9d:Zedgdhd=d>Zedid?d@ZedbdAdBZe		djdkdGdHZdidIdJZdidKdLZdldNdOZdmdPdQZdbdRdSZdndTdUZdS )oDataManagerzlist[Index]axesreturnr   c                 C     t | Nr   r   r!   r!   r"   itemsF      zDataManager.itemsintc                 C  
   t | jS r+   )lenr,   r   r!   r!   r"   __len__J      
zDataManager.__len__c                 C  r/   r+   )r0   r(   r   r!   r!   r"   ndimN   r2   zDataManager.ndimr   c                 C  s   t dd | jD S )Nc                 s  s    | ]}t |V  qd S r+   )r0   ).0axr!   r!   r"   	<genexpr>T   s    z$DataManager.shape.<locals>.<genexpr>)tupler(   r   r!   r!   r"   shapeR   s   zDataManager.shapeaxisr   
new_labelsNonec                 C  sR   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)r0   r(   r,   
ValueError)r    r9   r:   Zold_lenZnew_lenr!   r!   r"   _validate_set_axisV   s   zDataManager._validate_set_axisNFT
allow_dupsboolcopy
only_slicer   c                 C  r*   r+   r   )r    Znew_axisindexerr9   
fill_valuer?   rA   rB   r!   r!   r"   reindex_indexerg   s   
zDataManager.reindex_indexer	new_indexc                 C  s*   | j | |\}}| j||||d|dS )z4
        Conform data manager to new index.
        F)r9   rD   rA   rB   )r(   ZreindexrE   )r    rF   r9   rD   rB   rC   r!   r!   r"   reindex_axiss   s   zDataManager.reindex_axisotherc                 C  r*   )z
        To be implemented by the subclasses. Only check the column values
        assuming shape and indexes have already been checked.
        r   )r    rH   r!   r!   r"   _equal_values   s   zDataManager._equal_valuesobjectc                 C  sZ   t |t| s	dS | j|j}}t|t|krdS tdd t||D s(dS | |S )z5
        Implementation for DataFrame.equals
        Fc                 s  s    | ]
\}}| |V  qd S r+   )equals)r4   Zax1Zax2r!   r!   r"   r6      s    z%DataManager.equals.<locals>.<genexpr>)
isinstancetyper(   r0   allziprI   )r    rH   Z	self_axesZ
other_axesr!   r!   r"   rK      s   
zDataManager.equals
align_keyslist[str] | Nonec                 K  r*   r+   r   r    frP   kwargsr!   r!   r"   apply      zDataManager.applyc                 K  r*   r+   r   rR   r!   r!   r"   apply_with_block   rV   zDataManager.apply_with_blockc                 C  s   | j d|dS )NrU   )func)rU   )r    rX   r!   r!   r"   isna   s   zDataManager.isnalimit
int | Noneinplacec              	   C  s2   |d urt jd |d}| jd||||t t dS )N)rZ   fillna)valuerZ   r\   downcast	using_cowalready_warned)libalgosZvalidate_limitrW   r   r   )r    r^   rZ   r\   r_   r!   r!   r"   r]      s   zDataManager.fillnaalignc                 C  s6   |rddg}n	dg}t |dd}| jd|||t dS )NrH   condTZextract_numpywhere)rP   rH   rd   r`   )r   rW   r   )r    rH   rd   rc   rP   r!   r!   r"   rf      s   
zDataManager.wherewarnc                 C  sR   |rddg}n	dg}t |dd}d }t rt }|sd|_| jd|||t |dS )NnewmaskTre   putmask)rP   ri   rh   r`   ra   )r   r	   r   r   rW   r   )r    ri   rh   rc   rg   rP   ra   r!   r!   r"   rj      s"   
zDataManager.putmaskdecimalsr`   c                 C  s   | j d||dS )Nround)rk   r`   )rW   )r    rk   r`   r!   r!   r"   rl      s
   zDataManager.roundc                 C  s@   t |d}t|rJ t|rJ | jd|||t t dS )Nr\   replace)
to_replacer^   r\   r`   ra   )r   r   Zis_list_likerW   r   r   )r    rn   r^   r\   r!   r!   r"   rm      s   
zDataManager.replacec                 K  s    | j 	di |t t dS )N_replace_regexr`   ra   )ro   rW   r   r   )r    rT   r!   r!   r"   replace_regex  s   
zDataManager.replace_regexsrc_list	list[Any]	dest_listregexc              	   C  s2   t |d}| jd||||t t d}|  |S )zdo a list replacer\   replace_list)rs   ru   r\   rv   r`   ra   )r   rW   r   r   _consolidate_inplace)r    rs   ru   r\   rv   Zbmr!   r!   r"   rw     s   
		zDataManager.replace_listc                 K  $   | j 	dd|i|t t dS )Ninterpolater\   rp   )rz   rq   r    r\   rT   r!   r!   r"   rz   "     
zDataManager.interpolatec                 K  ry   )Npad_or_backfillr\   rp   )r}   rq   r{   r!   r!   r"   r}   +  r|   zDataManager.pad_or_backfillperiodsc                 C  s   |t ju rd }| jd||dS )Nshift)r~   rD   )r   Z
no_defaultrW   )r    r~   rD   r!   r!   r"   r   4  s   
zDataManager.shiftc                 C     dS )NTr!   r   r!   r!   r"   is_consolidated=     zDataManager.is_consolidatedc                 C  s   | S r+   r!   r   r!   r!   r"   consolidate@  r   zDataManager.consolidatec                 C  s   d S r+   r!   r   r!   r!   r"   rx   C  r   z DataManager._consolidate_inplace)r)   r   )r)   r.   )r)   r   )r9   r   r:   r   r)   r;   )NFTF)
r9   r   r?   r@   rA   r@   rB   r@   r)   r   r   )rF   r   r9   r   rB   r@   r)   r   )rH   r   r)   r@   )rH   rJ   r)   r@   r+   )rP   rQ   r)   r   )r)   r   )rZ   r[   r\   r@   r)   r   )rc   r@   r)   r   )TT)rc   r@   rg   r@   r)   r   )F)rk   r.   r`   r@   r)   r   )r\   r@   r)   r   )FF)
rs   rt   ru   rt   r\   r@   rv   r@   r)   r   )r~   r.   r)   r   )r)   r@   )r)   r;   )r$   r%   r&   __annotations__propertyr,   r   r1   r3   r8   r>   rE   rG   rI   rK   rU   rW   rY   r]   rf   rj   rl   rm   rr   rw   rz   r}   r   r   r   rx   r!   r!   r!   r"   r'   A   sh   
 


	
	
	
r'   c                   @  sN   e Zd ZedddZeedddZddddZdd Ze	dddZ
dS )SingleDataManagerr)   
Literal[1]c                 C  r   )Nr<   r!   r   r!   r!   r"   r3   H  s   zSingleDataManager.ndimr   c                 C  s
   | j d S )zW
        Quick access to the backing array of the Block or SingleArrayManager.
        r   )Zarraysr   r!   r!   r"   arrayL  s   
zSingleDataManager.arrayTrg   r@   r;   c                 C  sT   | 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.
        r<   )r   .N)r   rL   npZndarrayr   dtyper3   r0   )r    rC   r^   rg   arrr!   r!   r"   setitem_inplaceU  s   
"z!SingleDataManager.setitem_inplacec                 C  s.   | j }||}tt|}t| ||}|S r+   )r   r   r0   rM   
from_array)r    rX   r   resindexZmgrr!   r!   r"   grouped_reducem  s
   z SingleDataManager.grouped_reducer   r   r   c                 C  r*   r+   r   )clsr   r   r!   r!   r"   r   u  r-   zSingleDataManager.from_arrayN)r)   r   )r)   r   )T)rg   r@   r)   r;   )r   r   r   r   )r$   r%   r&   r   r3   r   r   r   r   classmethodr   r!   r!   r!   r"   r   G  s    r   dtypeslist[DtypeObj]r)   DtypeObj | Nonec                 C  s   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)r0   r   )r   r!   r!   r"   interleaved_dtypez  s   r   r   r   np.dtypec                 C  sT   t | tr| j} ttj| } | S t | trtd} | S | ttkr(td} | S )NrJ   )rL   r   subtyper   r   r   r   str)r   r!   r!   r"   ensure_np_dtype  s   



r   )r   r   r)   r   )r   r   r)   r   ).__doc__
__future__r   typingr   r   r   r   r   numpyr   Zpandas._configr   r	   Zpandas._libsr
   rb   r   Zpandas.errorsr   Zpandas.util._validatorsr   Zpandas.core.dtypes.castr   r   Zpandas.core.dtypes.dtypesr   r   Zpandas.core.baser   Zpandas.core.constructionr   Zpandas.core.indexes.apir   r   Zpandas._typingr   r   r   r   r   r   r'   r   r   r   r!   r!   r!   r"   <module>   s,    	
  
3