
    WIgN                         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    V/var/www/html/answerous/venv/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                   (   e Zd Zddddddddddd
Z e ee            Zh d	Zh d
Z	e
j                  hZdZej                  dk\  r>ej!                  e
j"                  e
j$                  e
j&                  h       e
j$                  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>	   (),:;[]{}N)r      c                 .    |xs | j                   | _        y r   )_default_style_style)selfstyles     r   __init__zSyntaxHighlighter.__init__8   s    2t22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   )r0   tokenize_fstring_middlecountNAME
_constantsr   	iskeyword	_builtinsOP_punctationNUMBER_stringsCOMMENTENCODINGformat)r1   sourcer2   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BytesIOr6   readline
TokenError)rD   s    r   r6   zSyntaxHighlighter.tokenizem   sX      w'F#	((999"" 		s:   'A-"A AA A-A A*'A-)A**A-r   )__name__
__module____qualname__r/   setdirbuiltinsr<   r:   r>   r6   STRINGr@   r7   sysversion_infoupdateFSTRING_STARTFSTRING_MIDDLEFSTRING_ENDr3   rP   staticmethodr   r   r   r   r       s    --%%,.).(N CM"I*J?K HO
7"//1H1H(J^J^_`"1130d  r   r   c                       e Zd Zddddddddddd	d
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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basenamerN   functionexception_typeexception_valuearrowsvalueFNc
                 D   || _         || _        |xs | j                  | _        || _        t        |      | _        || _        || _        || _	        |	| _
        | j                         | _        | j                  dd      | _        | j                  dd      | _        d| _        y )Nu   │|u   └z->z <Loguru catch point here>)	_colorize	_diagnose_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)
r1   colorize	backtracediagnosethemer2   
max_lengthencodinghidden_frames_filenameprefixs
             r   r3   zExceptionFormatter.__init__   s     "!2t22##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)textr8   r   rN   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   )rR   rz   UnicodeEncodeErrorLookupError)r1   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~   )r1   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{   )framer1   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filenamerl   rD   s        r   get_infoz4ExceptionFormatter._extract_frames.<locals>.get_info   sJ    ||//H||++H&&x8>>@FVXv55r   z
    )tb_frameappend	tb_linenorw   f_backinsertf_linenor   tb_nextrs   r   rx   rP   rt   _get_relevant_values_format_relevant_valueslistjoin)r1   tbis_firstr   r   framesfinal_sourcer   r   infosget_parent_onlyr   r   r   rl   rD   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(   )rx   r6   r=   r9   r   r;   f_locals	f_globals_format_valueKeyErrorinspectgetattr_staticAttributeError)r1   rD   r   rp   pendingis_attributeis_valid_valueis_assignmentrH   rI   r   rL   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)Nr5   r       r   ro   rp   )	reversedrangelenr   split	enumerater   rv   rC   )r1   r   r   ir   rp   pcolrL   	pipe_colspre_lineindexpcvalue_linesn
value_linero   s                   r   r   z*ExceptionFormatter._format_relevant_values1  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typerW   ry   r   )r1   vr   s      r   r   z ExceptionFormatter._format_valueK  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   rN   rl   z  File "{}", line {}, in {}
z  File "{}", line {}
>r   rj   rk   r   )rematchgroupr   rw   r   r   r   rs   r   r   r   r   rv   rC   rt   end)r1   frames_lineshas_introductionprepend_with_new_lineregexr   r  r   rN   rl   is_minepatternrj   rk   locations                  r   _format_locationsz$ExceptionFormatter._format_locationsV  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(                  ||      }t+        |      D ]  \  }}|j-                  d      r n |   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 {    t'        j>                  |      |z   }| j                  s| j@                  s| j                  r| jC                  ||      }| j                  djE                  |      |      E d {    |r+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 L7 7 7 # t"        $ r d }Y w xY w7 7 7 a7 7 7 7 o7 @w)'N)r  r  zDThe above exception was the direct cause of the following exception:rh   z

z


r   zCDuring handling of the above exception, another exception occurred:ri   r   r   )r  r  r   r   r   r   r   r'   rm   rn   z: z2Exception Group Traceback (most recent call last):z"Traceback (most recent call last):rg   z+ r   )r  r5   )start+z %s    r   #   -z+-r   zand %d more exceptions

   z... (max_group_depth is 10)
z#-----------------------------------)&r  rZ   addid	__cause___format_exception__traceback__rs   rv   rC   rt   r   __context____suppress_context__r   r^   tracebacklimitr   r   	tracebackformat_exception_onlyr   r   r   
issubclassAssertionErrorstrrx   rP   r|   boolformat_listrw   r  r   
exceptionscenterr   )r1   rp   r   r  r   r   r  exc_type	exc_valueexc_tracebackrh   ri   
is_groupedtraceback_limitr   r   exception_onlyerror_message_indexparterror_messagerm   rn   r  rg   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 *3>)B 	%??3'	 '':;CR@>>m#2?2E2Ec12M/!%-=!>!E!En!U"&++.?"@"G"G"X . 4 F $,< = D D] S>>f(N3C	N|>>#'#;#;#E#El#SL!44 =0M.;d.B*+,,<SC~~#{{>:AA,O!<<t(;]SW<XXX<<t(;]KKK ,,V4~E>>T__11,Qa1bL<< 5}EEE#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	#h YK 	F
 _ H H Rs9  BW7V<AW7,V?-!W7WA*W79W:AW7W W72W30W7#W$W7*W :AW7E'W72W#3W7W&A7W7W)	A!W7*W,+<W7'W/(0W7W1*W7W30W74W55W7?W7W7W7W7W7W7W W7W  W7&W7)W7,W7/W71W73W75W7)r   c             #   J   K   | j                  ||d|      E d {    y 7 w)NT)r   r   )r  )r1   rI   rp   r   r   s        r   format_exceptionz#ExceptionFormatter.format_exception  s$     ))%dSa)bbbs   #!#)	FFTNN   asciiNr5   )rW   rX   rY   ru   r3   rd   r}   r   r   r   r   r   r   r   r  r  r8  r   r   r   rf   rf   y   s    2#%&.#'4-%+N  #D4 ^ ^ '+ + +G 6:% >$@/b*4	&R "&e[\ORb DI cr   rf   )r\   r   rS   r   r   r   r  r^   r   r6   r#  r_   r   exceptiongroupr	   ImportErrorr   rf   r   r   r   <module>r=     sx      	   	 	 
   w/
31	3V VrWc WcI  	s   A A*)A*