
    Mh'                        S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r
  S SKJr  \(       a  S SKJrJr  S SKJ	r	Jr   " S	 S
\
5      rg)    )annotations)abc)TYPE_CHECKING)PandasColumn)	DataFrame)maybe_rechunk)IterableSequence)r   Indexc                      \ rS rSrSrSSS jjr S     SS jjr\SS j5       rSS jr	SS jr
SS jrSS	 jrSS
 jrSS jrSS jrSS jrSS jrSSS jjrSrg) PandasDataFrameXchg   z
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.
c                   UR                  [        SS9U l        X l        [	        U R                  R
                  5       HJ  u  p4[        U R                  R                  SS2U4   US9nUc  M/  U R                  R                  X55        ML     g)zb
Constructor - an instance of this (private) class is returned from
`pd.DataFrame.__dataframe__`.
F)columnscopyN
allow_copy)	renamestr_df_allow_copy	enumerater   r   ilocisetitem)selfdfr   i_col	rechunkeds         S/var/www/html/env/lib/python3.13/site-packages/pandas/core/interchange/dataframe.py__init__PandasDataFrameXchg.__init__   sn    
 99Su95% !1!12GA%dhhmmAqD&9jQI$!!!/ 3    c                .    [        U R                  U5      $ N)r   r   )r   nan_as_nullr   s      r    __dataframe__!PandasDataFrameXchg.__dataframe__+   s    
 #488Z88r#   c                2    SU R                   R                  0$ )Nzpandas.index)r   indexr   s    r    metadataPandasDataFrameXchg.metadata2   s     //r#   c                @    [        U R                  R                  5      $ r%   )lenr   r   r+   s    r    num_columnsPandasDataFrameXchg.num_columns8   s    488##$$r#   c                ,    [        U R                  5      $ r%   )r/   r   r+   s    r    num_rowsPandasDataFrameXchg.num_rows;   s    488}r#   c                    g)N    r+   s    r    
num_chunksPandasDataFrameXchg.num_chunks>   s    r#   c                .    U R                   R                  $ r%   )r   r   r+   s    r    column_names PandasDataFrameXchg.column_namesA   s    xxr#   c                `    [        U R                  R                  S S 2U4   U R                  S9$ Nr   )r   r   r   r   )r   r   s     r    
get_columnPandasDataFrameXchg.get_columnD   s&    DHHMM!Q$/D<L<LMMr#   c                D    [        U R                  U   U R                  S9$ r>   )r   r   r   r   names     r    get_column_by_name&PandasDataFrameXchg.get_column_by_nameG   s    DHHTNt7G7GHHr#   c                    U R                   R                   Vs/ s H$  n[        U R                   U   U R                  S9PM&     sn$ s  snf r>   )r   r   r   r   rB   s     r    get_columnsPandasDataFrameXchg.get_columnsJ   sH     ((
( $D4D4DE(
 	
 
s   +Ac                    [        U[        R                  5      (       d  [        S5      e[        U[        5      (       d  [	        U5      n[        U R                  R                  S S 2U4   U R                  S9$ )Nz`indices` is not a sequencer   )	
isinstancer   r
   
ValueErrorlistr   r   r   r   )r   indicess     r    select_columns"PandasDataFrameXchg.select_columnsP   s^    '3<<00:;;'4((7mG"HHMM!W*%$2B2B
 	
r#   c                    [        U[        R                  5      (       d  [        S5      e[        U[        5      (       d  [	        U5      n[        U R                  R                  S S 2U4   U R                  S9$ )Nz`names` is not a sequencer   )	rJ   r   r
   rK   rL   r   r   locr   )r   namess     r    select_columns_by_name*PandasDataFrameXchg.select_columns_by_nameZ   sY    %..899%&&KE"488<<5#9dFVFVWWr#   Nc              #    #    U(       ax  US:  ar  [        U R                  5      nX!-  nX!-  S:w  a  US-  n[        SX1-  U5       H8  n[        U R                  R                  XDU-   2SS24   U R
                  S9v   M:     gU v   g7f)z)
Return an iterator yielding the chunks.
r6   r   Nr   )r/   r   ranger   r   r   )r   n_chunkssizestepstarts        r    
get_chunksPandasDataFrameXchg.get_chunksb   s      1txx=D#D!#	q$/48)HHMM%$,"6"9:#//  9 Js   BB)r   r   )T)r   r   r   boolreturnNone)FT)r&   r]   r   r]   r^   r   )r^   zdict[str, Index])r^   int)r^   r   )r   r`   r^   r   )rC   r   r^   r   )r^   zlist[PandasColumn])rM   zSequence[int]r^   r   )rR   z	list[str]r^   r   r%   )rW   z
int | Noner^   zIterable[PandasDataFrameXchg])__name__
__module____qualname____firstlineno____doc__r!   r'   propertyr,   r0   r3   r8   r;   r?   rD   rG   rN   rS   r[   __static_attributes__r7   r#   r    r   r      s}    
0 =A99599	9 0 0
% NI

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   r7   r#   r    <module>rq      s2    "    7 Q 7
[- [r#   