o
    ҷho                     @  st   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r0d 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)IterableSequence)r   Indexc                   @  s   e Zd ZdZ	d5d6ddZ	d5d7ddZed8ddZd9ddZd9ddZ	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@dAd3d4Zd/S )B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.
    FTdfr   nan_as_nullbool
allow_copyreturnNonec                 C  s   || _ || _|| _dS )zz
        Constructor - an instance of this (private) class is returned from
        `pd.DataFrame.__dataframe__`.
        N)_df_nan_as_null_allow_copy)selfr   r   r    r   T/var/www/html/venv/lib/python3.10/site-packages/pandas/core/interchange/dataframe.py__init__   s   
zPandasDataFrameXchg.__init__c                 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   columnsr   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_namesir   c                 C  s   t | jjd d |f | jdS Nr   )r   r   ilocr   )r   r'   r   r   r   
get_columnD   s   zPandasDataFrameXchg.get_columnnamestrc                 C  s   t | j| | jdS r(   r   r   r   )r   r,   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)   r.   ).0r,   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  F   t |tjs
tdt |tst|}t| jjd d |f | j| j	S )Nz`indices` is not a sequence)

isinstancer   r   
ValueErrorlistr
   r   r*   r   r   )r   r4   r   r   r   select_columnsP      
z"PandasDataFrameXchg.select_columnsnames	list[str]c                 C  r6   )Nz`names` is not a sequence)
r7   r   r   r8   r9   r
   r   locr   r   )r   r<   r   r   r   select_columns_by_nameZ   r;   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| jV  q"dS | V  dS )z9
        Return an iterator yielding the chunks.
        r#   r   N)r   r   ranger
   r*   r   r   )r   r@   sizestepstartr   r   r   
get_chunksd   s   

zPandasDataFrameXchg.get_chunks)FT)r   r   r   r   r   r   r   r   )r   r   r   r   r   r
   )r   r   )r   r   )r   r	   )r'   r   r   r   )r,   r-   r   r   )r   r0   )r4   r5   r   r
   )r<   r=   r   r
   r   )r@   rA   r   rB   )__name__
__module____qualname____doc__r   r   propertyr   r!   r"   r$   r&   r+   r/   r3   r:   r?   rG   r   r   r   r   r
      s$    	









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