o
    Mfz                     @   s  d dl mZ d dlmZ d dl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mZ dd	lmZ dd
l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dede defddZ"dedeee#ee ee f  fddZ$			d&dedeeef de%dee def
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. qe,e- dS dS )'    )literal_eval)
attrgetterN)CallableIterableListMatch
NamedTupleOptionalTupleUnion   )MarkupError)Style)SpanText)EmojiVariant)_emoji_replacez((\\*)\[([a-z#\/@].*?)\])z^([\w\.]*?)(\(.*?\))?$c                   @   sJ   e Zd ZU dZeed< 	 ee ed< 	 defddZedef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   Y/var/www/html/analyze/labelStudio/lib/python3.10/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$   dt t dtfdd}||| } | 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_backslashes)r   r&   )r!   r)   r/   r   r   r   escape1   s   
r0   c                 c   s   d}t }t}t| D ]`}| \}}}| \}}	||kr)|| || dfV  |rU|t|d\}
}|
rD|d|
 dfV  ||
d 7 }|rU||t|d dfV  |	}q|d\}}}|d|||re|ndfV  |	}q|t| k r|| |d dfV  dS 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   _parseF   s0   rB    Tstyleemojiemoji_variantc                    s  t }d| vrt|r|| |d|dS | |dS t|d}|j}tj}g j g }|j}	t}
t}dtdt	t
tf f fdd}t| D ]
\}}}|durY||rU||n| qD|durO|jd	r=|jd
d  }|r||}z||\}}W n, ty   td|j d| ddw z  \}}W n ty   td| ddw |jdr0|jrd}|j }t|}|dur| \}}|du rdn|}zt|}W n3 ty } ztd|d|jd|j d}~w ty } ztd|jd| dd}~ww |r|t|tr|n|ff}nd}|	|
|t|t|j|id qD|	|
|t|t| qD|||j|j}t||f qDt|}ro \}}t|}|rl|	|
||| sWt|ddd tdd|_ |S )a9  Render console markup in to a Text instance.

    Args:
        markup (str): A string containing console markup.
        emoji (bool, optional): Also render emoji code. Defaults to True.

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

    Returns:
        Text: A test instance.
    r   )default_variant)rD   
style_namer   c                    s<   t tdD ]\}\}}|j| kr |   S qt| )z"Pop tag matching given style name.r   )	enumeratereversedr   KeyError)rH   index_tagpopstyle_stackr   r   	pop_style   s
   
zrender.<locals>.pop_styleN/r   zclosing tag 'z' at position z doesn't match any open tagzclosing tag '[/]' at position z has nothing to close@rC   z()zerror parsing z in z; r   )metar>   )key)!r   r   appendr   	normalizerP   r   r   r&   r
   intrB   r   
startswithstriprK   r   r!   
IndexErrorr   
RE_HANDLERr*   r,   r   SyntaxErrormsg	Exception
isinstancetupler6   sortedr   spans)r!   rD   rE   rF   emoji_replacer.   rX   rY   re   append_span_Spanr:   rR   r8   
plain_textrN   rH   r>   open_taghandler_namer   handler_matchmatch_parametersmeta_paramserrornormalized_tagtext_lengthr   rO   r   renderg   s   
 



rr   __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![/])Table)printMarkupResult)r   r   )padding)rC   TN)0astr   operatorr   retypingr   r   r   r   r   r	   r
   r   errorsr   rD   r   r.   r   r   rE   r   r   compileVERBOSEr3   r^   r   r&   _ReStringMatch_ReSubCallable_EscapeSubMethodsubr0   rZ   rB   boolrr   r"   MARKUPpip._vendor.rich.tablert   pip._vendor.richru   gridr!   add_rowr   r   r   r   <module>   sd    (


(#

{