
    &`i
                     j    d dl mZmZmZmZmZmZmZ d dlm	Z	 d dl
mZ erd dlZ G d de          ZdS )    )TYPE_CHECKINGAnyDictIteratorListOptionalUnion)Block)FileBasedDatasourceNc                        e Zd ZdZg dZ	 ddeeee         f         dee	ee
f                  f fdZddd	ed
ee         fdZ xZS )CSVDatasourcez2CSV datasource, for reading and writing CSV files.)csvzcsv.gzzcsv.brzcsv.zstzcsv.lz4Npathsarrow_csv_argsc                    ddl m}  t                      j        |fi | |i }|                    d|                    d                    | _        |                    d|                                          | _        || _	        d S )Nr   r   read_optionsF)use_threadsparse_options)
pyarrowr   super__init__popReadOptionsr   ParseOptionsr   r   )selfr   r   file_based_datasource_kwargsr   	__class__s        /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/data/_internal/datasource/csv_datasource.pyr   zCSVDatasource.__init__   s     	 ??">???!N*..COOO>>
 
 ,//AQAQASASTT,    fzpyarrow.NativeFilepathreturnc              #   $  K   dd l }ddl m} t          | j        d          r| j        j        | j        _        | j        | j                                        nd }	  |j        |f| j        | j        d| j	        }d }	 	 |
                                }|j                            |g|          }	||	j        }||	                    |          }	|	V  n# t          $ r Y d S w xY wi# |j        j        $ r}
t%          d| d          |
d }
~
ww xY w)	Nr   r   invalid_row_handler)r   r   T)schemazFailed to read CSV file: z. Please check the CSV file has correct format, or filter out non-CSV file with 'partition_filter' field. See read_csv() documentation for more details.)r   r   hasattrr   r%   _predicate_expr
to_pyarrowopen_csvr   r   read_next_batchTablefrom_batchesr&   filterStopIterationlibArrowInvalid
ValueError)r   r!   r"   par   filter_exprreaderr&   batchtablees              r   _read_streamzCSVDatasource._read_stream(   s      4%'<== 	"6 2 #/  ++--- 		!S\!."0  %	 F F
"2244EH115'&1IIE~!&". %[ 9 9KKKK$   FF v" 	 	 	 D       
 	s=   #C' ?AC C' 
C#C' "C##C' 'D6D

D)N)__name__
__module____qualname____doc___FILE_EXTENSIONSr	   strr   r   r   r   r   r   r
   r9   __classcell__)r   s   @r   r   r   
   s        <<   48- -S$s)^$- !c3h0- - - - - -&*2 *# *(5/ * * * * * * * *r    r   )typingr   r   r   r   r   r   r	   ray.data.blockr
   )ray.data.datasource.file_based_datasourcer   r   r    r    r   <module>rE      s    L L L L L L L L L L L L L L L L L L             I I I I I I NNNH H H H H' H H H H Hr    