o
    5c                     @  sh   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r*d dlZd dlmZ G dd	 d	e
ZdS )
    )annotations)abc)TYPE_CHECKING)PandasColumn)	DataFrameN)Indexc                   @  s   e Zd ZdZ	d.d/ddZ	d.d0ddZed1ddZd2ddZd2ddZ	d2ddZ
d3ddZd4ddZd5d"d#Zd6d%d&Zd7d'd(Zd7d)d*Zd8d,d-Zd+S )9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dfpd.DataFrame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   W/var/www/html/gps/gps/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   metadata+   s   zPandasDataFrameXchg.metadataintc                 C  s   t | jjS r   )lenr   columnsr   r   r   r   num_columns1   s   zPandasDataFrameXchg.num_columnsc                 C  s
   t | jS r   )r   r   r   r   r   r   num_rows4   s   
zPandasDataFrameXchg.num_rowsc                 C  s   dS )N   r   r   r   r   r   
num_chunks7   s   zPandasDataFrameXchg.num_chunksr   c                 C  s   | j jS r   r   r   r   r   r   r   column_names:   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_column=   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_name@   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>D   s    z3PandasDataFrameXchg.get_columns.<locals>.<listcomp>r$   r   r   r   r   get_columnsC   s   
zPandasDataFrameXchg.get_columnsc                 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   Sequence
ValueErrorlistr   r   r)   r   r   )r   indicesr   r   r   select_columnsI      
z"PandasDataFrameXchg.select_columnsc                 C  r3   )Nz`names` is not a sequence)
r4   r   r5   r6   r7   r   r   locr   r   )r   namesr   r   r   select_columns_by_nameS   r:   z*PandasDataFrameXchg.select_columns_by_nameNc                 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   n_chunkssizestepstartr   r   r   
get_chunks]   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   r/   )r   r   r   )__name__
__module____qualname____doc__r   r   propertyr   r    r!   r#   r%   r*   r.   r2   r9   r=   rC   r   r   r   r   r      s$    	










r   )
__future__r   collectionsr   typingr   pandas.core.interchange.columnr   *pandas.core.interchange.dataframe_protocolr   DataFrameXchgpandaspdr   r   r   r   r   r   <module>   s    