o
    ;Di                     @   s   d dl mZmZmZ d dlZd dlZd dlmZmZ d dl	m
Z
 dd ZG dd deZd	d
 Zdd Zdd Zdd ZG dd deZG dd dZG dd dZG dd dZdS )    )absolute_importprint_functiondivisionN)Tabledata)getcodecc                 K   s   t | fi |S N)CSVView)sourcekwargs r   H/var/www/Datamplify/venv/lib/python3.10/site-packages/petl/io/csv_py2.pyfromcsv_impl      r   c                   @   s   e Zd ZdddZdd ZdS )r	   Nstrictc                 K   s"   || _ || _|| _|| _|| _d S r   )r
   encodingerrorscsvargsheader)selfr
   r   r   r   r   r   r   r   __init__   s
   
zCSVView.__init__c                 c   s    | j d urt| j V  t| j}|jdkrC| jd}tj|fi | j	}|D ]}t|V  q)W d    d S 1 s<w   Y  d S | jd!}t
|f| j| jd| j	}|D ]}t|V  qZW d    d S 1 smw   Y  d S )NasciirUrbr   r   )r   tupler   r   namer
   opencsvreaderr   UnicodeReaderr   )r   codeccsvfiler   rowbufr   r   r   __iter__   s*   


"
"zCSVView.__iter__)NNr   N__name__
__module____qualname__r   r%   r   r   r   r   r	      s    
r	   c                 K      t | f|dd| d S )Nwbr
   mode	_writecsvtabler
   r   r   r   r   
tocsv_impl4      r2   c                 K   r*   )Nabr,   r.   r0   r   r   r   appendcsv_impl8   r3   r5   c                 K   s   |r| nt | }||1}t|}	|	jdkr!tj|fi |}
nt|f||d|}
|D ]}|
| q.W d    d S 1 sAw   Y  d S )Nr   r   )r   r   r   r   r   writerUnicodeWriterwriterow)r1   r
   r-   write_headerr   r   r   rowsr$   r!   r6   r#   r   r   r   r/   <   s   
"r/   c                 K   s   t | fd|i|S )Nr
   )
TeeCSVViewr0   r   r   r   teecsv_implQ   s   r<   c                   @   s"   e Zd Z		dddZdd ZdS )	r;   Nr   Tc                 K   s(   || _ || _|| _|| _|| _|| _d S r   )r1   r
   r   r   r9   r   )r   r1   r
   r   r   r9   r   r   r   r   r   V   s   
zTeeCSVView.__init__c              	   c   s    | j dd}t| j}|jdkrtj|fi | j}nt|f| j| j	d| j}t
| j}zt|}W n tyF   Y W d    d S w | jrO|| t|V  |D ]}|| t|V  qVW d    d S 1 snw   Y  d S )Nr+   r   r   )r
   r   r   r   r   r   r6   r   r7   r   iterr1   nextStopIterationr9   r8   r   )r   r$   r!   r6   ithdrr#   r   r   r   r%   _   s2   






"zTeeCSVView.__iter__)NNr   Tr&   r   r   r   r   r;   U   s
    
	r;   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )UTF8Recoderc                 C   s   t |}|j||d| _d S )N)r   )r   streamreaderr   )r   r$   r   r   r!   r   r   r   r      s   zUTF8Recoder.__init__c                 C      | S r   r   r   r   r   r   r%         zUTF8Recoder.__iter__c                 C   s   | j  dS Nutf-8)r   r>   encoderE   r   r   r   r>      r   zUTF8Recoder.nextN)r'   r(   r)   r   r%   r>   r   r   r   r   rB      s    rB   c                   @   &   e Zd Zd	ddZdd Zdd ZdS )
r    Nr   c                 K   s&   t |||d}tj|fi || _d S )Nr   )rB   r   r   )r   fr   r   r   r   r   r   r      s   zUnicodeReader.__init__c                 C   s   | j  }dd |D S )Nc                 S   s$   g | ]}t |trt|d n|qS )rH   )
isinstance
basestringunicode.0sr   r   r   
<listcomp>   s    z&UnicodeReader.next.<locals>.<listcomp>)r   r>   )r   r#   r   r   r   r>      s   
zUnicodeReader.nextc                 C   rD   r   r   rE   r   r   r   r%      rF   zUnicodeReader.__iter__Nr   )r'   r(   r)   r   r>   r%   r   r   r   r   r       s    
r    c                   @   rJ   )
r7   Nr   c                 K   s>   t  | _tj| jfi || _|| _t|}||| _d S r   )		cStringIOStringIOqueuer   r6   streamr   incrementalencoderencoder)r   r$   r   r   r   r!   r   r   r   r      s
   
zUnicodeWriter.__init__c                 C   sR   | j dd |D  | j }|d}| j|}| j| | j	d d S )Nc                 S   s&   g | ]}|d urt |dnd qS rG   )rN   rI   rO   r   r   r   rR      s    z*UnicodeWriter.writerow.<locals>.<listcomp>rH   r   )
r6   r8   rV   getvaluedecoderY   rI   rW   writetruncate)r   r#   r   r   r   r   r8      s   

zUnicodeWriter.writerowc                 C   s   |D ]}|  | qd S r   )r8   )r   r:   r#   r   r   r   	writerows   s   zUnicodeWriter.writerowsrS   )r'   r(   r)   r   r8   r^   r   r   r   r   r7      s    
r7   )
__future__r   r   r   r   rT   petl.util.baser   r   petl.io.baser   r   r	   r2   r5   r/   r<   r;   rB   r    r7   r   r   r   r   <module>   s   !2