a �DOg?�@sddlZddlmZmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZddlmZddlmZgd�ZGdd�d�ZGdd �d e�Zed e�Gd d �d e�Zed e�Gd d�de�Zede�Gdd�d�ZGdd�d�ZzeWney�eZYn0Gdd�d�ZdS)�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)�StringIO)r r r rrrr�excel� excel_tabr rrrrr �Snifferrr� DictReader� DictWriter� unix_dialectc@s@eZdZdZdZdZdZdZdZdZ dZ dZ dd�Z dd�Z dS)r�FNcCs|jtkrd|_|��dS)NT)� __class__r�_valid� _validate��self�r�/usr/lib64/python3.9/csv.py�__init__*s zDialect.__init__c CsBz t|�Wn0ty<}ztt|���WYd}~n d}~00dS�N)�_Dialect� TypeErrorr�str)r�errrr/s zDialect._validate)�__name__� __module__� __qualname__�_namer� delimiter� quotecharZ escapechar� doublequote�skipinitialspace�lineterminator�quotingr rrrrrrsrc@s$eZdZdZdZdZdZdZeZ dS)r�,�"TF� N) r&r'r(r*r+r,r-r.r r/rrrrr6s rc@seZdZdZdS)r� N)r&r'r(r*rrrrr@srz excel-tabc@s$eZdZdZdZdZdZdZeZ dS)rr0r1TF� N) r&r'r(r*r+r,r-r.r r/rrrrrEs rZunixc@s@eZdZd dd�Zdd�Zedd��Zejd d��Zd d �ZdS) rNrcOs<||_||_||_t||g|�Ri|��|_||_d|_dS�Nr)� _fieldnames�restkey�restvalr�dialect�line_num)r�f� fieldnamesr7r8r9�args�kwdsrrrr Qs zDictReader.__init__cCs|Sr!rrrrr�__iter__ZszDictReader.__iter__cCs>|jdur.zt|j�|_Wnty,Yn0|jj|_|jSr!)r6�nextr� StopIterationr:rrrrr<]s   zDictReader.fieldnamescCs ||_dSr!)r6)r�valuerrrr<gscCs�|jdkr|jt|j�}|jj|_|gkr8t|j�}q$tt|j|��}t|j�}t|�}||krv||d�||j<n&||kr�|j|d�D]}|j||<q�|Sr5) r:r<r@r�dict�zip�lenr7r8)r�row�dZlfZlr�keyrrr�__next__ks      zDictReader.__next__)NNNr) r&r'r(r r?�propertyr<�setterrIrrrrrPs�   rc@s6eZdZddd�Zdd�Zdd �Zd d �Zd d �ZdS)rr�raisercOsH||_||_|��dvr$td|��||_t||g|�Ri|��|_dS)N)rL�ignorez-extrasaction (%s) must be 'raise' or 'ignore')r<r8�lower� ValueError� extrasactionr)rr;r<r8rPr9r=r>rrrr �s �zDictWriter.__init__cCstt|j|j��}|�|�Sr!)rCrDr<�writerow)r�headerrrr� writeheader�szDictWriter.writeheadercsN�jdkr8����j}|r8tdd�dd�|D������fdd��jD�S)NrLz(dict contains fields not in fieldnames: z, cSsg|] }t|��qSr)�repr)�.0�xrrr� ��z,DictWriter._dict_to_list..c3s|]}��|�j�VqdSr!)�getr8)rUrH��rowdictrrr� �rXz+DictWriter._dict_to_list..)rP�keysr<rO�join)rr[Z wrong_fieldsrrZr� _dict_to_list�s �zDictWriter._dict_to_listcCs|j�|�|��Sr!)rrQr_)rr[rrrrQ�szDictWriter.writerowcCs|j�t|j|��Sr!)r� writerows�mapr_)rZrowdictsrrrr`�szDictWriter.writerowsN)rrLr)r&r'r(r rSr_rQr`rrrrr�s� rc@s6eZdZdd�Zd dd�Zdd�Zdd �Zd d �ZdS) rcCsgd�|_dS)N)r0r3�;� �:)� preferredrrrrr �szSniffer.__init__NcCsd|�||�\}}}}|s(|�||�\}}|s4td��Gdd�dt�}||_||_|pVd|_||_|S)NzCould not determine delimiterc@seZdZdZdZeZdS)zSniffer.sniff..dialectZsniffedr2N)r&r'r(r)r.r r/rrrrr9�sr9r1)�_guess_quote_and_delimiter�_guess_delimiterrrr,r*r+r-)r�sample� delimitersr+r,r*r-r9rrr�sniff�s � � z Sniffer.sniffc Cs�g}dD]*}t�|tjtjB�}|�|�}|rq4q|s[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?P=delim)zG(?:^|\n)(?P["\']).*?(?P=quote)(?P[^\w\n"\'])(?P ?)zG(?P[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?:$|\n)z-(?:^|\n)(?P["\']).*?(?P=quote)(?:$|\n))rFNrr�quote��delim�space�rHr4rz]((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$))rmrkTF) �re�compile�DOTALL� MULTILINE�findall� groupindexrY�KeyError�max�escape�search)r�datari�matchesZrestrZregexpZquotes�delims�spacesru�m�nrHr+rmr-Z dq_regexpr,rrrrf�s`           �� z"Sniffer._guess_quote_and_delimitercCsttd|�d���}dd�td�D�}tdt|��}d}i}i}i}d|} } | t|�k�rR|d7}|| | �D]@} |D]6} |�| i�} | �| �}| �|d�d| |<| || <qxqp|��D]�} t|| � ��}t|�dkr�|dddkr�q�t|�dk�rLt |dd �d �|| <|� || �|| d|| dt d d �|D��f|| <q�|d|| <q�|� �}t t||t|���}d }d}t|�dk�r�||k�r�|D]T\}}|ddk�r�|ddk�r�|d||k�r�|du�s�||v�r�|||<�q�|d8}�q�t|�dk�rDt|���d}|d�|�|d�d|�k}||fS| } | |7} qN|�s\dSt|�dk�r�|jD]@}||��v�rp|d�|�|d�d|�k}||fS�qpdd�|� �D�}|��|dd}|d�|�|d�d|�k}||fS)Nr4cSsg|] }t|��qSr)�chr)rU�crrrrW-rXz,Sniffer._guess_delimiter..�� rrlcSs|dS)Nrlr)rVrrr�GrXz*Sniffer._guess_delimiter..rocss|]}|dVqdS)rlNr)rU�itemrrrr\LrXz+Sniffer._guess_delimiter..g�?g�������?g{�G�z�?z%c )rrcSsg|]\}}||f�qSrr)rU�k�vrrrrWvrX�����)�list�filter�split�range�minrErY�countr]�itemsrw�remove�sum�floatre�sort)rrzri�asciiZ chunkLengthZ iterationZ charFrequencyZmodesr|�start�end�line�charZ metaFrequencyZfreqr�ZmodeList�totalZ consistencyZ thresholdr�r�rmr-rGrrrrgs�     �  ��   �   �  �zSniffer._guess_delimiterc Cs�tt|�|�|��}t|�}t|�}i}t|�D] }d||<q0d}|D]�}|dkrVq�|d7}t|�|krlqFt|���D]v} tt t fD]2} z| || �Wq�Wq�t t fy�Yq�0q�t|| �} | || krx|| dur�| || <qx|| =qxqFd} |� �D]z\} } t| �td�k�r>t|| �| k�r4| d7} n| d8} q�z| || �Wn t tf�yn| d7} Yq�0| d8} q�| dkS)Nr�rl)rrrjr@rEr�r�r]�intr��complexrO� OverflowErrorr��typer#) rrhZrdrrR�columnsZ columnTypes�i�checkedrF�colZthisTypeZ hasHeaderZcolTyperrr� has_headersH            zSniffer.has_header)N)r&r'r(r rjrfrgr�rrrrr�s  Lgr)rpZ_csvrrrrrrrr r r r r rrrr"�ior�__all__rrrrrr�� NameErrorr�rrrrr�s$@     2