
    Xh=              
          d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlZd dlmZ d dlmZ d dlmZmZmZ d dlmZ d	d
lmZmZmZmZmZmZmZ dZdeej@                     dede!dee   def
dZ" G d de      Z#y)    N)Sequence)TracebackType)AnyCallableOptional)Terminal256Formatter)Token)ThemeTokenStreamtheme_table)get_terminal_size   )	FrameInfoTBTools_safe_string_tokens_filenameeqreprget_line_number_of_framenullrepr   linestheme
has_colors
lvals_toksreturnc                    t         dz
  }t        dfg}| D ]H  }|t        j                  u r%t        j                  dfg}|j                  |       ;|j                  }|j                  |      j                  d      dz   }	|j                  rH|t        t        |            z
  }
t        j                  |j                  d      ft        dft        |	fg}nt        dft        dft        |	fg}|j                  |       |s|j                  s|D ]H  }|j                  t        dt         z  f       |j                  |       |j                  t        df       J |dd	 }K |S )
z
    Format tracebacks lines with pointing arrow, leading numbers,
    this assumes the stack have been extracted using stackdata.


    Parameters
    ----------
    lines : list[Line]
    r   
z   (...))	pygmented    z...N)INDENT_SIZEr	   
stack_dataLINE_GAPLinenoEmextendlinenorenderrstrip
is_currentlenstrPrompt
make_arrowappend)r   r   r   r   numbers_widthtokens
stack_linetoksr'   linepadlvs               F/var/www/html/myenv/lib/python3.12/site-packages/IPython/core/doctb.py_format_traceback_linesr8      sY     !OM!4=/F  !
,,,^^Z01DMM$""  : 6==dCdJ  #c&k"22Cu//23D 	D 	d*//  -ucK&789b!udm,-
 CR[FA !D M    c                       e Zd ZU dZdZdZeed<   eed<   eed<   e	ed<   	 	 	 	 	 	 	 	 d d	e	d
ede
dedededeg df   dz  dedz  f fdZdede	fdZde	de	fdZde
de
de
fdZdedee   dee   dedee   deee	      fdZdededede
fdZ	 	 	 d!dedee   dee   dee   dedee	   fdZd"deddfdZd#dee
e
e
f   dz  ddfdZd$de
de
de
ddfdZ xZS )%DocTBzx

    A stripped down version of Verbose TB, simplified to not have too much information when
    running doctests

     default	tb_offsetlong_headerinclude_vars_modeN
theme_namecall_pdbostreamcheck_cachedebugger_clsc	                     t        |t              sJ t        	|   ||||       || _        || _        || _        |t        j                  }|| _	        d| _
        y)aW  Specify traceback offset, headers and color scheme.

        Define how many frames to drop from the tracebacks. Calling it with
        tb_offset=1 allows use of this handler in interpreters which will have
        their own code at the top of the traceback (VerboseTB will first
        remove that frame before printing the traceback info).)rB   rC   rD   rF   NT)
isinstancer,   super__init__r>   r?   r@   	linecache
checkcacherE   skip_hidden)
selfrB   rC   rD   r>   r?   r@   rE   rF   	__class__s
            r7   rJ   zDocTB.__init__c   so    $ *c***!%	 	 	
 #&( #..K&r9   
frame_infor   c           
         t        |t              sJ t        |j                  t        j                        rNt
        | j                     j                  t        dft        j                  d|j                  z  ft        dfg      S dt        z  }t        |j                  t              sJ t        j                  |j                         \  }}}}|j"                  |j"                  j%                         }nd}|dk(  rd}n| j&                  rt(        nt*        }		 t        j,                  |||||	      }
t        |
t.              sJ t
        | j                     j                  t        d	ft        j0                  |ft        j2                  |
fg      }g }| j&                  rs	 |j6                  }|D ]`  }|j9                  t        |j:                  ft        dft        j2                  dft        j2                  t=        |j>                        fg       b 	 |j                  J t
        | j                     j                  tC        d|jD                  |j                              }||rdndz  }|| dz  }|t
        | j                     j                  tG        |jH                  t
        | j                     | jJ                  |            z  }|S # t4        $ rO t
        | j                     j                  t        d	ft        j0                  |ft        j2                  d
fg      }Y w xY w# t@        $ r |j9                  t        dfg       Y 8w xY w)zFormat a single stack frame    z![... skipping similar frames: %s]r   r    ?z<module>r<   )formatvaluezin z"(***failed resolving arguments***)z= z<Exception trying to inspect frame. No more locals available.T)r'   z, )&rH   r   _sdr#   RepeatedFramesr   _theme_nameformatr	   ExcNamedescriptionr"   r'   intinspectgetargvaluesframe	executingcode_qualnamer@   r   r   formatargvaluesr,   VNameValEmKeyErrorvariables_in_executing_piecer/   namereprvalue	Exceptionr   filenamer8   r   r   )rN   rP   indentargsvarargsvarkwlocals_funccallvar_reprscoper   fibpvarresults                  r7   format_recordzDocTB.format_record   s   *i000jnnj&?&?@t//077FO;j>T>TT DM	 	 K'*++S111(/(<(<Z=M=M(N%gug+''557DD:D "&!2!2vH//'5'x "%---"4#3#34;;U^ekk4%85;;:NO8 )+
 ">> C%%"CHH-"CL"[[$/"[[$syy/:	& ~~)))T--.55T:#6#6z?P?PQ
 	$$B&TF"++d../66#  D,,-	
 	
 A  " #4#3#34;;d+&JK#P  !! "Zs'   A7K	 A1L$ 	AL! L!$!M	M	etypec                     t        dt               d         }t        | j                     j	                  t
        dft
        dfg      }|S )NK   r   z"Traceback (most recent call last):r    )minr   r   rW   rX   r	   )rN   rx   widthheads       r7   prepare_headerzDocTB.prepare_header   sT    B)+A./4++,33 8 
 r9   evaluec                     	 t        t        ||f      \  }}t	        |dg       }t        |t              rt        |t        t        f      rt        |dt              g}t         j                     j                  t        j                  |ft        dft        |fg      g fd|D        S #  t        t        j                         d d }}t        t        ||f      \  }}Y xY w)N   	__notes__)rp   z: c              3      K   | ]7  }t         j                     j                  t        t	        |d       fg       9 yw)noteN)r   rW   rX   r	   r   ).0nrN   s     r7   	<genexpr>z)DocTB.format_exception.<locals>.<genexpr>  s>       D,,-44ul1f>U6V5WXs   =A )mapr,   sysexc_infogetattrrH   r   bytesr   rg   r   rW   rX   r	   rY   )rN   rx   r   	etype_str
evalue_strnotess   `     r7   format_exceptionzDocTB.format_exception   s    	>$'eV_$=!Iz R0%*je.M!%4@AE (()00--+eT]UJ<OP
	
 	
	>!36E$'eV_$=!Izs   B+ +4C!etbcontextc           
      R   |}	 |j                   }|| j                  n|}t        |t              sJ | j                  t        |            }|dk(  sJ |       |r| j                  |||      ng }g }	d}
t        |      dz
  }|	j                  | j                  |d                |rW|	j                  t        | j                     j                  t        dft        dft        d|z  ft        dft        dfg             | j                  ||      }|g|	z   |z   gS # t        $ r Y w xY w)zFormats the header, traceback and exception message for a single exception.

        This may be called multiple times by Python 3 exception chaining
        (PEP 3134).
        r   r   r   rR   z[... %s skipped frames])__name__AttributeErrorr>   rH   r[   r~   r,   get_recordsr+   r/   rw   r   rW   rX   r	   r   )rN   rx   r   r   r   r>   
orig_etyper}   recordsframesskippednskippedformatted_exceptions                r7   format_exception_as_a_wholez!DocTB.format_exception_as_a_whole  s>    
	NNE '0&7DNNY	)S)))""3u:.!|$W$|?B$""3;w<!#d((45MMD,,-44 9H DE
 #33E6B"55667  		s   D 	D&%D&c                 0   |dk(  sJ |       |J |dz
  }|dz  }||z
  }| j                   rNt        | j                     j                         }t	        j
                  || j                        }t        |      }nd }t	        j                  |||      }	|}
d}g }|
	 t        j                  |
j                        }|1|j                  }|j                  d      ^}}|dk(  r|
j                  }
Ut        |
j                        }t#        ||      }|j%                  |
       t'        |
dd       }
|
t)        t        j*                  j	                  ||		            |d  }|D cg c]  }t+        j,                  |       }}|S # t         $ r d}Y w xY wc c}w )
Nr   r   )style)beforeafterpygments_formatterr   .IPythontb_next)options)r   r   rW   as_pygments_styler#   style_with_executing_nodetb_highlightr   Optionsr\   	getmoduletb_framer   splitr   r   OSErrormaxr/   r   listr   _from_stack_data_FrameInfo)rN   r   r   r>   r   r   
base_styler   	formatterr   cfmax_lentbsmodmod_name	root_name_resrres2s                       r7   r   zDocTB.get_recordsD  s   !|$W$|A+15??$T%5%56HHJJ88TEVEVWE,59II$$(
 '*n''4?"||H$,NN3$7MI I-ZZ 22;;? '7+GJJrNY-B n" :''2232HI)*UADEA	44Q7EE   Fs   AF /F "FFFc                 x   |dkD  sJ |dk(  sJ |       | j                  |||||      }t        dt               d         }t        | j                     }g }	d}
d}| j                  |      }|r)|J || j                  |j                        z  }|\  }}}nd}t               }|r|| j                  |||||
      z  }| j                  |      }|rRt        |d         |vrB|j                  t        |d                || j                  |j                        z  }|\  }}}nd}|rt        |      D ]  }|	|z  }		 |	S )z5Return a nice text document describing the traceback.r   r   rz   r   N)r   r{   r   r   rW   get_parts_of_chained_exception!prepare_chained_exception_message	__cause__setidaddreversed)rN   rx   r   r   r>   r   formatted_exceptionstermsizer   structured_traceback_partschained_exceptions_tb_offsetlines_of_context	exceptionchained_exc_idsfxs                  r7   structured_tracebackzDocTB.structured_tracebacko  s    {{!|$W$|040P0P631
 r,.q12D,,-02"'($77?	%%% D$J$J  %   "+E63F% D$D$Dvs$46R%   ;;FCIR	!-_D##y|$ %(N(N$$) $ &/"vs & /0 	-B&",&	- *)r9   forcec                     t        d      )Nzcanot rundebugger in Docs mode)RuntimeError)rN   r   s     r7   debuggerzDocTB.debugger  s    ;<<r9   infoc                    |xs t        j                         \  }}}|| _        | j                  }|j	                          |j                  | j                  |||             |j                  d       |j	                          y )Nr   )r   r   tbrD   flushwritetext)rN   r   rx   r   r   rD   s         r7   handlerzDocTB.handler  s`    #5s||~,,diivs34dr9   c                     || j                          n| j                  |||f       	 | j                          y# t        $ r t        d       Y yw xY w)z@This hook can replace sys.excepthook (for Python 2.1 or higher).Nz
KeyboardInterrupt)r   r   KeyboardInterruptprint)rN   rx   r   r   s       r7   __call__zDocTB.__call__  sI    ;LLNLL%-.	)MMO  	)'(	)s   : AA)linuxFNr   FTNN)NNr   )F)N)NNN)r   
__module____qualname____doc__r   tb_highlight_styler[   __annotations__boolr,   r   r   typerJ   r   rw   r~   r   r   BaseExceptionr   r   r   r   r   r   tupler   r   __classcell__)rO   s   @r7   r;   r;   S   s    L"NJ
 "!!15$(#  #  	# 
 #  #  #  #  b$h'$.#  Tk# Je	 ec eNC C 
c 
3 
3 
2,7,7 ',7 m$	,7
 ,7 C=,7 
d3i,7\)} )s )s )s )^ (,#'4*4* '4* m$	4*
 C=4* 4* 
c4*l=d =t =E#sC-047 4 	)c 	)# 	)3 	)RV 	)r9   r;   )$r\   rK   r   collections.abcr   typesr   typingr   r   r   r#   pygments.formatters.terminal256r   pygments.tokenr	   IPython.utils.PyColorizer
   r   r   IPython.utils.terminalr   tbtoolsr   r   r   r   r   r   r   r"   r   Liner   r8   r;    r9   r7   <module>r      s      
 $  * *  @   D D 4   4
 44 4 [!	4
 4ni)G i)r9   