o
    û›hI>  ã                   @   s’  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  m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e d¡dd„ ƒZ ddd dd!d"œZ!e d¡d#d$„ ƒZ"e d¡d%d&„ ƒZ#d'd(„ Z$d)d*„ Z%d+d,„ Z&e 'd-¡d.d/„ ƒZ(d0d1„ Z)d2d3„ Z*d4d5„ Z+d6d7„ Z,d8d9„ Z-d:d;„ Z.d<d=„ Z/d>d?„ Z0d@dA„ Z1dBdC„ Z2dS )Dé    N)Úmock©Údisplay)Úget_ipython)Úcapture_output)ÚNamedFileInTemporaryDirectory)Úpaths)ÚAssertNotPrintsc                  C   s¸   d} t j| ddd�}d|  | ¡ ksJ ‚t j| dddœd�}d|  | ¡ ks(J ‚t j| dd�}d|  | ¡ ks9J ‚t j| d	�}d
|  | ¡ ksIJ ‚t j| dd�}d|  | ¡ ksZJ ‚dS )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Úimg© r   úUc:\Users\shubh\Videos\agent\nova\Lib\site-packages\IPython/core/tests/test_display.pyÚtest_image_size   s   r   c                  C   sZ   t ƒ jj} tjjD ]!}tjj| }tjd|d�}| |ƒ\}}t|ƒt|dgƒks*J ‚q	d S )Ns   garbage)Úformatú
text/plain)r   Údisplay_formatterr   r   r   Z_ACCEPTABLE_EMBEDDINGSZ
_MIMETYPESÚsorted)Úfmtr   Úmimer   Údatar   r   r   r   Útest_image_mimes$   s   
ür    c                  C   sD   t jddddgdœddidœd	d
ddddœd�} dt| ƒks J ‚d S )NZFeatureZPointg°rh‘íTTÀgøSã¥›€r@)ÚtypeZcoordinatesÚnamez	Inca City)r!   ZgeometryÚ
propertieszVhttp://s3-eu-west-1.amazonaws.com/whereonmars.cartodb.net/{basemap_id}/{z}/{x}/{y}.pngzcelestia_mars-shaded-16k_globalzCelestia/praeseper   é   )Z
basemap_idZattributionZminZoomZmaxZoom)r   Zurl_templateZlayer_optionsz%<IPython.core.display.GeoJSON object>)r   ZGeoJSONÚstr)Zgjr   r   r   Útest_geojson-   s    þÿú
üõr&   c                  C   óp   t j t¡} tjt j | d¡dd�}|jdksJ ‚|jdks J ‚| 	¡ \}}|d dks.J ‚|d dks6J ‚d S )Nú2x2.pngT©Úretinaé   r   r   )
ÚosÚpathÚdirnameÚ__file__r   r   Újoinr   r   Ú
_repr_png_©Úherer   r   Úmdr   r   r   Útest_retina_pngD   ó   r5   c                     sì   dd l } ddlm} d‰d‰|ƒ ‰ |  ˆ d¡�}| ˆ¡ W d   ƒ n1 s'w   Y  ˆ  ¡ ‰ ‡ ‡‡fdd„}tjd|d	��- tj	ˆd
�}| 
¡  d¡du sQJ ‚tj	ˆd d
�}| 
¡  d¡du sdJ ‚W d   ƒ d S 1 sow   Y  d S )Nr   )ÚBytesIOs&   <svg><circle x="0" y="0" r="1"/></svg>zhttp://test.com/circle.svgÚwbc                     sP   G dd„ dƒ}| d ˆkr|ˆƒS | d ˆd kr$|ˆ ƒ}d|j d< |S |d ƒS )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )z@test_embed_svg_url.<locals>.mocked_urlopen.<locals>.MockResponsec                 S   s   || _ ddi| _d S )Nzcontent-typeúimage/svg+xml)Ú	_svg_dataÚheaders)ÚselfÚsvgr   r   r   Ú__init__[   s   zItest_embed_svg_url.<locals>.mocked_urlopen.<locals>.MockResponse.__init__c                 S   s   | j S )N)r:   )r<   r   r   r   Úread_   s   zEtest_embed_svg_url.<locals>.mocked_urlopen.<locals>.MockResponse.readN)Ú__name__Ú
__module__Ú__qualname__r>   r?   r   r   r   r   ÚMockResponseZ   s    rC   r   ÚzÚgzipzcontent-encoding)r;   )ÚargsÚkwargsrC   Úret©Zgzip_svgZsvg_datar   r   r   Úmocked_urlopenY   s   
z*test_embed_svg_url.<locals>.mocked_urlopenzurllib.request.urlopen)Zside_effectr   z<svgTrD   )rE   Úior7   ÚopenÚwriteÚgetvaluer   Úpatchr   ZSVGÚ
_repr_svg_Ú
startswith)rE   r7   ÚfprJ   r=   r   rI   r   Útest_embed_svg_urlN   s    ÿ"ürS   c                  C   r'   )Nz2x2.jpgTr)   r+   r   r   )
r,   r-   r.   r/   r   r   r0   r   r   Ú_repr_jpeg_r2   r   r   r   Útest_retina_jpegq   r6   rU   c                   C   s   t  d¡ d S )NZ´iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB94BCRQnOqNu0b4AAAAKSURBVAjXY2AAAAACAAHiIbwzAAAAAElFTkSuQmCC)r   r   r   r   r   r   Útest_base64image{   s   rV   c                  C   s¼   t  ¡ } tjttjtj 	| d¡dd� t ttj¡ tjttjdddd� tj 	| d¡}tj|d�}d	|j
ks9J ‚| ¡ d
usAJ ‚tjtj 	| d¡dd�}d|j
ksTJ ‚| ¡ d
u s\J ‚d
S )z4test format constraint, and validity of jpeg and pngztesting/tests/badformat.zipT)ÚfilenameÚembedzthis is not an imageZ	badformat)r   r   rX   zcore/tests/2x2.png)rW   ÚpngNztesting/tests/logo.jpgFÚjpeg)ÚipathZget_ipython_package_dirÚpytestÚraisesÚ
ValueErrorr   r   r,   r-   r0   r   r1   rT   )ZtpathZimgfiler   r   r   r   Útest_image_filename_defaults~   s0   üûÿr_   c                  C   s   ddl m}  |  ¡ S )Nr   ©ÚInlineBackend)Zmatplotlib_inline.configra   Úinstancer`   r   r   r   Ú_get_inline_configš   s   rc   Z
matplotlibc                  C   s†   t ƒ } d| _t ¡ � t ¡  W d   ƒ n1 sw   Y  | js#J ‚t ¡ � t d¡ W d   ƒ n1 s7w   Y  | jrAJ ‚d S )NF)rc   Zclose_figuresr\   Údeprecated_callr   Zset_matplotlib_close)Úcfgr   r   r   Útest_set_matplotlib_closeŸ   s   

ÿ

ÿrf   ú	image/pngz
image/jpegzapplication/pdfr9   )rY   rZ   Úpdfr*   r=   c               	   C   s˜   ddl m}  tƒ jj}dD ]<}dd„ |D ƒ}t ¡ � tj|Ž  W d   ƒ n1 s*w   Y  | 	¡ D ]\}}||v rB| |v sAJ ‚q3| |vsHJ ‚q3qd S )Nr   ©ÚFigure)©rY   )rh   r=   )rZ   r*   rY   r   c                 S   s   h | ]}t | ’qS r   )Ú_fmt_mime_map)Ú.0r   r   r   r   Ú	<setcomp>¼   s    z.test_set_matplotlib_formats.<locals>.<setcomp>)
Úmatplotlib.figurerj   r   r   Ú
formattersr\   rd   r   Úset_matplotlib_formatsÚitems)rj   rp   ÚformatsZactive_mimesr   Úfr   r   r   Útest_set_matplotlib_formats²   s   

ÿü÷ru   c                  C   s¸   ddl m}  tƒ }tƒ }|j tdd�¡ tdd�}t ¡ � t	j
di |¤Ž W d   ƒ n1 s1w   Y  |jjd }| | ¡}|j}|}d	|d
< d|d< | |j¡ ||ksZJ ‚d S )Nr   ri   Úbar)Zfooé–   )ZdpirY   rg   TÚbase64r   rk   )ro   rj   r   rc   Zprint_figure_kwargsÚupdateÚdictr\   rd   r   rq   r   rp   Zlookup_by_typeÚkeywords)rj   Úipre   rG   Ú	formatterrt   Zformatter_kwargsÚexpectedr   r   r   Ú"test_set_matplotlib_formats_kwargsÆ   s    

ÿ
r   c                  C   s’   t ƒ } tdƒ� |  d¡ W d  ƒ n1 sw   Y  z|  d¡ W n	 ty,   Y nw tdƒ� |  d¡ W d  ƒ dS 1 sBw   Y  dS )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	   Zrun_cellr€   )r|   r   r   r   Útest_display_availableØ   s   
ÿÿ
"ÿr�   c                  C   sH   t  d¡} t| ƒdksJ ‚| jdksJ ‚d| _t| ƒt | ¡ks"J ‚d S )NzThis is a simple testz$<IPython.core.display.Pretty object>T)r   ÚPrettyÚreprr   Ú_show_mem_addrÚobjectÚ__repr__©Úpr   r   r   Útest_textdisplayobj_pretty_reprê   s
   
r‰   c                  C   sœ   t  d¡} t| ƒdksJ ‚d| _t| ƒt | ¡ksJ ‚d| _t| ƒdks&J ‚t  d¡}t|ƒdks3J ‚d|_t|ƒt |¡ksAJ ‚d|_t|ƒdksLJ ‚d S )Nú<br />z"<IPython.core.display.HTML object>TFÚ z(<IPython.core.display.Javascript object>)r   ÚHTMLrƒ   r„   r…   r†   Z
Javascript)ÚhÚjr   r   r   Útest_displayobject_repró   s   

r�   zwarnings.warnc                 C   sh   t  ¡  |  ¡  t  d¡ |  ¡  t  d¡ |  ¡  t  d¡ |  d¡ |  ¡  t  d¡ |  d¡ d S )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Œ   Zassert_not_calledZassert_called_withZ
reset_mock)Zm_warnr   r   r   Útest_encourage_iframe_over_html  s   




r�   c                  C   s:   t  d¡} dt| ƒv sJ ‚d| _d| _|  ¡ dksJ ‚d S )Né
   z0/10z100%é   z;<progress style='width:100%' max='10' value='5'></progress>)r   ÚProgressBarrƒ   Z
html_widthÚprogressr   r‡   r   r   r   Útest_progress  s
   
r•   c                  C   sh   t dd��} t d¡D ]}| j}d |¡|v sJ ‚qW d   ƒ n1 s$w   Y  | j}d|v s2J ‚d S )NFr   r’   z{0}/5z5/5)r   r   r“   Ústdoutr   )ZcapturedÚiÚoutr   r   r   Útest_progress_iter  s   þÿr™   c                  C   sÈ  ddi} | g}dddœdddœdddœdddœg}t  | ¡t j| dd�t j| dd	�t j| ddd�g}t||ƒD ]\}}| ¡ | |fksEJ ‚q7tjdd
��)}t d¡ t  t | ¡¡}t	|ƒdksbJ ‚| ¡ | |d fksnJ ‚W d   ƒ n1 sxw   Y  t  |¡t j|dd�t j|dd	�t j|ddd�g}t||ƒD ]\}}| ¡ ||fks©J ‚q›tjdd
��*}t d¡ t  t |¡¡}t	|ƒdksÆJ ‚| ¡ ||d fksÒJ ‚W d   ƒ d S 1 sÝw   Y  d S )NÚar’   FÚroot)Úexpandedr›   TZcustom)rœ   )r›   )ÚrecordÚalwaysr+   r   )
r   ÚJSONÚzipÚ_repr_json_ÚwarningsÚcatch_warningsÚsimplefilterÚjsonÚdumpsÚlen)ÚdZlisr   Z	json_objsrŽ   r4   Úwr   r   r   Ú	test_json'  sB   üü
üü
"ürª   c                  C   sd  t  d¡} | jr
J ‚|  ¡ }d|vsJ ‚d|v sJ ‚t t¡� t  d¡} W d  ƒ n1 s/w   Y  tdƒ�p}| d¡ | 	¡  t  |j
¡} | jrMJ ‚|  ¡ }d|vsWJ ‚t j|j
dd�} |  ¡ }d	|v siJ ‚t j|j
dd
d�} |  ¡ }d|v s|J ‚t jdddd�} |  ¡ }d	|v sŽJ ‚t jdddd�} |  ¡ }d|v s J ‚W d  ƒ dS 1 s«w   Y  dS )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)rX   z src="data:video/mp4;base64,YWJj"zvideo/other)rX   Úmimetypez"src="data:video/other;base64,YWJj"z	video/mp4ZYWJjz	video/xyzz src="data:video/xyz;base64,YWJj")r   ZVideorX   r   r\   r]   r^   r   rM   Úcloser"   )ÚvÚhtmlrt   r   r   r   Útest_video_embeddingO  s8   

ÿ


"ér¯   c                  C   s2   d} t j| ddid�}| ¡ | ddifksJ ‚d S )Nz<h1>Test</h1>ÚisolatedT)r   )r   rŒ   r   )Úsr�   r   r   r   Útest_html_metadatas  s   r²   c                  C   sV  t ƒ } tj | jd¡�1}t d¡}|d u sJ ‚tjddd�}t|tjƒs&J ‚tjddd�}t|tjƒs5J ‚W d   ƒ n1 s?w   Y  |j|jksLJ ‚|j	dksSJ ‚|j
d	 \}}|d
ks`J ‚|dtdƒii dœksmJ ‚|j
d \}}|d
kszJ ‚|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 ‚d S )NÚpublishÚxÚyÚsecret©Ú
display_idrD   Té   r   r   r   )r   r   r+   r¸   ©r   r   Ú	transienté   )r   r   rO   r…   Údisplay_pubr   Ú
isinstanceÚDisplayHandler¸   Z
call_countÚcall_args_listrƒ   )r|   ÚpubÚhandleZhandle2rF   rG   r   r   r   Útest_display_idy  sH   
úÿüÿÿû	ÿÿûrÃ   c               	   C   s  t ƒ } tj | jd¡�0}t t¡� t 	d¡ W d   ƒ n1 s!w   Y  tj	ddd� tj	ddd� W d   ƒ n1 s>w   Y  |j
d \}}|dksPJ ‚|d	tdƒii d
diddœksaJ ‚|j
d \}}|dksnJ ‚|d	tdƒii d
diddœksJ ‚d S )Nr³   r´   Ú1r·   rµ   Ú2r   r   r   r¸   T©r   r   r»   ry   r+   )r   r   rO   r…   r½   r\   r]   Ú	TypeErrorr   Zupdate_displayrÀ   rƒ   )r|   rÁ   rF   rG   r   r   r   Útest_update_display¥  s8   ÿüÿÿø
ÿÿørÈ   c                  C   sø   t ƒ } t ¡ }t|jtƒsJ ‚t d¡}|jdksJ ‚tj | j	d¡�}| d¡ | 
d¡ W d   ƒ n1 s8w   Y  |jd \}}|dksJJ ‚|dtdƒii d|jid	œks[J ‚|jd
 \}}|dkshJ ‚|dtdƒii d|jiddœkszJ ‚d S )Nzmy-idr³   r´   rµ   r   r   r   r¸   rº   r+   TrÆ   )r   r   r¿   r¾   r¸   r%   r   rO   r…   r½   ry   rÀ   rƒ   )r|   rÂ   rÁ   rF   rG   r   r   r   Útest_display_handleÆ  s8   

þÿÿû	ÿÿørÉ   c                  C   sÞ   d} t j| dd�}d|  | ¡ ksJ ‚t j| ddd�}d|  | ¡ ks%J ‚t j| dd�}d	|  | ¡ ks6J ‚t j| d
did�}|jdksFJ ‚tj t¡}t jtj |d¡dd�}|jdks_J ‚| 	¡ \}}|d
 dksmJ ‚dS )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.   r/   r0   r1   )r   r   r3   Ú_r4   r   r   r   Útest_image_alt_tagé  s    ÿrÌ   c                   C   s>   t  t¡� t d¡ ¡  W d   ƒ d S 1 sw   Y  d S )Nz/this/file/does/not/exist/)r\   r]   ÚFileNotFoundErrorr   r   r1   r   r   r   r   Ú/test_image_bad_filename_raises_proper_exceptionÿ  s   "ÿrÎ   )3r¥   r,   r¢   Zunittestr   r\   ZIPythonr   ZIPython.core.getipythonr   ZIPython.utils.ior   ZIPython.utils.tempdirr   r   r[   ZIPython.testing.toolsr	   ZIPython.testing.decoratorsÚtestingZ
decoratorsÚdecr   r    r&   r5   rS   rU   rV   r_   rc   Zskip_withoutrf   rl   ru   r   r�   r‰   r�   rO   r�   r•   r™   rª   r¯   r²   rÃ   rÈ   rÉ   rÌ   rÎ   r   r   r   r   Ú<module>   s`   	
#

û

	

	($,!#