
     	i'                        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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)maybe_rechunk)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                   |                     t          d          | _        || _        t	          | j        j                  D ]G\  }}t          | j        j        dd|f         |          }|| j                            ||           Hd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	rechunkeds         Y/srv/django_bis/venv311/lib/python3.11/site-packages/pandas/core/interchange/dataframe.py__init__zPandasDataFrameXchg.__init__   s    
 99Su955% !122 	0 	0GAt%dhmAAAqD&9jQQQI$!!!Y///	0 	0    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.metadata2   s     //r$   intc                4    t          | j        j                  S r'   )lenr   r   r,   s    r"   num_columnszPandasDataFrameXchg.num_columns8   s    48#$$$r$   c                *    t          | j                  S r'   )r0   r   r,   s    r"   num_rowszPandasDataFrameXchg.num_rows;   s    48}}r$   c                    dS )N    r,   s    r"   
num_chunkszPandasDataFrameXchg.num_chunks>   s    qr$   r   c                    | j         j        S r'   r   r   r,   s    r"   column_namesz PandasDataFrameXchg.column_namesA   s    xr$   r   r   c                V    t          | j        j        d d |f         | j                  S Nr   )r   r   r   r   )r   r   s     r"   
get_columnzPandasDataFrameXchg.get_columnD   s)    DHM!!!Q$/D<LMMMMr$   namer   c                D    t          | j        |         | j                  S r<   r   r   r   )r   r>   s     r"   get_column_by_namez&PandasDataFrameXchg.get_column_by_nameG   s    DHTNt7GHHHHr$   list[PandasColumn]c                4      fd j         j        D             S )Nc                R    g | ]#}t          j        |         j                   $S )r   r@   ).0r>   r   s     r"   
<listcomp>z3PandasDataFrameXchg.get_columns.<locals>.<listcomp>K   s?     
 
 
 $D4DEEE
 
 
r$   r9   r,   s   `r"   get_columnszPandasDataFrameXchg.get_columnsJ   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 sequencer   )	
isinstancer   r
   
ValueErrorlistr   r   r   r   )r   rH   s     r"   select_columnsz"PandasDataFrameXchg.select_columnsP   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 sequencer   )	rK   r   r
   rL   rM   r   r   locr   )r   rO   s     r"   select_columns_by_namez*PandasDataFrameXchg.select_columns_by_nameZ   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.
        r5   r   Nr   )r0   r   ranger   r   r   )r   rT   sizestepstarts        r"   
get_chunkszPandasDataFrameXchg.get_chunksb   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   )r   r.   r   r   )r>   r   r   r   )r   rB   )rH   rI   r   r   )rO   rP   r   r   r'   )rT   rU   r   rV   )__name__
__module____qualname____doc__r#   r(   propertyr-   r1   r3   r7   r:   r=   rA   rG   rN   rS   r\   r6   r$   r"   r   r      sO        
0 
0 
0 
0 
0 =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pandas.core.interchange.utilsr   collections.abcr	   r
   pandasr   r   r6   r$   r"   <module>rk      s   " " " " " "                   7 7 7 7 7 7 Q Q Q Q Q Q 7 7 7 7 7 7 	       
       [ [ [ [ [- [ [ [ [ [r$   