o
    tfI                     @   s   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 deZG d	d
 d
ZdS )    )StringIO)
HTMLParserN   )	IntSliderIntTextTextWidgetjslinkHBoxwidget_serializationwidget)
embed_dataembed_snippetembed_minimal_htmldependency_statec                   @   sv   e Zd ZdZejeddjdddieZ	ejeddjdddieZ
edjddZe jdddieZdS )	
CaseWidgetz#Widget to test dependency traversalT)
allow_nonesyncCaseWidgetModel)r   N )__name__
__module____qualname____doc__	traitletsInstancer   tagr   abZUnicodeZ_model_nameDictotherr   r   r   d/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/ipywidgets/tests/test_embed.pyr      s    r   c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )	TestEmbedc                 C   s    t tj D ]}|  qd S )N)tuplewidget_moduleZ
_instancesvaluesclose)selfwr   r   r!   teardown   s   
zTestEmbed.teardownc                 C   sx   t d}t|dd}t|d|d}|d d }|d }t|dks#J t|d	ks+J d
d | D }d|v s:J d S )N   Tdrop_defaultsviewsr,   statemanager_stater/   
view_specs      c                 S      g | ]}|d  qS Z
model_namer   .0sr   r   r!   
<listcomp>.       z4TestEmbed.test_embed_data_simple.<locals>.<listcomp>IntTextModel)r   r   r   lenr%   )r'   r(   r/   datar.   model_namesr   r   r!   test_embed_data_simple#   s   z TestEmbed.test_embed_data_simplec                 C   s   t d}t|}ttd|dksJ t }t|| ttd| dks*J t|ddd}d|vs7J t }t||ddd d| vsJJ t|ddd}ttd|dks]J t }t||ddd ttd| dksvJ d S )Nr*   z crossoriginr3   F)ZcorsZ	requirejsT)r   r   r<   refindallr   r   getvalue)r'   r(   codefr   r   r!   	test_cors1   s    
 zTestEmbed.test_corsc                 C   st   t d}t|}|ddksJ |ddksJ t }t|| | }|ddks/J |ddks8J d S )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   rB   )r'   r(   rC   rD   contentr   r   r!   test_escapeF   s   
zTestEmbed.test_escapec                 C   s   t d}tddd}t|df|df t||gdd}t||gd|d}|d	 d
 }|d }t|dks6J t|dks>J dd | D }d|v sMJ d|v sSJ d S )Nr*   r   d   minmaxvalueTr+   r-   r0   r/   r1      r   c                 S   r4   r5   r   r6   r   r   r!   r9   _   r:   z9TestEmbed.test_embed_data_two_widgets.<locals>.<listcomp>r;   IntSliderModel)r   r   r	   r   r   r<   r%   )r'   w1w2r/   r=   r.   r>   r   r   r!   test_embed_data_two_widgetsR   s   z%TestEmbed.test_embed_data_two_widgetsc           	      C   s   t d}tddd}t|df|df t }||_t }||_||jd< ||_t|gd t|}t	|dks9J d	d
 |
 D }d|v sHJ d|v sNJ d|v sTJ d|v sZJ d|vs`J t|d|d}||d d u sqJ |d }t	|dks}J d S )Nr*   r   rJ   rK   rN   test)children	   c                 S   r4   r5   r   r6   r   r   r!   r9   y   r:   z5TestEmbed.test_embed_data_complex.<locals>.<listcomp>r;   rP   r   Z	LinkModelZ	HBoxModelTr-   r0   r/   r1   r3   )r   r   r	   r   r   r    r   r
   r   r<   r%   r   )	r'   rQ   rR   Zw3Zw4r/   r>   r=   r.   r   r   r!   test_embed_data_complexc   s,   
z!TestEmbed.test_embed_data_complexc                 C   sb   G dd dt }td}t|dd}t|d|d}| }|| t|j |jg dks/J d S )Nc                   @   s,   e Zd ZdZg Zdd Zdd Zdd ZdS )	z&TestEmbed.test_snippet.<locals>.Parserinitialc                 S   sp   t |}|dkr|dddkrd| _| j| j d S |dkr4|dddkr6d| _| j| j d S d S d S )Nscripttype z)application/vnd.jupyter.widget-state+jsonwidget-statez(application/vnd.jupyter.widget-view+jsonwidget-view)dictgetr/   statesappend)r'   r   attrsr   r   r!   handle_starttag   s   z6TestEmbed.test_snippet.<locals>.Parser.handle_starttagc                 S   s
   d| _ d S )NrX   )r/   )r'   r   r   r   r!   handle_endtag   s   
z4TestEmbed.test_snippet.<locals>.Parser.handle_endtagc                 S   sn   | j dkrt|d }t|dksJ | jd d S | j dkr5t|}t|ts-J | jd d S d S )Nr\   r/   r2   check-widget-stater]   check-widget-view)r/   jsonloadsr<   r`   ra   
isinstancer^   )r'   r=   r0   viewr   r   r!   handle_data   s   


z2TestEmbed.test_snippet.<locals>.Parser.handle_dataN)r   r   r   r/   r`   rc   rd   rk   r   r   r   r!   Parser   s    	rl   r*   Tr+   r-   )r\   re   r]   rf   )r   r   r   r   feedprintr`   )r'   rl   r(   r/   Zsnippetparserr   r   r!   test_snippet   s   

zTestEmbed.test_snippetc              	   C   s   t d}t }z@tj|d}t|dd}t||d|d t|d}|	 }W d    n1 s2w   Y  |
 d dksAJ W t| d S t| w )	Nr*   z	test.htmlTr+   r-   rr   <!DOCTYPE html>)r   tempfilemkdtempospathjoinr   r   openread
splitlinesshutilrmtree)r'   r(   Ztmpdoutputr/   rD   rH   r   r   r!   test_minimal_html_filename   s   
z$TestEmbed.test_minimal_html_filenamec                 C   sJ   t d}t }t|dd}t||d|d | }| d dks#J d S )Nr*   Tr+   r-   r   rr   )r   r   r   r   rB   rz   )r'   r(   r}   r/   rH   r   r   r!   test_minimal_html_filehandle   s   z&TestEmbed.test_minimal_html_filehandleN)r   r   r   r)   r?   rE   rI   rS   rW   rp   r~   r   r   r   r   r!   r"      s    '$r"   )ior   html.parserr   rg   ru   r@   rs   r{   r   Zwidgetsr   r   r   r   r	   r
   r   r   r$   embedr   r   r   r   r   r"   r   r   r   r!   <module>   s   (