
    eW0                     f   d dl Z d dlmZmZ d dlmZmZ d dlmZ d dl	Z	d dl
mZ d dlmZmZmZmZmZmZ d dlmZ dZd	Zd
ZdZd Zd Z edddd          Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d  Z*d! Z+d" Z,d# Z-d$ Z.e	j/        0                    d%g d&          e	j/        0                    d'd(d)g          d*                         Z1e	j/        0                    d%d+d,g          e	j/        0                    d'd(d)g          d-                         Z2e	j/        0                    d'd(d)g          d.             Z3e	j/        0                    d'd(d)g          d/             Z4e	j/        0                    d'd(d)g          d0             Z5e	j/        0                    d'd(d)g          d1             Z6e	j/        0                    d'd(d)g          d2             Z7e	j/        0                    d'd(d)g          d3             Z8e	j/        0                    d'd(d)g          d4             Z9e	j/        0                    d%g d&          e	j/        0                    d'd(d)g          d5                         Z:e	j/        0                    d%d+d,g          e	j/        0                    d'd(d)g          d6                         Z;e	j/        0                    d'd(d)g          d7             Z<e	j/        0                    d'd(d)g          d8             Z=e	j/        0                    d'd(d)g          d9             Z>d: Z?dS );    N)	b64decode	b64encode)BytesIOStringIO)Path)MissingSchema)GIFICOJPGPDFPNGSVG)escapez7https://assets.holoviz.org/panel/samples/jpg_sample.jpgz9https://assets.holoviz.org/panel/samples/jpeg_sample.jpegz7https://assets.holoviz.org/panel/samples/png_sample.pngz7https://assets.holoviz.org/panel/samples/svg_sample.svgc                  r    t          j        t                    sJ t          j        t                    sJ d S )N)r   applies	JPEG_FILEJPG_FILE     ;lib/python3.11/site-packages/panel/tests/pane/test_image.pytest_jpeg_appliesr      s4    ;y!!!!!;x       r   c                    d}t          |d          }|                    | |          }|j        |j        d                  d         |u sJ |j                            d          sJ t          |                    d                                        d          |j        v sJ d	}||_	        |j        |j        d                  d         |u sJ |j                            d          sJ t          |                    d                                        d          |j        v sJ d
|_        |j        t          |          k    sJ |                    |           |j        i k    sJ d S )Nzr
    <svg xmlns="http://www.w3.org/2000/svg">
      <rect x="10" y="10" height="100" width="100"/>
    </svg>
    T)encode)commidr   z+&lt;img src=&quot;data:image/svg+xml;base64zutf-8zr
    <svg xmlns="http://www.w3.org/2000/svg" height="100">
      <circle cx="50" cy="50" r="40" />
    </svg>
    F)r   get_root_modelsreftext
startswithr   r   decodeobjectr   _cleanup)documentr   rectpanemodelcircles         r   test_svg_paner)      s{   D
 tD!!!D MM(M..E<	$(+u4444:  !NOOOOOT[[))**11'::ejHHHHF
 DK<	$(+u4444:  !NOOOOOV]]7++,,33G<<
JJJJDK:'''' 	MM%<2r   s`   R0lGODlhAgABAPAAAEQ6Q2NYYCH5BAAAAAAAIf8LSW1hZ2VNYWdpY2sNZ2FtbWE9MC40NTQ1NQAsAAAAAAIAAQAAAgIMCgA7sh   iVBORw0KGgoAAAANSUhEUgAAAAIAAAABCAYAAAD0In+KAAAAFElEQVQIHQEJAPb/AWNYYP/h4uMAFL0EwlEn99gAAAAASUVORK5CYII=s  /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAIDAREAAhEBAxEB/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABoQAAEFAQAAAAAAAAAAAAAAAAYABAU2dbX/xAAVAQEBAAAAAAAAAAAAAAAAAAAFBv/EABkRAAEFAAAAAAAAAAAAAAAAAAEAAjFxsf/aAAwDAQACEQMRAD8AA0qs5HvTHQcJdsChioXSbOr/2Q==sd   AAABAAEAAgEAAAEAIAA0AAAAFgAAACgAAAACAAAAAgAAAAEAIAAAAAAACAAAAHQSAAB0EgAAAAAAAAAAAAD//////////wAAAAA=)gifpngjpgicoc                      t           t          t          t          fD ]Y} |                     t          t          | j                                                                     \  }}|dk    sJ |dk    sJ Zd S )N      )	r   r   r	   r
   	_imgshaper   twopixelnamelower)twhs      r   test_imgshaper8   K   sl    3S!  kk)HQV\\^^$<==>>!AvvvvAvvvvv r   c                     t                      } t          j                            t                    }t          t          j                            |d          d          5 }|                     |                                           ddd           n# 1 swxY w Y   t          |           }|
                    |           }d|v sJ dS )z'Testing a loading a image from a ByteIo../test_data/logo.pngrbN   PNG)r   ospathdirname__file__openjoinwritereadr   _datamemoryr>   
image_file
image_pane
image_datas        r   test_load_from_byteiorK   Q   s    YYF7??8$$D	bgll4!8994	@	@ (JZ__&&'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( VJ!!&))JZs   !(BBBc                     t                      } t          j                            t                    }t          t          j                            |d          d          5 }|                     t          |	                                                     ddd           n# 1 swxY w Y   t          |           }|                    |           }d|v sJ dS )z)Testing a loading a image from a StringIOr:   r;   Nr   )r   r=   r>   r?   r@   rA   rB   rC   strrD   r   rE   rF   s        r   test_load_from_stringiorN   ]   s    ZZF7??8$$D	bgll4!8994	@	@ -JS**++,,,- - - - - - - - - - - - - - - VJ!!&))JJs   !5B""B&)B&c                  ^    d} t          |           }|                    |           }d|v sJ dS )'Tests the loading of a image from a urlIhttps://raw.githubusercontent.com/holoviz/panel/main/doc/_static/logo.pngr<   N)r   rE   )urlrI   rJ   s      r   test_loading_a_image_from_urlrS   i   s<    
UCSJ!!#&&JZr   c                  V   t           j                            t                    } t	          t           j                            | d          d          5 }|                                }d d d            n# 1 swxY w Y   t          |          }|                    |          }d|v sJ d S )Nr:   r;   r<   )	r=   r>   r?   r@   rA   rB   rD   r   rE   )r>   fimgrI   rJ   s        r   test_image_from_bytesrW   q   s    7??8$$D	bgll4!8994	@	@ Affhh               SJ!!#&&JZs   A44A8;A8c                      t          t                    j        j        dz  dz  } t          |           }|                    |           }d|v sJ dS )z+Tests the loading of a image from a pathlib	test_datazlogo.pngr<   N)r   r@   parentr   rE   )filepathrI   rJ   s      r   !test_loading_a_image_from_pathlibr\   z   sR    H~~$+k9JFHXJ!!(++JZr   c                 p    d}t          |dd          }|                    | |          }d|j        v sJ dS )rP   rQ   FzSome alt text)embedalt_textzalt=&#x27;Some alt text&#x27;N)r   r   r   r$   r   rR   rI   r'   s        r   test_image_alt_textra      sI    
UCS@@@J$//E*ej888888r   c                     d}t          |dd          }|                    | |          }|j                            d          sJ dS )rP   rQ   Fzhttp://anaconda.org)r^   link_urlz*&lt;a href=&quot;http://anaconda.org&quot;N)r   r   r   r    r`   s        r   test_image_link_urlrd      sT    
UCS0EFFFJ$//E:  !MNNNNNNNr   c                     d}t          |d          }|                    | |          }|j                            d|           sJ d S )NzGhttps://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdfFr^   z&lt;embed src=&quot;)r   r   r   r    )r$   r   rR   pdf_paner'   s        r   test_pdf_no_embedrh      sY    
SC3e$$$Hh--E:  !=!=!=>>>>>>>r   c                 0   t          t                    j        j        dz  dz  }t          |          }	 |                    | |          }n# t
          $ r Y d S w xY w|j                            d          sJ |j                            d          sJ d S )NrY   z
sample.pdf)r"   z5&lt;embed src=&quot;data:application/pdf;base64,JVBERzc==#page=1&quot; width=&#x27;100%&#x27; height=&#x27;100%&#x27; type=&quot;application/pdf&quot;&gt;)	r   r@   rZ   r   r   r   r   r    endswith)r$   r   r>   rg   r'   s        r   test_pdf_local_filerk      s    >> '+5DD$H!!(D11   :  !XYYYYY:   E  F  F  F  F  F  F  Fs   A 
AAc                     t          t          d          }|                    | |          }d|j        v sJ d|j        v sJ d S )NFrf   width: autoheight: autor   PNG_FILEr   r   r$   r   r+   r'   s       r   test_png_native_sizerr      sS    
he
$
$
$CLL4((EEJ&&&&UZ''''''r   c                     t          t          d          }|                    | |          }d|j        v sJ d|j        v sJ d S )NTrf   zwidth: 800pxzheight: 600pxro   rq   s       r   test_png_native_size_embedrt      sS    
hd
#
#
#CLL4((EUZ''''ej((((((r   c                     t          t          dd          }|                    | |          }d|j        v sJ d|j        v sJ d S )NT   r^   widthwidth: 200pxzheight: 150pxro   rq   s       r   %test_png_native_size_embed_with_widthrz      sU    
hd#
.
.
.CLL4((EUZ''''ej((((((r   c                     t          t          dd          }|                    | |          }d|j        v sJ d|j        v sJ d S )NFrv   rw   ry   rn   ro   rq   s       r   test_png_native_size_with_widthr|      sU    
he3
/
/
/CLL4((EUZ''''UZ''''''r   c                     t          t          dd          }|                    | |          }d|j        v sJ d|j        v sJ d S )NTrv   r^   heightzwidth: 266pxheight: 200pxro   rq   s       r   &test_png_native_size_embed_with_heightr      sU    
hd3
/
/
/CLL4((EUZ''''ej((((((r   c                     t          t          dd          }|                    | |          }d|j        v sJ d|j        v sJ d S )NFrv   r~   rm   r   ro   rq   s       r    test_png_native_size_with_heightr      sU    
heC
0
0
0CLL4((EEJ&&&&ej((((((r   c                     t          t          dd          }|                    | |          }d|j        v sJ d|j        v sJ d S )N  Trx   r^   width: 400pxzheight: 300pxro   rq   s       r    test_png_embed_scaled_fixed_sizer      sU    
hc
.
.
.CLL4((EUZ''''ej((((((r   c                     t          t          dd          }|                    | |          }d|j        v sJ d|j        v sJ d S )Nr   Fr   r   rn   ro   rq   s       r   test_png_scaled_fixed_sizer      sU    
hc
/
/
/CLL4((EUZ''''UZ''''''r   sizing_mode)scale_widthstretch_widthstretch_both
scale_bothr^   FTc                     t          t          | d|          }|                    ||          }d|j        v sJ d|j        v sJ d S NTr   fixed_aspectr^   width: 100%rn   ro   r   r^   r$   r   r+   r'   s         r   test_png_scale_widthr      Y     hKd%
P
P
PCLL4((EEJ&&&&UZ''''''r   scale_heightstretch_heightc                     t          t          | d|          }|                    ||          }d|j        v sJ d|j        v sJ d S NTr   rm   height: 100%ro   r   s         r   test_png_scale_heightr      r   r   c                     t          t          dd| d          }|                    ||          }d|j        v sJ d|j        v sJ d S Nr   F  )r   r   r^   r   r   zheight: 500pxro   r^   r$   r   r+   r'   s        r   test_png_stretch_widthr      Z    
hO%u]`
a
a
aCLL4((EEJ&&&&ej((((((r   c                     t          t          ddd|           }|                    ||          }d|j        v sJ d|j        v sJ d S Nr   Fr   )r   r   rx   r^   zwidth: 500pxr   ro   r   s        r   test_png_stretch_heightr      \    
h$45PS[`
a
a
aCLL4((EUZ''''UZ''''''r   c                     t          t          dd|           }|                    ||          }d|j        v sJ d|j        v sJ d S Nr   Fr   r   r   ro   r   s        r   test_png_stretch_bothr      W    
hNe
T
T
TCLL4((EEJ&&&&UZ''''''r   c                     t          t          |           }|                    ||          }d|j        v sJ d|j        v sJ d S )Nrf   rm   rn   r   SVG_FILEr   r   r^   r$   r   svgr'   s        r   test_svg_native_sizer      sS    
he
$
$
$CLL4((EEJ&&&&UZ''''''r   c                     t          t          | d          }|                    ||          }d|j        v sJ d|j        v sJ d S )Nrv   rw   ry   rn   r   r   s        r   test_svg_native_size_with_widthr     sU    
he3
/
/
/CLL4((EUZ''''UZ''''''r   c                     t          t          | d          }|                    ||          }d|j        v sJ d|j        v sJ d S )Nrv   r~   rm   r   r   r   s        r    test_svg_native_size_with_heightr     sU    
heC
0
0
0CLL4((EEJ&&&&ej((((((r   c                     t          t          d|           }|                    ||          }d|j        v sJ d|j        v sJ d S )Nr   r   r   rn   r   r   s        r   test_svg_scaled_fixed_sizer     sU    
hc
/
/
/CLL4((EUZ''''UZ''''''r   c                     t          t          | d|          }|                    ||          }d|j        v sJ d|j        v sJ d S r   r   r   r^   r$   r   r   r'   s         r   test_svg_scale_widthr     r   r   c                     t          t          | d|          }|                    ||          }d|j        v sJ d|j        v sJ d S r   r   r   s         r   test_svg_scale_heightr     r   r   c                     t          t          dd| d          }|                    ||          }d|j        v sJ d|j        v sJ d S r   r   r   s        r   test_svg_stretch_widthr   &  r   r   c                     t          t          ddd|           }|                    ||          }d|j        v sJ d|j        v sJ d S r   r   r   s        r   test_svg_stretch_heightr   -  r   r   c                     t          t          dd|           }|                    ||          }d|j        v sJ d|j        v sJ d S r   r   r   s        r   test_svg_stretch_bothr   4  r   r   c                     t          t          d          }|                    | |          }d|j        v sJ d|j        v sJ d S )NzSome Caption)caption
figcaptionro   rq   s       r   test_image_captionr   ;  sS    
h
/
/
/CLL4((EUZ''''5:%%%%%%r   )@r=   base64r   r   ior   r   pathlibr   pytestrequests.exceptionsr   
panel.paner	   r
   r   r   r   r   panel.pane.markupr   r   r   rp   r   r   r)   dictr2   r8   rK   rN   rS   rW   r\   ra   rd   rh   rk   rr   rt   rz   r|   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s   				 ' ' ' ' ' ' ' '                        - - - - - -                % $ $ $ $ $DG	DD! ! !  B 4/7434 4 4   
  
  
 
 
 
               9 9 9O O O? ? ?F F F( ( () ) )) ) )( ( () ) )) ) )) ) )( ( ( (f(f(fgg5$-00( ( 10 hg( 9I(JKK5$-00( ( 10 LK( 5$-00) ) 10) 5$-00( ( 10( 5$-00( ( 10( 5$-00( ( 10( 5$-00( ( 10( 5$-00) ) 10) 5$-00( ( 10( (f(f(fgg5$-00( ( 10 hg( 9I(JKK5$-00( ( 10 LK( 5$-00) ) 10) 5$-00( ( 10( 5$-00( ( 10(& & & & &r   