o
    QDi                     @  s   d dl mZ d dlZd dlZd dlmZ d dlmZ ddlm	Z	mZ ddl
mZ dd	lmZ er<dd
l
mZ ddlmZ G dd de	ZdZdddZeej dS )    )annotationsN)chain)TYPE_CHECKING   )Parsersystem   )settings)
CsvControltypes)TableResourcec                   @  s,   e Zd ZdZdZdgZdd Zddd	Zd
S )	CsvParserzCSV parser implementation.Tstringc                 c  s   t | jj}t| jj}| jjdkr|dd |j	ddd}zt
 d||}W n t
jy<   t
 }Y nw |jdkrEd|_|jd|jd	d
 |jd|jd	d
 |jd|jd	d
 |jd|jd	d
 |jd|jd	d
 t|| jj}t
j|| d}|E d H  d S )Ntsv	delimiter	z,	;|)default '"T)distinctline_terminatorescape_char
quote_charskip_initial_space)dialect)r
   from_dialectresourcer   extract_samleloadertext_streamformatset_not_definedget_definedcsvSniffersniffjoinErrorexcel	quotecharr   lineterminator
escapecharskipinitialspacer   reader	to_python)selfcontrolsampler   configsourcedata r7   X/var/www/Datamplify/venv/lib/python3.10/site-packages/frictionless/formats/csv/parser.pyread_cell_stream_create   s.   
z!CsvParser.read_cell_stream_creater5   r   c           
   	   C  s  i }t | jj}| jjdkr|dd t|  D ]\}}|	ds.|d ur.|||< qt
jdd| jjdd?}tj|fi |}|$ | jjjrS||jj |jD ]}||j| jd	 qVW d    n1 smw   Y  W d    n1 s|w   Y  t| j}	|	|j d S )
Nr   r   r   _wtFr   )deleteencodingnewliner   )r
   r   r   r   r"   r#   varsr0   items
startswithtempfileNamedTemporaryFiler=   r%   writerheaderwriterowschemafield_names
row_streamto_listsupported_typesr   create_loaderwrite_byte_streamname)
r1   r5   optionsr2   rN   valuefilerD   rowr    r7   r7   r8   write_row_stream6   s0   

	zCsvParser.write_row_streamN)r5   r   )__name__
__module____qualname____doc__requires_loaderrK   r9   rS   r7   r7   r7   r8   r      s    r   d   r!   types.ITextStreamreturntypes.ISamplec                 C  sB   g }	 z	| t|  W n
 ty   Y |S w t|tkr 	 |S q)N)appendnextStopIterationlenSAMPLE_SIZE)r!   r3   r7   r7   r8   r   P   s   r   )r!   rZ   r[   r\   )
__future__r   r%   rB   	itertoolsr   typingr   r   r   r   r	   r2   r
   r   	resourcesr   r   ra   r   field_size_limitFIELD_SIZE_LIMITr7   r7   r7   r8   <module>   s    <
