o
    $j'                     @  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   ilocZisetitem)selfr   r   iZ_colZ	rechunked r   b/var/www/html/Deteccion_Ine/venv/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 r.   r   r   r   )r   r0   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   r1   ).0r0   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   r7   r   r   r   select_columnsP   s   
z"PandasDataFrameXchg.select_columnsnames	list[str]c                 C  r9   )Nz`names` is not a sequencer   )	r:   r   r	   r;   r<   r   r   locr   )r   r>   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   rB   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   )r0   r   r   r   )r   r3   )r7   r8   r   r   )r>   r?   r   r   r    )rB   rC   r   rD   )__name__
__module____qualname____doc__r   r!   propertyr%   r(   r)   r+   r-   r/   r2   r6   r=   rA   rI   r   r   r   r   r      s"    









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