o
    ԰iT                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
ejdkr6dd Znzd dlmZ W n eyK   dd ZY nw dd ZG dd	 d	ZG d
d dZdS )    N)      c                 C   
   t | tS N
isinstanceExceptionGroupexc r   M/home/ubuntu/.local/lib/python3.10/site-packages/loguru/_better_exceptions.pyis_exception_group      
r   )r   c                 C   s   dS )NFr   r	   r   r   r   r      s   c                 C   r   r   r   r	   r   r   r   r      r   c                   @   s   e Zd Zeddddddddddd
 ZeeeZeh d	Z	eh d
Z
ejdkr<eejejejejhZejZneejhZdZdddZdd Zedd ZdS )SyntaxHighlighterz[30m[1m{}[0mz[35m[1m{}[0m
[1m{}[0m[36m{}[0mz[34m[1m{}[0m[36m[1m{}[0mz{})
commentkeywordbuiltinstringnumberoperatorpunctuationconstant
identifierother>   NoneTrueFalse>	   {}(),:;[])r      Nc                 C   s   |pt | j| _d S r   )dict_default_style_style)selfstyler   r   r   __init__=   s   zSyntaxHighlighter.__init__c                 C   s|  | j }d\}}d}| |D ]}|\}}\}	}
\}}}|| jkr,||d|d 7 }|tjkrT|| jv r;|d }nOt|rE|d }nE|| jv rO|d }n;|d }n6|tj	krh|| j
v rc|d	 }n'|d
 }n"|tjkrr|d }n|| jv r||d }n|tjkr|d }n|d }|	|kr||d  }|	d}}|tjkr||||
 7 }||||
| 7 }|}q|||d  7 }|S )N)r   r    r    r!   r   r   r   r   r   r   r   r   r   r   r   )r,   tokenize_fstring_middlecountNAME
_constantsr   	iskeyword	_builtinsOP_punctuationNUMBER_stringsCOMMENTENCODINGformat)r-   sourcer.   rowcolumnoutputtokentype_r   	start_rowstart_column_
end_columnlinecolorr   r   r   	highlight@   sF   




















zSyntaxHighlighter.highlightc                 c   sF    |  d} t| } zt| jE d H  W d S  tjy"   Y d S w )Nzutf-8)encodeioBytesIOr1   readline
TokenError)r?   r   r   r   r1   r   s   

zSyntaxHighlighter.tokenizer   )__name__
__module____qualname__	frozensetitemsr+   dirbuiltinsr7   r5   r9   sysversion_infor1   STRINGFSTRING_STARTFSTRING_MIDDLEFSTRING_ENDr;   r2   r/   rK   staticmethodr   r   r   r   r       s:    

2r   c                   @   s   e Zd Zeddddddddddd	d
 Z									d1ddZedd ZeddddZ	dd Z
dd ZdddddZd d! Zd"d# Zd$d% Zd&d' Zdddd(d)d*d+Zd,d- Zdd.d/d0ZdS )2ExceptionFormatterz[33m[1m{}[0mr   z[32m{}[0mz[32m[1m{}[0mz[33m{}[0mz[35m{}[0mz[31m[1m{}[0mr   r   )introductioncausecontextdirnamebasenamerI   functionexception_typeexception_valuearrowsvalueFTN   asciir0   c
           
      C   st   || _ || _|pt| j| _|| _t|| _|| _|| _	|| _
|	| _|  | _| dd| _| dd| _d| _d S )Nu   │|u   └z->z <Loguru catch point here>)	_colorize	_diagnoser*   _default_theme_theme
_backtracer   _syntax_highlighter_max_length	_encoding_hidden_frames_filename_prefix_get_lib_dirs	_lib_dirs	_get_char
_pipe_char	_cap_char_catch_point_identifier)
r-   colorize	backtracediagnosethemer.   
max_lengthencodinghidden_frames_filenameprefixr   r   r   r/      s   


zExceptionFormatter.__init__c                     s0   t  } g d  fdd| D }dd |D S )N)stdlib
platstdlibplatlibpurelibc                    s"   h | ]} D ]}t ||qqS r   )	sysconfigget_path).0schemenamenamesr   r   	<setcomp>   s   " z3ExceptionFormatter._get_lib_dirs.<locals>.<setcomp>c                 S   s,   g | ]}|t jv rtj| tj qS r   )rX   pathosabspathlowersep)r   r   r   r   r   
<listcomp>   s   , z4ExceptionFormatter._get_lib_dirs.<locals>.<listcomp>)r   get_scheme_names)schemespathsr   r   r   rw      s   z ExceptionFormatter._get_lib_dirsz| r   c                c   sF    |dkr
| V  d S |  dD ]}d| | | }| d V  qd S )Nr   T  
)
splitlinesrstrip)textr3   r   rI   indentedr   r   r   _indent   s   zExceptionFormatter._indentc              	   C   s.   z	| | j W |S  ttfy   | Y S w r   )rL   rt   UnicodeEncodeErrorLookupError)r-   chardefaultr   r   r   ry      s   zExceptionFormatter._get_charc                    s8   t j|   dsdS t fdd| jD  S )Nz.pyFc                 3   s    | ]}  |V  qd S r   
startswith)r   dfilepathr   r   	<genexpr>   s    z3ExceptionFormatter._is_file_mine.<locals>.<genexpr>)r   r   r   r   endswithanyrx   )r-   filer   r   r   _is_file_mine   s   
z ExceptionFormatter._is_file_minelimitfrom_decoratorc                   s  g d }}|d u s|d ur|dkr||fS  fdd}dd }g }	||j r3|	||j |j|j f |o8 j }
 jr>|s@|
r{|j j}|r^||rY|	d|||j|f |
rYn|j}|sF|	r{|
s{|	d \\}}}}}| j7 }||||f|f|	d< |j}|r||j r|	||j |j|j f |j}|s|d ur|	| d  }	|	D ]L\\}}}}}|}|r j	o 
|}g }|r| j| n||  jr ||} t||}|t|7 }d|}|||||f q||fS )Nr   c                    s   | j j jkS r   )f_codeco_filenameru   )framer-   r   r   is_valid   s   z4ExceptionFormatter._extract_frames.<locals>.is_validc                 S   s,   | j j}| j j}t|| }||||fS r   )r   r   co_name	linecachegetlinestrip)r   linenofilenamere   r?   r   r   r   get_info   s   z4ExceptionFormatter._extract_frames.<locals>.get_infoz
    )tb_frameappend	tb_linenorq   f_backinsertf_linenor|   tb_nextrm   r   rr   rK   rn   _get_relevant_values_format_relevant_valueslistjoin)r-   tbis_firstr   r   framesfinal_sourcer   r   infosget_parent_onlyr   r   r   re   r?   r}   linesrelevant_valuesvaluesr   r   r   _extract_frames   sZ   





z"ExceptionFormatter._extract_framesc              
   c   sZ   d }d }d}d}d}| j |D ]}|^}	}
\}}}|d ur/|	tjks*|
dks*|r-|V  d }|	tjkr}t|
s}|s^|j|jfD ]}z||
 }W n	 tyR   Y qAw d}|| 	|f} q|r|zt
||
}W n tys   d}Y qw || 	|fV  q|	tjkr|
dkrd}d}q|	tjkr|
dkrd}d}d}qd}d}d}q|d ur|V  d S d S )NFT=.r&   )rr   r1   r8   r4   r   r6   f_locals	f_globalsKeyError_format_valueinspectgetattr_staticAttributeError)r-   r?   r   ri   pendingis_attributeis_valid_valueis_assignmentrC   rD   r   rG   col	variablesr   r   r   r     sZ   
z'ExceptionFormatter._get_relevant_valuesc                 c   s    t tt|D ]o}|| \}}dd |d | D }d}d}|D ]}	|d|	|  | j 7 }|	d }q"|d||  7 }|d}
t|
D ]2\}}|dkrU|| j d }n|dt| jd   }|rr| jd |}| jd	 |}|| V  qEq	d S )
Nc                 S   s   g | ]\}}|qS r   r   )r   pcolrG   r   r   r   r   ;  s    z>ExceptionFormatter._format_relevant_values.<locals>.<listcomp>r0   r       r   rh   ri   )	reversedrangelenrz   split	enumerater{   rp   r>   )r-   r   r}   ir   ri   	pipe_colspre_lineindexpcvalue_linesn
value_linerh   r   r   r   r   8  s*   

z*ExceptionFormatter._format_relevant_valuesc                 C   s`   zt |}W n ty   dt|j }Y nw | j}|d ur.t||kr.|d |d  d }|S )Nz<unprintable %s object>r   ...)repr	ExceptiontyperQ   rs   r   )r-   vr   r   r   r   r   R  s   z ExceptionFormatter._format_valuec                c   sD   |}d}|D ]}t ||}|r|ddd\}}}	| |}
|	d ur'd}nd}| jrF|	rF|	| jrF|	d t| j  }	d|dd   }| jr~|
r~t	j
|\}}|rZ|t	j7 }| jd	 |}| jd
 |}|| }| jd |}| jd |	}	| jr|
s|rd| }||||	}||| d   }|
}|V  qd S )NzI^  File "(?P<file>.*?)", line (?P<line>[^,]+)(?:, in (?P<function>.*))?\nr   rI   re   z  File "{}", line {}, in {}
z  File "{}", line {}
>r   rc   rd   r   )rematchgroupr   rq   r   r|   r   rm   r   r   r   r   rp   r>   rn   end)r-   frames_lineshas_introductionprepend_with_new_lineregexr   r   r   rI   re   is_minepatternrc   rd   locationr   r   r   _format_locations]  s<   


z$ExceptionFormatter._format_locationsr   )seenr   r   group_nestingc                c   s   t |||}}}	|d u rt }|t| |r|jd urbt|j|vrb| j|j|jj||dE d H  d}
| jrC| jd 	|
}
| j
rT| d|
 d |E d H  nW| d|
 d |E d H  nI|jd urt|j|vr|js| j|j|jj||dE d H  d}| jr| jd 	|}| j
r| d| d |E d H  n| d| d |E d H  t|}|r|d	kr| j|||d
||dE d H  d S ztj}W n ty   d }Y nw | j|	|||d\}}t||}dd t|D }t|d }|d ura|| d d }| jr2d|v r*|dd
\}}| jd 	|}| jd 	|}|d | }n| jd 	|}| j
r[|r[t|trWt|sW|rW| jrQ| j|}|d| 7 }d| }|d ||< |rh| jV  t|}|r|rud}nd}| jr| jd 	|}|d
kr| j|d |ddE d H  n| |d |E d H  | || }| js| j s| j
r| j!||d}| d"||E d H  |rXd }t|j#d
dD ]k\}}dd|dkrdn| $d d! }| j|||d
krd"nd#dE d H  |dkrd$t%|j#d  }| ||d
 E d H   n*|d%kr.t|r.d&}| ||d
 E d H  q| j||j||d
 dE d H  qt|rI|d%krZ| jd'|d
 d"dE d H  d S d S d S )(N)r  r  zDThe above exception was the direct cause of the following exception:ra   z

z


r   zCDuring handling of the above exception, another exception occurred:rb   r   r   )r  r  r   r   r   c                 s   s"    | ]\}}| d s|V  qdS )r   Nr   )r   r   pr   r   r   r     s     z7ExceptionFormatter._format_exception.<locals>.<genexpr>r   r%   rf   rg   z: z2Exception Group Traceback (most recent call last):z"Traceback (most recent call last):r`   z+ r   )r   r0   )start+z %s    r   #   -z+-r   zand %d more exceptions

   z... (max_group_depth is 10)
z#-----------------------------------)&r   setaddid	__cause___format_exception__traceback__rm   rp   r>   rn   r   __context____suppress_context__r   rX   tracebacklimitr   r   	tracebackformat_exception_onlyr   nextr   
issubclassAssertionErrorstrrr   rK   rv   bool_format_listrq   r  r   
exceptionscenterr   )r-   ri   r   r  r   r   r  exc_type	exc_valueexc_tracebackra   rb   
is_groupedtraceback_limitr   r   exception_onlyno_indented_indexeserror_message_indexerror_messagerf   rg   r   r`   r   r
   r   rulermessager   r   r   r    s   






"$
z$ExceptionFormatter._format_exceptionc           	      C   s   dd }dd }g }d}d }|D ]4^ }}||kr&|dkr&| ||d  ||kr4|d7 }|dkr3qnd}| |g ||R   |}q|dkrR| ||d  |S )Nc                 S   s&   d| ||f }|r|d|   7 }|S )Nz  File "%s", line %d, in %s
z    %s
)r   )r   r   r   rI   r,  r   r   r   source_message  s   z7ExceptionFormatter._format_list.<locals>.source_messagec                 S   s   | dkrdnd}d| |f S )Nr   sr0   z*  [Previous line repeated %d more time%s]
r   )r3   pluralr   r   r   skip_message   s   z5ExceptionFormatter._format_list.<locals>.skip_messager   r   r   )r   )	r-   r   r-  r0  resultr3   last_sourcer?   rI   r   r   r   r    s&   zExceptionFormatter._format_list)r   c                c   s    | j ||d|dE d H  d S )NT)r   r   )r  )r-   rD   ri   r   r   r   r   r   format_exception<  s   z#ExceptionFormatter.format_exception)	FFTNNrj   rk   Nr0   )rQ   rR   rS   rT   rU   ro   r/   r^   rw   r   ry   r   r   r   r   r   r  r  r  r3  r   r   r   r   r_   ~   sT    

@1) $r_   )rW   r   rM   r   r   r   r   rX   r   r1   r  rY   r   exceptiongroupr   ImportErrorr   r_   r   r   r   r   <module>   s*    

^