
    I j                        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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__`.
)columnsN
allow_copy)	renamestr_df_allow_copy	enumerater   r   ilocisetitem)selfdfr   i_col	rechunkeds         r/root/GenerationalWealth/GenerationalWealth/venv/lib/python3.13/site-packages/pandas/core/interchange/dataframe.py__init__PandasDataFrameXchg.__init__   sl    
 99S9)% !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   rA   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   )	rI   r   r
   rJ   rK   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.
r5   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   )rB   r   r]   r   )r]   zlist[PandasColumn])rL   zSequence[int]r]   r   )rQ   z	list[str]r]   r   r$   )rV   z
int | Noner]   zIterable[PandasDataFrameXchg])__name__
__module____qualname____firstlineno____doc__r    r&   propertyr+   r/   r2   r7   r:   r>   rC   rF   rM   rR   rZ   __static_attributes__r6   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   r6   r"   r   <module>rp      s2    "    7 Q 7
[- [r"   