
    uki                    l   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Zddlm	Z	m
Z
 dej                  v ZerddlmZ ddlmZ  G d d	ej"                  
      Ze
eef   Z G d de      Zej,                   G d de             Zej,                   G d de             ZddZddZddZ ej8                  ed      Z ej8                  ed      Z ej8                  ed      Z ej8                  ed      Z  ej8                  ed      Z! ej8                  ed      Z" ej8                  ed      Z#d dZ$d Z%y)!z(Module for building interfaces in Colab.    )annotationsN)AnyUnionzgoogle.colab)output)displayc                  0    e Zd Zej                  d        Zy)
DOMElementc                     y N selfs    V/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/jax/_src/debugger/colab_lib.pyrenderzDOMElement.render%           N)__name__
__module____qualname__abcabstractmethodr   r   r   r   r	   r	   #   s    	 	r   r	   )	metaclassc                      e Zd ZdZej
                  d        Zej
                  dd       Zej
                  dd       Zej
                  d        Z	y)	DynamicDOMElementz"A DOM element that can be mutated.c                     y r   r   r   s    r   r   zDynamicDOMElement.render0   r   r   c                     y r   r   r   childs     r   appendzDynamicDOMElement.append4   r   r   c                     y r   r   r   elems     r   updatezDynamicDOMElement.update8   r   r   c                     y r   r   r   s    r   clearzDynamicDOMElement.clear<   r   r   Nr   r	   r"   r	   )
r   r   r   __doc__r   r   r   r   r#   r%   r   r   r   r   r   -   sk    *	 	 	 	 	 	 	 	r   r   c                      e Zd ZU dZ ej
                  d      Zded<    ej
                  d      Zded<   ded	<   d
 Z	e
d        Zd ZddZddZd Zy)
DynamicDivzA `div` that can be edited.Finitstr_uuidr	   
_root_elemzDOMElement | strr"   c                    t        t        j                               | _        d| _        t        | j                        | _        y )NF)id)r-   uuiduuid4r.   	_rendereddivtagr/   r   s    r   __post_init__zDynamicDiv.__post_init__G   s+    TZZ\"DJDNTXX&DOr   c                     d| j                    S )Nztag-)r.   r   s    r   r6   zDynamicDiv.tagL   s    $**r   c                    | j                   rt        d      | j                  j                          d| _         | j	                  | j
                         y )NzCan't call `render` twice.T)r4   
ValueErrorr/   r   r   r"   r   s    r   r   zDynamicDiv.renderP   s<    ~~344OODNKK		r   c                4   | j                   s| j                          t        j                  | j                  g      5  t        j
                  d| j                         5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N#)r4   r   r   use_tagsr6   redirect_to_elementr   s     r   r   zDynamicDiv.appendW   st    >>
kkm	$((	$ %%$((n5    s#   #B B1BB	BBc                R    | j                          || _        | j                          y r   )r%   r"   r   r!   s     r   r#   zDynamicDiv.update^   s    JJLDIKKMr   c                T    t        j                  | j                  g       d| _        y )N)output_tagsF)r   r%   r6   r4   r   s    r   r%   zDynamicDiv.clearc   s    
LLdhhZ(DNr   Nr&   r'   )r   r   r   r(   dataclassesfieldr.   __annotations__r/   r7   propertyr6   r   r   r#   r%   r   r   r   r*   r*   @   sf    # {  e,%,,;,,%8*j8'
  
r   r*   c                      e Zd ZU dZ ej
                  d      Zded<   ded<   ded<   d	ed
<   d Zd Z	ddZ
d Zd ZddZddZy)StaticDOMElementzAn immutable DOM element.Fr+   r-   r.   namezlist[str | DOMElement]childrenzdict[str, str]attrsc                j   d}| j                   rEddj                  | j                   j                         D cg c]  \  }}| d| d c}}      z   }g }dj                  | j                  D cg c]  }t	        |       c}      }d| j
                   | d| d| j
                   dS c c}}w c c}w )	N  z=""
<>z</)rJ   joinitemsrI   r-   rH   )r   attr_strkeyvaluerI   cs         r   htmlzStaticDOMElement.htmlp   s    Hzz26**2B2B2D
EJCcU#eWB
EG HhHyy$--8Q#a&89Htyyk(1XJb1== F8s   B*/B0c                p    t        j                   t        j                  | j                                      y r   )r   HTMLrX   r   s    r   r   zStaticDOMElement.rendery   s    OOGLL-.r   c                     | j                   |   S r   )rJ   )r   rU   s     r   attrzStaticDOMElement.attr|   s    ::c?r   c                "    | j                         S r   rX   r   s    r   __str__zStaticDOMElement.__str__       99;r   c                "    | j                         S r   r^   r   s    r   __repr__zStaticDOMElement.__repr__   r`   r   c                L    t        j                  | g | j                  |      S )N)rI   )rB   replacerI   r   s     r   r   zStaticDOMElement.append   s$    t.E.Eu.EFFr   c                .    t        j                  | fi |S r   )rB   rd   )r   kwargss     r   rd   zStaticDOMElement.replace   s    t.v..r   N)rU   r-   returnr-   )r   r	   rg   r	   )rg   r	   )r   r   r   r(   rB   rC   r.   rD   rX   r   r\   r_   rb   r   rd   r   r   r   rG   rG   h   sQ    ! {  e,%,)""	>/G/r   rG   c           
     ~    dj                  | j                         D cg c]  \  }}| d| d c}}      S c c}}w )NrM   z: ;)rR   rS   )
style_dictkvs      r   _style_dict_to_strrm      s8    	J,<,<,>?DAqaS1#Q<?	@@?s   9
c                    t        |       S r   )r*   )r"   s    r   dynamicro      s    	D	r   c                .    t        | t        |      |      S )z(Helper function for making DOM elements.)rG   list)r6   rI   rJ   s      r   
_make_elemrr      s    	#tH~u	55r   coder5   liolpreprogressspanc                    t        d| gi       S )Nstyle)rG   )texts    r   cssr|      s    	'D62	..r   c                 *    t        t        | i |      S r   )rm   dict)argsrf   s     r   rz   rz      s    	D$1&1	22r   )rj   zdict[str, Any]rg   r-   )r"   rG   rg   r*   )r6   r-   rI   Elementrg   rG   )r{   r-   rg   rG   )&r(   
__future__r   r   rB   	functoolssysr2   typingr   r   modulesIS_COLAB_ENABLEDgoogle.colabr   IPythonr   ABCMetar	   r-   r   r   	dataclassr*   rG   rm   ro   rr   partialrs   r5   rt   ru   rv   rw   rx   r|   rz   r   r   r   <module>r      sR   / " 
   
  !S[[0  "
	3;; 	 
C
 	
 	& $" $ $N  /z  /  /FA6
 yV,i
E*Yz4(Yz4(i
E*9Z4yV,/3r   