
    z%i@                     F   	 d dl Z 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mZmZ d dlmZ d dlmZ g dZ G d d      Z G d d	e      Z ed	e        G d
 de      Z ede        G d de      Z ede        G d d      Z G d d      Z G d d      Zy)    N)Error__version__writerreaderregister_dialectunregister_dialectget_dialectlist_dialectsfield_size_limitQUOTE_MINIMAL	QUOTE_ALLQUOTE_NONNUMERIC
QUOTE_NONEQUOTE_STRINGSQUOTE_NOTNULL__doc__)Dialect)StringIO)r   r   r   r   r   r   r   r   r   excel	excel_tabr   r   r   r   r	   r
   Snifferr   r   
DictReader
DictWriterunix_dialectc                   >    e Zd Z	 dZdZdZdZdZdZdZ	dZ
dZd Zd Zy)r    FNc                 X    | j                   t        k7  rd| _        | j                          y )NT)	__class__r   _valid	_validateselfs    7/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/csv.py__init__zDialect.__init__-   s    >>W$DK    c                 f    	 t        |        y # t        $ r}t        t        |            d }~ww xY wN)_Dialect	TypeErrorr   str)r"   es     r#   r    zDialect._validate2   s,    	 TN 	 A-	 s    	0+0)__name__
__module____qualname___namer   	delimiter	quotechar
escapechardoublequoteskipinitialspacelineterminatorquotingr$   r     r%   r#   r   r      sA     EFIIJKNG
 r%   r   c                   &    e Zd Z	 dZdZdZdZdZeZ	y)r   ,"TF
N)
r,   r-   r.   r0   r1   r3   r4   r5   r   r6   r7   r%   r#   r   r   9   s$    EIIKNGr%   r   c                       e Zd Z	 dZy)r   	N)r,   r-   r.   r0   r7   r%   r#   r   r   C   s
    OIr%   r   z	excel-tabc                   &    e Zd Z	 dZdZdZdZdZeZ	y)r   r9   r:   TF
N)
r,   r-   r.   r0   r1   r3   r4   r5   r   r6   r7   r%   r#   r   r   H   s$    DIIKNGr%   r   unixc                   |    e Zd Z	 	 ddZd Zed        Zej                  d        Zd Z e	e
j                        Zy)r   Nc                     |t        |      |u rt        |      }|| _        || _        || _        t        ||g|i || _        || _        d| _        y Nr   )iterlist_fieldnamesrestkeyrestvalr   dialectline_num)r"   f
fieldnamesrG   rH   rI   argskwdss           r#   r$   zDictReader.__init__T   sZ    !d:&6*&Dj)J%Q7$7$7r%   c                     | S r'   r7   r!   s    r#   __iter__zDictReader.__iter___   s    r%   c                     | j                   	 t        | j                        | _         | j                  j                  | _        | j                   S # t        $ r Y 2w xY wr'   )rF   nextr   StopIterationrJ   r!   s    r#   rL   zDictReader.fieldnamesb   sW    ##'#4  ,, ! s   A 	AAc                     || _         y r'   )rF   )r"   values     r#   rL   zDictReader.fieldnamesl   s
     r%   c                    | j                   dk(  r| j                   t        | j                        }| j                  j                   | _         |g k(  rt        | j                        }|g k(  rt	        t        | j                  |            }t        | j                        }t        |      }||k  r||d  || j                  <   |S ||kD  r#| j                  |d  D ]  }| j                  ||<    |S rC   )	rJ   rL   rR   r   dictziplenrG   rH   )r"   rowdlflrkeys         r#   __next__zDictReader.__next__p   s    ==AOO4;;,,
 Rit{{#C RiT__c*+!X7!"#hAdllO  "Wrs+ &#&r%   )NNNr   )r,   r-   r.   r$   rP   propertyrL   setterr_   classmethodtypesGenericAlias__class_getitem__r7   r%   r#   r   r   S   sX    AE 	     ! !, $E$6$67r%   r   c                   T    e Zd Z	 	 ddZd Zd Zd Zd Z ee	j                        Zy)r   c                     |t        |      |u rt        |      }|| _        || _        |j	                         }|dvrt        d|z        || _        t        ||g|i || _        y )N)raiseignorez-extrasaction (%s) must be 'raise' or 'ignore')rD   rE   rL   rH   lower
ValueErrorextrasactionr   )r"   rK   rL   rH   rl   rI   rM   rN   s           r#   r$   zDictWriter.__init__   s{    !d:&6*&Dj)J$#))+22L+, - -(Q7$7$7r%   c                 v    t        t        | j                  | j                              }| j                  |      S r'   )rW   rX   rL   writerow)r"   headers     r#   writeheaderzDictWriter.writeheader   s*    c$//4??;<}}V$$r%   c                       j                   dk(  rSj                          j                  z
  }|r4t        ddj	                  |D cg c]  }t        |       c}      z          fd j                  D        S c c}w )Nrh   z(dict contains fields not in fieldnames: z, c              3   V   K   | ]   }j                  |j                         " y wr'   )getrH   ).0r^   rowdictr"   s     r#   	<genexpr>z+DictWriter._dict_to_list.<locals>.<genexpr>   s      J3C.Js   &))rl   keysrL   rk   joinrepr)r"   ru   wrong_fieldsxs   ``  r#   _dict_to_listzDictWriter._dict_to_list   sp    '"<<>DOO;L !K#'99|-L!d1g-L#M"N O OJ$//JJ .Ms   A;c                 V    | j                   j                  | j                  |            S r'   )r   rn   r|   )r"   ru   s     r#   rn   zDictWriter.writerow   s"    {{##D$6$6w$?@@r%   c                 `    | j                   j                  t        | j                  |            S r'   )r   	writerowsmapr|   )r"   rowdictss     r#   r   zDictWriter.writerows   s$    {{$$S););X%FGGr%   N)r   rh   r   )r,   r-   r.   r$   rp   r|   rn   r   rb   rc   rd   re   r7   r%   r#   r   r      s7    ?F 8%KAH $E$6$67r%   r   c                   .    e Zd Z	 d ZddZd Zd Zd Zy)r   c                     g d| _         y )N)r9   r=   ; :)	preferredr!   s    r#   r$   zSniffer.__init__   s	    3r%   Nc                     	 | j                  ||      \  }}}}|s| j                  ||      \  }}|st        d       G d dt              }||_        ||_        |xs d|_        ||_        |S )NzCould not determine delimiterc                       e Zd ZdZdZeZy)Sniffer.sniff.<locals>.dialectsniffedr;   N)r,   r-   r.   r/   r5   r   r6   r7   r%   r#   rI   r      s    E#N#Gr%   rI   r:   )_guess_quote_and_delimiter_guess_delimiterr   r   r3   r0   r1   r4   )r"   sample
delimitersr1   r3   r0   r4   rI   s           r#   sniffzSniffer.sniff   s    	
 226:F 	<	;	+;*.*?*?@J+L'I' 788	$g 	$ *%%,#3 r%   c                 .   	 g }dD ]L  }t        j                  |t         j                  t         j                  z        }|j	                  |      }|sL n |syi }i }d}j
                  }	|D ]k  }
|	d   dz
  }|
|   }|r|j                  |d      dz   ||<   	 |	d   dz
  }|
|   }|r|||v r|j                  |d      dz   ||<   	 |	d   dz
  }|
|   sg|dz  }m t        ||j                        }|r't        ||j                        }||   |k(  }|d	k(  rd
}nd
}d}t        j                  dt        j                  |      |dz  t         j                        }|j                  |      rd}nd}||||fS # t        $ r Y w xY w# t        $ r Y 'w xY w)N)zI(?P<delim>[^\w\n"\'])(?P<space> ?)(?P<quote>["\']).*?(?P=quote)(?P=delim)zG(?:^|\n)(?P<quote>["\']).*?(?P=quote)(?P<delim>[^\w\n"\'])(?P<space> ?)zG(?P<delim>[^\w\n"\'])(?P<space> ?)(?P<quote>["\']).*?(?P=quote)(?:$|\n)z-(?:^|\n)(?P<quote>["\']).*?(?P=quote)(?:$|\n))r   FNr   r   quote   delimspacer^   r?   r   z]((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$))r   r   TF)recompileDOTALL	MULTILINEfindall
groupindexrs   KeyErrormaxescapesearch)r"   datar   matchesrestrregexpquotesdelimsspacesr   mnr^   r1   r   r4   	dq_regexpr3   s                     r#   r   z"Sniffer._guess_quote_and_delimiter   s   		 H 	E ZZryy2<<'?@FnnT*G	 '&&
 	A7#a'AA$C$jja014sw'!+d 
*cZ.?$jja014sw'!+ t!#	& FJJ/	FJJ/E%e}6} E  JJ(*		%(8)L MNPll\	 D!KK;/?@@I    s$   E7F7	FF	FFc                    	 t        t        d |j                  d                  }t        d      D cg c]  }t	        |       }}t        dt        |            }d}i }i }i }	d|}}
|
t        |      k  r	|dz  }||
| D ]I  }|D ]B  }|j                  |i       }|j                  |      }|j                  |d      dz   ||<   |||<   D K |j                         D ]  }t        ||   j                               }t        |      dk(  r|d   d   dk(  r9t        |      dkD  rLt        |d       ||<   |j                  ||          ||   d   ||   d   t        d |D              z
  f||<   |d   ||<    |j                         }t        t        ||z  t        |                  }d	}d
}t        |	      dk(  rR||k\  rM|D ]/  \  }}|d   dkD  s|d   dkD  s|d   |z  |k\  s$|||v s+||	|<   1 |dz  }t        |	      dk(  r||k\  rMt        |	      dk(  rLt        |	j                               d   }|d   j                  |      |d   j                  d|z        k(  }||fS |}
||z  }|
t        |      k  r	|	syt        |	      dkD  rU| j                  D ]F  }||	j                         v s|d   j                  |      |d   j                  d|z        k(  }||fc S  |	j                         D cg c]	  \  }}||f }}}|j!                          |d   d   }|d   j                  |      |d   j                  d|z        k(  }||fS c c}w c c}}w )Nr?      
   r   r   c                     | d   S )Nr   r7   )r{   s    r#   <lambda>z*Sniffer._guess_delimiter.<locals>.<lambda>N  s
    1Q4 r%   r   c              3   &   K   | ]	  }|d      yw)r   Nr7   )rt   items     r#   rv   z+Sniffer._guess_delimiter.<locals>.<genexpr>S  s     (CTa(Cs   g      ?g?g{Gz?z%c )r   r   )rE   filtersplitrangechrminrY   rs   countrw   itemsr   removesumfloatr   sort)r"   r   r   casciichunkLength	iterationcharFrequencymodesr   startendlinecharmetaFrequencyfreqr   modeListtotalconsistency	thresholdkvr   r4   r[   s                             r#   r   zSniffer._guess_delimiter  s   	$ F4D!123!&s,AQ,, "c$i(	sc$iNIU3 8! 8D$1$5$5dB$?M::d+D*7*;*;D!*Dq*HM$'*7M$'88 &**, +]406689u:?uQx{a'7u:>"%e"@E$K LLt-#(;q>5;q>%((CU(C%C4D #EE$K #((E$K+  {{}H#kI5s4yABEKIf+"{i'?$ *DAqtaxAaD1HqT%ZK7'/1
?()F1I	*
 t# f+"{i'? 6{aV[[]+A.$(GMM%$8$(GMM%%-$@%A /00 E;Cc c$if  v;?^^ 1%(,Qa(8(,Qeai(@)A$/00	1 %+LLN35Aa!A33

b	! GMM%0 GMM%%-89'((_ -R 4s   M9Mc                    t        t        |      | j                  |            }t        |      }t	        |      }i }t        |      D ]  }d ||<   	 d}|D ]d  }|dkD  r n]|dz  }t	        |      |k7  rt        |j                               D ]+  }	t        }
	  |
||	          |
||	   k7  s||	   |
||	<   )||	= - f d}|j                         D ]C  \  }	}t        |t              rt	        ||	         |k7  r|dz  }-|dz  }3	  |||	          |dz  }E |dkD  S # t        t        f$ r t	        ||	         }
Y w xY w# t        t        f$ r |dz  }Y w xY w)Nr      r   )r   r   r   rR   rY   r   rE   rw   complexrk   OverflowErrorr   
isinstanceintr)   )r"   r   rdrro   columnscolumnTypesicheckedrZ   colthisType	hasHeadercolTypes                r#   
has_headerzSniffer.has_header  s    Xf%tzz&'9:cf+w6A$Q6 	-C|qLG3x7"K,,./ -"-SX&
 {3//"3'/+3C( (,-	-6 	'--/ 	#LC'3'vc{#w.NINI#F3K( NI	# 1}; #M2 -"3s8}H-0 #I. #NI#s$   DD=D:9D:=EEr'   )r,   r-   r.   r$   r   r   r   r   r7   r%   r#   r   r      s%    4
:IAXd)N=r%   r   )r   rc   _csvr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r(   ior   __all__r   r   r   r   r   r   r7   r%   r#   <module>r      s    
      %    >G  %    i (7   &38 38l 8  8FW Wr%   