
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \4?  ã               @   sH  d dl Z d dlmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dlmZ dddd	d
ddddddddddddddddgZG dd„ dƒZG dd„ deƒZedeƒ G dd„ deƒZedeƒ G dd„ deƒZed eƒ G d!d„ dƒZG d"d„ dƒZye W n ek
�r4   eZY nX G d#d„ dƒZdS )$é    N)ÚErrorÚ__version__ÚwriterÚreaderÚregister_dialectÚunregister_dialectÚget_dialectÚlist_dialectsÚfield_size_limitÚQUOTE_MINIMALÚ	QUOTE_ALLÚQUOTE_NONNUMERICÚ
QUOTE_NONEÚ__doc__)ÚDialect)ÚOrderedDict)ÚStringIOr   r   r   r   r   r   r   ÚexcelÚ	excel_tabr
   r   r   r   r   r	   ÚSnifferr   r   Ú
DictReaderÚ
DictWriterÚunix_dialectc               @   s@   e Zd ZdZdZdZdZdZdZdZ	dZ
dZdd„ Zdd„ ZdS )r   Ú FNc             C   s   | j tkrd| _| jƒ  d S )NT)Ú	__class__r   Ú_validÚ	_validate)Úself© r   ú/usr/lib64/python3.6/csv.pyÚ__init__+   s    
zDialect.__init__c             C   s@   yt | ƒ W n. tk
r: } ztt|ƒƒ‚W Y d d }~X nX d S )N)Ú_DialectÚ	TypeErrorr   Ústr)r   Úer   r   r   r   0   s    zDialect._validate)Ú__name__Ú
__module__Ú__qualname__Ú_namer   Ú	delimiterÚ	quotecharZ
escapecharÚdoublequoteÚskipinitialspaceÚlineterminatorÚquotingr    r   r   r   r   r   r      s   c               @   s$   e Zd ZdZdZdZdZdZeZ	dS )r   ú,ú"TFz
N)
r%   r&   r'   r)   r*   r+   r,   r-   r   r.   r   r   r   r   r   7   s   c               @   s   e Zd ZdZdS )r   ú	N)r%   r&   r'   r)   r   r   r   r   r   A   s   z	excel-tabc               @   s$   e Zd ZdZdZdZdZdZeZ	dS )r   r/   r0   TFÚ
N)
r%   r&   r'   r)   r*   r+   r,   r-   r   r.   r   r   r   r   r   F   s   Zunixc               @   s@   e Zd Zddd„Zdd„ Zedd„ ƒZejd	d„ ƒZd
d„ ZdS )r   Nr   c             O   s6   || _ || _|| _t||f|ž|Ž| _|| _d| _d S )Nr   )Ú_fieldnamesÚrestkeyÚrestvalr   ÚdialectÚline_num)r   ÚfÚ
fieldnamesr4   r5   r6   ÚargsÚkwdsr   r   r   r    R   s    zDictReader.__init__c             C   s   | S )Nr   )r   r   r   r   Ú__iter__[   s    zDictReader.__iter__c             C   s@   | j d kr0yt| jƒ| _ W n tk
r.   Y nX | jj| _| j S )N)r3   Únextr   ÚStopIterationr7   )r   r   r   r   r9   ^   s    

zDictReader.fieldnamesc             C   s
   || _ d S )N)r3   )r   Úvaluer   r   r   r9   h   s    c             C   s¨   | j dkr| j t| jƒ}| jj | _ x|g kr:t| jƒ}q&W tt| j|ƒƒ}t| jƒ}t|ƒ}||k rz||d … || j< n*||kr¤x | j|d … D ]}| j||< q’W |S )Nr   )	r7   r9   r=   r   r   ÚzipÚlenr4   r5   )r   ÚrowÚdZlfZlrÚkeyr   r   r   Ú__next__l   s    




zDictReader.__next__)NNNr   )	r%   r&   r'   r    r<   Úpropertyr9   ÚsetterrE   r   r   r   r   r   Q   s    

c               @   s6   e Zd Zddd„Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )r   r   Úraiser   c             O   sB   || _ || _|jƒ dkr$td| ƒ‚|| _t||f|ž|Ž| _d S )NrH   Úignorez-extrasaction (%s) must be 'raise' or 'ignore')rH   rI   )r9   r5   ÚlowerÚ
ValueErrorÚextrasactionr   )r   r8   r9   r5   rL   r6   r:   r;   r   r   r   r    „   s    zDictWriter.__init__c             C   s    t t| j| jƒƒ}| j|ƒ d S )N)Údictr@   r9   Úwriterow)r   Úheaderr   r   r   ÚwriteheaderŽ   s    zDictWriter.writeheaderc                sN   ˆj dkr8ˆ jƒ ˆj }|r8tddjdd„ |D ƒƒ ƒ‚‡ ‡fdd„ˆjD ƒS )NrH   z(dict contains fields not in fieldnames: z, c             S   s   g | ]}t |ƒ‘qS r   )Úrepr)Ú.0Úxr   r   r   ú
<listcomp>—   s    z,DictWriter._dict_to_list.<locals>.<listcomp>c             3   s   | ]}ˆ j |ˆjƒV  qd S )N)Úgetr5   )rR   rD   )Úrowdictr   r   r   ú	<genexpr>˜   s    z+DictWriter._dict_to_list.<locals>.<genexpr>)rL   Úkeysr9   rK   Újoin)r   rV   Zwrong_fieldsr   )rV   r   r   Ú_dict_to_list’   s    
zDictWriter._dict_to_listc             C   s   | j j| j|ƒƒS )N)r   rN   rZ   )r   rV   r   r   r   rN   š   s    zDictWriter.writerowc             C   s   | j jt| j|ƒƒS )N)r   Ú	writerowsÚmaprZ   )r   Zrowdictsr   r   r   r[   �   s    zDictWriter.writerowsN)r   rH   r   )r%   r&   r'   r    rP   rZ   rN   r[   r   r   r   r   r   ƒ   s    
	c               @   s6   e Zd Zdd„ Zddd„Zdd„ Zdd	„ Zd
d„ ZdS )r   c             C   s   dddddg| _ d S )Nr/   r1   ú;ú ú:)Ú	preferred)r   r   r   r   r    «   s    zSniffer.__init__Nc             C   sd   | j ||ƒ\}}}}|s(| j||ƒ\}}|s4tdƒ‚G dd„ dtƒ}||_||_|pVd|_||_|S )NzCould not determine delimiterc               @   s   e Zd ZdZdZeZdS )zSniffer.sniff.<locals>.dialectZsniffedz
N)r%   r&   r'   r(   r-   r   r.   r   r   r   r   r6   ¾   s   r6   r0   )Ú_guess_quote_and_delimiterÚ_guess_delimiterr   r   r+   r)   r*   r,   )r   ÚsampleÚ
delimitersr*   r+   r)   r,   r6   r   r   r   Úsniff°   s    

zSniffer.sniffc             C   s¢  g }x0dD ](}t j|t jt jB ƒ}|j|ƒ}|r
P q
W |s>dS i }i }d}|j}	xÊ|D ]Â}
|	d d	 }|
| }|r†|j|dƒd	 ||< y|	d
 d	 }|
| }W n tk
r´   wVY nX |rÞ|d ksÊ||krÞ|j|dƒd	 ||< y|	d d	 }W n tk
�r   wVY nX |
| rV|d	7 }qVW t||jd�}|�rZt||jd�}|| |k}|dk�rbd}nd}d}t jdt j	|ƒ|dœ t jƒ}|j
|ƒ�r’d}nd}||||fS )NúI(?P<delim>[^\w\n"\'])(?P<space> ?)(?P<quote>["\']).*?(?P=quote)(?P=delim)úG(?:^|\n)(?P<quote>["\']).*?(?P=quote)(?P<delim>[^\w\n"\'])(?P<space> ?)úG(?P<delim>[^\w\n"\'])(?P<space> ?)(?P<quote>["\']).*?(?P=quote)(?:$|\n)ú-(?:^|\n)(?P<quote>["\']).*?(?P=quote)(?:$|\n)r   Fr   Úquoteé   ÚdelimZspace)rD   r2   z]((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$))rl   rj   T)rf   rg   rh   ri   )r   FNr   )ÚreÚcompileÚDOTALLÚ	MULTILINEÚfindallÚ
groupindexrU   ÚKeyErrorÚmaxÚescapeÚsearch)r   Údatard   ZmatchesZrestrZregexpZquotesÚdelimsZspacesrr   ÚmÚnrD   r*   rl   r,   Z	dq_regexpr+   r   r   r   ra   Í   s`      


z"Sniffer._guess_quote_and_delimiterc             C   s  t td |jdƒƒƒ}dd„ tdƒD ƒ}tdt|ƒƒ}d}i }i }i }dt|t|ƒƒ }	}
�x|	t|ƒk �rn|d7 }xT||	|
… D ]D}x>|D ]6}|j|i ƒ}|j|ƒ}|j|dƒd ||< |||< qŠW q€W x®|jƒ D ]¢}t || j	ƒ ƒ}t|ƒdk�r|d d dk�rqÒt|ƒdk�rht
|dd	„ d
�||< |j|| ƒ || d || d tdd„ |D ƒƒ f||< qÒ|d ||< qÒW |j	ƒ }t|| ƒ}d}d}x„t|ƒdk�r||k�rx\|D ]T\}}|d dk�r´|d dk�r´|d | |k�r´|d k�sþ||k�r´|||< �q´W |d8 }�q–W t|ƒdk�r`t |jƒ ƒd }|d j|ƒ|d jd| ƒk}||fS |
}	|
|7 }
q\W |�szdS t|ƒdk�rÐxF| jD ]<}||jƒ k�r�|d j|ƒ|d jd| ƒk}||fS �q�W dd„ |j	ƒ D ƒ}|jƒ  |d d }|d j|ƒ|d jd| ƒk}||fS )Nr2   c             S   s   g | ]}t |ƒ‘qS r   )Úchr)rR   Úcr   r   r   rT   .  s    z,Sniffer._guess_delimiter.<locals>.<listcomp>é   é
   r   rk   c             S   s   | d S )Nrk   r   )rS   r   r   r   Ú<lambda>H  s    z*Sniffer._guess_delimiter.<locals>.<lambda>)rD   c             s   s   | ]}|d  V  qdS )rk   Nr   )rR   Úitemr   r   r   rW   M  s    z+Sniffer._guess_delimiter.<locals>.<genexpr>g      ð?gÍÌÌÌÌÌì?g{®Gáz„?z%c r   c             S   s   g | ]\}}||f‘qS r   r   )rR   ÚkÚvr   r   r   rT   w  s    )r   r   éÿÿÿÿ)ÚlistÚfilterÚsplitÚrangeÚminrA   rU   ÚcountrX   Úitemsrt   ÚremoveÚsumÚfloatr`   Úsort)r   rw   rd   ÚasciiZchunkLengthZ	iterationZcharFrequencyZmodesrx   ÚstartÚendÚlineÚcharZmetaFrequencyZfreqrŠ   ZmodeListZtotalZconsistencyZ	thresholdr�   r‚   rl   r,   rC   r   r   r   rb     st    

 zSniffer._guess_delimiterc             C   s–  t t|ƒ| j|ƒƒ}t|ƒ}t|ƒ}i }xt|ƒD ]}d ||< q2W d}x¶|D ]®}|dkrZP |d7 }t|ƒ|krpqLxˆt|jƒ ƒD ]x}	xJtt	t
gD ]0}
y|
||	 ƒ P W qŽ ttfk
r¼   Y qŽX qŽW t||	 ƒ}
|
||	 kr~||	 d krð|
||	< q~||	= q~W qLW d}xŠ|jƒ D ]~\}	}t|ƒtdƒk�rLt||	 ƒ|k�rB|d7 }n|d8 }n<y|||	 ƒ W n" ttfk
�r~   |d7 }Y n
X |d8 }�qW |dkS )Nr   é   rk   )r   r   re   r=   rA   r‡   r„   rX   Úintr�   ÚcomplexrK   ÚOverflowErrorrŠ   Útyper"   )r   rc   ZrdrrO   ÚcolumnsZcolumnTypesÚiZcheckedrB   ÚcolZthisTypeZ	hasHeaderZcolTyper   r   r   Ú
has_header€  sJ    
 




zSniffer.has_header)N)r%   r&   r'   r    re   ra   rb   rœ   r   r   r   r   r   ¦   s
   
Lg) rm   Z_csvr   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r!   Úcollectionsr   Úior   Ú__all__r   r   r   r   r   r–   Ú	NameErrorr�   r   r   r   r   r   Ú<module>   s0   @



2
