
    ,\d>                         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
 G d d          Z G d d          ZdS )    Nc                       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	ddZ
d Ze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>	   {}(),:;[]Nc                 "    |p| j         | _        d S N)_default_style_style)selfstyles     CD:\Sites\api_v1\venv\Lib\site-packages\loguru/_better_exceptions.py__init__zSyntaxHighlighter.__init__    s    2t2    c                    | j         }d\  }}d}|                     |          D ]8}|\  }}}	}
}|t          j        k    rJ|| j        v r	|d         }nt	          j        |          r	|d         }n|| j        v r	|d         }n|d         }n~|t          j        k    r|| j        v r	|d         }n\|d         }nS|t          j	        k    r	|d	         }n:|t          j
        k    r	|d
         }n!|t          j        k    r	|d         }n|d         }|	\  }}|
\  }}||k    r|d |         }|d}}|t          j        k    r%||||         z  }||                    |          z  }|}:|||d          z  }|S )N)r   r    r   r	   r
   r   r   r   r   r   r   r   r   )r!   tokenizeNAME
_constantsr	   	iskeyword	_builtinsOP_punctationNUMBERSTRINGCOMMENTENCODINGformat)r"   sourcer#   rowcolumnoutputtokentype_r   startendlinecolor	start_rowstart_column_
end_columns                    r$   	highlightzSyntaxHighlighter.highlight#   s   V]]6** %	  %	 E.3+E65#t%%T_,,!*-EE&v.. 0!),EEt~--!),EE!,/EE(+%%T---!-0EE!*-EE(/))h(/))h(***i(g&+#I|MAzC'V)))$vl233%,,v...FF&/!r&   c              #      K   |                      d          } t          j        |           } 	 t          j        | j                  E d {V  d S # t          j        $ r Y d S w xY w)Nzutf-8)encodeioBytesIOr)   readline
TokenError)r5   s    r$   r)   zSyntaxHighlighter.tokenizeS   s}       w''F##	(99999999999" 	 	 	FF	s   A A! A!r   )__name__
__module____qualname__r    setdirbuiltinsr-   r+   r/   r%   rC   staticmethodr)    r&   r$   r   r      s        --%%,.).( N CCMM""I***J???K3 3 3 3. . .`   \  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d Zd ZddddZ	d Z
d Zd Zd ZdddddZdddZdS ) ExceptionFormatterz[33m[1m{}[0mr   z[32m{}[0mz[32m[1m{}[0mz[33m{}[0mz[35m{}[0mz[31m[1m{}[0mr   r   )introductioncausecontextdirnamebasenamer=   functionexception_typeexception_valuearrowsvalueFTN   asciir(   c
                 X   || _         || _        |p| j        | _        || _        t          |          | _        || _        || _        || _	        |	| _
        |                                 | _        |                     dd          | _        |                     dd          | _        d| _        d S )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)
r"   colorize	backtracediagnosethemer#   
max_lengthencodinghidden_frames_filenameprefixs
             r$   r%   zExceptionFormatter.__init__n   s     "!2t2##4U#;#; %!'=$++--..377$77'C$$$r&   c                  f    t          j                    } g dfd| D             }d |D             S )N)stdlib
platstdlibplatlibpurelibc                 D    h | ]}D ]}t          j        ||          S rQ   )	sysconfigget_path).0schemenamenamess      r$   	<setcomp>z3ExceptionFormatter._get_lib_dirs.<locals>.<setcomp>   s4    ZZZfTYZZD#D&11ZZZZr&   c                     g | ]N}|t           j        v t          j                            |                                          t          j        z   OS rQ   )syspathosabspathlowersep)r   r   s     r$   
<listcomp>z4ExceptionFormatter._get_lib_dirs.<locals>.<listcomp>   sG    ]]]4DTWT\L\L\%%++--6L\L\L\r&   )r   get_scheme_names)schemespathsr   s     @r$   rl   z ExceptionFormatter._get_lib_dirs   sI    ,..>>>ZZZZZZZ]]5]]]]r&   c                 n    	 |                     | j                   |S # t          t          f$ r |cY S w xY wr   )rE   ri   UnicodeEncodeErrorLookupError)r"   chardefaults      r$   rn   zExceptionFormatter._get_char   sM    	KK''' K #K0 	 	 	NNN	s    44c                     t           j                            |                                                              d          sdS t          fd| j        D                        S )Nz.pyFc              3   B   K   | ]}                     |          V  d S r   )
startswith)r   dfilepaths     r$   	<genexpr>z3ExceptionFormatter._is_file_mine.<locals>.<genexpr>   s1      FF!x**1--FFFFFFr&   )r   r   r   r   endswithanyrm   )r"   filer   s     @r$   _is_file_minez ExceptionFormatter._is_file_mine   se    7??4((..00  '' 	5FFFFt~FFFFFFFr&   limitfrom_decoratorc                ~    g d }}||
|dk    r||fS  fd}d }g }	 ||j                   r0|	                     ||j         |j                  |j         f           |o j         }
 j        r|s|
ru|j         j        }|r> ||          r*|	                    d |||j                  |f           |
rn	|j        }|>|	r'|
s%|	d         \  \  }}}}}| j        z  }||||f|f|	d<   |j        }|rI ||j                   r0|	                     ||j         |j                  |j         f           |j        }|I||	| d          }	|	D ]\  \  }}}}}|}|rʉ j	        o 
                    |          }g }|r.|                     j                            |                     n|                    |            j        rK                     ||          }                     t!          |          |          }|t!          |          z  }d                    |          }|                    ||||f           ||fS )Nr   c                 .    | j         j        j        k    S r   )f_codeco_filenamerj   )framer"   s    r$   is_validz4ExceptionFormatter._extract_frames.<locals>.is_valid   s    <+t/KKKr&   c                     | j         j        }| j         j        }t          j        ||                                          }||||fS r   )r   r   co_name	linecachegetlinestrip)r   linenofilenamerY   r5   s        r$   get_infoz4ExceptionFormatter._extract_frames.<locals>.get_info   sC    |/H|+H&x88>>@@FVXv55r&   z
    )tb_frameappend	tb_linenorf   f_backinsertf_linenorq   tb_nextrb   r   rg   rC   rc   _get_relevant_values_format_relevant_valueslistjoin)r"   tbis_firstr   r   framesfinal_sourcer   r   infosget_parent_onlyr   r   r   rY   r5   rr   linesrelevant_valuesvaluess   `                   r$   _extract_framesz"ExceptionFormatter._extract_frames   s   !4:%+

<''	L 	L 	L 	L 	L	6 	6 	6 8BK   	MLL((2;==r{KLLL(@-@O 	J 	J_ 	JK&E %8E?? LLXXeU^%D%De$LMMM&   %  J_ J>CBi;468VeD88&&A5Ib	Z 	x$$ Qhhr{BLAA2;OPPPB  	
 5&''NE;@ 	@ 	@70Xvx%!L .>Jd.@.@.J.J )LL!9!C!CF!K!KLLLLLL(((> *&*&?&?&N&NO!99$:O:OQYZZFT&\\)E!u--MM8VXv>????|##r&   c              #     K   d }d }d}d}d}| j                             |          D ]}|^}	}
\  }}}||	t          j        k    s|
dk    s|r|V  d }|	t          j        k    rt	          j        |
          s|sE|j        |j        fD ]5}	 ||
         }d}||                     |          f} n# t          $ r Y 2w xY w|rB	 t          j        ||
          }||                     |          fV  # t          $ r d}Y w xY w|	t          j        k    r|
dk    rd}d}|	t          j        k    r|
dk    rd}d}d}d}d}d}||V  d S d S )NFT=.r   )rg   r)   r.   r*   r	   r,   f_locals	f_globals_format_valueKeyErrorinspectgetattr_staticAttributeError)r"   r5   r   r]   pendingis_attributeis_valid_valueis_assignmentr9   r:   r   rA   col	variabless                 r$   r   z'ExceptionFormatter._get_relevant_values   s     -66v>> %	& %	&E*/'E68Asa"HK''6S==M=!MMM%%g.?.G.G%# ?&+neo%F " "	"$-f$5E .2N'*D,>,>u,E,E&FG!E  ( % % %$H% $ ?? ' 6uf E E  #D$6$6u$=$=>>>>> * / / /)./? (+%%&C--# %(+%%&C-- $$!&$!& %MMMMM s$   
B--
B:9B:C00C?>C?c              #   @  K   t          t          t          |                              D ]}||         \  }}d |d |         D             }d}d}|D ]}	|d|	|z
  z  | j        z   z  }|	dz   }|d||z
  z  z  }|                    d          }
t          |
          D ]\  }}|dk    r|| j        z   dz   }n|dt          | j                  dz   z  z   }|r@| j        d                             |          }| j        d                             |          }||z   V  d S )	Nc                     g | ]\  }}|S rQ   rQ   )r   pcolrA   s      r$   r   z>ExceptionFormatter._format_relevant_values.<locals>.<listcomp>  s    AAA'$AAAr&   r(   r       
r\   r]   )	reversedrangelenro   split	enumeraterp   re   r4   )r"   r   rr   ir   r]   	pipe_colspre_lineindexpcvalue_linesn
value_liner\   s                 r$   r   z*ExceptionFormatter._format_relevant_values  sn     %O 4 45566 	* 	*A(+JCAA_RaR-@AAAIHE  SBJ/4?BBQsU{++H++d++K!*;!7!7 
* 
*:66%6<FF%s4>/B/BQ/F(GGF I![299&AAF!%W!5!<!<Z!H!HJz)))))
*	* 	*r&   c                     	 t          |          }n'# t          $ r dt          |          j        z  }Y nw xY w| j        }|#t          |          |k    r|d |dz
           dz   }|S )Nz<unprintable %s object>   z...)repr	ExceptiontyperJ   rh   r   )r"   vrv   s      r$   r   z ExceptionFormatter._format_value(  s    	=QAA 	= 	= 	=)DGG,<<AAA	= %
!c!ffz&9&9"JN"#e+As    !66c             #   r  K   |}d}|D ]}t          j        ||          }|r|                    ddd          \  }}}	|                     |          }
|	d}nd}| j        rF|	rD|	                    | j                  r*|	d t          | j                            }	d|dd          z   }| j        r|
rt          j
                            |          \  }}|r|t          j        z  }| j        d	                             |          }| j        d
                             |          }||z   }| j        d                             |          }| j        d                             |	          }	| j        r	|
s|rd|z   }|                    |||	          }|||                                d          z   }|
}|V  d S )NzI^  File "(?P<file>.*?)", line (?P<line>[^,]+)(?:, in (?P<function>.*))?\nr   r=   rY   z  File "{}", line {}, in {}
z  File "{}", line {}
>r   rW   rX   r   )rematchgroupr   rf   r   rq   r   rb   r   r   r   r   re   r4   rc   r<   )r"   frames_lineshas_introductionprepend_with_new_lineregexr   r   r   r=   rY   is_minepatternrW   rX   locations                  r$   _format_locationsz$ExceptionFormatter._format_locations3  s      0\! "	 "	EHUE**E 0',{{66:'N'N$dH,,T22'=GG6G? 0x 0H4E4EdFb4c4c 0'(L3t/K+L+L*L(LMH!GABBK/G> Hg H(*d(;(;%GX *26)"k)4;;GDDG#{:6==hGGH"X-D;v.55d;;D#{:6==hGGH> -w -2G -"WnG">>$h?? 5#77(/%KKKKE"	 "	r&   )seenr   r   c             #     K   t          |          ||}}}|t                      }|                    t          |                     |r(|j        t          |j                  |vrt|                     |j        |j        j        |          D ]}	|	V  d}
| j        r | j        d         	                    |
          }
| j
        rd|
z   dz   V  nd|
z   dz   V  n|j        t          |j                  |vrz|j        ss|                     |j        |j        j        |          D ]}	|	V  d}| j        r | j        d         	                    |          }| j
        rd|z   dz   V  n
d|z   dz   V  	 t          j        }n# t          $ r d }Y nw xY w|                     ||||	          \  }}t#          j        ||          }|d
         d d
         }| j        rd|v rb|                    dd          \  }}| j        d         	                    |          }| j        d         	                    |          }|dz   |z   }n | j        d         	                    |          }| j
        rV|rTt)          |t*                    r:t-          |          s+|r)| j        r| j                            |          }|d|z   z  }d|z   }|dz   |d
<   t#          j        |          |z   }t5          |          }| j        s| j        s| j
        r|                     ||          }|r	| j        V  |r0d}| j        r | j        d         	                    |          }|dz   V  d                    |          V  d S )N)r   zDThe above exception was the direct cause of the following exception:rU   z

z


r   zCDuring handling of the above exception, another exception occurred:rV   r   r   r   r   rZ   r[   z: )r   z"Traceback (most recent call last):rT   r(   )r   rM   addid	__cause___format_exception__traceback__rb   re   r4   rc   __context____suppress_context__r   tracebacklimitr   r   	tracebackformat_exception_onlyr   
issubclassAssertionErrorstrrg   rC   format_listboolrf   r   rk   r   )r"   r]   r   r   r   r   exc_type	exc_valueexc_tracebacktextrU   rV   r  r   r   exception_onlyerror_messagerZ   r[   r   r   rT   s                         r$   r  z$ExceptionFormatter._format_exception[  sE      .2%[[%])<55DI 	2".2i6I3J3JRV3V3V 22')<)JQU 3    D JJJJ^> ? K077>>E> 0 5.833333,///// %1y,--T99!6 : !22)9+@+NUY 3    D JJJJ_> E"k)4;;GDDG> 2 7*X55555.61111	" /NN 	" 	" 	"!NNN	"  $338>.  4  
  
 #89MM&r*3B3/> 	Tm##2?2E2Ec12M2M/!%-=!>!E!En!U!U"&+.?"@"G"G"X"X . 4 F $,< = D D] S S> 	1f 	1(N33 5C	NN 5| 5> T#'#;#E#El#S#SL!44 =0M*T1r ,V44~E<<> 	cT_ 	c 	c11,Qa1bbL 	, 	&?L~ P#{>:AA,OO%%%%ggl#######s   4F FF)r   c             #   H   K   |                      ||d|          E d {V  d S )NT)r   r   )r  )r"   r:   r]   r   r   s        r$   format_exceptionz#ExceptionFormatter.format_exception  s<      ))%dSa)bbbbbbbbbbbr&   )	FFTNNr^   r_   Nr(   )rJ   rK   rL   rd   r%   rP   rl   rn   r   r   r   r   r   r   r  r  rQ   r&   r$   rS   rS   _   sd       2#%&.#'4-%+ N  #D D D D4 ^ ^ \^  G G G 6:% >$ >$ >$ >$ >$@/ / /b* * *4	 	 	& & &P 48%X] W$ W$ W$ W$ W$r DI c c c c c c cr&   rS   )rO   r   rF   r	   r   r   r   r   r   r)   r  r   rS   rQ   r&   r$   <module>r     s      				      				 				 



         N N N N N N N NbVc Vc Vc Vc Vc Vc Vc Vc Vc Vcr&   