
    XhI                         d dl m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	Z	ddl
mZmZmZmZmZmZmZmZ ddlmZmZmZmZ  G d de      Z G d	 d
      Zy)    )StringIO)
HTMLParserN   )	IntSliderIntTextTextWidgetjslinkHBoxwidget_serializationwidget)
embed_dataembed_snippetembed_minimal_htmldependency_statec                   2   e Zd ZdZ  ej
                  ed      j                  dddieZ	  ej
                  ed      j                  dddieZ
 ej                  d      j                  d      Z  ej                         j                  dddieZy)	
CaseWidgetz#Widget to test dependency traversalT)
allow_nonesyncCaseWidgetModel)r   N )__name__
__module____qualname____doc__	traitletsInstancer	   tagr   abUnicode_model_nameDictotherr       O/var/www/html/myenv/lib/python3.12/site-packages/ipywidgets/tests/test_embed.pyr   r      s    -7	6d377ZTZEYZA7	6d377ZTZEYZA#)##$56:::EK NINN  CdC.BCEr%   r   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)	TestEmbedc                 |    t        t        j                  j                               D ]  }|j	                           y )N)tuplewidget_module
_instancesvaluesclose)selfws     r&   teardownzTestEmbed.teardown   s.    }//6689 	AGGI	r%   c                     t        d      }t        |d      }t        |d|      }|d   d   }|d   }t        |      dk(  sJ t        |      d	k(  sJ |j	                         D cg c]  }|d
   	 }}d|v sJ y c c}w )N   Tdrop_defaultsviewsr5   statemanager_stater8   
view_specs      
model_nameIntTextModel)r   r   r   lenr-   )r/   r0   r8   datar7   smodel_namess          r&   test_embed_data_simplez TestEmbed.test_embed_data_simple#   s    AJ $7UC_%g.\"5zQ5zQ05?1q??,,, @s   &A;c                    t        d      }t        |      }t        t        j                  d|            dkD  sJ t               }t        ||       t        t        j                  d|j                                     dkD  sJ t        |dd      }d|vsJ t               }t        ||dd       d|j                         vsJ t        |dd      }t        t        j                  d|            dk(  sJ t               }t        ||dd       t        t        j                  d|j                                     dk(  sJ y )Nr3   z crossoriginr<   F)cors	requirejsT)r   r   r?   refindallr   r   getvalue)r/   r0   codefs       r&   	test_corszTestEmbed.test_cors1   s   AJQ2::nd34q888J1a 2::najjl;<q@@@QUe<T)))J1aeu=QZZ\111QUd;2::nd34999J1aet<2::najjl;<AAAr%   c                 ,   t        d      }t        |      }|j                  d      dk(  sJ |j                  d      dk\  sJ t               }t	        ||       |j                         }|j                  d      dk(  sJ |j                  d      dk\  sJ y )Nz0<script A> <ScRipt> </Script> <!-- --> <b>hi</b>z
<script A>zD\u003cscript A> \u003cScRipt> \u003c/Script> \u003c!-- --> <b>hi</b>r   )r   r   findr   r   rI   )r/   r0   rJ   rK   contents        r&   test_escapezTestEmbed.test_escapeF   s    CDQyy'2---yy`aeffffJ1a **,||M*b000||cdhiiiir%   c                 N   t        d      }t        dd      }t        |df|df       t        ||gd      }t	        ||gd|      }|d	   d
   }|d   }t        |      dk(  sJ t        |      dk(  sJ |j                         D cg c]  }|d   	 }}d|v sJ d|v sJ y c c}w )Nr3   r   d   minmaxvalueTr4   r6   r9   r8   r:      r   r=   r>   IntSliderModel)r   r   r
   r   r   r?   r-   )r/   w1w2r8   r@   r7   rA   rB   s           r&   test_embed_data_two_widgetsz%TestEmbed.test_embed_data_two_widgetsR   s    QZ1#&G}r7m, "b>REJ_%g.\"5zQ5zQ05?1q??,,,;... @s   B"c                    t        d      }t        dd      }t        |df|df       t               }||_        t               }||_        ||j
                  d<   ||_        t        |g       t        |      }t        |      dk(  sJ |j                         D cg c]  }|d	   	 }}d
|v sJ d|v sJ d|v sJ d|v sJ d|vsJ t        |d|      }||d   d   u sJ |d   }	t        |	      dk(  sJ y c c}w )Nr3   r   rS   rT   rW   test)children	   r=   r>   rY   r   	LinkModel	HBoxModelTr6   r9   r8   r:   r<   )r   r   r
   r   r   r$   r    r   r   r?   r-   r   )
r/   rZ   r[   w3w4r8   rA   rB   r@   r7   s
             r&   test_embed_data_complexz!TestEmbed.test_embed_data_complexc   s/   QZ1#&G}r7m,\\  	rd $5zQ05?1q??,,,;... K///k))) +--- $eD_-g6666\"5zQ @s   C7c                      G d dt               }t        d      }t        |d      }t        |d|      } |       }|j	                  |       t        |j                         |j                  g dk(  sJ y )Nc                   &    e Zd ZdZg Zd Zd Zd Zy)&TestEmbed.test_snippet.<locals>.Parserinitialc                 8   t        |      }|dk(  rB|j                  dd      dk(  r-d| _        | j                  j	                  | j                         y |dk(  rC|j                  dd      dk(  r-d| _        | j                  j	                  | j                         y y y )Nscripttype z)application/vnd.jupyter.widget-state+jsonwidget-statez(application/vnd.jupyter.widget-view+jsonwidget-view)dictgetr8   statesappend)r/   r   attrss      r&   handle_starttagz6TestEmbed.test_snippet.<locals>.Parser.handle_starttag   s    U(?uyy'<@k'k!/DJKK&&tzz2H_62)>Bl)l!.DJKK&&tzz2 *m_r%   c                     d| _         y )Nri   )r8   )r/   r   s     r&   handle_endtagz4TestEmbed.test_snippet.<locals>.Parser.handle_endtag   s	    &
r%   c                 N   | j                   dk(  rDt        j                  |      d   }t        |      dk(  sJ | j                  j                  d       y | j                   dk(  rCt        j                  |      }t        |t              sJ | j                  j                  d       y y )Nrn   r8   r;   check-widget-statero   check-widget-view)r8   jsonloadsr?   rr   rs   
isinstancerp   )r/   r@   r9   views       r&   handle_dataz2TestEmbed.test_snippet.<locals>.Parser.handle_data   s    ::/$(JJt$4W$=M}-222KK&&';<ZZ=0::d+D%dD111KK&&':; 1r%   N)r   r   r   r8   rr   ru   rw   r   r   r%   r&   Parserrh      s    EF3'<r%   r   r3   Tr4   r6   )rn   ry   ro   rz   )r   r   r   r   feedprintrr   )r/   r   r0   r8   snippetparsers         r&   test_snippetzTestEmbed.test_snippet   se    	<Z 	<4 AJ $7at5IGfmm}} jjjjr%   c                    t        d      }t        j                         }	 t        j                  j                  |d      }t        |d      }t        ||d|       t        |d      5 }|j                         }d d d        j                         d   dk(  sJ 	 t        j                  |       y # 1 sw Y   8xY w# t        j                  |       w xY w)	Nr3   z	test.htmlTr4   r6   rr   <!DOCTYPE html>)r   tempfilemkdtempospathjoinr   r   openread
splitlinesshutilrmtree)r/   r0   tmpdoutputr8   rK   rP   s          r&   test_minimal_html_filenamez$TestEmbed.test_minimal_html_filename   s    AJ!		 WW\\$4F$Qd;EvQd%Pfc" #a&&(#%%'*.????MM$	# # MM$s$   AB= )B1: B= 1B:6B= =Cc                     t        d      }t               }t        |d      }t        ||d|       |j	                         }|j                         d   dk(  sJ y )Nr3   Tr4   r6   r   r   )r   r   r   r   rI   r   )r/   r0   r   r8   rP   s        r&   test_minimal_html_filehandlez&TestEmbed.test_minimal_html_filehandle   sU    AJ $76$eL//#!!#A&*;;;;r%   N)r   r   r   r1   rC   rL   rQ   r\   re   r   r   r   r   r%   r&   r(   r(      s4    -B*
j/"$N"kH  <r%   r(   )ior   html.parserr   r{   r   rG   r   r   r   widgetsr   r   r   r	   r
   r   r   r   r+   embedr   r   r   r   r   r(   r   r%   r&   <module>r      sF     "  	 	    s s s S SD Dg< g<r%   