a
    ýÓEbri  ã                7   @   s¸  U d dl Zd dlZd dlmZ d dlZd dlmZmZ d dl	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m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%m&Z&m'Z' d d
l(m)Z) ddl*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:mZ ddl;m<Z< ee=df Z>e ?¡ dkZ@dZAe&eƒ e'edd�eedd�ejBedd�e!edd�e!jedd�e$jCedd�e"jDedd�e"jEedd�e"jFeddd�e"jGeddd�e"jHedd�e"jIeddd�e"jJed d�e"jKed d�e"jLedd�e"jMed!d�e%ed"d�e#edd�e jNed#d�e jOedd�e jPedd$�e jQeddd�e jRedd$�e jed#d�eed dd�iZSee>ef eTd%< e&eƒ e'ed&d�eedd�ejBed'd�e!ed!d�e!jed'd�e$jCed(d�e"jDed'd�e"jEed)d�e"jFed'dd�e"jGed)dd�e"jHed'd�e"jIed(dd�e"jJed#d�e"jKed#d�e"jLed'd�e"jMed!d�e%ed"d�e#ed!d�e jNed#d�e jOed)d�e jPedd$�e jQed(dd�e jRedd$�e jed#d�eed dd�iZUee>ef eTd*< eSeUd+œZVG d,d-„ d-eƒZWG d.d/„ d/eWƒZXG d0d1„ d1eWƒZYG d2d3„ d3e5ƒZZe[d4k�r´d dl\Z\d dl]Z]e\j^d5d6�Z_e_j`d7d8d9d:� e_j`d;d<d=d>dd?d@� e_j`dAdBdCd>dDdEd@� e_j`dFdGdHd>dIdJ� e_j`dKdLeadMddNdO� e_j`dPdQdRd>dDdSd@� e_j`dTdUd>dVdDdWdX� e_j`dYdZd[dd\d]� e_j`d^d_d`ddad]� e_j`dbdcdddedfdg� e_ b¡ Zcd dhldm0Z0 e0ecjeecjfdi�Z/ecjgdjk�r‚e]jh i¡ ZjeZejecjkecjlecjmecjnecjoecjpdk�Zqn"eZjrecjgecjlecjmecjnecjoecjpdl�Zqe/jseqecjtdm� dS )né    N)ÚLines)ÚABCÚabstractmethod)	ÚAnyÚDictÚIterableÚListÚOptionalÚSetÚTupleÚTypeÚUnion)ÚLexer)Úget_lexer_by_nameÚguess_lexer_for_filename)ÚStyle)Úget_style_by_name)
ÚCommentÚErrorÚGenericÚKeywordÚNameÚNumberÚOperatorÚStringÚTokenÚ
Whitespace)ÚClassNotFoundé   )Ú
loop_first)ÚColorÚ	blend_rgb)ÚConsoleÚConsoleOptionsÚJustifyMethodÚRenderResult)ÚJupyterMixin)ÚMeasurement)ÚSegment)ÚText.ÚWindowsZmonokaiÚwhite©ÚcolorT©ÚdimÚcyanÚblueÚmagentaÚgreen)r-   Ú	underline)r-   ÚboldÚredÚbright_blueÚyellowÚ
bright_red)r5   Ú
ANSI_LIGHTÚbright_blackÚbright_cyanÚbright_magentaÚbright_greenÚ	ANSI_DARK)Z
ansi_lightÚ	ansi_darkc                   @   s6   e Zd ZdZeeedœdd„ƒZeedœdd„ƒZdS )	ÚSyntaxThemezBase class for a syntax theme.©Ú
token_typeÚreturnc                 C   s   t ‚dS )z'Get a style for a given Pygments token.N©ÚNotImplementedError)ÚselfrC   © rH   úW/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/pip/_vendor/rich/syntax.pyÚget_style_for_tokenk   s    zSyntaxTheme.get_style_for_token©rD   c                 C   s   t ‚dS )zGet the background color.NrE   ©rG   rH   rH   rI   Úget_background_stylep   s    z SyntaxTheme.get_background_styleN)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú	TokenTyper   rJ   rM   rH   rH   rH   rI   rA   h   s
   rA   c                   @   sJ   e Zd ZdZeeee f ddœdd„Ze	e
dœdd„Ze
d	œd
d„ZdS )ÚPygmentsSyntaxThemez.Syntax theme that delegates to Pygments theme.N)ÚthemerD   c                 C   s`   i | _ t|tƒr>zt|ƒ| _W qD ty:   tdƒ| _Y qD0 n|| _| jj| _t| jd�| _	d S )NÚdefault©Úbgcolor)
Ú_style_cacheÚ
isinstanceÚstrr   Ú_pygments_style_classr   Úbackground_colorÚ_background_colorr   Ú_background_style)rG   rT   rH   rH   rI   Ú__init__y   s    

zPygmentsSyntaxTheme.__init__rB   c                 C   s¢   z| j | W S  tyœ   z| j |¡}W n tyD   t ¡ }Y nJ0 |d }|d }t|rdd| nd|rrd| n| j|d |d |d d�}|| j |< Y n0 |S )	z"Get a style from a Pygments class.r-   rW   ú#z#000000r5   Úitalicr4   )r-   rW   r5   ra   r4   )rX   ÚKeyErrorr[   Zstyle_for_tokenr   Únullr]   )rG   rC   Zpygments_styleÚstyler-   rW   rH   rH   rI   rJ   †   s$    ûz'PygmentsSyntaxTheme.get_style_for_tokenrK   c                 C   s   | j S ©N©r^   rL   rH   rH   rI   rM   œ   s    z(PygmentsSyntaxTheme.get_background_style)rN   rO   rP   rQ   r   rZ   r   ÚPygmentsStyler_   rR   r   rJ   rM   rH   rH   rH   rI   rS   v   s   rS   c                   @   sF   e Zd ZdZeeef ddœdd„Zeedœdd„Zed	œd
d„Z	dS )ÚANSISyntaxThemez$Syntax theme to use standard colors.N)Ú	style_maprD   c                 C   s$   || _ t ¡ | _t ¡ | _i | _d S re   )ri   r   rc   Ú_missing_styler^   rX   )rG   ri   rH   rH   rI   r_   £   s    

zANSISyntaxTheme.__init__rB   c                 C   sp   z| j | W S  tyj   | jj}t|ƒ}| j}|rX||ƒ}|durJ|}qX|dd… }q0|| j |< | Y S 0 dS )zLook up style in the style map.Néÿÿÿÿ)rX   rb   ri   ÚgetÚtuplerj   )rG   rC   Ú	get_styleÚtokenrd   Ú_stylerH   rH   rI   rJ   ©   s    
z#ANSISyntaxTheme.get_style_for_tokenrK   c                 C   s   | j S re   rf   rL   rH   rH   rI   rM   ½   s    z$ANSISyntaxTheme.get_background_style)
rN   rO   rP   rQ   r   rR   r   r_   rJ   rM   rH   rH   rH   rI   rh       s   rh   c                   @   sÔ  e Zd ZU dZee ed< eed< ee	e
ef edœdd„ƒZedddd	d	d	d
dd	ddœe
e	ee
f e	e
ef eeeeeeef  eee  ee eeee
 ed	dœdd„Zededdd	dd	d	d
dd	dfe
e
e	e
ef eeeeeef  eeee  ee eeee
 ed dœdd„ƒZedœdd„Zeee dœdd„Zeee dœdd„ƒZd/e
eeeef  edœdd„Zd0eedœd d!„Zeedœd"d#„ƒZ e!eeeef d$œd%d&„Z"d'd(d)d*œd+d,„Z#e!e$e%d*œd-d.„Z&d	S )1ÚSyntaxaÙ  Construct a Syntax object to render syntax highlighted code.

    Args:
        code (str): Code to highlight.
        lexer (Lexer | str): Lexer to use (see https://pygments.org/docs/lexers/)
        theme (str, optional): Color theme, aka Pygments style (see https://pygments.org/docs/styles/#getting-a-list-of-available-styles). Defaults to "monokai".
        dedent (bool, optional): Enable stripping of initial whitespace. Defaults to False.
        line_numbers (bool, optional): Enable rendering of line numbers. Defaults to False.
        start_line (int, optional): Starting number for line numbers. Defaults to 1.
        line_range (Tuple[int, int], optional): If given should be a tuple of the start and end line to render.
        highlight_lines (Set[int]): A set of line numbers to highlight.
        code_width: Width of code to render (not including line numbers), or ``None`` to use all available width.
        tab_size (int, optional): Size of tabs. Defaults to 4.
        word_wrap (bool, optional): Enable word wrapping.
        background_color (str, optional): Optional background color, or None to use theme color. Defaults to None.
        indent_guides (bool, optional): Show indent guides. Defaults to False.
    r[   Ú_theme)ÚnamerD   c                 C   s0   t |tƒr|S |tv r$tt| ƒ}nt|ƒ}|S )zGet a syntax theme instance.)rY   rA   ÚRICH_SYNTAX_THEMESrh   rS   )Úclsrs   rT   rH   rH   rI   Ú	get_theme×   s    
zSyntax.get_themeFr   Né   )rT   ÚdedentÚline_numbersÚ
start_lineÚ
line_rangeÚhighlight_linesÚ
code_widthÚtab_sizeÚ	word_wrapr\   Úindent_guides)ÚcodeÚlexerrT   rx   ry   rz   r{   r|   r}   r~   r   r\   r€   rD   c                C   st   || _ || _|| _|| _|| _|| _|p,tƒ | _|	| _|
| _	|| _
|| _|rVt|d�ntƒ | _|| _|  |¡| _d S )NrV   )r�   Ú_lexerrx   ry   rz   r{   Úsetr|   r}   r~   r   r\   r   Úbackground_styler€   rv   rr   )rG   r�   r‚   rT   rx   ry   rz   r{   r|   r}   r~   r   r\   r€   rH   rH   rI   r_   ã   s    ÿzSyntax.__init__zutf-8)ÚpathÚencodingrT   rx   ry   r{   rz   r|   r}   r~   r   r\   r€   rD   c                 C   sÔ   t |d|d��}| ¡ }W d  ƒ n1 s,0    Y  d}d}z4tj |¡\}}|rp| d¡ ¡ }t|ƒ}|j}W n t	y„   Y n0 |du r²zt
||ƒj}W n t	y°   Y n0 | |||||||||	|
|||d�S )a?  Construct a Syntax object from a file.

        Args:
            path (str): Path to file to highlight.
            encoding (str): Encoding of file.
            theme (str, optional): Color theme, aka Pygments style (see https://pygments.org/docs/styles/#getting-a-list-of-available-styles). Defaults to "emacs".
            dedent (bool, optional): Enable stripping of initial whitespace. Defaults to True.
            line_numbers (bool, optional): Enable rendering of line numbers. Defaults to False.
            start_line (int, optional): Starting number for line numbers. Defaults to 1.
            line_range (Tuple[int, int], optional): If given should be a tuple of the start and end line to render.
            highlight_lines (Set[int]): A set of line numbers to highlight.
            code_width: Width of code to render (not including line numbers), or ``None`` to use all available width.
            tab_size (int, optional): Size of tabs. Defaults to 4.
            word_wrap (bool, optional): Enable word wrapping of code.
            background_color (str, optional): Optional background color, or None to use theme color. Defaults to None.
            indent_guides (bool, optional): Show indent guides. Defaults to False.

        Returns:
            [Syntax]: A Syntax object that may be printed to the console
        Úrt)r‡   NrU   Ú.)rT   rx   ry   r{   rz   r|   r}   r~   r   r\   r€   )ÚopenÚreadÚosr†   ÚsplitextÚlstripÚlowerr   rs   r   r   )ru   r†   r‡   rT   rx   ry   r{   rz   r|   r}   r~   r   r\   r€   Ú	code_filer�   r‚   Ú
lexer_nameÚ_ÚextÚ	extensionrH   rH   rI   Ú	from_path  s@    %&
ózSyntax.from_pathrK   c                 C   s   | j  ¡ | j }|S )zGet the base style.)rr   rM   r…   )rG   Údefault_stylerH   rH   rI   Ú_get_base_styleO  s    zSyntax._get_base_stylerB   c                 C   s   | j  |¡}|jS )zÞGet a color (if any) for the given token.

        Args:
            token_type (TokenType): A token type tuple from Pygments.

        Returns:
            Optional[Color]: Color from theme, or None for no color.
        )rr   rJ   r-   )rG   rC   rd   rH   rH   rI   Ú_get_token_colorT  s    	zSyntax._get_token_colorc                 C   sB   t | jtƒr| jS zt| jdd| jd�W S  ty<   Y dS 0 dS )z–The lexer for this syntax, or None if no lexer was found.

        Tries to find the lexer by name if a string was passed to the constructor.
        FT)ZstripnlZensurenlÚtabsizeN)rY   rƒ   r   r   r~   r   rL   rH   rH   rI   r‚   `  s    üzSyntax.lexer)r�   r{   rD   c                    sî   |   ¡ }|jrdnd}t||| j| j d�}| jj‰ | j‰ˆdu rN| ˆ¡ nœ|r°|\‰‰t	t
ttf  dœ‡‡fdd„‰t	t
ttt f  dœ‡ ‡‡‡fdd	„}| |ƒ ¡ n| ‡ fd
d„ˆ ˆ¡D ƒ¡ | jdurê| d| j› �¡ |S )a  Highlight code and return a Text instance.

        Args:
            code (str): Code to highlight.
            line_range(Tuple[int, int], optional): Optional line range to highlight.

        Returns:
            Text: A text instance containing highlighted syntax.
        rU   Úleft)Újustifyrd   r~   Úno_wrapNrK   c                  3   sD   ˆsJ ‚ˆ  ˆ ¡D ],\} }|r| d¡\}}}| || fV  qqdS )zSplit tokens to one per line.Ú
N)Ú
get_tokensÚ	partition)rC   ro   Z
line_tokenÚnew_line)r�   r‚   rH   rI   Úline_tokenize—  s
    z'Syntax.highlight.<locals>.line_tokenizec                  3   s†   t ˆƒ ƒ} d}ˆd }||k rHt| ƒ\}}|dfV  | d¡r|d7 }q| D ]4\}}|ˆ |ƒfV  | d¡rL|d7 }|ˆkrL q‚qLdS )zConvert tokens to spans.r   r   Nr�   )ÚiterÚnextÚendswith)ÚtokensÚline_noZ_line_startZ_token_typero   rC   )Ú_get_theme_styleÚline_endÚ
line_startr¡   rH   rI   Útokens_to_spans   s    




z)Syntax.highlight.<locals>.tokens_to_spansc                 3   s   | ]\}}|ˆ |ƒfV  qd S re   rH   )Ú.0rC   ro   )r§   rH   rI   Ú	<genexpr>·  s   ÿz#Syntax.highlight.<locals>.<genexpr>zon )r—   Útransparent_backgroundr)   r~   r   rr   rJ   r‚   Úappendr   r   r   rZ   r	   r   Úappend_tokensrž   r\   Ústylize)rG   r�   r{   Ú
base_styler›   Útextrª   rH   )r§   r�   r‚   r¨   r©   r¡   rI   Ú	highlights  s0    ÿü 	(þ
zSyntax.highlightç333333Ó?)ÚblendrD   c                 C   sr   | j  ¡ | j }|j}|d u s$|jr,t ¡ S |  tj	¡}|d u sF|jrR|pPt ¡ S t
| ¡ | ¡ |d�}t |¡S )N)Ú
cross_fade)rr   rM   r…   rW   Úis_system_definedr    rU   r˜   r   r)   r!   Úget_truecolorÚfrom_triplet)rG   rµ   r…   r\   Úforeground_colorÚ	new_colorrH   rH   rI   Ú_get_line_numbers_color¿  s    ýzSyntax._get_line_numbers_colorc                 C   s,   d}| j r(tt| j| j d¡ ƒƒd }|S )z?Get the number of characters used to render the numbers column.r   r�   é   )ry   ÚlenrZ   rz   r�   Úcount)rG   Zcolumn_widthrH   rH   rI   Ú_numbers_column_widthÎ  s    zSyntax._numbers_column_width)ÚconsolerD   c              	   C   s¨   |   ¡ }|jr&t ¡ tdd�t ¡ fS |jdv r‚t || j tj	¡t|  
¡ d�| j¡}t || j tj	¡td|  
d¡d�| j¡}n|tdd� }|tdd� }|||fS )z>Get background, number, and highlight styles for line numbers.Tr.   )Ú256Ú	truecolorr,   gÍÌÌÌÌÌì?)r5   r-   F)r—   r­   r   rc   Úcolor_systemÚchainrr   rJ   r   r)   r¼   r…   )rG   rÁ   r…   Únumber_styleÚhighlight_number_stylerH   rH   rI   Ú_get_number_stylesÖ  s&    
üüzSyntax._get_number_stylesr"   r#   r'   )rÁ   ÚoptionsrD   c                 C   s0   | j d ur"| j | j }t| j|ƒS t| j|jƒS re   )r}   rÀ   r'   Ú	max_width)rG   rÁ   rÉ   ÚwidthrH   rH   rI   Ú__rich_measure__í  s    
zSyntax.__rich_measure__c                  c   sz  |   ¡ j}| jd u r0| jr*|j| j d q4|jn| j}d}| jrX| j\}}td|d ƒ}| j 	d¡}|rn| jn| jd }	| j
rˆt 
|	¡n|	}	|	 | j¡}	|  |	| j¡}
|  |¡\}}}| j�s†| j�s†| j�s†|sÜ|
 d¡ |   ¡ | j t¡ tdd� | j }| j�r&|j�s&|
j| j|d�}
d|
_|j�rL|j|
|j|d�d	�E d H  n6|j|
|j|d d
�| jddd�}|D ]}|E d H  �qpd S |
jd|d�}| j�r¨|||… }| j�r |j�s |   ¡ | j t¡ tdd� | j }tdƒ  |¡j| j|d�jddd�}| j}|j|d�}| j!j"}t#}|d| d |ƒ}|dƒ}|j$�rDdnd}t%|| j&| ƒD �]\}}| j�rˆ|j||jd d�|| d�}n:t'|j|dd�ƒ}|j(�rª|g}n|j)||j|| d�g}| j�rVt*|ƒD ]€\}}|�r:t+|ƒ ,|d ¡d }||ƒ�r ||tdd�ƒV  |||ƒV  n|d|ƒV  |||ƒV  n|V  |E d H  |V  �qÒn|D ]}|E d H  |V  �qZ�qXd S )Nr   r   r�   Tr.   )rd   Úcrop)rË   )rÉ   )rË   Úheight)rd   ÚpadÚ	new_lines)Úallow_blankú z> u   â�± )rÎ   )rd   rÏ   Ú )Úendr½   r6   r,   z  )-r—   r­   r}   ry   rÊ   rÀ   r{   Úmaxr�   r¤   rx   ÚtextwrapÚ
expandtabsr~   r³   rÈ   r   Úremove_suffixrr   rJ   r   r   r…   r€   Ú
ascii_onlyÚwith_indent_guidesÚoverflowÚrenderÚupdateÚrender_linesÚsplitr)   Újoinr|   Ú__contains__r(   Úlegacy_windowsÚ	enumeraterz   Úlistrœ   Úadjust_line_lengthr   rZ   Úrjust) rG   rÁ   rÉ   r­   r}   Úline_offsetrz   Zend_lineZ
ends_on_nlr�   r²   r…   rÆ   rÇ   rd   Zsyntax_linesZsyntax_lineÚlinesZnumbers_column_widthÚrender_optionsZhighlight_lineÚ_SegmentÚpaddingr    Zline_pointerr¦   ÚlineZwrapped_linesÚsegmentsÚfirstZwrapped_lineZline_columnrH   rH   rI   Ú__rich_console__õ  sÞ    
ûÿýù

ü

ÿþýÿÿû
ÿþýÿÿþýÿ
üüÿ


zSyntax.__rich_console__)N)r´   )'rN   rO   rP   rQ   r   rg   Ú__annotations__rA   Úclassmethodr   rZ   rv   ÚDEFAULT_THEMEr   ÚboolÚintr	   r   r
   r_   r•   r   r—   rR   r    r˜   Úpropertyr‚   r)   r³   Úfloatr¼   rÀ   r"   rÈ   rÌ   r#   r%   rï   rH   rH   rH   rI   rq   Á   s    
ñ


ð#ò

ñH ÿþLþ	þrq   Ú__main__z&Render syntax to the console with Rich)Údescriptionr†   ÚPATHzpath to file, or - for stdin)ÚmetavarÚhelpz-cz--force-colorÚforce_colorÚ
store_truezforce color for non-terminals)ÚdestÚactionrU   rû   z-iz--indent-guidesr€   Fzdisplay indent guidesz-lz--line-numbersry   zrender line numbers)rþ   rÿ   rû   z-wz--widthrË   z*width of output (default will auto-detect))Útyperþ   rU   rû   z-rz--wrapr   zword wrap long linesz-sz--soft-wrapÚ	soft_wrapzenable soft wrapping mode)rÿ   rþ   rU   rû   z-tz--themerT   zpygments theme)rþ   rU   rû   z-bz--background-colorr\   zOverride background colorz-xz--lexerrU   r‘   z
Lexer name)rU   rþ   rû   )r"   )Úforce_terminalrË   ú-)r�   r‚   ry   r   rT   r\   r€   )ry   r   rT   r\   r€   )r  )uZos.pathrŒ   ÚplatformZpip._vendor.rich.containersr   rÖ   Úabcr   r   Útypingr   r   r   r   r	   r
   r   r   r   Zpip._vendor.pygments.lexerr   Úpip._vendor.pygments.lexersr   r   Zpip._vendor.pygments.styler   rg   Zpip._vendor.pygments.stylesr   Úpip._vendor.pygments.tokenr   r   r   r   r   r   r   r   r   r   Úpip._vendor.pygments.utilr   Ú_loopr   r-   r    r!   rÁ   r"   r#   r$   r%   Újupyterr&   Úmeasurer'   Úsegmentr(   rd   r²   r)   rZ   rR   ÚsystemÚWINDOWSrò   ÚPreprocÚWordÚBuiltinÚFunctionÚ	NamespaceÚClassÚ	ExceptionÚ	DecoratorÚVariableÚConstantÚ	AttributeÚTagÚDeletedÚInsertedÚHeadingÚ
SubheadingÚPromptr:   rð   r?   rt   rA   rS   rh   rq   rN   ÚargparseÚsysÚArgumentParserÚparserÚadd_argumentrô   Ú
parse_argsÚargsÚpip._vendor.rich.consolerü   rË   r†   Ústdinr‹   r�   r‘   ry   r   rT   r\   r€   Úsyntaxr•   Úprintr  rH   rH   rH   rI   Ú<module>   sl  
,0




æ




æ
*!   :
ÿýúúûúúú
ÿûû
ù
ú