3 \4?@sHddlZddlmZmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZddlmZddlmZddlmZdddd d d d d dddddddddddddgZGdd d ZGdd d eZed eGdddeZedeGdddeZed eGd!ddZGd"ddZyeWnek r4eZYnXGd#ddZdS)$N)Error __version__writerreaderregister_dialectunregister_dialect get_dialect list_dialectsfield_size_limit QUOTE_MINIMAL QUOTE_ALLQUOTE_NONNUMERIC QUOTE_NONE__doc__)Dialect) OrderedDict)StringIOr r r rrrrexcel excel_tabr rrrrr Snifferrr DictReader DictWriter unix_dialectc@s@eZdZdZdZdZdZdZdZdZ dZ dZ ddZ ddZ dS)rFNcCs|jtkrd|_|jdS)NT) __class__r_valid _validate)selfr/usr/lib64/python3.6/csv.py__init__+s zDialect.__init__cCs@y t|Wn.tk r:}ztt|WYdd}~XnXdS)N)_Dialect TypeErrorrstr)rerrrr0s zDialect._validate)__name__ __module__ __qualname___namer delimiter quotecharZ escapechar doublequoteskipinitialspacelineterminatorquotingr rrrrrrsc@s$eZdZdZdZdZdZdZeZ dS)r,"TFz N) r%r&r'r)r*r+r,r-r r.rrrrr7s c@seZdZdZdS)r N)r%r&r'r)rrrrrAsz excel-tabc@s$eZdZdZdZdZdZdZeZ dS)rr/r0TF N) r%r&r'r)r*r+r,r-r r.rrrrrFs Zunixc@s@eZdZd ddZddZeddZejd dZd d ZdS) rNrcOs6||_||_||_t||f|||_||_d|_dS)Nr) _fieldnamesrestkeyrestvalrdialectline_num)rf fieldnamesr4r5r6argskwdsrrrr Rs zDictReader.__init__cCs|S)Nr)rrrr__iter__[szDictReader.__iter__c Cs@|jdkr0yt|j|_Wntk r.YnX|jj|_|jS)N)r3nextr StopIterationr7)rrrrr9^s  zDictReader.fieldnamescCs ||_dS)N)r3)rvaluerrrr9hscCs|jdkr|jt|j}|jj|_x|gkr:t|j}q&Wtt|j|}t|j}t|}||krz||d||j<n*||krx |j|dD]}|j||<qW|S)Nr) r7r9r=rrziplenr4r5)rrowdZlfZlrkeyrrr__next__ls     zDictReader.__next__)NNNr) r%r&r'r r<propertyr9setterrErrrrrQs   c@s6eZdZdddZddZdd Zd d Zd d ZdS)rrraisercOsB||_||_|jdkr$td|||_t||f|||_dS)NrHignorez-extrasaction (%s) must be 'raise' or 'ignore')rHrI)r9r5lower ValueError extrasactionr)rr8r9r5rLr6r:r;rrrr s zDictWriter.__init__cCs tt|j|j}|j|dS)N)dictr@r9writerow)rheaderrrr writeheaderszDictWriter.writeheadercsNjdkr8jj}|r8tddjdd|DfddjDS)NrHz(dict contains fields not in fieldnames: z, cSsg|] }t|qSr)repr).0xrrr sz,DictWriter._dict_to_list..c3s|]}j|jVqdS)N)getr5)rRrD)rowdictrrr sz+DictWriter._dict_to_list..)rLkeysr9rKjoin)rrVZ wrong_fieldsr)rVrr _dict_to_lists  zDictWriter._dict_to_listcCs|jj|j|S)N)rrNrZ)rrVrrrrNszDictWriter.writerowcCs|jjt|j|S)N)r writerowsmaprZ)rZrowdictsrrrr[szDictWriter.writerowsN)rrHr)r%r&r'r rPrZrNr[rrrrrs  c@s6eZdZddZd ddZddZdd Zd d ZdS) rcCsdddddg|_dS)Nr/r1; :) preferred)rrrrr szSniffer.__init__NcCsd|j||\}}}}|s(|j||\}}|s4tdGdddt}||_||_|pVd|_||_|S)NzCould not determine delimiterc@seZdZdZdZeZdS)zSniffer.sniff..dialectZsniffedz N)r%r&r'r(r-r r.rrrrr6sr6r0)_guess_quote_and_delimiter_guess_delimiterrrr+r)r*r,)rsample delimitersr*r+r)r,r6rrrsniffs  z Sniffer.sniffcCsg}x0dD](}tj|tjtjB}|j|}|r Pq W|s>dSi}i}d}|j} x|D]} | dd } | | } | r|j| dd || <y| d d } | | } Wntk rwVYnX| r|dks| |kr|j| dd || <y| d d } Wntk rwVYnX| | rV|d 7}qVWt||jd } |rZt||jd }|||k}|d krbd}nd}d}tjdtj || dtj}|j |rd}nd}| |||fS)NI(?P[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?P=delim)G(?:^|\n)(?P["\']).*?(?P=quote)(?P[^\w\n"\'])(?P ?)G(?P[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?:$|\n)-(?:^|\n)(?P["\']).*?(?P=quote)(?:$|\n)rFrquotedelimZspace)rDr2z]((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$))rlrjT)rfrgrhri)rFNr) recompileDOTALL MULTILINEfindall groupindexrUKeyErrormaxescapesearch)rdatardZmatchesZrestrZregexpZquotesdelimsZspacesrrmnrDr*rlr,Z dq_regexpr+rrrras`          z"Sniffer._guess_quote_and_delimitercCsttd|jd}ddtdD}tdt|}d}i}i}i}dt|t|} } x| t|krn|d7}xT|| | D]D} x>|D]6} |j| i} | j| }| j|dd| |<| || <qWqWx|jD]} t|| j }t|dkr|dddkrqt|dkrht |dd d || <|j || || d|| dt d d |Df|| <q|d|| <qW|j }t ||}d }d}xt|dkr||krx\|D]T\}}|ddkr|ddkr|d||kr|dks||kr|||<qW|d8}qWt|dkr`t|jd}|dj||djd|k}||fS| } | |7} q\W|szdSt|dkrxF|jD]<}||jkr|dj||djd|k}||fSqWdd|j D}|j|dd}|dj||djd|k}||fS)Nr2cSsg|] }t|qSr)chr)rRcrrrrT.sz,Sniffer._guess_delimiter.. rrkcSs|dS)Nrkr)rSrrrHsz*Sniffer._guess_delimiter..)rDcss|]}|dVqdS)rkNr)rRitemrrrrWMsz+Sniffer._guess_delimiter..g?g?g{Gz?z%c rcSsg|]\}}||fqSrr)rRkvrrrrTws)rr)listfiltersplitrangeminrArUcountrXitemsrtremovesumfloatr`sort)rrwrdasciiZ chunkLengthZ iterationZ charFrequencyZmodesrxstartendlinecharZ metaFrequencyZfreqrZmodeListZtotalZ consistencyZ thresholdrrrlr,rCrrrrbst           zSniffer._guess_delimiterc Cstt||j|}t|}t|}i}xt|D] }d||<q2Wd}x|D]}|dkrZP|d7}t||krpqLxt|jD]x} xJtt t gD]0} y| || PWqt t fk rYqXqWt|| } | || kr~|| dkr| || <q~|| =q~WqLWd} x|j D]~\} } t| tdkrLt|| | krB| d7} n| d8} ns0@       2