
    ge                        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 ddlmZmZmZmZ 	 d dlmZ n# e$ r	 d dlmZ Y nw xY w	 d dlmZ n# e$ r	 d dlmZ Y nw xY w G d de
          Z G d	 d
          ZdS )    N   )	IntSliderIntTextTextWidgetjslinkHBoxwidget_serialization)
embed_dataembed_snippetembed_minimal_htmldependency_state)StringIO)
HTMLParserc                      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       ;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)tupler   widgetsvaluesclose)selfws     r%   teardownzTestEmbed.teardown(   s@    v~,,..// 	 	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viewsr3   statemanager_stater6   
view_specs      c                     g | ]
}|d          S 
model_namer   .0ss     r%   
<listcomp>z4TestEmbed.test_embed_data_simple.<locals>.<listcomp>7       ???1q???r$   IntTextModel)r   r   r   lenr+   )r-   r.   r6   datar5   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 )Nr1   z crossoriginr:   F)cors	requirejsT)r   r   rD   refindallr   r   getvalue)r-   r.   codefs       r%   	test_corszTestEmbed.test_cors:   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   rM   )r-   r.   rN   rO   contents        r%   test_escapezTestEmbed.test_escapeO   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 )Nr1   r   d   minmaxvalueTr2   r4   r7   r6   r8      r   c                     g | ]
}|d          S r<   r   r>   s     r%   rA   z9TestEmbed.test_embed_data_two_widgets.<locals>.<listcomp>h   rB   r$   rC   IntSliderModel)r   r   r   r   r   rD   r+   )r-   w1w2r6   rE   r5   rF   s          r%   test_embed_data_two_widgetsz%TestEmbed.test_embed_data_two_widgets[   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 )Nr1   r   rW   rX   r[   test)children	   c                     g | ]
}|d          S r<   r   r>   s     r%   rA   z5TestEmbed.test_embed_data_complex.<locals>.<listcomp>   rB   r$   rC   r^   r   	LinkModel	HBoxModelTr4   r7   r6   r8   r:   )r   r   r   r   r   r#   r   r	   r   rD   r+   r   )	r-   r_   r`   w3w4r6   rF   rE   r5   s	            r%   test_embed_data_complexz!TestEmbed.test_embed_data_complexl   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getr6   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 )Nro   )r6   )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 )Nrt   r6   r9   check-widget-stateru   check-widget-view)r6   jsonloadsrD   rx   ry   
isinstancerv   )r-   rE   r7   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   r6   rx   r{   r}   r   r   r$   r%   Parserrn      sK        EF3 3 3' ' '< < < < <r$   r   r1   Tr2   r4   )rt   r   ru   r   )r   r   r   r   feedprintrx   )r-   r   r.   r6   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)	Nr1   z	test.htmlTr2   r4   rr   <!DOCTYPE html>)r   tempfilemkdtempospathjoinr   r   openread
splitlinesshutilrmtree)r-   r.   tmpdoutputr6   rO   rT   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 )Nr1   Tr2   r4   r   r   )r   r   r   r   rM   r   )r-   r.   r   r6   rT   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   r/   rG   rP   rU   ra   rk   r   r   r   r   r$   r%   r'   r'   &   s          - - -B B B*
j 
j 
j/ / /"$ $ $N"k "k "kH      < < < < <r$   r'   )r   r   rK   r   r   r   r*   r   r   r   r   r   r	   r
   embedr   r   r   r   ior   ImportErrorhtml.parserr   r   r'   r   r$   r%   <module>r      s    				 				       Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z 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<s!   ? AAA A&%A&