
    Vpf                    r   d Z ddlmZ ddlZ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 ej        rddlmZ 	 ddlZdZn# e$ r d	ZY nw xY w G d
 dej                  Z G d dej                  Z G d dej                  Z G d dej                  Zd Zej        r e
j        ded           dS dS )z#Module for Colab-specific debugger.    )annotationsN)	colab_lib)core)cli_debugger)outputTFc                  J    e Zd ZdZddd	Zd
 Zd Zd Zd ZddZ	ddddZ
dS )
CodeViewerz1A mutable DOM element that displays code as HTML.   code_str
highlights	list[int]linenostartintc                    || _         || _        t          j        t          j                              | _        || _        d S N)_code_highlightsr   dynamicdiv_view_linenostart)selfr   r   r   s       `/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/jax/_src/debugger/colab_debugger.py__init__zCodeViewer.__init__+   s7    DJ!D"9=??33DJ#D    c                T    |                      | j        | j        | j                   d S )Nr   )update_coder   r   r   r   s    r   renderzCodeViewer.render1   s=    
D$$2C  E E E E Er   c                8    | j                                          d S r   )r   clearr    s    r   r#   zCodeViewer.clear5   s    Jr   c                    t           r   NotImplementedErrorr   childs     r   appendzCodeViewer.append8       
r   c                :    | j                             |           d S r   )r   updater   elems     r   r,   zCodeViewer.update;   s    Jdr   codec                T   t          j        d          }|rdnd}|rdnd}t          r|t          j                            d          }t          j                            d|d||	          }|r||j        _	        |
                                }	t          j        |||          }nd
S ||	fS )Nz1document.documentElement.matches("[theme=dark]");monokaidefaultz#4e56b7z#fff7c1pythonFT)fullhl_lineslinenosr   style )r   eval_jsIS_PYGMENTS_ENABLEDpygmentslexersget_lexer_by_name
formattersHtmlFormatterr7   highlight_colorget_style_defs	highlight)
r   r/   r   r   is_dark_mode
code_stylehl_colorlexer	formattercss_s
             r   _highlight_codezCodeViewer._highlight_code>   s    >;= =L*9	J(7yyiH o//99e%33! 4  i 
 3*2	'%%''deY77ddR:r   r   c                  || _         | j                                         |                     | j         ||          \  }}t	          j                    }t          j        t          j        |          |d| t          j	        ddddd                    }|r1|d         t          | j                             d	                    z  }nd
}|                     |           t          j        d                    d| |                     dS )z(Updates the code viewer to use new code.zcode-500pxscrollzvar(--colab-border-color)5px 5px 5px 5px)z
max-heightz
overflow-ybackground-colorpadding)idr7   r   
g        z
    console.log("{id}")
    var elem = document.getElementById("{id}")
    var maxScrollPosition = elem.scrollHeight - elem.clientHeight;
    elem.scrollTop = maxScrollPosition * {percent_scroll}
    )rP   percent_scrollN)r   r   r#   rI   uuiduuid4r   r   cssr7   lensplitr,   r   r9   format)r   r   r   r   rH   uuid_code_divrR   s           r   r   zCodeViewer.update_codeS   s#   DJJ&&tz:{KKKE4JLLE}d5??o!" ;(	
 
  		 	 	H  !!}s4:+;+;D+A+A'B'BBnnnKK
N 
 	/%//.AAC C C C Cr   N)r
   )r   r   r   r   r   r   )r/   r   r   r   )r   r   )__name__
__module____qualname____doc__r   r!   r#   r)   r,   rI   r    r   r   r	   r	   (   s        99$ $ $ $ $E E E         * BC C C C C C C C Cr   r	   c                  @     e Zd ZdZ fdZd Zd Zd Zd Zd Z	 xZ
S )FramePreviewz)Displays information about a stack frame.c           	     .   t                                                       t          j        t          j        t          j        t          j        d                                        | _        t          dg           | _	        || _
        i | _        d S )Nr8   )r   )superr   r   r   r   prer/   _headerr	   
_code_viewframe_file_cache)r   rg   	__class__s     r   r   zFramePreview.__init__t   sw    	GG$imIN2$6$67788: :DL 333DODJDr   c                j    | j                                          | j                                         d S r   )re   r#   rf   r    s    r   r#   zFramePreview.clear|   s0    LOr   c                    t           r   r%   r'   s     r   r)   zFramePreview.append   r*   r   c                    t           r   r%   r-   s     r   r,   zFramePreview.update   r*   r   c                $   || _         | j         j        pd}| j         j                                        }t	          j        |          r|| j        vr	 t          |          5 }|                                | j        |<   ddd           n# 1 swxY w Y   | j        |         }|}d}n# t          $ rT d
                    |j                  }t          |j        dz   t          |j                  dz
            }||j        z
  }Y nVw xY wnQd
                    |j                  }t          |j        dz   t          |j                  dz
            }||j        z
  }| j                                         | j                            t%          j        t%          j        t%          j        t-          j        |           d| d                    t%          j        ddd          	                     | j                            ||g|
           dS )z,Updates the frame viewer to use a new frame.Nr
   rQ   ()rM   z&var(--colab-highlighted-surface-color))rO   rN   r7   r   )rg   linenofilenamestripinspectgetmodulenamerh   openreadFileNotFoundErrorjoinsourceminoffsetrV   re   r#   r,   r   r   rd   r/   htmlescaper7   rf   r   )r   rg   rq   rr   fprz   rB   r   s           r   update_framezFramePreview.update_frame   sH   DJZ&$Fz"((**HX&& *	)	)	)		.H~~ 3)+DX&3 3 3 3 3 3 3 3 3 3 3 3 3 3 3#H-&)++  	. 	. 	.99U\**&%,*C,=,=,ABB)-+++	. 
* yy&&felQ&EL(9(9A(=>>iU\)kLLM).DK,A,A)M)MF)M)M)MNNOO/,$L# #  	 	 	   	OMMMMMs7   B' !B
>B' 
BB' BB' 'ADDc                :    |                      | j                   d S r   )r   rg   r    s    r   r!   zFramePreview.render   s    dj!!!!!r   )r[   r\   r]   r^   r   r#   r)   r,   r   r!   __classcell__ri   s   @r   ra   ra   q   s        11          N N N>" " " " " " "r   ra   c                  d     e Zd ZdZdd fd
Zd Zd Zd Zd Zd	 Z	d
 Z
d Zd Zd Zd Z xZS )DebuggerViewz!Main view for the Colab debugger.r8   )	log_colorc               p   t                                                       t          j        t          j                              | _        t          |          | _        t          j        t          j        t          j        d          t          j	        ddddd                              | _
        d S )N
Breakpointz$var(--colab-secondary-surface-color)zvar(--colab-primary-text-color)rM   bold)rN   colorrO   zfont-weightrp   )rc   r   r   r   r   _interaction_logra   _frame_previewspanr7   re   )r   rg   r   ri   s      r   r   zDebuggerView.__init__   s    	GG%-imoo>>D&u--D$N<((/$J:,%	# #  	 	 	 DLLLr   c                    | j                                          | j                                         | j                                         d S r   )re   r!   r   r   r    s    r   r!   zDebuggerView.render   sF    L     """""r   c                    t           r   r%   r'   s     r   r)   zDebuggerView.append   r*   r   c                    t           r   r%   r-   s     r   r,   zDebuggerView.update   r*   r   c                    | j                                          | j                                         | j                                         d S r   )re   r#   r   r   r    s    r   r#   zDebuggerView.clear   sF    L!!!r   c                :    | j                             |           d S r   )r   r   )r   rg   s     r   r   zDebuggerView.update_frame   s    $$U+++++r   c                ^    | j                             t          j        |                     d S r   )r   r)   r   rd   )r   texts     r   writezDebuggerView.write   s)      t!4!455555r   c                    t                      r   r%   r    s    r   rw   zDebuggerView.read   s    


r   c                    t          j        dg          5  t                      dz   }d d d            n# 1 swxY w Y   t          j        dg           |S )NstdinrQ   )output_tags)r   use_tagsinputr#   )r   
user_inputs     r   readlinezDebuggerView.readline   s    	'	#	# " "77T>j" " " " " " " " " " " " " " "
LgY''''s   488c                    dS )NTr_   r    s    r   isattyzDebuggerView.isatty   s    4r   c                    d S r   r_   r    s    r   flushzDebuggerView.flush   s    Dr   )r[   r\   r]   r^   r   r!   r)   r,   r#   r   r   rw   r   r   r   r   r   s   @r   r   r      s        )))+       # # #
         
, , ,6 6 6         	 	 	 	 	 	 	r   r   c                  >     e Zd ZdZd
 fdZ fdZ fdZd	 Z xZS )ColabDebuggerz'A JAX debugger for a Colab environment.frames!list[debugger_core.DebuggerFrame]	thread_idr   c                    t                                          ||           t          |                                           | _        | j        x| _        | _        d S r   )rc   r   r   current_frame_debugger_viewstdoutr   )r   r   r   ri   s      r   r   zColabDebugger.__init__   sP     
GGVY'''&t'9'9';';<<D#22DK$***r   c                    t                                          |           | j                            |                                            dS NF)rc   do_upr   r   r   r   argri   s     r   r   zColabDebugger.do_up   sA    	GGMM#$$T%7%7%9%9:::5r   c                    t                                          |           | j                            |                                            dS r   )rc   do_downr   r   r   r   s     r   r   zColabDebugger.do_down   sA    	GGOOC$$T%7%7%9%9:::5r   c                d    | j                                          	 |                                 sd S r   )r   r!   cmdloopr    s    r   runzColabDebugger.run   s6       \\^^ r   )r   r   r   r   )	r[   r\   r]   r^   r   r   r   r   r   r   s   @r   r   r      s        //3 3 3 3 3 3    
    
      r   r   c                    	 t          | |fi |                                 d S # t          $ r t          j                     Y d S w xY wr   )r   r   	Exception	traceback	print_exc)r   r   kwargss      r   _run_debuggerr      sd    &)..v..2244444	   s    $ AAcolabr
   )r^   
__future__r   r}   rt   r   rS   jax._src.debuggerr   r   debugger_corer   IS_COLAB_ENABLEDgoogle.colabr   r;   r:   ImportErrorDynamicDOMElementr	   ra   r   CliDebuggerr   r   register_debuggerr_   r   r   <module>r      s   * ) " " " " " "        ' ' ' ' ' ' 3 3 3 3 3 3 * * * * * *  "!!!!!!///   FC FC FC FC FC, FC FC FCR5" 5" 5" 5" 5"9. 5" 5" 5"p4	 4	 4	 4	 4	9. 4	 4	 4	l    L,   6    =!-!'=!<<<<<= =s   A   A
	A
