
    =Og>                        	 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 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	 e n# e$ r eZY nw xY w G 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)StringIO)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dS )r    FNc                 \    | j         t          k    rd| _        |                                  d S )NT)	__class__r   _valid	_validateselfs    /usr/lib64/python3.11/csv.py__init__zDialect.__init__*   s,    >W$$DK    c                     	 t          |            d S # t          $ r!}t          t          |                    d }~ww xY wN)_Dialect	TypeErrorr   str)r    es     r!   r   zDialect._validate/   sG    	 TNNNNN 	  	  	 A--	 s    
>9>)__name__
__module____qualname___namer   	delimiter	quotechar
escapechardoublequoteskipinitialspacelineterminatorquotingr"   r    r#   r!   r   r      sg         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	dS )r   ,"TF
N)
r*   r+   r,   r.   r/   r1   r2   r3   r   r4   r5   r#   r!   r   r   6   s0        EIIKNGGGr#   r   c                       e Zd Z	 dZdS )r   	N)r*   r+   r,   r.   r5   r#   r!   r   r   @   s        OIIIr#   r   z	excel-tabc                   (    e Zd Z	 dZdZdZdZdZeZ	dS )r   r7   r8   TF
N)
r*   r+   r,   r.   r/   r1   r2   r3   r   r4   r5   r#   r!   r   r   E   s0        DIIKNGGGr#   r   unixc                   \    e Zd Z	 	 ddZd Zed             Zej        d             Zd ZdS )	r   Nr   c                 x    || _         || _        || _        t          ||g|R i || _        || _        d| _        d S Nr   )_fieldnamesrestkeyrestvalr   dialectline_num)r    f
fieldnamesrC   rD   rE   argskwdss           r!   r"   zDictReader.__init__Q   sK    %Q7$777$77r#   c                     | S r%   r5   r   s    r!   __iter__zDictReader.__iter__Z   s    r#   c                     | j         +	 t          | j                  | _         n# t          $ r Y nw xY w| j        j        | _        | j         S r%   )rB   nextr   StopIterationrF   r   s    r!   rH   zDictReader.fieldnames]   sZ    ##'#4#4      ,s   # 
00c                     || _         d S r%   )rB   )r    values     r!   rH   zDictReader.fieldnamesg   s     r#   c                    | j         dk    r| j         t          | j                  }| j        j         | _         |g k    rt          | j                  }|g k    t	          t          | j        |                    }t          | j                  }t          |          }||k     r||d          || j        <   n"||k    r| j        |d          D ]}| j        ||<   |S rA   )	rF   rH   rN   r   dictziplenrC   rD   )r    rowdlflrkeys         r!   __next__zDictReader.__next__k   s    =AOO4;,
 Riit{##C RiiT_c**++!!XX77!"##hAdlOO"WWrss+ & &#r#   )NNNr   )	r*   r+   r,   r"   rL   propertyrH   setterr[   r5   r#   r!   r   r   P   s        AE           X  ! ! !    r#   r   c                   2    e Zd Z	 	 d
dZd Zd Zd Zd Zd	S )r   r   raiser   c                     || _         || _        |                                dvrt          d|z            || _        t          ||g|R i || _        d S )N)r_   ignorez-extrasaction (%s) must be 'raise' or 'ignore')rH   rD   lower
ValueErrorextrasactionr   )r    rG   rH   rD   rd   rE   rI   rJ   s           r!   r"   zDictWriter.__init__   sr    $':::L+, - - -(Q7$777$77r#   c                 z    t          t          | j        | j                            }|                     |          S r%   )rS   rT   rH   writerow)r    headers     r!   writeheaderzDictWriter.writeheader   s/    c$/4?;;<<}}V$$$r#   c                       j         dk    rM                                 j        z
  }|r/t          dd                    d |D                       z              fd j        D             S )Nr_   z(dict contains fields not in fieldnames: z, c                 ,    g | ]}t          |          S r5   )repr).0xs     r!   
<listcomp>z,DictWriter._dict_to_list.<locals>.<listcomp>   s    -L-L-L!d1gg-L-L-Lr#   c              3   N   K   | ]}                     |j                  V   d S r%   )getrD   )rl   rZ   rowdictr    s     r!   	<genexpr>z+DictWriter._dict_to_list.<locals>.<genexpr>   s3      JJ3C..JJJJJJr#   )rd   keysrH   rc   join)r    rq   wrong_fieldss   `` r!   _dict_to_listzDictWriter._dict_to_list   s    ''"<<>>DO;L O !K#'99-L-L|-L-L-L#M#M"N O O OJJJJJ$/JJJJr#   c                 \    | j                             |                     |                    S r%   )r   rf   rv   )r    rq   s     r!   rf   zDictWriter.writerow   s&    {##D$6$6w$?$?@@@r#   c                 \    | j                             t          | j        |                    S r%   )r   	writerowsmaprv   )r    rowdictss     r!   ry   zDictWriter.writerows   s%    {$$S);X%F%FGGGr#   N)r   r_   r   )r*   r+   r,   r"   rh   rv   rf   ry   r5   r#   r!   r   r      su        ?F 8 8 8 8% % %K K KA A AH H H H Hr#   r   c                   0    e Zd Z	 d ZddZd Zd Zd ZdS )r   c                     g d| _         d S )N)r7   r;   ; :)	preferredr   s    r!   r"   zSniffer.__init__   s    333r#   Nc                     	 |                      ||          \  }}}}|s|                     ||          \  }}|st          d           G d dt                    }||_        ||_        |pd|_        ||_        |S )NzCould not determine delimiterc                       e Zd ZdZdZeZdS )Sniffer.sniff.<locals>.dialectsniffedr9   N)r*   r+   r,   r-   r3   r   r4   r5   r#   r!   rE   r      s        E#N#GGGr#   rE   r8   )_guess_quote_and_delimiter_guess_delimiterr   r   r1   r.   r/   r2   )r    sample
delimitersr/   r1   r.   r2   rE   s           r!   sniffzSniffer.sniff   s    	
 226:FF 	<	;	+; 	L*.*?*?@J+L +L'I'  	97888	$ 	$ 	$ 	$ 	$g 	$ 	$ 	$ *%%,#3 r#   c                 L   	 g }dD ]G}t          j        |t           j        t           j        z            }|                    |          }|r nH|sdS i }i }d}|j        }	|D ]}
|	d         dz
  }|
|         }|r|                    |d          dz   ||<   	 |	d         dz
  }|
|         }n# t          $ r Y Tw xY w|r"|||v r|                    |d          dz   ||<   	 |	d         dz
  }n# t          $ r Y w xY w|
|         r|dz  }t          ||j                  }|r+t          ||j                  }||         |k    }|d	k    rd
}nd
}d}t          j        dt          j	        |          |dz  t           j                  }|
                    |          rd}nd}||||fS )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rZ   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
groupindexrp   KeyErrormaxescapesearch)r    datar   matchesrestrregexpquotesdelimsspacesr   mnrZ   r/   r   r2   	dq_regexpr1   s                     r!   r   z"Sniffer._guess_quote_and_delimiter   sV   		 H 	 	E Zry2<'?@@FnnT**G   	(''&
 	 	A7#a'AA$C 5$jja0014sw'!+d    5
*cZ.?.?$jja0014sw'!+   t !FJ///	 	!FJ///E%e}6}} E  J(*	%(8(8)LL MNPl\ \	 D!! 	 KKK;/?@@s$   B))
B65B6C**
C76C7c                 0   	 t          t          d |                    d                              }d t          d          D             }t	          dt          |                    }d}i }i }i }d|}
}	|	t          |          k     r|dz  }||	|
         D ]S}|D ]N}|                    |i           }|                    |          }|                    |d          dz   ||<   |||<   OT|                                D ]}t          ||         	                                          }t          |          dk    r|d         d         dk    rOt          |          dk    rjt          |d           ||<   |                    ||                    ||         d         ||         d         t          d	 |D                       z
  f||<   |d         ||<   |	                                }t          t	          ||z  t          |                              }d
}d}t          |          dk    r^||k    rX|D ]7\  }}|d         dk    r&|d         dk    r|d         |z  |k    r|||v r|||<   8|dz  }t          |          dk    r||k    Xt          |          dk    rft          |                                          d         }|d                             |          |d                             d|z            k    }||fS |
}	|
|z  }
|	t          |          k     |sdS t          |          dk    ra| j        D ]Y}||                                v rA|d                             |          |d                             d|z            k    }||fc S Zd |	                                D             }|                                 |d         d         }|d                             |          |d                             d|z            k    }||fS )Nr=   c                 ,    g | ]}t          |          S r5   )chr)rl   cs     r!   rn   z,Sniffer._guess_delimiter.<locals>.<listcomp>-  s    ,,,AQ,,,r#      
   r   r   c                     | d         S )Nr   r5   )rm   s    r!   <lambda>z*Sniffer._guess_delimiter.<locals>.<lambda>G  s
    1Q4 r#   r   c              3   &   K   | ]}|d          V  dS )r   Nr5   )rl   items     r!   rr   z+Sniffer._guess_delimiter.<locals>.<genexpr>L  s&      (C(CTa(C(C(C(C(C(Cr#   g      ?g?g{Gz?z%c )r   r   c                     g | ]	\  }}||f
S r5   r5   )rl   kvs      r!   rn   z,Sniffer._guess_delimiter.<locals>.<listcomp>v  s     3335Aa!A333r#   )listfiltersplitrangeminrU   rp   countrs   itemsr   removesumfloatr   sort)r    r   r   asciichunkLength	iterationcharFrequencymodesr   startendlinecharmetaFrequencyfreqr   modeListtotalconsistency	thresholdr   r   r   r2   rW   s                            r!   r   zSniffer._guess_delimiter  sk   	$ F4D!1!12233,,s,,, "c$ii((	sc$iiNIU3Y 8 8! 8 8D$1$5$5dB$?$?M::d++D*7*;*;D!*D*Dq*HM$'*7M$''8 &**,, + +]40668899u::??uQx{a'7'7u::>>"%e"@"@"@E$K LLt---#(;q>5;q>%((C(CU(C(C(C%C%C4D #EE$KK #((E$KK {{}}H#kI5s4yyAABBEKIf++""{i'?'?$ * *DAqtaxxAaD1HHqT%ZK77'/1
??()F1It# f++""{i'?'? 6{{aV[[]]++A.$(GMM%$8$8$(GMM%%-$@$@%A /00 E;Cc c$iif  	7 v;;??^ 1 1%%(,Qa(8(8(,Qeai(@(@)A$/0000 & 43FLLNN333

b	! GMM%00 GMM%%-889'((r#   c                 b   t          t          |          |                     |                    }t          |          }t	          |          }i }t          |          D ]}d ||<   d}|D ]}|dk    r n|dz  }t	          |          |k    r#t          |                                          D ]e}	t          }
	  |
||	                    n,# t          t          f$ r t	          ||	                   }
Y nw xY w|
||	         k    r||	         |
||	<   b||	= fd}|                                D ]}\  }	}t          |          t          d          k    r%t	          ||	                   |k    r|dz  }D|dz  }J	  |||	                    |dz  }b# t          t          f$ r |dz  }Y zw xY w|dk    S )Nr      r   )r   r   r   rN   rU   r   r   rs   complexrc   OverflowErrorr   typer'   )r    r   rdrrg   columnscolumnTypesicheckedrV   colthisType	hasHeadercolTypes                r!   
has_headerzSniffer.has_header  s    Xf%%tzz&'9'9::cf++w66A$Q 	- 	-C||qLG3xx7""K,,..// - -"-HSX&&&&"M2 - - -"3s8}}HHH- {3///"3'/+3C(( (,-$ 	'--// 	# 	#LCG}}Q''vc{##w..NIINII#GF3K((( NII #I. # # #NIII#
 1}s$   :C&C54C58FF('F(r%   )r*   r+   r,   r"   r   r   r   r   r5   r#   r!   r   r      st        4 4 4
   :IA IA IAXd) d) d)N= = = = =r#   r   )r   _csvr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r&   ior   __all__r   r   r   r   r   r   	NameErrorr   r   r5   r#   r!   <module>r      s   
			                               
 % $ $ $ $ $                       >    G     %               i ( ( (    7      & & &/ / / / / / / /dH H H H H H H H<GG   GGGW W W W W W W W W Ws   ,B/ /B98B9