o
    �¨Êh'  ã                   @  s€   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z
 d dlmZ er6d dlmZmZ d dlm	Z	mZ G d	d
„ d
e
ƒZdS )é    )Úannotations)Úabc)ÚTYPE_CHECKING)ÚPandasColumn)Ú	DataFrame)Úmaybe_rechunk)ÚIterableÚSequence)r   ÚIndexc                   @  sž   e Zd ZdZd5d6d	d
„Z	d7d8dd„Zed9dd„ƒZd:dd„Zd:dd„Z	d:dd„Z
d;dd„Zd<dd„Zd=d"d#„Zd>d%d&„Zd?d)d*„Zd@d-d.„ZdAdBd3d4„Zd/S )CÚPandasDataFrameXchga  
    A data frame class, with only the methods required by the interchange
    protocol defined.
    Instances of this (private) class are returned from
    ``pd.DataFrame.__dataframe__`` as objects with the methods and
    attributes defined on this class.
    TÚdfr   Ú
allow_copyÚboolÚreturnÚNonec                 C  sb   |j tdd�| _|| _t| jjƒD ]\}}t| jjdd…|f |d�}|dur.| j ||¡ qdS )zz
        Constructor - an instance of this (private) class is returned from
        `pd.DataFrame.__dataframe__`.
        F)ÚcolumnsÚcopyN©r   )	ÚrenameÚstrÚ_dfÚ_allow_copyÚ	enumerater   r   ÚilocÚisetitem)Úselfr   r   ÚiÚ_colÚ	rechunked© r   úS/var/www/html/env/lib/python3.10/site-packages/pandas/core/interchange/dataframe.pyÚ__init__   s   €ýzPandasDataFrameXchg.__init__FÚnan_as_nullc                 C  s   t | j|ƒS ©N)r   r   )r   r"   r   r   r   r    Ú__dataframe__+   s   z!PandasDataFrameXchg.__dataframe__údict[str, Index]c                 C  s   d| j jiS )Nzpandas.index)r   Úindex©r   r   r   r    Úmetadata2   s   zPandasDataFrameXchg.metadataÚintc                 C  s   t | jjƒS r#   )Úlenr   r   r'   r   r   r    Únum_columns8   s   zPandasDataFrameXchg.num_columnsc                 C  s
   t | jƒS r#   )r*   r   r'   r   r   r    Únum_rows;   s   
zPandasDataFrameXchg.num_rowsc                 C  s   dS )Né   r   r'   r   r   r    Ú
num_chunks>   s   zPandasDataFrameXchg.num_chunksr
   c                 C  s   | j jS r#   ©r   r   r'   r   r   r    Úcolumn_namesA   s   z PandasDataFrameXchg.column_namesr   r   c                 C  s   t | jjd d …|f | jd�S ©Nr   )r   r   r   r   )r   r   r   r   r    Ú
get_columnD   s   zPandasDataFrameXchg.get_columnÚnamer   c                 C  s   t | j| | jd�S r1   ©r   r   r   )r   r3   r   r   r    Úget_column_by_nameG   s   z&PandasDataFrameXchg.get_column_by_nameúlist[PandasColumn]c                   s   ‡ fdd„ˆ j jD ƒS )Nc                   s    g | ]}t ˆ j| ˆ jd �‘qS )r   r4   )Ú.0r3   r'   r   r    Ú
<listcomp>K   s    ÿÿz3PandasDataFrameXchg.get_columns.<locals>.<listcomp>r/   r'   r   r'   r    Úget_columnsJ   s   
þzPandasDataFrameXchg.get_columnsÚindicesúSequence[int]c                 C  óD   t |tjƒs
tdƒ‚t |tƒst|ƒ}t| jjd d …|f | jd�S )Nz`indices` is not a sequencer   )	Ú
isinstancer   r	   Ú
ValueErrorÚlistr   r   r   r   )r   r:   r   r   r    Úselect_columnsP   s   
ÿz"PandasDataFrameXchg.select_columnsÚnamesú	list[str]c                 C  r<   )Nz`names` is not a sequencer   )	r=   r   r	   r>   r?   r   r   Úlocr   )r   rA   r   r   r    Úselect_columns_by_nameZ   s
   
z*PandasDataFrameXchg.select_columns_by_nameNÚn_chunksú
int | NoneúIterable[PandasDataFrameXchg]c                 c  s€   � |r;|dkr;t | jƒ}|| }|| dkr|d7 }td|| |ƒD ]}t| jj||| …dd…f | jd�V  q"dS | V  dS )z9
        Return an iterator yielding the chunks.
        r-   r   Nr   )r*   r   Úranger   r   r   )r   rE   ÚsizeÚstepÚstartr   r   r    Ú
get_chunksb   s   €

þÿ
zPandasDataFrameXchg.get_chunks)T)r   r   r   r   r   r   )FT)r"   r   r   r   r   r   )r   r%   )r   r)   )r   r
   )r   r)   r   r   )r3   r   r   r   )r   r6   )r:   r;   r   r   )rA   rB   r   r   r#   )rE   rF   r   rG   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r!   r$   Úpropertyr(   r+   r,   r.   r0   r2   r5   r9   r@   rD   rL   r   r   r   r    r      s"    ÿ









r   N)Ú
__future__r   Úcollectionsr   Útypingr   Úpandas.core.interchange.columnr   Ú*pandas.core.interchange.dataframe_protocolr   ÚDataFrameXchgÚpandas.core.interchange.utilsr   Úcollections.abcr   r	   Úpandasr
   r   r   r   r   r    Ú<module>   s    