o
    `۷i                     @  sr   d Z ddlmZ ddlmZ ddlmZ ddlZddlm	Z	 ddl
mZ er.ddl
mZmZ eG d	d
 d
ZdS )zAArray namespace for expression operations on array-typed columns.    )annotations)	dataclass)TYPE_CHECKINGN)DataType)pyarrow_udf)ExprUDFExprc                   @  s$   e Zd ZU dZded< d	ddZdS )
_ArrayNamespacezNamespace for array operations on expression columns.

    Example:
        >>> from ray.data.expressions import col
        >>> # Convert fixed-size lists to variable-length lists
        >>> expr = col("features").arr.to_list()
    r   _exprreturn	'UDFExpr'c                 C  sb   t t}| jj}| r"| }tj|r t 	t
|j}n|}t|dddd}|| jS )	z9Convert FixedSizeList columns into variable-length lists.)return_dtypearrpyarrow.Arrayr   c                 S  sN   t | j}| stjd| j t| jtjr%| 	t
| jjS | S )Nz;to_list() can only be called on list-like columns, but got )r   
from_arrowtypeis_list_typepyarrowlibArrowInvalid
isinstanceFixedSizeListTypecastlist_
value_type)r   	arr_dtype r   b/home/ubuntu/vllm_env/lib/python3.10/site-packages/ray/data/namespace_expressions/arr_namespace.py_to_list)   s   z)_ArrayNamespace.to_list.<locals>._to_listN)r   r   r   r   )r   objectr
   	data_typer   to_arrow_dtyper   typesis_fixed_size_listr   r   r   r   )selfr   
expr_dtype
arrow_typer   r   r   r   to_list   s   
z_ArrayNamespace.to_listN)r   r   )__name__
__module____qualname____doc____annotations__r'   r   r   r   r   r	      s   
 r	   )r+   
__future__r   dataclassesr   typingr   r   ray.data.datatyper   ray.data.expressionsr   r   r   r	   r   r   r   r   <module>   s    