a
    0f!                     @   s  d dl Z d dlmZ d dlmZ d dl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 ddlmZ dd	lmZ dd
lmZmZ e de jZe dZG dd de
Ze	e Zeegef Zeeegef Z e dj!fee edddZ"eeee#ee ee f  dddZ$d#eeeef e%ee edddZ&e'dkrg dZ(d dl)m*Z* d dl+m,Z, e,dd d!d"Z-e(D ]Z.e-/ee.e. qze*e- dS )$    N)literal_eval)
attrgetter)CallableIterableListMatch
NamedTupleOptionalTupleUnion   )_emoji_replace)EmojiVariant)MarkupError)Style)SpanTextz((\\*)\[([a-z#/@][^[]*?)])z^([\w.]*?)(\(.*?\))?$c                   @   sF   e Zd ZU dZeed< ee ed< edddZeedddZ	d	S )
TagzA tag in console markup.name
parameters)returnc                 C   s"   | j d u r| jS | j d| j  S )N r   r   self r   P/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pip/_vendor/rich/markup.py__str__   s     zTag.__str__c                 C   s.   | j du rd| j dS d| j d| j  dS )z*Get the string representation of this tag.N[]=r   r   r   r   r   markup!   s    z
Tag.markupN)
__name__
__module____qualname____doc__str__annotations__r	   r   propertyr!   r   r   r   r   r      s   
r   z(\\*)(\[[a-z#/@][^[]*?]))r!   _escaper   c                 C   s>   t t tddd}||| } | dr:| ds:| d S | S )zEscapes text so that it won't be interpreted as markup.

    Args:
        markup (str): Content to be inserted in to markup.

    Returns:
        str: Markup with square brackets escaped.
    )matchr   c                 S   s   |   \}}| | d| S )z!Called by re.sub replace matches.\)groups)r*   backslashestextr   r   r   escape_backslashes=   s    z"escape.<locals>.escape_backslashesr+   z\\)r   r&   endswith)r!   r)   r/   r   r   r   escape0   s
    
r1   )r!   r   c                 c   s   d}t }t}t| D ]}| \}}}| \}}	||krP|| || dfV  |r|t|d\}
}|
r|d|
 dfV  ||
d 7 }|r||t|d dfV  |	}q|d\}}}|d|||r|ndfV  |	}q|t| k r|| |d dfV  dS )zParse markup in to an iterable of tuples of (position, text, tag).

    Args:
        markup (str): A string containing console markup

    r   N   r+   r    )divmodr   RE_TAGSfinditerr,   spanlen	partition)r!   position_divmod_Tagr*   	full_textescapestag_textstartendr-   escapedr.   equalsr   r   r   r   _parseI   s,    rC    T)r!   styleemojiemoji_variantr   c                    s,  t }d| vr(t|r|| |dn| |dS t|d}|j}tj}g j g }|j}	t}
t}tt	t
tf d fdd}t| D ]L\}}}|dur|dd}||r||n| q|dur|jd	r|jd
d  }|r.||}z||\}}W n. ty*   td|j d| ddY n0 n6z  \}}W n& tyb   td| ddY n0 |jdr|jrjd}|j }t|}|dur| \}}|du rdn|}zt|}W n ty
 } z*td|d|jd|j W Y d}~nFd}~0  tyF } z$td|jd| dW Y d}~n
d}~0 0 |rn|t|tr`|n|ff}nd}|	|
|t|t|j|id n|	|
|t|t| q|||j|j}t||f qt|}r \}}t|}|r|	|
||| qt|ddd t dd|_!|S )a  Render console markup in to a Text instance.

    Args:
        markup (str): A string containing console markup.
        style: (Union[str, Style]): The style to use.
        emoji (bool, optional): Also render emoji code. Defaults to True.
        emoji_variant (str, optional): Optional emoji variant, either "text" or "emoji". Defaults to None.


    Raises:
        MarkupError: If there is a syntax error in the markup.

    Returns:
        Text: A test instance.
    r   )default_variant)rE   )
style_namer   c                    s@   t tdD ]$\}\}}|j| kr |   S qt| dS )z"Pop tag matching given style name.r   N)	enumeratereversedr   KeyError)rI   index_tagpopstyle_stackr   r   	pop_style   s    
zrender.<locals>.pop_styleNz\[/r   zclosing tag 'z' at position z doesn't match any open tagzclosing tag '[/]' at position z has nothing to close@rD   z()zerror parsing z in z; r   )metar?   )key)"r   r   appendr   	normalizerQ   r   r   r&   r
   intrC   replacer   
startswithstriprL   r   r!   
IndexErrorr   
RE_HANDLERr*   r,   r   SyntaxErrormsg	Exception
isinstancetupler7   sortedr   spans)r!   rE   rF   rG   emoji_replacer.   rY   rZ   rg   append_span_Spanr;   rS   r9   
plain_textrO   rI   r?   open_taghandler_namer   handler_matchmatch_parametersmeta_paramserrornormalized_tagtext_lengthr   rP   r   renderj   s    





rt   __main__)z[red]Hello World[/red]z[magenta]Hello [b]World[/b]z9[bold]Bold[italic] bold and italic [/bold]italic[/italic]zDClick [link=https://www.willmcgugan.com]here[/link] to visit my Blogz+:warning-emoji: [bold red blink] DANGER![/])print)TableZMarkupResult)r   r   )padding)rD   TN)0reastr   operatorr   typingr   r   r   r   r   r	   r
   r   r   rF   r   errorsr   rE   r   r.   r   r   compileVERBOSEr4   r`   r   r&   _ReStringMatch_ReSubCallable_EscapeSubMethodsubr1   r[   rC   boolrt   r"   ZMARKUPpip._vendor.richrv   pip._vendor.rich.tablerw   gridr!   add_rowr   r   r   r   <module>   sV   (

&#   
 
