
    hMhI                         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dS )    )StringIO)
HTMLParserN   )	IntSliderIntTextTextWidgetjslinkHBoxwidget_serializationwidget)
embed_dataembed_snippetembed_minimal_htmldependency_statec                      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                              d          Z  ej                    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bUnicode_model_nameDictotherr       [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ipywidgets/tests/test_embed.pyr   r      s        --7	6d3337ZZTZEYZZA7	6d3337ZZTZEYZZA#)#$566:::EEK NIN CCdC.BCCEEEr%   r   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )	TestEmbedc                     t          t          j                                                  D ]}|                                 d S )N)tuplewidget_module
_instancesvaluesclose)selfws     r&   teardownzTestEmbed.teardown   sA    }/668899 	 	AGGIIII	 	r%   c                 2   t          d          }t          |d          }t          |d|          }|d         d         }|d         }t          |          dk    sJ t          |          d	k    sJ d
 |                                D             }d|v sJ d S )N   Tdrop_defaultsviewsr5   statemanager_stater8   
view_specs      c                     g | ]
}|d          S 
model_namer   .0ss     r&   
<listcomp>z4TestEmbed.test_embed_data_simple.<locals>.<listcomp>.       ???1q???r%   IntTextModel)r   r   r   lenr-   )r/   r0   r8   datar7   model_namess         r&   test_embed_data_simplez TestEmbed.test_embed_data_simple#   s    AJJ $777UCCC_%g.\"5zzQ5zzQ?????,,,,,,r%   c                    t          d          }t          |          }t          t          j        d|                    dk    sJ t                      }t          ||           t          t          j        d|                                                    dk    sJ t          |dd          }d|vsJ t                      }t          ||dd           d|                                vsJ t          |dd          }t          t          j        d|                    dk    sJ t                      }t          ||dd           t          t          j        d|                                                    dk    sJ d S )Nr3   z crossoriginr<   F)cors	requirejsT)r   r   rF   refindallr   r   getvalue)r/   r0   codefs       r&   	test_corszTestEmbed.test_cors1   so   AJJQ2:nd3344q8888JJ1a   2:najjll;;<<q@@@@QUe<<<T))))JJ1aeu====QZZ\\1111QUd;;;2:nd33449999JJ1aet<<<<2:najjll;;<<AAAAAAr%   c                 ~   t          d          }t          |          }|                    d          dk    sJ |                    d          dk    sJ t                      }t	          ||           |                                }|                    d          dk    sJ |                    d          dk    sJ 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   rO   )r/   r0   rP   rQ   contents        r&   test_escapezTestEmbed.test_escapeF   s    CDDQyy''2----yy`aaefffffJJ1a   **,,||M**b0000||cddhiiiiiiir%   c                    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 d |                                D             }d|v sJ d|v sJ d S )Nr3   r   d   minmaxvalueTr4   r6   r9   r8   r:      r   c                     g | ]
}|d          S r>   r   r@   s     r&   rC   z9TestEmbed.test_embed_data_two_widgets.<locals>.<listcomp>_   rD   r%   rE   IntSliderModel)r   r   r
   r   r   rF   r-   )r/   w1w2r8   rG   r7   rH   s          r&   test_embed_data_two_widgetsz%TestEmbed.test_embed_data_two_widgetsR   s    QZZ1#&&&G}r7m,,, "b>>>REJJJ_%g.\"5zzQ5zzQ?????,,,,;......r%   c                 H   t          d          }t          dd          }t          |df|df           t                      }||_        t                      }||_        ||j        d<   ||_        t          |g           t          |          }t          |          dk    sJ d	 |
                                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 d S )Nr3   r   rY   rZ   r]   test)children	   c                     g | ]
}|d          S r>   r   r@   s     r&   rC   z5TestEmbed.test_embed_data_complex.<locals>.<listcomp>y   rD   r%   rE   r`   r   	LinkModel	HBoxModelTr6   r9   r8   r:   r<   )r   r   r
   r   r   r$   r    r   r   rF   r-   r   )	r/   ra   rb   w3w4r8   rH   rG   r7   s	            r&   test_embed_data_complexz!TestEmbed.test_embed_data_complexc   se   QZZ1#&&&G}r7m,,,\\\\  	rd $$5zzQ?????,,,,;.... K////k)))) +---- $eDDD_-g66666\"5zzQr%   c                     G d dt                     }t          d          }t          |d          }t          |d|          } |            }|                    |           t          |j                   |j        g dk    sJ d S )Nc                   (    e Zd ZdZg Zd Zd Zd ZdS )&TestEmbed.test_snippet.<locals>.Parserinitialc                 H   t          |          }|dk    rB|                    dd          dk    r(d| _        | j                            | j                   d S |dk    rB|                    dd          dk    r*d| _        | 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getr8   statesappend)r/   r   attrss      r&   handle_starttagz6TestEmbed.test_snippet.<locals>.Parser.handle_starttag   s    U(??uyy'<'<@k'k'k!/DJK&&tz22222H__62)>)>Bl)l)l!.DJK&&tz22222 %_)l)lr%   c                     d| _         d S )Nrq   )r8   )r/   r   s     r&   handle_endtagz4TestEmbed.test_snippet.<locals>.Parser.handle_endtag   s    &


r%   c                 V   | j         dk    rKt          j        |          d         }t          |          dk    sJ | j                            d           d S | j         dk    rGt          j        |          }t          |t                    sJ | j                            d           d S d S )Nrv   r8   r;   check-widget-staterw   check-widget-view)r8   jsonloadsrF   rz   r{   
isinstancerx   )r/   rG   r9   views       r&   handle_dataz2TestEmbed.test_snippet.<locals>.Parser.handle_data   s    ://$(Jt$4$4W$=M}--2222K&&';<<<<<Z=00:d++D%dD11111K&&':;;;;; 10r%   N)r   r   r   r8   rz   r}   r   r   r   r%   r&   Parserrp      sK        EF3 3 3' ' '< < < < <r%   r   r3   Tr4   r6   )rv   r   rw   r   )r   r   r   r   feedprintrz   )r/   r   r0   r8   snippetparsers         r&   test_snippetzTestEmbed.test_snippet   s    	< 	< 	< 	< 	<Z 	< 	< 	<4 AJJ $777at5IIIGfm} j j jjjjjjjr%   c                    t          d          }t          j                    }	 t          j                            |d          }t          |d          }t          ||d|           t          |d          5 }|	                                }d d d            n# 1 swxY w Y   |
                                d         dk    sJ 	 t          j        |           d S # 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   rQ   rV   s          r&   test_minimal_html_filenamez$TestEmbed.test_minimal_html_filename   s   AJJ!!		 W\\$44F$Qd;;;EvQd%PPPPfc"" #a&&((# # # # # # # # # # # # # # #%%''*.??????M$FM$s0   AC 8BC BC  B!#C C1c                     t          d          }t                      }t          |d          }t          ||d|           |                                }|                                d         dk    sJ d S )Nr3   Tr4   r6   r   r   )r   r   r   r   rO   r   )r/   r0   r   r8   rV   s        r&   test_minimal_html_filehandlez&TestEmbed.test_minimal_html_filehandle   sw    AJJ $7776$eLLLL//##!!##A&*;;;;;;;r%   N)r   r   r   r1   rI   rR   rW   rc   rm   r   r   r   r   r%   r&   r(   r(      s          - - -B B B*
j 
j 
j/ / /"$ $ $N"k "k "kH      < < < < <r%   r(   )ior   html.parserr   r   r   rM   r   r   r   widgetsr   r   r   r	   r
   r   r   r   r+   embedr   r   r   r   r   r(   r   r%   r&   <module>r      s0         " " " " " "  				 				       s s s s s s s s s s s s s s s s s s s s S S S S S S S S S S S SD D D D D D D Dg< g< g< g< g< g< g< g< g< g<r%   