
    &`i
                     n    d dl Z d dlmZmZmZ d dlmZ d dlmZ d dl	m
Z
mZmZmZ  G d de          ZdS )    N)AnyMappingOptional)ArrowBlockBuilder)BlockBuilder)BlockBlockAccessor	BlockType	DataBatchc                       e Zd Zd Zedee         fd            Zdee	e
f         ddfdZdefdZd	efd
ZdefdZdefdZdefdZdefdZdS )DelegatingBlockBuilderc                 "    d | _         d | _        d S N)_builder_empty_blockselfs    /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/data/_internal/delegating_block_builder.py__init__zDelegatingBlockBuilder.__init__
   s         returnc                 F    | j         | j                                         S dS )zAThe block type inferred from the first item added to the builder.N)r   
block_typer   s    r   _inferred_block_typez+DelegatingBlockBuilder._inferred_block_type   s%     =$=++---tr   itemNc                     t          |t          j        j                  s
J |            | j        t                      | _        | j                            |           d S r   )
isinstancecollectionsabcr   r   r   add)r   r   s     r   r    zDelegatingBlockBuilder.add   sV    $ 788>>$>>8= -//DM$r   batchc                 `    t          j        || j                  }|                     |          S )zAdd a user-facing data batch to the builder.

        This data batch will be converted to an internal block and then added to the
        underlying builder.
        )r	   batch_to_blockr   	add_block)r   r!   blocks      r   	add_batchz DelegatingBlockBuilder.add_batch   s+     ,UD4MNN~~e$$$r   r%   c                 j   t          j        |          }|                                dk    r	|| _        d S | j        |                                | _        n0|                                }|| j        k    sJ || j        f            | j                            |	                                           d S Nr   )
r	   	for_blocknum_rowsr   r   builderr   r   r$   to_block)r   r%   accessorr   s       r   r$   z DelegatingBlockBuilder.add_block&   s     *511!## !&DF= $,,..DMM!,,..J!::::)=:::
 	 1 1 3 344444r   c                 F    | j         dS | j                                         S )NT)r   will_build_yield_copyr   s    r   r/   z,DelegatingBlockBuilder.will_build_yield_copy8   s#    = 4}22444r   c                    | j         j| j        Pt          j        | j                                                  | _         | j                             | j                   nt                      | _         | j                                         S r   )r   r   r	   r)   r+   r$   r   buildr   s    r   r1   zDelegatingBlockBuilder.build=   sq    =  , - 78I J J R R T T''(9:::: 1 3 3}""$$$r   c                 F    | j         | j                                         ndS r(   )r   r*   r   s    r   r*   zDelegatingBlockBuilder.num_rowsF   s"    +/=+Dt}%%'''!Kr   c                 F    | j         dS | j                                         S r(   )r   get_estimated_memory_usager   s    r   r4   z1DelegatingBlockBuilder.get_estimated_memory_usageI   s#    = 1}77999r   )__name__
__module____qualname__r   propertyr   r
   r   r   strr   r    r   r&   r   r$   boolr/   r1   intr*   r4    r   r   r   r   	   s!       ! ! ! hy&9    X S)  d        %y % % % %5u 5 5 5 5$5t 5 5 5 5
%u % % % %L# L L L L:C : : : : : :r   r   )r   typingr   r   r   ray.data._internal.arrow_blockr    ray.data._internal.block_builderr   ray.data.blockr   r	   r
   r   r   r<   r   r   <module>rA      s        ) ) ) ) ) ) ) ) ) ) < < < < < < 9 9 9 9 9 9 E E E E E E E E E E E EC: C: C: C: C:\ C: C: C: C: C:r   