o
    5tis                     @   s   U d dl Z d dlZd dlmZmZmZmZ d dlmZ ddl	m
Z
 ddlmZ edZeed< ed	Zeed
< dee defddZG dd dZdS )    N)AnyFinalOptionalUnion)MultiByteStrDecoder   )strip_ansi_escape)LineBreakHandlingz\r\n|\n_RE_LINE_BREAKz^[-\+=@]_RE_FORMULA_PREFIXvaluereturnc                 C   s(   t | tr| S | d u rtjS t|   S N)
isinstancer	   NOPupper)r    r   N/home/ubuntu/.local/lib/python3.10/site-packages/dataproperty/_preprocessor.pynormalize_lbh   s
   
r   c                   @   s:  e Zd Zedee fddZejdee ddfddZ							
	
	
d)deee	e
f  dededee de	dedededdfddZde	fddZdedefddZdedefddZdedeeee	 f fddZededeee	e
f  defd d!Zd"e	de	fd#d$Zde	de	fd%d&Zde	de	fd'd(ZdS )*Preprocessorr   c                 C   s   | j S r   )"_Preprocessor__line_break_handlingselfr   r   r   line_break_handling   s   z Preprocessor.line_break_handlingr   Nc                 C   s   t || _d S r   )r   r   )r   r   r   r   r   r      s   T    F	strip_strreplace_tabs_with_spaces
tab_lengthr   line_break_repldequoteis_escape_html_tagis_escape_formula_injectionc	           	      C   s4   || _ || _|| _|| _|| _|| _|| _|| _d S r   )r   r   r   r   r   r    r!   r"   )	r   r   r   r   r   r   r    r!   r"   r   r   r   __init__"   s   
zPreprocessor.__init__c              
   C   sP   d d| jd| j d| j d| j d| j d| j d| j gS )	Nz, z
strip_str=zreplace_tabs_with_spaces=ztab_length=zline_break_handling=zline_break_repl=zescape_html_tag=zescape_formula_injection=)joinr   r   r   r   r   r!   r"   r   r   r   r   __repr__6   s   






zPreprocessor.__repr__datac                 C   s    |  | || j\}}||fS r   ) _Preprocessor__preprocess_string_Preprocessor__preprocess_datar   )r   r&   no_ansi_escape_datar   r   r   
preprocessC   s   zPreprocessor.preprocesskwargsc                 K   sF   d}|  D ]\}}t| |sqt| ||krqt| || d}q|S )NFT)itemshasattrgetattrsetattr)r   r+   
is_updatedkeyr   r   r   r   updateI   s   
zPreprocessor.updateraw_datac              
   C   s   |}t |ts|d fS | jr&z|dd| j }W n tttfy%   Y nw | jr>zt	
|}W n ty=   |d f Y S w | |}| |}| |}z|t|fW S  tya   |d f Y S w )N	r   )r   strr   replacer   	TypeErrorAttributeError
ValueErrorr!   htmlescape!_Preprocessor__process_line_break'_Preprocessor__escape_formula_injection_Preprocessor__dequoter   )r   r3   r&   r   r   r   __preprocess_stringX   s.   



z Preprocessor.__preprocess_stringc                 C   s   |d u r| S z|  |W S  ty   |  Y S  ty)   t| j t| Y S  tyR   t| tr@t| j t| Y S t|trO|  t|j Y S Y d S w r   )	stripr8   UnicodeDecodeErrorr   unicode_strr5   r7   r   bytes)r&   r   r   r   r   __preprocess_datas   s   

zPreprocessor.__preprocess_datasc                 C   sp   | j r|s|S z&|d |d kr%|dr(||d dkr+|dd W S W |S W |S W |S  ty7   Y |S w )Nr   )'"r   r   )r    
startswithcountr7   )r   rE   r   r   r   	__dequote   s    
zPreprocessor.__dequotec              	   C   s|   | j }|tjkr
|S z|tjkrt| j|W S |tjkr(|ddddW S W n t	t
fy6   | Y S w td| )N
z\nz\rz unexpected line_break_handling: )r   r	   r   REPLACEr
   subr   ESCAPEr6   r7   r8   r9   )r   r&   lbhr   r   r   __process_line_break   s   


z!Preprocessor.__process_line_breakc              	   C   s@   | j s|S zt|rd| W S W |S  ttfy   | Y S w )NrG   )r"   r   searchr7   r8   )r   r&   r   r   r   __escape_formula_injection   s   

z'Preprocessor.__escape_formula_injection)NTr   Nr   FFF)__name__
__module____qualname__propertyr   r	   r   setterr   r5   rC   boolintr#   r%   r   tupler*   r2   r'   staticmethodr(   r>   r<   r=   r   r   r   r   r      sR    	

$r   )r:   retypingr   r   r   r   mbstrdecoderr   	_functionr   _line_breakr	   compiler
   __annotations__r   r   r   r   r   r   r   <module>   s   
 
