
    h                       S SK Jr  S SK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
rS SK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   " S S\R.                  5      r      SS jr " S S5      r " S S5      rg)    )annotationsN)TYPE_CHECKING)Any)NoReturn)import_dtypes_module)parse_version)SelfInterchangeSeries)DType)DataFrameLike)Versionc                  0    \ rS rSrSrSrSrSrSrSr	Sr
Srg	)
	DtypeKind   r                   N)__name__
__module____qualname____firstlineno__INTUINTFLOATBOOLSTRINGDATETIMECATEGORICAL__static_attributes__r       Q/var/www/html/env/lib/python3.13/site-packages/narwhals/_interchange/dataframe.pyr   r      s%    
CDEDFHKr$   r   c                <   [        U5      nU S   [        R                  :X  aq  U S   S:X  a  UR                  5       $ U S   S:X  a  UR	                  5       $ U S   S:X  a  UR                  5       $ U S   S:X  a  UR                  5       $ Sn[        U5      eU S   [        R                  :X  aq  U S   S:X  a  UR                  5       $ U S   S:X  a  UR                  5       $ U S   S:X  a  UR                  5       $ U S   S:X  a  UR                  5       $ Sn[        U5      eU S   [        R                  :X  a?  U S   S:X  a  UR                  5       $ U S   S:X  a  UR                  5       $ S	n[        U5      eU S   [        R                   :X  a  UR#                  5       $ U S   [        R$                  :X  a  UR'                  5       $ U S   [        R(                  :X  a  UR+                  5       $ U S   [        R,                  :X  a  UR/                  5       $ S
U  3n[        U5      e)Nr   r   @             zInvalid bit width for INTzInvalid bit width for UINTzInvalid bit width for FLOATzInvalid dtype, got: )r   r   r   Int64Int32Int16Int8AssertionErrorr   UInt64UInt32UInt16UInt8r   Float64Float32r   Booleanr    Stringr!   Datetimer"   Categorical)interchange_dtypeversiondtypesmsgs       r%   'map_interchange_dtype_to_narwhals_dtyper>   !   s    "'*Fy}},Q2%<<>!Q2%<<>!Q2%<<>!Q1$;;= )S!!y~~-Q2%==?"Q2%==?"Q2%==?"Q1$<<>!*S!!y.Q2%>>##Q2%>>##+S!!y~~-~~y///}}y111  y444!!## !2 3
4C

r$   c                  (    \ rS rSrSS jrSS jrSrg)WrapInterchangeFrameO   c                    Xl         g N_interchange_frame)selfinterchange_frames     r%   __init__WrapInterchangeFrame.__init__P   s    "3r$   c                    U R                   $ rC   rD   rF   s    r%   __dataframe__"WrapInterchangeFrame.__dataframe__S   s    &&&r$   rD   N)rG   InterchangeFramereturnNone)rO   rN   )r   r   r   r   rH   rL   r#   r   r$   r%   r@   r@   O   s    4'r$   r@   c                      \ rS rS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5       r\SS
 j5       rSS jrSS jr    SS jrSrg)rN   W   c                :    UR                  5       U l        X l        g rC   )rL   rE   _version)rF   dfr;   s      r%   rH   InterchangeFrame.__init__X   s    "$"2"2"4r$   c                H    U R                  [        U R                  5      US9$ )Nr;   )	__class__r@   rE   )rF   r;   s     r%   _with_versionInterchangeFrame._with_version\   s(    ~~ !8!897  
 	
r$   c                    U $ rC   r   rK   s    r%   __narwhals_dataframe__'InterchangeFrame.__narwhals_dataframe__a   s    r$   c                    Sn[        U5      e)NzCannot access native namespace for metadata-only dataframes with unknown backend.If you would like to see this kind of object supported in Narwhals, please open a feature request at https://github.com/narwhals-dev/narwhals/issues.NotImplementedError)rF   r=   s     r%   __native_namespace__%InterchangeFrame.__native_namespace__d   s    Y 	
 "#&&r$   c                b    SSK Jn  U" U R                  R                  U5      U R                  S9$ )Nr   r
   rX   )narwhals._interchange.seriesr   rE   get_column_by_namerT   )rF   namer   s      r%   
get_columnInterchangeFrame.get_columnl   s,    B ##66t<dmm
 	
r$   c                    SS K n[        U5      S:  a/  UR                  R                  R	                  U R
                  5      $ SUR                   3n[        U5      e)Nr   )r      r   znConversion to pandas is achieved via interchange protocol which requires pandas>=1.5.0 to be installed, found )pandasr   apiinterchangefrom_dataframerE   __version__ra   )rF   pdr=   s      r%   	to_pandasInterchangeFrame.to_pandass   sZ    	)66%%44T5L5LMM99;8HJ  &c**r$   c                2    SSK Jn  U" U R                  5      $ )Nr   )ro   )"pyarrow.interchange.from_dataframero   rE   )rF   ro   s     r%   to_arrowInterchangeFrame.to_arrow   s    	
 d5566r$   c           	         U R                   R                  5        Vs0 s H=  nU[        U R                   R                  U5      R                  U R
                  5      _M?     sn$ s  snf rC   )rE   column_namesr>   rf   dtyperT   )rF   column_names     r%   schemaInterchangeFrame.schema   sl      $66CCE

  F	 @''::;GMM   F
 	
 
s   AA$c                H    [        U R                  R                  5       5      $ rC   )listrE   ry   rK   s    r%   columnsInterchangeFrame.columns   s    D++88:;;r$   c                $    SU S3n[        U5      e)Nz
Attribute aG   is not supported for metadata-only dataframes.

Hint: you probably called `nw.from_native` on an object which isn't fully supported by Narwhals, yet implements `__dataframe__`. If you would like to see this kind of object supported in Narwhals, please open a feature request at https://github.com/narwhals-dev/narwhals/issues.r`   )rF   attrr=   s      r%   __getattr__InterchangeFrame.__getattr__   s'     B B 	 "#&&r$   c                    U R                   R                  [        U5      5      n[        US5      (       d  Sn[	        U5      eU R                  UR                  U R                  S9$ )N_dfzExpected interchange object to implement `_df` property to allow for recovering original object.
See https://github.com/data-apis/dataframe-api/issues/360.rX   )rE   select_columns_by_namer   hasattrra   rY   r   rT   )rF   ry   framer=   s       r%   simple_selectInterchangeFrame.simple_select   s]    ''>>tL?QRue$$M  &c**~~eii~??r$   c                    Sn[        U5      e)Nz`select`-ing not by name is not supported for interchange-only level.

If you would like to see this kind of object better supported in Narwhals, please open a feature request at https://github.com/narwhals-dev/narwhals/issues.r`   )rF   exprsr=   s      r%   selectInterchangeFrame.select   s    
B 	 "#&&r$   )rE   rT   N)rU   r   r;   r   rO   rP   )r;   r   rO   r	   )rO   r	   )rO   r   )rg   strrO   r   )rO   zpd.DataFrame)rO   zpa.Table)rO   zdict[str, DType])rO   z	list[str])r   r   rO   r   )ry   r   rO   r	   )r   r   rO   r	   )r   r   r   r   rH   rZ   r]   rb   rh   rr   rv   propertyr|   r   r   r   r   r#   r   r$   r%   rN   rN   W   so     

'

+7 
 
 < <'@
'
' 

'r$   rN   )r:   ztuple[DtypeKind, int, Any, Any]r;   r   rO   r   )
__future__r   enumtypingr   r   r   narwhals.utilsr   r   rl   rq   pyarrowpatyping_extensionsr	   re   r   narwhals.dtypesr   narwhals.typingr   r   IntEnumr   r>   r@   rN   r   r$   r%   <module>r      sv    "      / (&>%-& +6+AH+
+\' '[' ['r$   