o
    a+)h                      @   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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 )'    N)literal_eval)
attrgetter)CallableIterableListMatch
NamedTupleOptionalTupleUnion   )_emoji_replace)EmojiVariant)MarkupError)Style)SpanTextz((\\*)\[([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   VC:\Users\User\Downloads\Proyecto_IoT\venv\Lib\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   escape0   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r_|d	d}||r[||n| qD|durU|jd
rC|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r6|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|}ru \}}t|}|rr|	|
||| s]t|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_styleNz\[/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   replacer   
startswithstriprK   r   r!   
IndexErrorr   
RE_HANDLERr*   r,   r   SyntaxErrormsg	Exception
isinstancetupler6   sortedr   spans)r!   rD   rE   rF   emoji_replacer.   rX   rY   rf   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   
 



rs   __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)rC   TN)0reastr   operatorr   typingr   r   r   r   r   r	   r
   r   r   rE   r   errorsr   rD   r   r.   r   r   compileVERBOSEr3   r_   r   r&   _ReStringMatch_ReSubCallable_EscapeSubMethodsubr0   rZ   rB   boolrs   r"   ZMARKUPpip._vendor.richru   pip._vendor.rich.tablerv   gridr!   add_rowr   r   r   r   <module>   sd    (


(#

}