Ë
    ðmxi’  ã                  óÚ   — d dl mZ d dlZd dlmZmZmZ d dlmZm	Z	 er"d dl
Zd dlZd dlmZmZ d dlmZ d dlmZ d dlmZ  G d	„ d
ej.                  «      Z	 	 	 	 dd„Z G d„ d«      Zdd„Zy)é    )ÚannotationsN)ÚTYPE_CHECKINGÚAnyÚNoReturn)ÚVersionÚparse_version)ÚSelfÚTypeIs©ÚInterchangeSeries)ÚDType)ÚDataFrameLikec                  ó(   — e Zd ZdZdZdZdZdZdZdZ	y)	Ú	DtypeKindr   é   é   é   é   é   é   N)
Ú__name__Ú
__module__Ú__qualname__ÚINTÚUINTÚFLOATÚBOOLÚSTRINGÚDATETIMEÚCATEGORICAL© ó    úV/home/htdocs/ttos/venv/lib/python3.12/site-packages/narwhals/_interchange/dataframe.pyr   r      s%   „ à
€CØ€DØ€EØ€DØ€FØ€HØ�Kr"   r   c                ó8  — t         j                  j                  }| d   t        j                  k(  rm| d   dk(  r|j                  «       S | d   dk(  r|j                  «       S | d   dk(  r|j                  «       S | d   dk(  r|j                  «       S d}t        |«      ‚| d   t        j                  k(  rm| d   dk(  r|j                  «       S | d   dk(  r|j                  «       S | d   dk(  r|j                  «       S | d   dk(  r|j                  «       S d}t        |«      ‚| d   t        j                  k(  r=| d   dk(  r|j!                  «       S | d   dk(  r|j#                  «       S d	}t        |«      ‚| d   t        j$                  k(  r|j'                  «       S | d   t        j(                  k(  r|j+                  «       S | d   t        j,                  k(  r|j/                  «       S | d   t        j0                  k(  r|j3                  «       S d
| › �}t        |«      ‚)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ÚFloat32r   ÚBooleanr   ÚStringr   ÚDatetimer    ÚCategorical)Úinterchange_dtyper*   Úmsgs      r#   Ú'map_interchange_dtype_to_narwhals_dtyper<      s
  € ô �Z‰Z×Ñ€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Ð
4€CÜ
˜Ó
Ðr"   c                  ó�   — e Zd Zej                  Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd„Zedd„«       Zedd„«       Zdd	„Zdd
„Zdd„Zy)ÚInterchangeFramec                ó.   — |j                  «       | _        y ©N)Ú__dataframe__Ú_interchange_frame)ÚselfÚdfs     r#   Ú__init__zInterchangeFrame.__init__N   s   € Ø"$×"2Ñ"2Ó"4ˆÕr"   c                ó   — | S r@   r!   ©rC   s    r#   Ú__narwhals_dataframe__z'InterchangeFrame.__narwhals_dataframe__Q   s   € Øˆr"   c                ó   — d}t        |«      ‚)NzêCannot 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)rC   r;   s     r#   Ú__native_namespace__z%InterchangeFrame.__native_namespace__T   s   € ðYð 	ô
 " #Ó&Ð&r"   c                óP   — ddl m}  || j                  j                  |«      «      S )Nr   r   )Únarwhals._interchange.seriesr   rB   Úget_column_by_name)rC   Únamer   s      r#   Ú
get_columnzInterchangeFrame.get_column\   s!   € ÝBá  ×!8Ñ!8×!KÑ!KÈDÓ!QÓRÐRr"   c                ó¸   — dd l }t        |«      dk  rd|j                  › �}t        |«      ‚|j                  j
                  j                  | j                  «      S )Nr   )r   é   r   zpConversion to pandas is achieved via interchange protocol which requires 'pandas>=1.5.0' to be installed, found )Úpandasr   Ú__version__rK   ÚapiÚinterchangeÚfrom_dataframerB   )rC   Úpdr;   s      r#   Ú	to_pandaszInterchangeFrame.to_pandasa   sZ   € Ûä˜Ó˜yÒ(ð;Ø;=¿>¹>Ð:JðLð ô & cÓ*Ð*Ø�v‰v×!Ñ!×0Ñ0°×1HÑ1HÓIÐIr"   c                ó2   — ddl m}  || j                  «      S )Nr   )rX   )Ú"pyarrow.interchange.from_dataframerX   rB   )rC   rX   s     r#   Úto_arrowzInterchangeFrame.to_arrowl   s   € õ	
ñ ˜d×5Ñ5Ó6Ð6r"   c           	     ó¶   — | j                   j                  «       D �ci c]1  }|t        | j                   j                  |«      j                  «      “Œ3 c}S c c}w r@   )rB   Úcolumn_namesr<   rO   Údtype)rC   Úcolumn_names     r#   ÚschemazInterchangeFrame.schemas   s\   € ð  $×6Ñ6×CÑCÓEö	
ð ð Ô@Ø×'Ñ'×:Ñ:¸;ÓG×MÑMóñ ò
ð 	
ùò 
s   �6Ac                óH   — t        | j                  j                  «       «      S r@   )ÚlistrB   r_   rG   s    r#   ÚcolumnszInterchangeFrame.columns|   s   € ä�D×+Ñ+×8Ñ8Ó:Ó;Ð;r"   c                ó$   — d|› d�}t        |«      ‚)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.rJ   )rC   Úattrr;   s      r#   Ú__getattr__zInterchangeFrame.__getattr__€   s'   € à˜˜ð Bð Bð 	ô " #Ó&Ð&r"   c                ó²   — | j                   j                  t        |«      «      }t        |d«      sd}t	        |«      ‚| j                  |j                  «      S )NÚ_dfz›Expected interchange object to implement `_df` property to allow for recovering original object.
See https://github.com/data-apis/dataframe-api/issues/360.)rB   Úselect_columns_by_namerd   ÚhasattrrK   Ú	__class__rj   )rC   r_   Úframer;   s       r#   Úsimple_selectzInterchangeFrame.simple_selectŠ   sR   € Ø×'Ñ'×>Ñ>¼tÀLÓ?QÓRˆÜ�u˜eÔ$ðMð ô & cÓ*Ð*Ø�~‰~˜eŸi™iÓ(Ð(r"   c                ó   — d}t        |«      ‚)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.rJ   )rC   Úexprsr;   s      r#   ÚselectzInterchangeFrame.select”   s   € ðBð 	ô " #Ó&Ð&r"   N)rD   r   ÚreturnÚNone)rs   r	   )rs   r   )rP   Ústrrs   r   )rs   zpd.DataFrame)rs   zpa.Table)rs   zdict[str, DType])rs   z	list[str])rg   ru   rs   r   )r_   ru   rs   r	   )rq   ru   rs   r	   )r   r   r   r   r)   Ú_versionrE   rH   rL   rQ   rZ   r]   Úpropertyrb   re   rh   ro   rr   r!   r"   r#   r>   r>   K   sb   „ Ø�z‰z€Hó5óó'óSó
	Jó7ð ò
ó ð
ð ò<ó ð<ó'ó)ô'r"   r>   c                ó   — t        | d«      S )NrA   )rl   )Úobjs    r#   Úsupports_dataframe_interchangerz   ž   s   € Ü�3˜Ó(Ð(r"   )r:   ztuple[DtypeKind, int, Any, Any]rs   r   )ry   r   rs   zTypeIs[DataFrameLike])Ú
__future__r   ÚenumÚtypingr   r   r   Únarwhals._utilsr   r   rT   rY   ÚpyarrowÚpaÚtyping_extensionsr	   r
   rN   r   Únarwhals.dtypesr   Únarwhals.stable.v1.typingr   ÚIntEnumr   r<   r>   rz   r!   r"   r#   ú<module>r…      sa   ðÝ "ã ß /Ñ /ç 2áÛÛß.å>Ý%Ý7ô�—‘ô ð+Ø6ð+à
ó+÷\P'ñ P'ôf)r"   