
    g                        d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dl	mZ d dl	mZ er&d d	lmZ d d
lZd d
lZd dlmZ d dlmZ d dlmZ d dl	mZ  ed      dd       Z G d d      Zy
)    )annotations)	lru_cache)TYPE_CHECKING)Anyget_ibis)Implementation)import_dtypes_module)validate_backend_version)
ModuleTypeN)SelfIbisInterchangeSeries)DType)Version   )maxsizec                &   t        |      }| j                         r|j                         S | j                         r|j	                         S | j                         r|j                         S | j                         r|j                         S | j                         r|j                         S | j                         r|j                         S | j                         r|j                         S | j                         r|j!                         S | j#                         r|j%                         S | j'                         r|j)                         S | j+                         r|j-                         S | j/                         r|j1                         S | j3                         r|j5                         S | j7                         r|j9                         S | j;                         r%|j=                  t?        | j@                  |            S | jC                         rL|jE                  | jG                         D cg c]!  \  }}|jI                  |t?        ||            # c}}      S | jK                         r|jM                         S |jO                         S c c}}w N)(r
   is_int64Int64is_int32Int32is_int16Int16is_int8Int8	is_uint64UInt64	is_uint32UInt32	is_uint16UInt16is_uint8UInt8
is_booleanBoolean
is_float64Float64
is_float32Float32	is_stringStringis_dateDateis_timestampDatetimeis_arrayListnative_to_narwhals_dtype
value_type	is_structStructitemsField
is_decimalDecimalUnknown)
ibis_dtypeversiondtypesibis_dtype_nameibis_dtype_fields        M/var/www/openai/venv/lib/python3.12/site-packages/narwhals/_ibis/dataframe.pyr4   r4      s   !'*F||~||~||~{{}}}}}}}||~~~~~~~}}{{}   {{3J4I4I7STT}} :D9I9I9K
 :L5O%5	 #,-=wG :L
 	
 ~~>>s   /&J
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	 	 	 	 	 	 	 	 ddZddZdd	Zdd
ZddZy)IbisInterchangeFramec               n    || _         || _        || _        t        | j                  | j                         y r   )_native_frame_version_backend_versionr   _implementation)selfdfbackend_versionr>   s       rB   __init__zIbisInterchangeFrame.__init__L   s1       / !5!5t7L7LM    c                    | S r    rJ   s    rB   __narwhals_dataframe__z+IbisInterchangeFrame.__narwhals_dataframe__T   s    rN   c                    t               S r   r   rQ   s    rB   __native_namespace__z)IbisInterchangeFrame.__native_namespace__W   s
    zrN   c                P    ddl m}  || j                  |   | j                        S )Nr   r   )r>   )narwhals._ibis.seriesr   rF   rG   )rJ   itemr   s      rB   __getitem__z IbisInterchangeFrame.__getitem__Z   s!    ?$T%7%7%=t}}UUrN   c                6    | j                   j                         S r   )rF   	to_pandasrQ   s    rB   rZ   zIbisInterchangeFrame.to_pandas_   s    !!++--rN   c                6    | j                   j                         S r   )rF   
to_pyarrowrQ   s    rB   to_arrowzIbisInterchangeFrame.to_arrowb   s    !!,,..rN   c                    |st        d |D              sd}t        |      dd lm} | j	                  | j
                  j                   |j                  |             S )Nc              3  <   K   | ]  }t        |t                y wr   )
isinstancestr).0xs     rB   	<genexpr>z.IbisInterchangeFrame.select.<locals>.<genexpr>j   s     !De*Q"4es   z`select`-ing not by name is not supported for Ibis backend.

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   )allNotImplementedErroribis.selectors	selectors_from_native_framerF   selectcols)rJ   exprsnamed_exprsmsgss        rB   rj   zIbisInterchangeFrame.selecte   s[    
 c!De!DDF  &c**"&&t'9'9'@'@'PQQrN   c           	        |dk(  rP| j                   j                         j                         D ci c]  \  }}|t        || j                         c}}S |dk(  r| j                   j
                  S d| d}t        |      c c}}w )Nschemacolumnsz
Attribute z is not supported for metadata-only dataframes.

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.)rF   rq   r8   r4   rG   rr   rf   )rJ   attrcolumn_namer=   rn   s        rB   __getattr__z IbisInterchangeFrame.__getattr__w   s    8 04/A/A/H/H/J/P/P/R/R+K 5j$--PP/R  Y%%--- B B 	 "#&&s   !Bc                R    | j                  | j                  || j                        S N)r>   rL   )	__class__rF   rH   )rJ   r>   s     rB   _change_versionz$IbisInterchangeFrame._change_version   s+    ~~AVAV  
 	
rN   c                R    | j                  || j                  | j                        S rw   )rx   rG   rH   )rJ   rK   s     rB   ri   z'IbisInterchangeFrame._from_native_frame   s)    ~~t7L7L  
 	
rN   c           	         | j                   j                         j                         D ci c]  \  }}|t        || j                         c}}S c c}}w r   )rF   rq   r8   r4   rG   )rJ   rt   r=   s      rB   collect_schemaz#IbisInterchangeFrame.collect_schema   sW     ,0+=+=+D+D+F+L+L+N
+N'Z 1*dmmLL+N
 	
 
s   !AN)rK   r   rL   ztuple[int, ...]r>   r   returnNone)r}   r   )rJ   r   r}   r   )rW   ra   r}   r   )rJ   r   r}   zpd.DataFrame)rJ   r   r}   zpa.Table)rJ   r   rl   r   rm   r   r}   r   )rs   ra   r}   r   )rJ   r   r>   r   r}   r   )rJ   r   rK   r   r}   r   )r}   zdict[str, DType])__name__
__module____qualname__r	   IBISrI   rM   rR   rT   rX   rZ   r]   rj   ru   ry   ri   r|   rP   rN   rB   rD   rD   I   s    $))ONN+:NELN	NV
./RRR R 
	R$' 




rN   rD   )r=   r   r>   r   r}   r   )
__future__r   	functoolsr   typingr   r   narwhals.dependenciesr   narwhals.utilsr	   r
   r   typesr   pandaspdpyarrowpatyping_extensionsr   rV   r   narwhals.dtypesr   r   r4   rD   rP   rN   rB   <module>r      s[    "     * ) / 3 &;%& 2- -`L
 L
rN   