ó
/¾I]c           @   s;  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 y d  d l m Z Wn! e k
 rÕ d  d l m Z n Xy d  d l m Z Wn! e k
 rd  d l m Z n Xd e
 f d „  ƒ  YZ d	 d d
 „  ƒ  YZ d S(   iÿÿÿÿNi   (   t	   IntSlidert   IntTextt   Textt   Widgett   jslinkt   HBoxt   widget_serialization(   t
   embed_datat   embed_snippett   embed_minimal_htmlt   dependency_state(   t   StringIO(   t
   HTMLParsert
   CaseWidgetc           B   sŒ   e  Z d  Z e j e d e ƒj d e e  Z	 e j e d e ƒj d e e  Z
 e j d ƒ j d e ƒ Z e j ƒ  j d e e  Z RS(   s#   Widget to test dependency traversalt
   allow_nonet   synct   CaseWidgetModel(   t   __name__t
   __module__t   __doc__t	   traitletst   InstanceR   t   Truet   tagR   t   at   bt   Unicodet   _model_namet   Dictt   other(    (    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyR      s
   $$t	   TestEmbedc           B   sY   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   c         C   s.   x' t  t j j ƒ  ƒ D] } | j ƒ  q Wd  S(   N(   t   tupleR   t   widgetst   valuest   close(   t   selft   w(    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   teardown(   s    c         C   sº   t  d ƒ } t | d t ƒ} t d | d t d | ƒ } | d d } | d } t | ƒ d k si t ‚ t | ƒ d k s t ‚ g  | j ƒ  D] } | d	 ^ qŽ } d
 | k s¶ t ‚ d  S(   Ni   t   drop_defaultst   viewst   statet   manager_statet
   view_specsi   i   t
   model_namet   IntTextModel(   R   R
   R   R   t   lent   AssertionErrorR!   (   R#   R$   R(   t   dataR'   t   st   model_names(    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   test_embed_data_simple,   s    
#c         C   sl  t  d ƒ } t | ƒ } t t j d | ƒ ƒ d k s< t ‚ t ƒ  } t | | ƒ t t j d | j ƒ  ƒ ƒ d k s| t ‚ t | d t	 d t	 ƒ} d | k s¦ t ‚ t ƒ  } t | | d t	 d t	 ƒd | j ƒ  k sà t ‚ t | d t	 d t
 ƒ} t t j d | ƒ ƒ d k st ‚ t ƒ  } t | | d t	 d t
 ƒt t j d | j ƒ  ƒ ƒ d k sht ‚ d  S(   Ni   s    crossorigini   t   corst	   requirejs(   R   R   R-   t   ret   findallR.   R   R	   t   getvaluet   FalseR   (   R#   R$   t   codet   f(    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt	   test_cors:   s     $	*	$	c         C   sª   t  d ƒ } t | ƒ } | j d ƒ d k s3 t ‚ | j d ƒ d k sN t ‚ t ƒ  } t | | ƒ | j ƒ  } | j d ƒ d k s‹ t ‚ | j d ƒ d k s¦ t ‚ d  S(   Ns0   <script A> <ScRipt> </Script> <!-- --> <b>hi</b>s
   <script A>iÿÿÿÿsD   \u003cscript A> \u003cScRipt> \u003c/Script> \u003c!-- --> <b>hi</b>i    (   R   R   t   findR.   R   R	   R7   (   R#   R$   R9   R:   t   content(    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   test_escapeO   s    	c         C   s  t  d ƒ } t d d d d ƒ } t | d f | d f ƒ t | | g d t ƒ} t d | | g d t d	 | ƒ } | d
 d	 } | d } t | ƒ d k s£ t ‚ t | ƒ d k s» t ‚ g  | j ƒ  D] } | d ^ qÈ } d | k sð t ‚ d | k st ‚ d  S(   Ni   t   mini    t   maxid   t   valueR&   R'   R(   R)   R*   i   i   R+   R,   t   IntSliderModel(	   R   R    R   R
   R   R   R-   R.   R!   (   R#   t   w1t   w2R(   R/   R'   R0   R1   (    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   test_embed_data_two_widgets[   s    !
#c   
      C   s€  t  d ƒ } t d d d d ƒ } t | d f | d f ƒ t ƒ  } | | _ t ƒ  } | | _ | | j d <| | _ t d | g ƒ t | ƒ } t	 | ƒ d	 k s¨ t
 ‚ g  | j ƒ  D] } | d
 ^ qµ } d | k sÝ t
 ‚ d | k sï t
 ‚ d | k st
 ‚ d | k st
 ‚ d | k s%t
 ‚ t d | d t d | ƒ } | | d d k sZt
 ‚ | d }	 t	 |	 ƒ d k s|t
 ‚ d  S(   Ni   R?   i    R@   id   RA   t   testt   childreni	   R+   R,   RB   R   t	   LinkModelt	   HBoxModelR'   R&   R(   R)   R*   i   (   R   R    R   R   R   R   R   R   R
   R-   R.   R!   R   R   (
   R#   RC   RD   t   w3t   w4R(   R0   R1   R/   R'   (    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   test_embed_data_complexl   s,    					#
c         C   s’   d t  f d „  ƒ  Y} t d ƒ } t | d t ƒ} t d | d t d | ƒ } | ƒ  } | j | ƒ | j GH| j d d d	 d
 g k sŽ t ‚ d  S(   Nt   Parserc           B   s/   e  Z d  Z g  Z d „  Z d „  Z d „  Z RS(   t   initialc         S   s–   t  | ƒ } | d k rO | j d d ƒ d k rO d |  _ |  j j |  j ƒ nC | d k r’ | j d d ƒ d k r’ d |  _ |  j j |  j ƒ n  d  S(   Nt   scriptt   typet    s)   application/vnd.jupyter.widget-state+jsons   widget-states(   application/vnd.jupyter.widget-view+jsons   widget-view(   t   dictt   getR(   t   statest   append(   R#   R   t   attrs(    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   handle_starttag™   s    $	$	c         S   s   d |  _  d  S(   NRN   (   R(   (   R#   R   (    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   handle_endtag¢   s    c         S   s—   |  j  d k rM t j | ƒ d } t | ƒ d k s: t ‚ |  j j d ƒ nF |  j  d k r“ t j | ƒ } t | t ƒ s€ t ‚ |  j j d ƒ n  d  S(   Ns   widget-stateR(   i   s   check-widget-states   widget-views   check-widget-view(	   R(   t   jsont   loadsR-   R.   RT   RU   t
   isinstanceRR   (   R#   R/   R)   t   view(    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   handle_data¥   s    (   R   R   R(   RT   RW   RX   R]   (    (    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyRM   •   s
   			i   R&   R'   R(   s   widget-states   check-widget-states   widget-views   check-widget-view(   R   R   R
   R   R   t   feedRT   R.   (   R#   RM   R$   R(   t   snippett   parser(    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   test_snippet“   s    	c         C   s´   t  d ƒ } t j ƒ  } z‡ t j j | d ƒ } t | d t ƒ} t | d | d t d | ƒt	 | d ƒ  } | j
 ƒ  } Wd  QX| j ƒ  d d k sž t ‚ Wd  t j | ƒ Xd  S(	   Ni   s	   test.htmlR&   R'   R(   t   ri    s   <!DOCTYPE html>(   R   t   tempfilet   mkdtempt   ost   patht   joinR
   R   R	   t   opent   readt
   splitlinesR.   t   shutilt   rmtree(   R#   R$   t   tmpdt   outputR(   R:   R=   (    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   test_minimal_html_filename·   s     c         C   so   t  d ƒ } t ƒ  } t | d t ƒ} t | d | d t d | ƒ| j ƒ  } | j ƒ  d d k sk t ‚ d  S(   Ni   R&   R'   R(   i    s   <!DOCTYPE html>(   R   R   R
   R   R	   R7   Rj   R.   (   R#   R$   Rn   R(   R=   (    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   test_minimal_html_filehandleÇ   s    	(   R   R   R%   R2   R;   R>   RE   RL   Ra   Ro   Rp   (    (    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyR   &   s   						'	$	(    (   RY   Re   R5   Rc   Rk   R   R    R    R   R   R   R   R   R   t   embedR   R   R	   R
   t   ioR   t   ImportErrort   html.parserR   R   R   (    (    (    s:   lib/python2.7/site-packages/ipywidgets/tests/test_embed.pyt   <module>   s"   4"