]?@sddlZddlmZmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZddlmZddlmZddddd d d d d dddddddddddgZGdd d ZGdd d eZed eGdd d eZedeGdddeZedeGd ddZGd!ddZyeWnek reZYnXGd"ddZdS)#N)Error __version__writerreaderregister_dialectunregister_dialect get_dialect list_dialectsfield_size_limit QUOTE_MINIMAL QUOTE_ALLQUOTE_NONNUMERIC QUOTE_NONE__doc__)Dialect)StringIOr r r rrrrexcel excel_tabr rrrrr Snifferrr DictReader DictWriterc@s^eZdZdZdZdZdZdZdZdZ dZ dZ ddZ ddZ dS)rFNcCs&|jtkrd|_|jdS)NT) __class__r_valid _validate)selfr(/opt/alt/python35/lib64/python3.5/csv.py__init__)s zDialect.__init__cCsLyt|Wn7tk rG}ztt|WYdd}~XnXdS)N)_Dialect TypeErrorrstr)rerrrr.szDialect._validate)__name__ __module__ __qualname___namer delimiter quotecharZ escapechar doublequoteskipinitialspacelineterminatorquotingrrrrrrrs  c@s4eZdZdZdZdZdZdZeZ dS)r,"TFz N) r#r$r%r'r(r)r*r+r r,rrrrr5s c@seZdZdZdS)r N)r#r$r%r'rrrrr?s z excel-tabc@s4eZdZdZdZdZdZdZeZ dS) unix_dialectr-r.TF N) r#r$r%r'r(r)r*r+r r,rrrrr0Ds r0Zunixc@sgeZdZddddddZddZeddZejd dZd d ZdS) rNrcOsI||_||_||_t|||||_||_d|_dS)Nr) _fieldnamesrestkeyrestvalrdialectline_num)rf fieldnamesr3r4r5argskwdsrrrrPs     zDictReader.__init__cCs|S)Nr)rrrr__iter__YszDictReader.__iter__c CsP|jdkr:yt|j|_Wntk r9YnX|jj|_|jS)N)r2nextr StopIterationr6)rrrrr8\s zDictReader.fieldnamescCs ||_dS)N)r2)rvaluerrrr8fscCs|jdkr|jt|j}|jj|_x|gkrUt|j}q7Wtt|j|}t|j}t|}||kr||d||js z,DictWriter._dict_to_list..z(dict contains fields not in fieldnames: z, cSsg|]}t|qSr)repr)rPxrrrrRs c3s$|]}j|jVqdS)N)getr4)rPrD)rowdictrrr sz+DictWriter._dict_to_list..)rLrKjoinr8)rrVZ wrong_fieldsr)rVrr _dict_to_lists  zDictWriter._dict_to_listcCs|jj|j|S)N)rrMrY)rrVrrrrMszDictWriter.writerowcCs|jjt|j|S)N)r writerowsmaprY)rZrowdictsrrrrZszDictWriter.writerowsN)r#r$r%rrOrYrMrZrrrrrs    c@sOeZdZddZdddZddZdd Zd d ZdS) rcCsdddddg|_dS)Nr-r/; :) preferred)rrrrrszSniffer.__init__NcCs|j||\}}}}|s<|j||\}}|sNtdGdddt}||_||_|pd|_||_|S)NzCould not determine delimiterc@s"eZdZdZdZeZdS)zSniffer.sniff..dialectZsniffedz N)r#r$r%r&r+r r,rrrrr5s r5r.)_guess_quote_and_delimiter_guess_delimiterrrr)r'r(r*)rsample delimitersr(r)r'r*r5rrrsniffs     z Sniffer.sniffcCsg}x@dD]8}tj|tjtjB}|j|}|r Pq W|sSdSi}i}d}|j} x|D]} | dd } | | } | r|j| dd || [^\w "'])(?P ?)(?P["']).*?(?P=quote)(?P=delim)C(?:^| )(?P["']).*?(?P=quote)(?P[^\w "'])(?P ?)D(?P>[^\w "'])(?P ?)(?P["']).*?(?P=quote)(?:$| )*(?:^| )(?P["']).*?(?P=quote)(?:$| )rFrquotedelimZspacerDr1z]((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$)T)rerfrgrh)rFNr) recompileDOTALL MULTILINEfindall groupindexrUKeyErrormaxescapesearch)rdatarcmatchesZrestrZregexpZquotesdelimsZspacesrqmnrDr(rkr*Z dq_regexpr)rrrr`s`          % z"Sniffer._guess_quote_and_delimitercCsttd|jd}ddtdD}tdt|}d}i}i}i}dt|t|} } x| t|kr |d7}xn|| | D]\} xS|D]K} |j| i} | j| }| j|dd| |<| || . rrjrDcSs|dS)Nrjr)rTrrrFsz*Sniffer._guess_delimiter..css|]}|dVqdS)rjNr)rPitemrrrrWKsz+Sniffer._guess_delimiter..g?g?g{Gz?z%c rcSs"g|]\}}||fqSrr)rPrQvrrrrRus )rr)listfiltersplitrangeminrArUcountkeysitemsrsremovesumfloatr_sort)rrvrcasciiZ chunkLengthZ iterationZ charFrequencyZmodesrxstartendlinecharZ metaFrequencyZfreqrZmodeListtotalZ consistencyZ thresholdrQrrkr*rCrrrrast  &$ !   zSniffer._guess_delimiterc Cstt||j|}t|}t|}i}xt|D]}d||s, ^      2