
    }eJ>                        d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d dlmc mZ d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Z ej>                  d      d        Z ddddddZ! ej>                  d      d        Z" ej>                  d      d        Z#d Z$d Z%d Z& ejN                  d      d        Z(d  Z)d! Z*d" Z+d# Z,d$ Z-d% Z.d& Z/d' Z0d( Z1d) Z2y)*    N)mockdisplay)get_ipython)capture_output)NamedFileInTemporaryDirectory)paths)AssertNotPrintsc                     d} t        j                  | dd      }d| z  |j                         k(  sJ t        j                  | ddd      }d| z  |j                         k(  sJ t        j                  | d      }d| z  |j                         k(  sJ t        j                  | 	      }d
| z  |j                         k(  sJ t        j                  | d      }d| z  |j                         k(  sJ y)z5Simple test for display.Image(args, width=x,height=y)z+http://www.google.fr/images/srpr/logo3w.png   )urlwidthheightz(<img src="%s" width="200" height="200"/>)r   r   r   metadata)r   r   z<img src="%s" width="200"/>r   z<img src="%s"/>T)r   
unconfinedz"<img src="%s" class="unconfined"/>N)r   Image_repr_html_)thisurlimgs     A/usr/lib/python3/dist-packages/IPython/core/tests/test_display.pytest_image_sizer      s    ;G
--G3s
;C5AS__EVVVV
--GsS.I
JC5AS__EVVVV
--G3
/C(G48IIII
--G
$C(COO,====
--G
5C/7;s?PPPP    c                  2   t               j                  j                  } t        j                  j
                  D ]\  }t        j                  j                  |   }t        j                  d|      } | |      \  }}t        |      t        |dg      k(  r\J  y )Ns   garbage)format
text/plain)r   display_formatterr   r   r   _ACCEPTABLE_EMBEDDINGS
_MIMETYPESsorted)fmtr   mimer   datar   s         r   test_image_mimesr%   $   s{    
-
)
)
0
0C--66 <}}''/mmJv6Shd|vt\&:;;;;	<r   c            	      t    t        j                  ddddgdddidd	d
dddd      } dt        |       k(  sJ y )NFeaturePointgrhTTgS㥛r@)typecoordinatesnamez	Inca City)r)   geometry
propertieszVhttp://s3-eu-west-1.amazonaws.com/whereonmars.cartodb.net/{basemap_id}/{z}/{x}/{y}.pngzcelestia_mars-shaded-16k_globalzCelestia/praeseper      )
basemap_idattributionminZoommaxZoom)r$   url_templatelayer_optionsz%<IPython.core.display.GeoJSON object>)r   GeoJSONstr)gjs    r   test_geojsonr8   -   s_    	 '1
 	
 n;.	

B$ 3c"g===r   c                  F   t         j                  j                  t              } t	        j
                  t         j                  j                  | d      d      }|j                  dk(  sJ |j                  dk(  sJ |j                         \  }}|d   dk(  sJ |d   dk(  sJ y )N2x2.pngTretina   r   r   )
ospathdirname__file__r   r   joinr   r   
_repr_png_herer   r$   mds       r   test_retina_pngrG   D   s    77??8$D
--T95d
CC::??99>>~~HD"g;!h<1r   c                     dd l } ddlm} dd |       | j                  d      5 }|j	                         d d d        j                         fd}t        j                  d|      5  t        j                  	      }|j                         j                  d
      du sJ t        j                  dz   	      }|j                         j                  d
      du sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   )BytesIOs&   <svg><circle x="0" y="0" r="1"/></svg>zhttp://test.com/circle.svgwbc                       G d d      }| d   k(  r |      S | d   dz   k(  r |      }d|j                   d<   |S  |d       S )Nc                       e Zd Zd Zd Zy)@test_embed_svg_url.<locals>.mocked_urlopen.<locals>.MockResponsec                 $    || _         ddi| _        y )Nzcontent-typeimage/svg+xml)	_svg_dataheaders)selfsvgs     r   __init__zItest_embed_svg_url.<locals>.mocked_urlopen.<locals>.MockResponse.__init__[   s    !$ .@r   c                     | j                   S )N)rP   )rR   s    r   readzEtest_embed_svg_url.<locals>.mocked_urlopen.<locals>.MockResponse.read_   s    ~~%r   N)__name__
__module____qualname__rT   rV    r   r   MockResponserM   Z   s    A&r   r[   r   zgzipzcontent-encoding)rQ   )argskwargsr[   retgzip_svgsvg_datar   s       r   mocked_urlopenz*test_embed_svg_url.<locals>.mocked_urlopenY   s^    	& 	& 7c>))!Wc	!x(C.4CKK*+JD!!r   zurllib.request.urlopen)side_effectr   z<svgTr\   )r]   iorI   openwritegetvaluer   patchr   SVG
_repr_svg_
startswith)r]   rI   fprc   rS   ra   rb   r   s        @@@r   test_embed_svg_urlrn   N   s    8H
&CyH	8T	" b
  "H"" 
,.	I ;kkc"~~**62d:::kkcCi(~~**62d:::	; ;+ *; ;s   C33A6C?3C<?Dc                  F   t         j                  j                  t              } t	        j
                  t         j                  j                  | d      d      }|j                  dk(  sJ |j                  dk(  sJ |j                         \  }}|d   dk(  sJ |d   dk(  sJ y )Nz2x2.jpgTr;   r=   r   r   )
r>   r?   r@   rA   r   r   rB   r   r   _repr_jpeg_rD   s       r   test_retina_jpegrq   q   s    77??8$D
--T95d
CC::??99>> HD"g;!h<1r   c                  .    t        j                  d       y )NڴiVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94BCRQnOqNu0b4AAAAKSURBVAjXY2AAAAACAAHiIbwzAAAAAElFTkSuQmCC)r   r   rZ   r   r   test_base64imagert   {   s    MM  I  Jr   c                     t        j                         } t        j                  t        t
        j                  t        j                  j                  | d      d       t        j                  t        t
        j                         t        j                  t        t
        j                  ddd       t        j                  j                  | d      }t        j                  |      }d	|j                  k(  sJ |j                         J t        j                  t        j                  j                  | d      d      }d|j                  k(  sJ |j                         J y
)z4test format constraint, and validity of jpeg and pngztesting/tests/badformat.zipT)filenameembedzthis is not an image	badformat)r$   r   rw   zcore/tests/2x2.png)rv   pngNztesting/tests/logo.jpgFjpeg)ipathget_ipython_package_dirpytestraises
ValueErrorr   r   r>   r?   rB   r   rC   rp   )tpathimgfiler   s      r   test_image_filename_defaultsr   ~   s   ))+E
MMe%BC	 MM*gmm,
MM# ggll5"67G
--
)CCJJ>>'''
--e%=>eC SZZ??$$$r   c                  .    ddl m}  | j                         S )Nr   InlineBackend)matplotlib_inline.configr   instancer   s    r   _get_inline_configr      s    6!!##r   
matplotlibc                  T   t               } d| _        t        j                         5  t	        j
                          d d d        | j                  sJ t        j                         5  t	        j
                  d       d d d        | j                  rJ y # 1 sw Y   XxY w# 1 sw Y   $xY w)NF)r   close_figuresr}   deprecated_callr   set_matplotlib_close)cfgs    r   test_set_matplotlib_closer      s    

CC				! '$$&'				! ,$$U+,     ' ', ,s   B%BBB'	image/pngz
image/jpegzapplication/pdfrO   )ry   rz   pdfr<   rS   c                  X   ddl m}  t               j                  j                  }dD ]p  }|D ch c]  }t
        |    }}t        j                         5  t        j                  |  d d d        |j                         D ]  \  }}||v r| |v rJ | |vrJ  r y c c}w # 1 sw Y   :xY w)Nr   Figure)ry   )r   rS   )rz   r<   ry   rZ   )matplotlib.figurer   r   r   
formatters_fmt_mime_mapr}   r   r   set_matplotlib_formatsitems)r   r   formatsr"   active_mimesr#   fs          r   test_set_matplotlib_formatsr      s    (00;;J ' 7>>sc*>>##% 	5**G4	5!'') 	'GD!|#{"{Q&		'' ?	5 	5s   BB  B)	c                     ddl m}  t               }t               }|j                  j                  t        d             t        d      }t        j                         5  t        j                  di | d d d        |j                  j                  d   }|j                  |       }|j                  }|}d	|d
<   d|d<   |j                  |j                         ||k(  sJ y # 1 sw Y   nxY w)Nr   r   bar)foo   )dpiry   r   Tbase64r"   r   )r   r   r   r   print_figure_kwargsupdatedictr}   r   r   r   r   r   lookup_by_typekeywords)r   ipr   r_   	formatterr   formatter_kwargsexpecteds           r   "test_set_matplotlib_formats_kwargsr      s    (	B

C""4E?3c]F				! 8&&778$$//<I  (AzzHHXHUOOOC++,x'''8 8s    C##C,c                     t               } t        d      5  | j                  d       ddd       	 | j                  d       t        d      5  | j                  d       ddd       y# 1 sw Y   AxY w# t        $ r Y =w xY w# 1 sw Y   yxY w)z
    Test that display is available without import

    We don't really care if it's in builtin or anything else, but it should
    always be available.
    	NameErrorr   Nzdel display)r   r
   run_cellr   )r   s    r   test_display_availabler      s     
B		% 
I
M" 
	% 
I     s(   A(A4 B(A14	B ?B Bc                      t        j                  d      } t        |       dk(  sJ | j                  dk(  sJ d| _        t        |       t
        j                  |       k(  sJ y )NzThis is a simple testz$<IPython.core.display.Pretty object>T)r   Prettyreprr$   _show_mem_addrobject__repr__ps    r   test_textdisplayobj_pretty_reprr      sZ    ./A7<<<<66,,,,A7fooa((((r   c                     t        j                  d      } t        |       dk(  sJ d| _        t        |       t        j                  |       k(  sJ d| _        t        |       dk(  sJ t        j                  d      }t        |      dk(  sJ d|_        t        |      t        j                  |      k(  sJ d|_        t        |      dk(  sJ y )N<br />z"<IPython.core.display.HTML object>TF z(<IPython.core.display.Javascript object>)r   HTMLr   r   r   r   
Javascript)hjs     r   test_displayobject_reprr      s    XA7::::A7fooa((((A7::::2A7@@@@A7fooa((((A7@@@@r   zwarnings.warnc                    t        j                          | j                          t        j                  d       | j                          t        j                  d       | j                          t        j                  d       | j                  d       | j	                          t        j                  d       | j                  d       y )Nr   zE<html><p>Lots of content here</p><iframe src="http://a.com"></iframe>z$<iframe src="http://a.com"></iframe>z-Consider using IPython.display.IFrame insteadz$<IFRAME SRC="http://a.com"></IFRAME>)r   r   assert_not_calledassert_called_with
reset_mock)m_warns    r   test_encourage_iframe_over_htmlr     s    LLN
LL
LLXY
LL78
MN
LL78
MNr   c                      t        j                  d      } dt        |       v sJ d| _        d| _        | j                         dk(  sJ y )N
   z0/10z100%   z;<progress style='width:100%' max='10' value='5'></progress>)r   ProgressBarr   
html_widthprogressr   r   s    r   test_progressr     sI    BAT!WALAJ	XXXr   c                      t        d      5 } t        j                  d      D ]#  }| j                  }dj	                  |      |v r#J  	 d d d         j                  }d|v sJ y # 1 sw Y   xY w)NFr   r   z{0}/5z5/5)r   r   r   stdoutr   )capturediouts      r   test_progress_iterr     sr    		& ,($$Q' 	,A//C>>!$+++	,, //CC<<, ,s   8A%A%%A.c                     ddi} | g}ddddddddddddg}t        j                  |       t        j                  | d      t        j                  | d	      t        j                  | dd      g}t        ||      D ]  \  }}|j                         | |fk(  rJ  t	        j
                  d
      5 }t	        j                  d       t        j                  t        j                  |             }t        |      dk(  sJ |j                         | |d   fk(  sJ 	 d d d        t        j                  |      t        j                  |d      t        j                  |d	      t        j                  |dd      g}t        ||      D ]  \  }}|j                         ||fk(  rJ  t	        j
                  d
      5 }t	        j                  d       t        j                  t        j                  |            }t        |      dk(  sJ |j                         ||d   fk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nar   Froot)expandedr   Tcustom)r   )r   )recordalwaysr=   r   )
r   JSONzip_repr_json_warningscatch_warningssimplefilterjsondumpslen)dlisr   	json_objsr   rF   ws          r   	test_jsonr   '  s   	aA#CF+F+H-H-	H 	QQ&QX&QH5	I Y) *2}}1b')))* 
	 	 	- 3h'LLA'1v{{}}1hqk"2222	3 	SS4(Sx(S4h7	I Y) ,2}}3)+++, 
	 	 	- 5h'LLC)1v{{}}3"4444	5 53 35 5s   4A(H1?A(H>1H;>Ic                     t        j                  d      } | j                  rJ | j                         }d|vsJ d|v sJ t	        j
                  t              5  t        j                  d      } ddd       t        d      5 }|j                  d       |j                          t        j                  |j                        } | j                  rJ | j                         }d|vsJ t        j                  |j                  d      } | j                         }d	|v sJ t        j                  |j                  dd
      } | j                         }d|v sJ t        j                  ddd      } | j                         }d	|v sJ t        j                  ddd      } | j                         }d|v sJ 	 ddd       y# 1 sw Y   OxY w# 1 sw Y   yxY w)zMuse a tempfile, with dummy-data, to ensure that video embedding doesn't crashzhttp://ignoredz
src="data:zsrc="http://ignored"s   abcNztest.mp4T)rw   z src="data:video/mp4;base64,YWJj"zvideo/other)rw   mimetypez"src="data:video/other;base64,YWJj"z	video/mp4YWJjz	video/xyzz src="data:video/xyz;base64,YWJj")r   Videorw   r   r}   r~   r   r   rg   closer+   )vhtmlr   s      r   test_video_embeddingr   O  s   &'Aww;==?Dt###!T)))	z	" "MM&!" 
'z	2 :a			MM!&&!77{}}4'''MM!&&-}}1T999MM!&&}E}}3t;;;MM&{C}}1T999MM'D}}1T999/: :" ": :s   F<D0G	<G	Gc                  l    d} t        j                  | ddi      }|j                         | ddifk(  sJ y )Nz<h1>Test</h1>isolatedT)r   )r   r   r   )sr   s     r   test_html_metadatar   s  s:    AQ*d!34A==?q:t"45555r   c                  6   t               } t        j                  j                  | j                  d      5 }t        j
                  d      }|J t        j
                  dd      }t        |t
        j                        sJ t        j
                  dd      }t        |t
        j                        sJ 	 d d d        j                  j                  k7  sJ j                  dk(  sJ |j                  d	   \  }}|d
k(  sJ |dt        d      ii dk(  sJ |j                  d   \  }}|d
k(  sJ |dt        d      ii d|j                  idk(  sJ |j                  d   \  }}|d
k(  sJ |dt        d      ii d|j                  idk(  sJ y # 1 sw Y   xY w)Npublishxysecret
display_idr\   T   r   rZ   r   )r$   r   r=   r   r$   r   	transient   )r   r   ri   r   display_pubr   
isinstanceDisplayHandler   
call_countcall_args_listr   )r   pubhandlehandle2r^   r_   s         r   test_display_idr  y  s   	B			2>>9	5 :%~~:&'"7"7888//#$7'7#8#8999:  2 2222>>Q%%a(LD&2::$s)
 	    %%a(LD&2::$s)
 &++
    %%a(LD&2::$s)
 ',,
   ?: :s   B FFc                  @   t               } t        j                  j                  | j                  d      5 }t        j                  t              5  t        j                  d       d d d        t        j                  dd       t        j                  dd       d d d        j                  d   \  }}|dk(  sJ |d	t        d      ii d
diddk(  sJ |j                  d   \  }}|dk(  sJ |d	t        d      ii d
diddk(  sJ y # 1 sw Y   xY w# 1 sw Y   zxY w)Nr   r   1r   r   2r   rZ   r   r   Tr$   r   r  r   r=   )r   r   ri   r   r  r}   r~   	TypeErrorr   update_displayr  r   )r   r  r^   r_   s       r   test_update_displayr    s=   	B			2>>9	5 4]]9% 	(""3'	(ss3ss3	4
 %%a(LD&2::$s)
 #
 	 	 	 	 %%a(LD&2::$s)
 #
 	 	 	 	%	( 	(4 4s#   DD%6DD	DDc                  t   t               } t        j                         }t        |j                  t
              sJ t        j                  d      }|j                  dk(  sJ t        j                  j                  | j                  d      5 }|j                  d       |j                  d       d d d        j                  d   \  }}|dk(  sJ |dt        d      ii d|j                  id	k(  sJ |j                  d
   \  }}|dk(  sJ |dt        d      ii d|j                  iddk(  sJ y # 1 sw Y   xY w)Nzmy-idr   r   r   r   rZ   r   r   r   r=   Tr  )r   r   r  r  r   r6   r   ri   r   r  r   r  r   )r   r	  r  r^   r_   s        r   test_display_handler    sU   	B""$Ff''---""7+F'''			2>>9	5 sc %%a(LD&2::$s)
 &++
    %%a(LD&2::$s)
 &++
 	 	 	 	# s   #D..D7c                     d} t        j                  | d      }d| z  |j                         k(  sJ t        j                  | dd      }d| z  |j                         k(  sJ t        j                  | d      }d	| z  |j                         k(  sJ t        j                  | d
di      }|j                  dk(  sJ t        j
                  j                  t              }t        j                  t        j
                  j                  |d      d      }|j                  dk(  sJ |j                         \  }}|d
   dk(  sJ y)z+Simple test for display.Image(args, alt=x,)zhttp://example.com/image.pngzan image)r   altz<img src="%s" alt="an image"/>T)r   r   r  z1<img src="%s" class="unconfined" alt="an image"/>z>"& <z*<img src="%s" alt="&gt;&quot;&amp; &lt;"/>r  r   r:   )r  N)
r   r   r   r  r>   r?   r@   rA   rB   rC   )r   r   rE   _rF   s        r   test_image_alt_tagr    s   ,G
--G
4C+w73??;LLLL
--G*
EC;wG??		 --G
1C77CsGXXXX
--Guj.A
BC77j   77??8$D
--T95:
FC77j   NNEAre9
"""r   c                      t        j                  t              5  t        j                  d      j                          d d d        y # 1 sw Y   y xY w)Nz/this/file/does/not/exist/)r}   r~   FileNotFoundErrorr   r   rC   rZ   r   r   /test_image_bad_filename_raises_proper_exceptionr    s>    	(	) A23>>@A A As   $AA)3r   r>   r   unittestr   r}   IPythonr   IPython.core.getipythonr   IPython.utils.ior   IPython.utils.tempdirr   r	   r{   IPython.testing.toolsr
   IPython.testing.decoratorstesting
decoratorsdecr   r%   r8   rG   rn   rq   rt   r   r   skip_withoutr   r   r   r   r   r   r   ri   r   r   r   r   r   r   r  r  r  r  r  rZ   r   r   <module>r'     sB    	     / + ? " 1 ( (Q<>. ;FJ%8$
 ,!  !  ,'  '& ,(  ("$)A OO O"%5P":H6)XB F#,Ar   