
    Lpj                        S SK Jr  S SKrS SKJrJrJr  S SKJrJ	r	J
r
  \(       a"  S SKrS SKrS SKJrJr  S SKJr  S SKJr  S SKJr   " S	 S
\R0                  5      r    SS jr " S S5      rSS jrg)    )annotationsN)TYPE_CHECKINGAnyNoReturn)Version_hasattr_staticparse_version)SelfTypeIsInterchangeSeries)DType)DataFrameLikec                  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       [/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/narwhals/_interchange/dataframe.pyr   r      s%    
CDEDFHKr&   r   c                   [         R                  R                  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  aX  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R)                  5       $ U S   [        R*                  :X  a  UR-                  5       $ U S   [        R.                  :X  a  UR1                  5       $ U S   [        R2                  :X  a  UR5                  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   V1dtypesr   r   Int64Int32Int16Int8AssertionErrorr   UInt64UInt32UInt16UInt8r    Float64Float32Float16r!   Booleanr"   Stringr#   Datetimer$   Categorical)interchange_dtyper.   msgs      r'   'map_interchange_dtype_to_narwhals_dtyperA      s$    ZZ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%>>##Q2%>>##+S!!y~~-~~y///}}y111  y444!!## !2 3
4C

r&   c                      \ rS rSr\R
                  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)InterchangeFrameM   c                .    UR                  5       U l        g N)__dataframe___interchange_frame)selfdfs     r'   __init__InterchangeFrame.__init__P   s    "$"2"2"4r&   c                    U $ rF   r   rI   s    r'   __narwhals_dataframe__'InterchangeFrame.__narwhals_dataframe__S   s    r&   c                    Sn[        U5      e)NzCannot access native namespace for interchange-level 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)rI   r@   s     r'   __native_namespace__%InterchangeFrame.__native_namespace__V   s    Y 	
 "#&&r&   c                P    SSK Jn  U" U R                  R                  U5      5      $ )Nr   r   )narwhals._interchange.seriesr   rH   get_column_by_name)rI   namer   s      r'   
get_columnInterchangeFrame.get_column^   s!    B !8!8!K!KD!QRRr&   c                    SS K n[        U5      S:  a  SUR                   3n[        U5      eUR                  R
                  R                  U R                  5      $ )Nr   )r      r   zpConversion to pandas is achieved via interchange protocol which requires 'pandas>=1.5.0' to be installed, found )pandasr	   __version__rS   apiinterchangefrom_dataframerH   )rI   pdr@   s      r'   	to_pandasInterchangeFrame.to_pandasc   sZ    y(;;=>>:JL  &c**vv!!001H1HIIr&   c                2    SSK Jn  U" U R                  5      $ )Nr   )rb   )"pyarrow.interchange.from_dataframerb   rH   )rI   rb   s     r'   to_arrowInterchangeFrame.to_arrown   s    	
 d5566r&   c           	         U R                   R                  5        Vs0 s H2  nU[        U R                   R                  U5      R                  5      _M4     sn$ s  snf rF   )rH   column_namesrA   rX   dtype)rI   column_names     r'   schemaInterchangeFrame.schemau   se      $66CCE	
  F @''::;GMM   F	
 	
 
s   9Ac                H    [        U R                  R                  5       5      $ rF   )listrH   rk   rN   s    r'   columnsInterchangeFrame.columns~   s    D++88:;;r&   c                $    SU S3n[        U5      e)Nz
Attribute aK   is not supported for interchange-level 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.rR   )rI   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                  5      $ )N_dfzExpected interchange object to implement `_df` property to allow for recovering original object.
See https://github.com/data-apis/dataframe-api/issues/360.)rH   select_columns_by_namerq   hasattrrS   	__class__ry   )rI   rk   framer@   s       r'   simple_selectInterchangeFrame.simple_select   sU    ''>>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.rR   )rI   exprsr@   s      r'   selectInterchangeFrame.select   s    B 	 "#&&r&   )rH   N)rJ   r   returnNone)r   r
   )r   r   )rY   strr   r   )r   zpd.DataFrame)r   zpa.Table)r   zdict[str, DType])r   z	list[str])ru   r   r   r   )rk   r   r   r
   )r   r   r   r
   )r   r   r   r   r   r-   _versionrK   rO   rT   rZ   rd   rh   propertyrn   rr   rv   r~   r   r%   r   r&   r'   rC   rC   M   sb    zzH5'S
	J7 
 
 < <')'r&   rC   c                    [        U S5      $ )NrG   )r   )objs    r'   supports_dataframe_interchanger      s    300r&   )r?   ztuple[DtypeKind, int, Any, Any]r   r   )r   r   r   zTypeIs[DataFrameLike])
__future__r   enumtypingr   r   r   narwhals._utilsr   r   r	   r^   rc   pyarrowpatyping_extensionsr
   r   rW   r   narwhals.dtypesr   narwhals.stable.v1.typingr   IntEnumr   rA   rC   r   r   r&   r'   <module>r      sd    "  / / C C.>%7 -6-
-`P' P'f1r&   