o
    kìEi™+  ã                   @  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!   úW/var/www/agentarbitrage/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:   Úold_lenÚ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    Únew_axisÚindexerr9   Ú
fill_valuerA   rC   rD   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   rG   rC   rD   )r(   ÚreindexrH   )r    rI   r9   rG   rD   rF   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    rL   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   Úax1Úax2r!   r!   r"   r6   ›   s   € z%DataManager.equals.<locals>.<genexpr>)Ú
isinstanceÚtyper(   r0   ÚallÚziprM   )r    rL   Ú	self_axesÚ
other_axesr!   r!   r"   rO   �   s   
zDataManager.equalsÚ
align_keysúlist[str] | Nonec                 K  r*   r+   r   ©r    ÚfrX   Úkwargsr!   r!   r"   Úapply    ó   zDataManager.applyc                 K  r*   r+   r   rZ   r!   r!   r"   Úapply_with_block¨   r^   zDataManager.apply_with_blockc                 C  s   | j d|d�S )Nr]   )Úfunc)r]   )r    r`   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)rb   Úfillna)Úvaluerb   rd   ÚdowncastÚ	using_cowÚalready_warned)ÚlibalgosÚvalidate_limitr_   r   r   )r    rf   rb   rd   rg   r!   r!   r"   re   ´   s   ùzDataManager.fillnaÚalignc                 C  s6   |rddg}n	dg}t |dd�}| jd|||tƒ d�S )NrL   ÚcondT©Úextract_numpyÚwhere)rX   rL   rm   rh   )r   r_   r   )r    rL   rm   rl   rX   r!   r!   r"   rp   Ä   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ÚmaskTrn   Úputmask)rX   rs   rr   rh   ri   )r   r	   r   r   r_   r   )r    rs   rr   rl   rq   rX   ri   r!   r!   r"   rt   Ô   s"   
úzDataManager.putmaskÚdecimalsrh   c                 C  s   | j d||d�S )NÚround)ru   rh   )r_   )r    ru   rh   r!   r!   r"   rv   ë   s
   ýzDataManager.roundc                 C  s@   t |dƒ}t |¡rJ ‚t |¡rJ ‚| jd|||tƒ tƒ d�S )Nrd   Úreplace)Ú
to_replacerf   rd   rh   ri   )r   r   Úis_list_liker_   r   r   )r    rx   rf   rd   r!   r!   r"   rw   ó   s   
úzDataManager.replacec                 K  s    | j 	di |¤tƒ tƒ dœ¤ŽS )NÚ_replace_regex©rh   ri   )rz   ©r_   r   r   )r    r\   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 replacerd   Úreplace_list)r~   r€   rd   r�   rh   ri   )r   r_   r   r   Ú_consolidate_inplace)r    r~   r€   rd   r�   Úbmr!   r!   r"   r‚     s   
	ù	zDataManager.replace_listc                 K  ó$   | j 	dd|i|¤tƒ tƒ dœ¤ŽS )NÚinterpolaterd   r{   )r†   r|   ©r    rd   r\   r!   r!   r"   r†   "  ó   ÿþý
ûzDataManager.interpolatec                 K  r…   )NÚpad_or_backfillrd   r{   )r‰   r|   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Š   rG   )r   Ú
no_defaultr_   )r    rŠ   rG   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"   rƒ   C  r�   z DataManager._consolidate_inplace)r)   r   )r)   r.   )r)   r   )r9   r   r:   r   r)   r;   )NFTF)
r9   r   rA   rB   rC   rB   rD   rB   r)   r   r   )rI   r   r9   r   rD   rB   r)   r   )rL   r   r)   rB   )rL   rN   r)   rB   r+   )rX   rY   r)   r   )r)   r   )rb   rc   rd   rB   r)   r   )rl   rB   r)   r   )TT)rl   rB   rq   rB   r)   r   )F)ru   r.   rh   rB   r)   r   )rd   rB   r)   r   )FF)
r~   r   r€   r   rd   rB   r�   rB   r)   r   )rŠ   r.   r)   r   )r)   rB   )r)   r;   )r$   r%   r&   Ú__annotations__Úpropertyr,   r   r1   r3   r8   r@   rH   rK   rM   rO   r]   r_   ra   re   rp   rt   rv   rw   r}   r‚   r†   r‰   r‹   rŽ   r�   rƒ   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   )Úarraysr   r!   r!   r"   ÚarrayL  s   
zSingleDataManager.arrayTrq   rB   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–   rR   ÚnpÚndarrayr   Údtyper3   r0   )r    rF   rf   rq   Úarrr!   r!   r"   Úsetitem_inplaceU  s   
"z!SingleDataManager.setitem_inplacec                 C  s.   | j }||ƒ}tt|ƒƒ}t| ƒ ||¡}|S r+   )r–   r   r0   rS   Ú
from_array)r    r`   rš   ÚresÚindexÚ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)rq   rB   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 )NrN   )rR   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—   Úpandas._configr   r	   Úpandas._libsr
   rj   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!   r"   Ú<module>   s,    	
  
3