
    Eg                        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mZmZ d dlm	Z	mZ  G d d	e
          Zd
S )    )annotations)abc)TYPE_CHECKING)PandasColumn)	DataFrame)IterableSequence)r   Indexc                      e Zd ZdZd(d)d	Z	 d*d+dZed,d            Zd-dZd-dZ	d-dZ
d.dZd/dZd0dZd1dZd2dZd3d"Zd4d5d'Zd#S )6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                V    |                     t          d          | _        || _        dS )zz
        Constructor - an instance of this (private) class is returned from
        `pd.DataFrame.__dataframe__`.
        F)columnscopyN)renamestr_df_allow_copy)selfr   r   s      V/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/core/interchange/dataframe.py__init__zPandasDataFrameXchg.__init__   s)    
 99Su955%    Fnan_as_nullc                ,    t          | j        |          S N)r   r   )r   r   r   s      r   __dataframe__z!PandasDataFrameXchg.__dataframe__&   s    
 #48Z888r   dict[str, Index]c                    d| j         j        iS )Nzpandas.index)r   indexr   s    r   metadatazPandasDataFrameXchg.metadata-   s     //r   intc                4    t          | j        j                  S r   )lenr   r   r$   s    r   num_columnszPandasDataFrameXchg.num_columns3   s    48#$$$r   c                *    t          | j                  S r   )r(   r   r$   s    r   num_rowszPandasDataFrameXchg.num_rows6   s    48}}r   c                    dS )N    r$   s    r   
num_chunkszPandasDataFrameXchg.num_chunks9   s    qr   r
   c                    | j         j        S r   r   r   r$   s    r   column_namesz PandasDataFrameXchg.column_names<   s    xr   ir   c                V    t          | j        j        d d |f         | j                  S Nr   )r   r   ilocr   )r   r3   s     r   
get_columnzPandasDataFrameXchg.get_column?   s)    DHM!!!Q$/D<LMMMMr   namer   c                D    t          | j        |         | j                  S r5   r   r   r   )r   r9   s     r   get_column_by_namez&PandasDataFrameXchg.get_column_by_nameB   s    DHTNt7GHHHHr   list[PandasColumn]c                4      fd j         j        D             S )Nc                R    g | ]#}t          j        |         j                   $S )r6   r;   ).0r9   r   s     r   
<listcomp>z3PandasDataFrameXchg.get_columns.<locals>.<listcomp>F   s?     
 
 
 $D4DEEE
 
 
r   r1   r$   s   `r   get_columnszPandasDataFrameXchg.get_columnsE   s3    
 
 
 
(
 
 
 	
r   indicesSequence[int]c                    t          |t          j                  st          d          t          |t                    st	          |          }t          | j        j        d d |f         | j                  S )Nz`indices` is not a sequencer6   )	
isinstancer   r	   
ValueErrorlistr   r   r7   r   )r   rC   s     r   select_columnsz"PandasDataFrameXchg.select_columnsK   sr    '3<00 	<:;;;'4(( 	$7mmG"HM!!!W*%$2B
 
 
 	
r   names	list[str]c                    t          |t          j                  st          d          t          |t                    st	          |          }t          | j        j        d d |f         | j                  S )Nz`names` is not a sequencer6   )	rF   r   r	   rG   rH   r   r   locr   )r   rJ   s     r   select_columns_by_namez*PandasDataFrameXchg.select_columns_by_nameU   si    %.. 	:8999%&& 	 KKE"48<5#9dFVWWWWr   Nn_chunks
int | NoneIterable[PandasDataFrameXchg]c              #    K   |rw|dk    rqt          | j                  }||z  }||z  dk    r|dz  }t          d||z  |          D ]3}t          | j        j        |||z   ddf         | j                  V  4dS | V  dS )z9
        Return an iterator yielding the chunks.
        r-   r   Nr6   )r(   r   ranger   r7   r   )r   rO   sizestepstarts        r   
get_chunkszPandasDataFrameXchg.get_chunks]   s        	1tx==D8#Dh!##	q$/488  )HM%%$,"6"9:#/        JJJJJr   )T)r   r   r   r   r   r   )FT)r   r   r   r   r   r   )r   r!   )r   r&   )r   r
   )r3   r&   r   r   )r9   r   r   r   )r   r=   )rC   rD   r   r   )rJ   rK   r   r   r   )rO   rP   r   rQ   )__name__
__module____qualname____doc__r   r    propertyr%   r)   r+   r/   r2   r8   r<   rB   rI   rN   rW   r.   r   r   r   r      sO        & & & & & =A9 9 9 9 9 0 0 0 X0
% % % %             N N N NI I I I
 
 
 

 
 
 
X X X X      r   r   N)
__future__r   collectionsr   typingr   pandas.core.interchange.columnr   *pandas.core.interchange.dataframe_protocolr   DataFrameXchgcollections.abcr   r	   pandasr
   r   r.   r   r   <module>re      s    " " " " " "                   7 7 7 7 7 7 Q Q Q Q Q Q 	       
       W W W W W- W W W W Wr   