
    NJniT                         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\  rd Zn
	 d dlmZ d Z G d d      Z G d	 d
      Zy# e$ r d ZY w xY w)    N)      c                 "    t        | t              S N
isinstanceExceptionGroupexcs    J/home/uftp/myenv/lib/python3.12/site-packages/loguru/_better_exceptions.pyis_exception_groupr      s    #~..    )r	   c                 "    t        | t              S r   r   r
   s    r   r   r      s    c>22r   c                      y)NF r
   s    r   r   r      s    r   c                   z   e Zd Z eddddddddddd
j	                               Z e ee            Z eh d	      Z	 eh d
      Z
ej                  dk\  rA eej                  ej                  ej                   ej"                  h      Zej                   Zn eej                  h      ZdZddZd Zed        Zy)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                 @    |xs t        | j                        | _        y r   )dict_default_style_style)selfstyles     r   __init__zSyntaxHighlighter.__init__=   s    8tD$7$78r   c                    | j                   }d\  }}d}| j                  |      D ]\  }|\  }}\  }	}
\  }}}|| j                  k(  r&||j                  d      |j                  d      z   z  }|t        j                  k(  rI|| j
                  v r|d   }nt        j                  |      r|d   }n|| j                  v r|d   }n~|d   }nx|t        j                  k(  r|| j                  v r|d	   }nQ|d
   }nK|t        j                  k(  r|d   }n2|| j                  v r|d   }n|t        j                  k(  r|d   }n|d   }|	|k7  r	||d  }|	d}}|t        j                  k7  r||||
 z  }||j                  ||
|       z  }|}_ |||d  z  }|S )N)r   r    r+   r,   r   r   r   r   r   r   r   r   r   r    r   )r1   tokenize_fstring_middlecountNAME
_constantsr   	iskeyword	_builtinsOP_punctuationNUMBER_stringsCOMMENTENCODINGformat)r2   sourcer3   rowcolumnoutputtokentype_r   	start_rowstart_column_
end_columnlinecolors                  r   	highlightzSyntaxHighlighter.highlight@   s   V]]6* '	 ENSKE64I|oq*t,,, fll3/&,,s2CCC
%T__,!*-E&&v.!),Et~~-!),E!,/E(++%T...!-0E!*-E(//)h$--'h(***i(gC'V)))$vl33%,,tL'DEEFO'	 R 	&/!r   c              #      K   | j                  d      } t        j                  |       } 	 t        j                  | j                        E d {    y 7 # t        j
                  $ r Y y w xY ww)Nzutf-8)encodeioBytesIOr7   readline
TokenError)rE   s    r   r7   zSyntaxHighlighter.tokenizer   sX      w'F#	((999"" 		s:   'A-"A AA A-A A*'A-)A**A-r   )__name__
__module____qualname__	frozensetitemsr0   dirbuiltinsr=   r;   r?   sysversion_infor7   STRINGFSTRING_STARTFSTRING_MIDDLEFSTRING_ENDrA   r8   r4   rQ   staticmethodr   r   r   r   r       s    11))02-2,	
 %'N #h-(I45JJKL
7"__h44h6M6MxOcOcd
 #11hoo./90d  r   r   c                       e Zd Z eddddddddddd	d
j	                               Z	 	 	 	 	 	 	 	 	 d dZed        Zeddd       Z	d Z
d ZddddZd Zd Zd Zd ZddddddZd ZdddZy)!ExceptionFormatterz[33m[1m{}[0mr   z[32m{}[0mz[32m[1m{}[0mz[33m{}[0mz[35m{}[0mz[31m[1m{}[0mr   r   )introductioncausecontextdirnamebasenamerO   functionexception_typeexception_valuearrowsvalueFNc
                 V   || _         || _        |xs t        | j                        | _        || _        t        |      | _        || _        || _	        || _
        |	| _        | j                         | _        | j                  dd      | _        | j                  dd      | _        d| _        y )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)
r2   colorize	backtracediagnosethemer3   
max_lengthencodinghidden_frames_filenameprefixs
             r   r4   zExceptionFormatter.__init__   s     "!8tD$7$78##4U#; %!'=$++-..37$7'C$r   c            	      ^   t        j                         } g d}| D ch c]  }|D ]  }t        j                  ||       ! }}}|D cg c]S  }|t        j                  v st
        j                  j                  |      j                         t
        j                  z   U c}S c c}}w c c}w )N)stdlib
platstdlibplatlibpurelib)		sysconfigget_scheme_namesget_pathr_   pathosabspathlowersep)schemesnamesschemenamepathsr   s         r   r~   z ExceptionFormatter._get_lib_dirs   s    ,,.>@GZfTYZD##D&1Z1ZZCH]4DTWT\T\L\%++-6]] []s   $B$	B*!A B*z| r   c             #      K   |dk(  r|  y | j                  d      D ]"  }d|z  |z   |z   }|j                         dz    $ y w)Nr   T  
)
splitlinesrstrip)textr9   r   rO   indenteds        r   _indentzExceptionFormatter._indent   sR     A:JOOD) 	+De|f,t3H//#d**	+s   AAc                 l    	 |j                  | j                         |S # t        t        f$ r |cY S w xY wr   )rS   r{   UnicodeEncodeErrorLookupError)r2   chardefaults      r   r   zExceptionFormatter._get_char   s9    	KK' K #K0 	N	s    33c                     t         j                  j                  |      j                         j	                  d      syt        fd| j                  D               S )Nz.pyFc              3   @   K   | ]  }j                  |        y wr   
startswith).0dfilepaths     r   	<genexpr>z3ExceptionFormatter._is_file_mine.<locals>.<genexpr>   s     F!x**1-Fs   )r   r   r   r   endswithanyr   )r2   filer   s     @r   _is_file_minez ExceptionFormatter._is_file_mine   sG    77??4(..0  'Ft~~FFFFr   limitfrom_decoratorc                    g d }}||	|dk  r||fS  fd}d }g }	 ||j                         r8|	j                   ||j                   |j                        |j                   f       |xr  j                   }
 j                  r|s|
r|j                   j                  }|r? ||      r(|	j                  d |||j                        |f       |
rn|j                  }|r?|	r)|
s'|	d   \  \  }}}}}| j                  z  }||||f|f|	d<   |j                  }|rY ||j                         r8|	j                   ||j                   |j                        |j                   f       |j                  }|rY||	| d  }	|	D ]  \  \  }}}}}|}|r j                  xr  j                  |      }g }|r+|j                   j                  j                  |             n|j                  |        j                  r; j                  ||      } j                  t!        |      |      }|t!        |      z  }dj#                  |      }|j                  ||||f        ||fS )Nr   c                 J    | j                   j                  j                  k7  S r   )f_codeco_filenamer|   )framer2   s    r   is_validz4ExceptionFormatter._extract_frames.<locals>.is_valid   s    <<++t/K/KKKr   c                     | j                   j                  }| j                   j                  }t        j                  ||      j                         }||||fS r   )r   r   co_name	linecachegetlinestrip)r   linenofilenamerm   rE   s        r   get_infoz4ExceptionFormatter._extract_frames.<locals>.get_info   sJ    ||//H||++H&&x8>>@FVXv55r   z
    )tb_frameappend	tb_linenorx   f_backinsertf_linenor   tb_nextrt   r   ry   rQ   ru   _get_relevant_values_format_relevant_valueslistjoin)r2   tbis_firstr   r   framesfinal_sourcer   r   infosget_parent_onlyr   r   r   rm   rE   r   linesrelevant_valuesvaluess   `                   r   _extract_framesz"ExceptionFormatter._extract_frames   sT   !4:%+
<''	L	6 BKK LL(2;;=r{{KL(@-@OO_KK&&EE?LLXeU^^%De$LM&  _>CBi;468VeD888&&A5Ib	ZZ$hr{{BLLA2;;OPB 
 5&'NE;@ 	@70Xvx%!L>>Jd.@.@.JLL!9!9!C!CF!KLLL(>>&*&?&?&NO!99$:OQYZFT&\)E!u-MM8VXv>?	@  |##r   c              #     K   d }d }d}d}d}| j                   j                  |      D ]  }|^}	}
\  }}}| |	t        j                  k7  s|
dk7  s|r| d }|	t        j                  k(  rt	        j
                  |
      sl|s:|j                  |j                  fD ]  }	 ||
   }d}|| j                  |      f}  |s	 t        j                  ||
      }|| j                  |      f |	t        j                  k(  r
|
dk(  rd}d}|	t        j                  k(  r|
dk(  rd}d}d}d}d}d} || y y # t        $ r Y w xY w# t        $ r d}Y -w xY ww)NFT=.r(   )ry   r7   r>   r:   r   r<   f_locals	f_globals_format_valueKeyErrorinspectgetattr_staticAttributeError)r2   rE   r   rq   pendingis_attributeis_valid_valueis_assignmentrI   rJ   r   rM   col	variabless                 r   r   z'ExceptionFormatter._get_relevant_values  s    --66v> %	&E*/'E68Asa"HKK'6S=M!M%g.?.?.G#&+nneoo%F "	"$-f$5E .2N'*D,>,>u,E&FG!" $? ' 6 6uf E  #D$6$6u$=>>(++%&C-# %(++%&C- $$!&$!& %K%	&N M 3  ( %$% * /)./sO   BED8"E?EA#E8	EEEEEEEEc              #   >  K   t        t        t        |                  D ]  }||   \  }}|d | D cg c]  \  }}|	 }}}d}	d}
|D ]  }|	d||
z
  z  | j                  z   z  }	|dz   }
! |	d||
z
  z  z  }	|j	                  d      }t        |      D ]  \  }}|dk(  r|	| j                  z   dz   }n|	dt        | j                        dz   z  z   }|r<| j                  d   j                  |      }| j                  d   j                  |      }||z      y c c}}w w)Nr6   r       r   rp   rq   )	reversedrangelenr   split	enumerater   rw   rD   )r2   r   r   ir   rq   pcolrM   	pipe_colspre_lineindexpcvalue_linesn
value_linerp   s                   r   r   z*ExceptionFormatter._format_relevant_values8  sC    %O 456 	*A(+JC-<Ra-@A'$AIAHE SBJ/4??BBQ sU{++H++d+K!*;!7 
*:6%6<F%s4>>/BQ/F(GGF![[299&AF!%W!5!<!<Z!HJz))
*	*As   1DDCDc                     	 t        |      }| j                  }|t        |      |kD  r|d |dz
   dz   }|S # t        $ r dt        |      j                  z  }Y Lw xY w)Nz<unprintable %s object>r   ...)repr	ExceptiontyperX   rz   r   )r2   vr   s      r   r   z ExceptionFormatter._format_valueR  sn    	=QA %%
!c!fz&9"JN#e+A  	=)DG,<,<<A	=s   6 !AAc             #   V  K   |}d}|D ]  }t        j                  ||      }|r{|j                  ddd      \  }}}	| j                  |      }
|	d}nd}| j                  r>|	r<|	j                  | j                        r!|	d t        | j                          }	d|dd  z   }| j                  r|
rt        j                  j                  |      \  }}|r|t        j                  z  }| j                  d	   j                  |      }| j                  d
   j                  |      }||z   }| j                  d   j                  |      }| j                  d   j                  |	      }	| j                  r	|
s|rd|z   }|j                  |||	      }|||j!                         d  z   }|
}|  y w)NzI^  File "(?P<file>.*?)", line (?P<line>[^,]+)(?:, in (?P<function>.*))?\nr   rO   rm   z  File "{}", line {}, in {}
z  File "{}", line {}
>r   rk   rl   r   )rematchgroupr   rx   r   r   r   rt   r   r   r   r   rw   rD   ru   end)r2   frames_lineshas_introductionprepend_with_new_lineregexr   r	  r   rO   rm   is_minepatternrk   rl   locations                  r   _format_locationsz$ExceptionFormatter._format_locations]  s     0\! "	EHHUE*E',{{66:'N$dH,,T2'=G6G??xH4E4EdFbFb4c'(L3t/K/K+L*LMH!GABK/G>>g(*d(;%GX266)"kk)4;;GDG#{{:6==hGH"X-D;;v.55d;D#{{:6==hGH>>w2G"WnG">>$h? 5#77(/%KE"	s   F'F)r   )seenr   r   group_nestingc             #     K   t        |      ||}	}}|
t               }|j                  t        |             |r|j                  t        |j                        |vr| j                  |j                  |j                  j                  ||      E d {    d}
| j                  r| j                  d   j                  |
      }
| j                  r"| j                  d|
z   dz   |      E d {    n| j                  d|
z   dz   |      E d {    n|j                  t        |j                        |vr|j                  s| j                  |j                  |j                  j                  ||      E d {    d}| j                  r| j                  d   j                  |      }| j                  r!| j                  d|z   dz   |      E d {    n | j                  d|z   dz   |      E d {    t        |      }|r%|d	k(  r | j                  |||d
||      E d {    y 	 t        j                   }| j%                  |	|||      \  }}t'        j(                  ||      }d t+        |      D        }t-        |d       }|||   d d }| j                  r|d|v rZ|j/                  dd
      \  }}| j                  d   j                  |      }| j                  d   j                  |      }|dz   |z   }n| j                  d   j                  |      }| j                  rS|rQt1        |t2              r<t5        |      s1|r/| j                  r| j6                  j9                  |      }|d|z   z  }d|z   }|dz   ||<   |r| j:                   t=        |      }|rs|rd}nd}| j                  r| j                  d   j                  |      }|d
k(  r | j                  |dz   |d      E d {    n| j                  |dz   |      E d {    | j?                  |      |z   }| j                  s| j@                  s| j                  r| jC                  ||      }| j                  djE                  |      |      E d {    |r-d }t+        |jF                  d
      D ]  \  }}dd|dkD  rdn|z  jI                  dd       z   }| j                  |||d
k(  rd!nd"      E d {    |dkD  r:d#tK        |jF                        dz
  z  }| j                  ||d
z         E d {     n\|d$k(  r+t        |      r d%}| j                  ||d
z         E d {    | j                  ||j                  ||d
z         E d {     t        |      r|d$k(  r | j                  d&|d
z   d!      E d {    y y y 7  7 7 7 D7 7 7 # t"        $ r d }Y w xY w7 7 7 c7 7 7 7 o7 @w)'N)r  r  zDThe above exception was the direct cause of the following exception:ri   z

z


r   zCDuring handling of the above exception, another exception occurred:rj   r   r   )r  r  r   r   r   c              3   J   K   | ]  \  }}|j                  d       r|  yw)r   Nr   )r   r   ps      r   r   z7ExceptionFormatter._format_exception.<locals>.<genexpr>  s      `TQall[^N_q`s   ##r   r'   rn   ro   z: z2Exception Group Traceback (most recent call last):z"Traceback (most recent call last):rh   z+ r   )r  r6   )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__rt   rw   rD   ru   r   __context____suppress_context__r   r_   tracebacklimitr   r   	tracebackformat_exception_onlyr   nextr   
issubclassAssertionErrorstrry   rQ   r}   bool_format_listrx   r  r   
exceptionscenterr   )r2   rq   r   r  r   r   r  exc_type	exc_valueexc_tracebackri   rj   
is_groupedtraceback_limitr   r   exception_onlyno_indented_indexeserror_message_indexerror_messagern   ro   r  rh   r  r   r   rulermessages                                r   r#  z$ExceptionFormatter._format_exception  s    
 .2%[%])<5DI"".2i6I6I3JRV3V11''''55"/	 2    _>> KK077>E>>#||FUNX,E}UUU#||D5L6,A=QQQ %%1y,,-T9!6611))))77"/	 2    `>>"kk)4;;GDG>>#||FW,<x,GWWW#||D7NV,C]SSS'.
-1,--!- .    	#!00O  $338?>  4  
 #889M aY~-F`"#6=**+>?DM~~-'6C6I6I#q6Q3NO%)[[1A%B%I%I.%YN&*kk2C&D&K&KO&\O$2S$8?$JM$(KK0@$A$H$H$WM~~&h7IS_~~'+'?'?'I'I,'W!TL%88M $} 42?$2FN./,,<SC~~#{{>:AA,O!<<t(;]SW<XXX<<t(;]KKK((0>A>>T__11,Qa1bL<< 5}EEEC#E$4$4A> 3v!b&a@HHSQQ<<}QRSVTY]<^^^r68C@P@P<QTV<VWG#||G]Q5FGGG"b(-?-D=G#||G]Q5FGGG#55))!&3a&7	  6    " &c*mr.A<<-!2CD<QQQ /B' _ VQ XS
  	#"O	#j YK 	F _ H H Rs2  BW/V4AW/,V7-!W/V:A*W/9V=:AW/W  W/2W30W/#W$W/*W	 :F2W/,W-W/
WA3W/>W!?A#W/"W$#<W/W' 0W/W)*W/;W+<0W/,W--W/7W/:W/=W/ W/W/W/	WW/WW/W/!W/$W/'W/)W/+W/-W/c                    d }d }g }d}d }|D ]V  ^ }}||k7  r|dkD  r|j                   ||dz
               ||k(  r|dz  }|dkD  r:d}|j                   |g ||        |}X |dkD  r|j                   ||dz
               |S )Nc                 F    d| ||fz  }|r|d|j                         z  z  }|S )Nz  File "%s", line %d, in %s
z    %s
)r   )r   r   r   rO   r<  s        r   source_messagez7ExceptionFormatter._format_list.<locals>.source_message  s0    5648PPG:

44Nr   c                 "    | dkD  rdnd}d| |fz  S )Nr   sr6   z*  [Previous line repeated %d more time%s]
r   )r9   plurals     r   skip_messagez5ExceptionFormatter._format_list.<locals>.skip_message   s    !AIS2F@E6?RRr   r   r   r   )r   )	r2   r   r?  rC  resultr9   last_sourcerE   rO   s	            r   r/  zExceptionFormatter._format_list  s    		S # 	!MVT$l51956$
19MM.7&7$78 K	! 19MM,uqy12r   )r   c             #   J   K   | j                  ||d|      E d {    y 7 w)NT)r   r   )r#  )r2   rJ   rq   r   r   s        r   format_exceptionz#ExceptionFormatter.format_exception<  s$     ))%dSa)bbbs   #!#)	FFTNN   asciiNr6   )rX   rY   rZ   r[   r\   rv   r4   re   r~   r   r   r   r   r   r   r   r  r#  r/  rG  r   r   r   rg   rg   ~   s    6')*2'+81)/	
 %'N$ #D4 ^ ^ '+ + +G 6:% >$@/b*4	&R "&e[\QRf"H DI cr   rg   )r^   r   rT   r   r   r   r  r_   r   r7   r(  r`   r   exceptiongroupr	   ImportErrorr   rg   r   r   r   <module>rL     sx      	   	 	 
   w/
31	3[ [|c cS  	s   A A*)A*