o
    $i                     @   s`   d dl mZ zd dlZW n ey   dZY nw dddefddZ	dd	d
deddfddZdS )    )concat_tensor_arraysNpa_typezpyarrow.lib.DataTypereturnc                 C   s   t | tjS )zfWhether the provided Arrow Table column is an extension array, using an Arrow
    extension type.
    )
isinstancepyarrowExtensionType)r    r   [/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/ray/air/util/transform_pyarrow.py_is_pa_extension_type	   s   r
   Fcazpyarrow.ChunkedArrayensure_copyzpyarrow.Arrayc                 C   s   ddl m} t| jstd| }| jdkr!tjg | jjd}n%|s/t	| j
dkr/| j
d S t| j|r;t| j
|S tdd | j
D }| j|S )a  Concatenate chunks of an extension column into a contiguous array.

    This concatenation is required for creating copies and for .take() to work on
    extension arrays.
    See https://issues.apache.org/jira/browse/ARROW-16503.

    Args:
        ca: The chunked array representing the extension column to be concatenated.
        ensure_copy: Skip copying when ensure_copy is False and there is exactly 1 chunk.
    r   ) get_arrow_extension_tensor_typesz,Chunked array isn't an extension array: {ca})type   c                 S   s   g | ]}|j qS r   )storage).0cr   r   r	   
<listcomp>/   s    z1_concatenate_extension_column.<locals>.<listcomp>)$ray.air.util.tensor_extensions.arrowr   r
   r   
ValueError
num_chunksr   arraystorage_typelenchunksr   r   concat_arrays
wrap_array)r   r   r   tensor_extension_typesr   r   r   r	   _concatenate_extension_column   s   


r   )F)r   r   r   ImportErrorboolr
   r   r   r   r   r	   <module>   s    