o
    `۷i(                     @   s`  d dl mZmZmZmZmZmZ d dlZd dl	Z	d dl
mZmZmZ d dlmZ d dlmZ er8d dlmZmZ dZdZd	Zd
ZdZdgZdddddedefddZdddee dee dedeee  deee  defddZde defddZ!dddee deeeeef  eeeef  ef fddZ"dee deeef fdd Z#d!eeeef  d"ee deee  fd#d$Z$d%edefd&d'Z%d%ed(edefd)d*Z&d+ee d,ee d-ee d.eee  dee f
d/d0Z'd+ee d,ee d-ee d.eee  d1ee dee fd2d3Z(d4ed5ed6ed7ed1ee defd8d9Z)d:ee d1ee defd;d<Z*dS )=    )TYPE_CHECKINGAnyDictListOptionalTupleN)BlockBlockAccessorBlockMetadata)RayError)	ObjectRef)DatasetSchemau   …
      (   g      >@_build_dataset_ascii_reprdatasetr   schemar   is_materializedreturnc           
      C   s   t |j}|s| j| jS |  }g }g }|r:zt| |\}}}	t||}t||}W n ty9   g }g }Y nw t	||| j
|||dS )z2Render the dataset as a multi-line tabular string.)r   num_rowsdataset_namer   	head_rows	tail_rows)listnames_planget_plan_as_string	__class___meta_count#_collect_materialized_rows_for_repr_format_rows_for_reprr   #_build_dataset_ascii_repr_from_rowsname)
r   r   r   columnsr   r   r   	head_data	tail_data_ r)   U/home/ubuntu/vllm_env/lib/python3.10/site-packages/ray/data/_internal/dataset_repr.pyr      s2   


r   r   r   r   c                 C   sF  t | j}t|}d|dur|nd d| d}dd | jD }	dd |D }
d	d |	D }d
gt| }t|o<t|}g }|| |rP|tgt|  || t|
|||}t	|
||||}t|t| }|rwd| d| dnd}|r|du rd| d}g }|dur|d|  ||d
||g d
|S )z?Render the dataset repr given schema metadata and preview rows.zshape: (N?z, )c                 S   s   g | ]}t |qS r)   )_repr_format_dtype).0tr)   r)   r*   
<listcomp>I   s    z7_build_dataset_ascii_repr_from_rows.<locals>.<listcomp>c                 S   s   g | ]	}t t|tqS r)   )_truncate_to_cell_widthstr_DATASET_REPR_MAX_COLUMN_WIDTH)r.   colr)   r)   r*   r0   J   s    c                 S   s   g | ]}t |tqS r)   )r1   r3   )r.   dtyper)   r)   r*   r0   N   s    z---z	(Showing z of z rows)z(Dataset isn't materialized)z of ? rows)zname: 
)r   r   lentypesboolextendappend_DATASET_REPR_ELLIPSIS_compute_column_widths_render_table_linesjoin)r   r   r   r   r   r   r%   num_cols
shape_linedtype_stringscolumn_headersdtype_headersseparator_rowshow_gapdisplay_rowscolumn_widthstable_linesnum_rows_shownsummary_line
componentsr)   r)   r*   r#   :   sN   



	
r#   r5   c                 C   s2   t | tr| jS t| dd}t |tr|S t| S )zFormat a dtype into a compact string for the schema row.

    Dtypes may come from PyArrow, pandas/NumPy, or be plain Python types.
    r$   N)
isinstancetype__name__getattrr2   )r5   r$   r)   r)   r*   r-   z   s   

r-   c                    s  g }|   D ]}|t|j|j q|sg g dfS t|\}}i  dtdtf fdd}g }|}|D ]+\}	}
|dkr= n"||	}t	|}|j
ddD ]}|| |d	8 }|dkr] nqLq3g }|}g }|dkrt|D ]P\}	}|dkrw nG||	}t	|}|j}|d
u r| }|dkrqmtd|| }|j||dd}t	|}t|j
dd}|| |t|8 }|dkr nqmt|D ]}|| qt|ot|}|||fS )zACollect head/tail rows for preview and whether to show a gap row.F	block_refr   c                    s"   |  vrt j| td | <  |  S )N)timeout)rayget_DATASET_REPR_GET_TIMEOUT_S)rQ   block_cacher)   r*   _resolve_block   s
   
z;_collect_materialized_rows_for_repr.<locals>._resolve_blockr   T)public_row_format   N)copy)iter_internal_ref_bundlesr:   zip
block_refsmetadata_determine_preview_row_targetsr   r   r	   	for_block	iter_rowsr;   reversedr   maxslicer   r7   r9   )r   r   block_entries
ref_bundlehead_row_limittail_row_limitrX   r   head_remainingrQ   r(   blockaccessorrowr   tail_remaining
tail_partsr_   
total_rowsstartsliced_blockslice_accessor
block_rowspartrF   r)   rV   r*   r!      sb   






r!   c                 C   sF   t }| du s
| |kr| dur| n|}|dfS tt|}|| }||fS )z/Compute how many head and tail rows to preview.Nr   )_DATASET_REPR_MAX_ROWSmin_DATASET_REPR_HEAD_ROWS)r   max_rowsheadtailr)   r)   r*   r`      s   
r`   rowscolumn_namesc                 C   sL   g }| D ]}g }|D ]}| |}t|}|t|t q
|| q|S )z;Format row dicts into string cell rows for table rendering.)rT   _format_valuer;   r1   r3   )r|   r}   formatted_rowsrm   formatted_rowcolumnvalueformatted_valuer)   r)   r*   r"      s   
r"   r   c                 C   s,   t | tjr
|  } t| ddddS )Nr6    )rM   npgenericitemr2   replace)r   r)   r)   r*   r~      s   r~   	max_widthc                 C   sP   |du r| S |dkr| rt S dS t| |kr| S |dkrt S | d|d  t  S )z3Truncate a single cell to the configured max width.Nr    rZ   )r<   r7   )r   r   r)   r)   r*   r1      s   r1   headersrD   rE   	data_rowsc                 C   sf   g }t t| D ](}t| | t|| t|| g}|D ]}|t||  q|t| q|S )z.Compute per-column widths for table rendering.)ranger7   r;   rd   )r   rD   rE   r   rH   idxwidthsrm   r)   r)   r*   r=      s   


r=   rH   c                 C   s   g }t dddd|}t| |}t||}t||}	|||||	g |r>t dddd|}
||
 |D ]
}|t|| q3t d	d
dd|}|| |S )z8Render the full table (borders, headers, data) as lines.u   ╭u   ┬u   ╮u   ─u   ╞u   ╪u   ╡u   ═u   ╰u   ┴u   ╯)_render_border_render_rowr:   r;   )r   rD   rE   r   rH   linestop
header_rowseparator_line	dtype_rowmiddlerm   bottomr)   r)   r*   r>     s   




r>   leftr   rightfillc                    s(    fdd|D }|  | | | S )z/Render a table border line given column widths.c                    s   g | ]} |d   qS )   r)   )r.   widthr   r)   r*   r0   ,  s    z"_render_border.<locals>.<listcomp>)r?   )r   r   r   r   rH   segmentsr)   r   r*   r   (  s   r   valuesc                 C   sH   g }t | D ]\}}||| }|d| d qdd| dS )z'Render a single table row with padding.r   u   │u   ┆)	enumerateljustr;   r?   )r   rH   cellsr   r   paddedr)   r)   r*   r   0  s
   r   )+typingr   r   r   r   r   r   numpyr   rS   ray.data.blockr   r	   r
   ray.exceptionsr   	ray.typesr   ray.data.datasetr   r   r<   rv   rx   r3   rU   __all__r9   r2   r   intr#   objectr-   r!   r`   r"   r~   r1   r=   r>   r   r   r)   r)   r)   r*   <module>   s     
"


@$
B






"