o
    ¹igŒ  ã                
   @   s
  d dl mZ d dlmZ d dlZd dlZd dlmZ d dlZd dlZd dl	Z
d dlZd dlm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mZmZmZmZ d d	l m!Z!m"Z" d d
l#m$Z$m%Z%m&Z& d dl'Z'e"dgdddd„ ƒZ(e"dgdddd„ ƒZ)e"dgddgdddd„ ƒZ*e'j+ ,dddg¡e"dgddgdd d!„ ƒƒZ-d"d#„ Z.e'j+ ,d$g d%¢¡e!dgdd&d'„ ƒƒZ/e!dgdd(d)„ ƒZ0e!ƒ d*d+„ ƒZ1d,d-„ Z2d.d/„ Z3e'j+ ,d0g d1¢¡d2d3„ ƒZ4e'j+ ,d0g d4¢¡d5d6„ ƒZ5d7d8„ Z6d9d:„ Z7d;d<„ Z8e"d=gddd>d?„ ƒZ9d@dA„ Z:e'j+ ,dBdCdDggdEdFfdGdHggdIdIfg¡dJdK„ ƒZ;e"dLgdddMdN„ ƒZ<e"dOgdddPdQ„ ƒZ=e"dRgdddSdTdU„ ƒZ>e!dgddVdW„ ƒZ?dXdY„ Z@dZd[„ ZAe"d\gddd]d^„ ƒZBe"d_gdddgd`dadb„ ƒZCdcdd„ ZDe"degdddSdfdg„ ƒZEe"dhgdddidj„ ƒZFe"dkgddgdddldmdn„ ƒZGe"dogdddSdpdq„ ƒZHdrds„ ZIe"dtgdddSdudv„ ƒZJdwdx„ ZKdydz„ ZLd{d|„ ZMd}d~„ ZNdd€„ ZOdd‚„ ZPe'j+ ,dƒee Qd„¡e Qd…¡e Qd†¡ Rd‡¡fee Qd„¡e Qd…¡e Qdˆ¡ Rd‰¡fg¡dŠd‹„ ƒZSdŒd„ ZTdŽd„ ZUe"dgddd‘d’„ ƒZVe"d“gddd”d•„ ƒZWd–d—„ ZXd˜d™„ ZYe"dšgddd›dœ„ ƒZZe"dgdddždŸ„ ƒZ[d d¡„ Z\e"d¢gddd£d¤„ ƒZ]e"d¥ge ^¡ d¦krQd nd§ddd¨d©dª„ ƒZ_d«d¬„ Z`e'j+ ,d­d®d¯„ d° a¡ D ƒ¡d±d²„ ƒZbe"d³gdddSd´dµ„ ƒZce"d¶gdddSd·d¸„ ƒZde"d¹gdddSdºd»„ ƒZee'j+ ,d¼ejfejgd½d¾„ d¿d¾„ g¡dÀdÁ„ ƒZhdÂdÃ„ ZidÄdÅ„ ZjdÆdÇ„ Zke'j+ ,dÈdÉdÊg¡e'j+ ,dËdÌdÍg¡dÎdÏ„ ƒƒZldÐdÑ„ ZmdÒdÓ„ ZndÔdÕ„ ZodÖd×„ Zpe!ƒ dØdÙ„ ƒZqe'j+ d¡dÚdÛ„ ƒZre'j+jse'j+jtdÜdÝ„ ƒƒZue!dgddÞdß„ ƒZvdS )àé    )Ú	ExitStack)ÚcopyN)ÚPath)Úassert_array_equal)ÚImage)ÚcolorsÚimageÚpatchesÚpyplotÚstyleÚrcParams)Ú	AxesImageÚ	BboxImageÚFigureImageÚNonUniformImageÚPcolorImage)Úcheck_figures_equalÚimage_comparison)ÚBboxÚAffine2DÚTransformedBboxÚimage_interpsÚmpl20)r   c                  C   sœ   dt jd< t d¡} |  dd¡} t  ¡ }| d¡}|j| dd | d	¡ | 	d¡ | d
¡}|j| dd | 	d¡ | d¡}|j| dd | 	d¡ dS )z5Make the basic nearest, bilinear and bicubic interps.é   ztext.kerning_factoréd   é   é   i7  Únearest©Úinterpolationzthree interpolationsi8  Úbilineari9  ÚbicubicN)
Úpltr   ÚnpÚarangeÚreshapeÚfigureÚadd_subplotÚimshowÚ	set_titleÚ
set_ylabel)ÚXÚfigÚax1Úax2Úax3© r0   úV/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/matplotlib/tests/test_image.pyÚtest_image_interps   s   







r2   zinterp_alpha.pngT)Úremove_textc                  C   sf   t  dd¡\} \}}t d¡}t d¡|d< t tjdtjd¡|d< |j|dd	 |j|d
d	 dS )z:Test the interpolation of the alpha channel on RGBA imagesé   é   )r   r   é   ©r   r   ).r4   ©Údtype©.é   Únoner   r    N)r"   Úsubplotsr#   ÚzerosÚonesÚtrilÚuint8r(   )r,   ÚaxlÚaxrÚimgr0   r0   r1   Útest_alpha_interp0   s   
rE   Úinterp_nearest_vs_noneÚpdfÚsvg)Ú
extensionsr3   c                  C   s„   dt d< tjg d¢g d¢gg d¢g d¢ggtjd} t ¡ }| d¡}|j| d	d
 | d¡ | d¡}|j| dd
 | d¡ dS )z5Test the effect of "nearest" and "none" interpolationr;   úsavefig.dpi)éÚ   é¥   é    )éz   ég   éî   )é   éÿ   r   )rR   éc   éG   r8   éy   r<   r   zinterpolation nonerN   r   zinterpolation nearestN)	r   r#   ÚarrayrA   r"   r&   r'   r(   r)   )r+   r,   r-   r.   r0   r0   r1   Útest_interp_nearest_vs_none=   s   ÿÿ


rW   ÚsuppressCompositeFÚfigimageÚpng)rI   c                 C   s  t jddd}| |_t t d¡d t d¡d ¡\}}t |d |d  ||  ¡}t d|d  d|d   ¡}||d  }|j|d	d	d
d |j|d d d…d d …f d	dd
d |j|d d …d d d…f dd	d
d |j|d d d…d d d…f ddd
d d S )N©r5   r5   r   ©ÚfigsizeÚdpig      Y@r5   r   é2   r   r   Úlower)ÚxoÚyoÚoriginéÿÿÿÿ)r"   r&   rX   r#   Úix_r$   ÚsinrY   )rX   r,   ÚxÚyÚzÚcrD   r0   r0   r1   Útest_figimageQ   s   $$$*rk   c                  C   sD   t  ¡ \} }| g d¢¡ t ¡ }|  |¡ | d¡ t  |¡ d S )N)r4   r5   r;   r   )r"   r=   ÚplotÚioÚBytesIOÚsavefigÚseekÚimread)r,   ÚaxÚbufferr0   r0   r1   Útest_image_python_ioa   s   

rt   z!img_size, fig_size, interpolation))r   r5   Úhanning)r   r   r   )r   é
   r   )r;   ç333333@ru   )r;   g333333"@r   c           	      C   sš   t j d¡ tjd }t j t|| ƒt|| ƒ¡}| |fD ]}| ||¡ q|  ¡ }| 	g d¢¡ |j
|dd | ¡ }| 	g d¢¡ |j
||d d S )Né!N,rJ   ©r   r   r4   r4   Úantialiasedr   )r#   ÚrandomÚseedr"   r   ÚrandÚintÚset_size_inchesr=   Úset_positionr(   )	Úfig_testÚfig_refÚimg_sizeÚfig_sizer   r^   ÚAr,   Úaxsr0   r0   r1   Útest_imshow_antialiasedj   s   
r‡   c                 C   s¶   t j d¡ tjd }t j t|d ƒt|d ƒ¡}| |fD ]}| dd¡ q|  ¡ }|j	|dd | 
ddg¡ | ddg¡ | ¡ }|j	|d	d | 
ddg¡ | ddg¡ d S )
Nrx   rJ   r;   rw   rz   r   rv   r   r   )r#   r{   r|   r"   r   r}   r~   r   r=   r(   Úset_xlimÚset_ylim)r   r‚   r^   r…   r,   r†   r0   r0   r1   Útest_imshow_zoom‚   s   
rŠ   c                 C   sŽ   t  d¡ ttƒjd }ttƒjd }|  d¡}|d  t |¡¡ |d  t |¡¡ | d¡}|d  t	 
|¡¡ |d  t	 
|¡¡ d S )NÚdefaultz%baseline_images/pngsuite/basn3p04.pngú%baseline_images/test_image/uint16.tifr5   r   r4   )r   Úuser   Ú__file__Úparentr=   r(   r   Úopenr"   rq   )r   r‚   Úpng_pathÚ	tiff_pathr†   r0   r0   r1   Útest_imshow_pil”   s   


r“   c                  C   sF   t  tj tj t¡ddd¡¡} | jtj	ksJ ‚t 
| ¡dks!J ‚d S )NÚbaseline_imagesÚ
test_imagez
uint16.tifé €ÿ)r"   rq   ÚosÚpathÚjoinÚdirnamerŽ   r9   r#   Úuint16Úsum©rD   r0   r0   r1   Útest_imread_pil_uint16¡   s
   ÿrž   c                  C   s:   t  ttƒjd ¡} | jtjksJ ‚t | ¡dksJ ‚d S )NrŒ   r–   )	r"   rq   r   rŽ   r   r9   r#   r›   rœ   r   r0   r0   r1   Útest_imread_fspath¨   s
   ÿrŸ   Úfmt)rZ   ÚjpgÚjpegÚtiffc                 C   sÄ   | dv}t j d¡ t j dd¡}t ¡ }tj||| dd t ¡ }tj||| dd | d¡ tj	|| d}| d¡ tj	|| d}|j
ddd	| fksOJ ‚|j
ddd	| fks[J ‚t||ƒ d S )
N)r¡   r¢   r4   i@  r5   )Úformatr^   r   r   ©r¤   r;   )r#   r{   r|   r}   rm   rn   r"   Úimsaverp   rq   Úshaper   )r    Ú	has_alphaÚdataÚ	buff_dpi1Úbuff_dpi100Úarr_dpi1Ú
arr_dpi100r0   r0   r1   Útest_imsave¯   s   	

r®   )rZ   rG   ÚpsÚepsrH   c                 C   s&   t jttjƒt ddgg¡| d d S )Nr   r4   r¥   )r"   r¦   r   r—   Údevnullr#   rV   )r    r0   r0   r1   Útest_imsave_fspathÒ   s   &r²   c                  C   s”   t j d¡ dD ]?} t j ddd¡}t ¡ }tj||| dd | d¡ t 	|¡}d|  
d	¡}| d
kr;|d d d… }d|  
d	¡}t||ƒ qd S )Nr4   )r`   Úupperé   r6   rZ   )rc   r¤   r   rR   rA   r`   rd   )r#   r{   r|   r}   rm   rn   r"   r¦   rp   rq   Úastyper   )rc   r©   ÚbuffÚarr_bufr0   r0   r1   Útest_imsave_color_alpha×   s   

ðr¸   c                  C   sh   ddl m}  t ¡ }| ƒ }| dd¡ tj|ddgddggdd	|id
 t |¡}|j	d dks2J ‚d S )Nr   )ÚPngInfoÚSoftwareÚtestr4   r5   r;   rZ   Úpnginfo©r¤   Ú
pil_kwargs)
ÚPIL.PngImagePluginr¹   rm   rn   Úadd_textr"   r¦   r   r   Úinfo)r¹   Úbufr¼   Úimr0   r0   r1   Útest_imsave_pil_kwargs_pngð   s   ÿ
rÄ   c                     sp   ddl m‰  t ¡ } ddi}tj| ddgddggd|d	 t | ¡}‡ fd
d„|j 	¡ D ƒ}|d dks6J ‚d S )Nr   )ÚTAGS_V2Údescriptionz
test imager4   r5   r;   r£   r½   c                    s   i | ]
\}}ˆ | j |“qS r0   )Úname)Ú.0ÚkÚv©ÚTAGSr0   r1   Ú
<dictcomp>  ó    z/test_imsave_pil_kwargs_tiff.<locals>.<dictcomp>ÚImageDescription)
ÚPIL.TiffTagsrÅ   rm   rn   r"   r¦   r   r   Útag_v2Úitems)rÂ   r¾   rÃ   Útagsr0   rË   r1   Útest_imsave_pil_kwargs_tiffû   s   
rÔ   Úimage_alphac                  C   st   t  ¡  tj d¡ tj dd¡} t  d¡ t j| ddd t  d¡ t j| ddd t  d	¡ t j| dd
d d S )Nr   r   éƒ   ç      ð?r<   )Úalphar   é„   ç      à?é…   r   )r"   r&   r#   r{   r|   r}   Úsubplotr(   )ÚZr0   r0   r1   Útest_image_alpha  s   


rÞ   c            	      C   sü  ddl m}  t ¡ \}}|jt d¡ dd¡dd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	ks9J ‚d
\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d u sXJ ‚| ¡  |jt d¡ dd¡dd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	ks‰J ‚t ¡ \}}|jt d¡ dd¡g d¢d}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡dks¾J ‚d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d u sÝJ ‚d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d u süJ ‚d S )Nr   ©Ú
MouseEventr   rv   r³   )rc   ©r6   r6   Úmotion_notify_eventé,   )g333333$@r6   r`   )r   rÚ   r   rÚ   ©Úextent)ç      Ð?ræ   é7   )ç      è?ræ   )ç{®Gáz„?g{®Gáz„¿)Úmatplotlib.backend_basesrà   r"   r=   r(   r#   r$   r%   Ú	transDataÚ	transformÚcanvasÚget_cursor_dataÚclear)	rà   r,   rr   rÃ   rg   rh   ÚxdispÚydispÚeventr0   r0   r1   Útest_cursor_data  s>   
 ró   z/data, text_without_colorbar, text_with_colorbari'  i'  z[1e+04]z[10001]g°rh‘í|¿?g/Ý$•ï?z[0.123]c           
      C   sÂ   ddl m} t ¡ \}}| | ¡}|j ddg¡\}}|d|j||ƒ}	| |	¡| d d ks0J ‚| 	| |	¡¡|ks<J ‚| 
|¡ |j ¡  | |	¡| d d ksSJ ‚| 	| |	¡¡|ks_J ‚d S )Nr   rß   râ   )rê   rà   r"   r=   r(   rë   rì   rí   rî   Úformat_cursor_dataÚcolorbarÚdraw)
r©   Útext_without_colorbarÚtext_with_colorbarrà   r,   rr   rÃ   rð   rñ   rò   r0   r0   r1   Útest_format_cursor_dataT  s   
ÿ

ÿrù   Ú
image_clipc                  C   sF   ddgddgg} t  ¡ \}}| | ¡}tjdd|jd}| |¡ d S )Nr4   r5   r;   r6   ©r   r   )Úradiusrì   )r"   r=   r(   r	   ÚCirclerë   Úset_clip_path)Údr,   rr   rÃ   Úpatchr0   r0   r1   Útest_image_clipm  s
   
r  Úimage_cliprectc                  C   sN   t  ¡ \} }ddgddgg}|j|dd}tjddd|jjd}| |¡ d S )	Nr4   r5   r;   r6   )r   r   r   r   rä   ©r4   r4   )ÚxyÚwidthÚheightrì   )r"   r=   r(   r	   Ú	RectangleÚaxesrë   rþ   )r,   rr   rÿ   rÃ   Úrectr0   r0   r1   Útest_image_cliprectw  s   ÿr
  r(   )r3   r   c                  C   sH   t  ¡ \} }t d¡ d¡}|j|ddd | dd¡ | dd¡ d S )Nr   ©rv   rv   r    ©r4   r5   r4   r5   ©r   rå   r   r;   )r"   r=   r#   r$   r%   r(   rˆ   r‰   ©r,   rr   Úarrr0   r0   r1   Útest_imshowƒ  s
   r  c                 C   s†   t  d¡ d¡}| ¡ }|j|d d …d d …df ddd | dd¡ | dd¡ |  ¡ }|j|ddd | dd¡ | dd¡ d S )Nr   )rv   rv   r4   r   r    r  r  r;   )r#   r$   r%   r=   r(   rˆ   r‰   )r   r‚   r  rr   r0   r0   r1   Útest_imshow_10_10_1Œ  s   "r  c                  C   óV   t  ¡ \} }t d¡ d¡}t t¡ | |¡ W d   ƒ d S 1 s$w   Y  d S )NéÈ   )rv   rv   r5   ©	r"   r=   r#   r$   r%   ÚpytestÚraisesÚ	TypeErrorr(   r  r0   r0   r1   Útest_imshow_10_10_2›  ó
   "ÿr  c                  C   r  )Niô  )rv   rv   r   r  r  r0   r0   r1   Útest_imshow_10_10_5¢  r  r  Úno_interpolation_originc                  C   sP   t  d¡\} }|d jt d¡ d¡ddd |d jt d¡ d¡dd	 d S )
Nr5   r   r   )r5   r_   r`   r<   )rc   r   r4   r   )r"   r=   r(   r#   r$   r%   )r,   r†   r0   r0   r1   Útest_no_interpolation_origin©  s
   ÿ"r  Úimage_shift)r3   rI   c                  C   sT   dd„ t ddƒD ƒ} d}d}t ¡ \}}|j| t ¡ d||ddfd | d	¡ d S )
Nc                    s$   g | ]‰ ‡ fd d„t ddƒD ƒ‘qS )c                    s   g | ]
}d | d ˆ   ‘qS )r4   r0   )rÈ   rg   ©rh   r0   r1   Ú
<listcomp>³  rÎ   z/test_image_shift.<locals>.<listcomp>.<listcomp>r4   r   )Úrange)rÈ   r0   r  r1   r  ³  s   $ z$test_image_shift.<locals>.<listcomp>r4   r   gMòãûk&Ag˜Šäûk&Ar<   )Únormr   rå   Úauto)r   r"   r=   r(   r   ÚLogNormÚ
set_aspect)ÚimgDataÚtMinÚtMaxr,   rr   r0   r0   r1   Útest_image_shift±  s   
ÿr(  c                  C   s  t jddgd} | jg d¢dd}t t d¡d¡ dd	¡}|j|d
g d¢ddd}d }}| | |g¡ | 	| |g¡ | 
g ¡ | g ¡ t ¡ }| j|dd | d¡ t  |¡}t|d d …df ƒ\}}}	}
t|d d …df ƒ\}}}	}
|dksJ dƒ‚d S )Nr4   ©r]   ry   F)Úframeoné   é   r   é	   r³   ©éöÿÿÿrv   r/  rv   r<   Úgray)rc   rå   r   Úcmapr5   )r   r4   r   )Ú	facecolorr   rd   r   z.Expected a non-green edge - but sadly, it was.)r"   r&   Úadd_axesr#   Útiler$   r%   r(   rˆ   r‰   Ú
set_xticksÚ
set_yticksrm   rn   ro   rp   rq   rœ   )r,   rr   r©   rÃ   rg   rh   rÂ   ÚrÚgÚbÚar0   r0   r1   Útest_image_edges½  s$   ÿ



r;  Úimage_composite_backgroundc                  C   s^   t  ¡ \} }t d¡ dd¡}|j|g d¢d |j|g d¢d | d¡ | ddg¡ d S )	Nr+  r6   r;   )r   r5   r,  r   rä   )r6   r   r,  r   )r4   r   r   rÚ   r   )r"   r=   r#   r$   r%   r(   Úset_facecolorrˆ   r  r0   r0   r1   Útest_image_composite_backgroundÙ  s   
r>  Úimage_composite_alphac                  C   sŠ  t  ¡ \} }t d¡}d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡|dd…dd…df< t d	¡}d|dd…dd…df< d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡dd…tjf |dd…dd…df< |j|g d
¢dd |j|g d¢dd |j|g d¢d |j|g d¢d |j|g d¢dd |j|g d¢dd | d¡ | 	ddg¡ | 
ddg¡ dS )z{
    Tests that the alpha value is recognized and correctly applied in the
    process of compositing images together.
    )é   é   r6   r4   Nr   gš™™™™™ñ?çš™™™™™¹?rd   r;   )rA  r@  r6   )r4   r5   r   r   ç333333Ó?)rå   rØ   )r5   r;   r   r   ç333333ã?)r;   r6   r   r   rä   )r   r   r4   r5   )r   r   r5   r;   )r   r   r;   r6   )r   rÚ   r   r4   r   )r"   r=   r#   r>   Úconcatenater$   Únewaxisr(   r=  rˆ   r‰   )r,   rr   r  Úarr2r0   r0   r1   Útest_image_composite_alphaä  s.   
$ÿ
$ÿÿ
rH  Úrasterize_10dpi)rI   r3   r   c                  C   sÚ   t  ddgddgg¡} tjdddd\}}|d  | ¡ |d jddgddgdd	d
 |d jddd |d jddgddgdd |d jddd |D ]}| g ¡ | g ¡ |j	 
¡ D ]}| d¡ q^qMdtd< d S )Nr4   r5   r;   r6   )r;   r4   r)  r   g      4@T)Ú	linewidthÚ
rasterized©r   r4   )rd   r5   ©ÚxlimÚylim)rJ  Frv   rJ   )r#   Úasarrayr"   r=   r(   rl   Úsetr5  r6  ÚspinesÚvaluesÚset_visibler   )rD   r,   r†   rr   Úspiner0   r0   r1   Útest_rasterize_dpiÿ  s   	

ÿrV  Úbbox_image_invertedc                  C   sÈ   t  d¡ d¡} t ¡ \}}tttddgddggƒ|jƒdd}| 	| ¡ | 
d¡ | dd¡ | dd¡ | |¡ t  d¡} tttdd	gd
dggƒ|jjƒdd}| 	| ¡ | 
d¡ | |¡ d S )Nr   r  r   r   r   Frv   rB  çš™™™™™É?rC  ræ   )r#   r$   r%   r"   r=   r   r   r   rë   Úset_dataÚset_clip_onrˆ   r‰   Ú
add_artistÚidentityr&   ÚtransFigure)r   r,   rr   Úbbox_imr0   r0   r1   Útest_bbox_image_inverted  s(   þ



ÿþ

r_  c                  C   s¨   t  g d¢g d¢g d¢g d¢g¡} tjddd\}}| g d¢¡ | d	d
¡ | d	d
¡ |j| g d¢dd}|j 	¡  |jj
}| |¡}t| ¡ ddgddggƒ d S )N)ræ   rè   r×   rè   )rB  gÍÌÌÌÌÌä?rÚ   çš™™™™™Ù?)rD  rC  ç        rX  )çffffffæ?çÍÌÌÌÌÌì?r`  rD  r  r   r\   ry   r   r4   )r`  rb  rX  rc  r   )rå   r   i  r  i¼  i„  )r#   rV   r"   r=   r€   rˆ   r‰   r(   rí   rö   ÚrendererÚget_window_extentr   Ú
get_points)rÃ   r,   rr   Úim_objrd  Úim_bboxr0   r0   r1   Ú$test_get_window_extent_for_AxisImage8  s   ÿ
ÿ

ri  zzoom_and_clip_upper_origin.pngc                  C   sF   t  d¡} |  d¡} t ¡ \}}| | ¡ | dd¡ | dd¡ d S )Nr   r  ç       @ç      à¿)r#   r$   r%   r"   r=   r(   r‰   rˆ   )r   r,   rr   r0   r0   r1   Útest_zoom_and_clip_upper_originM  s   


rl  c                  C   s   t  ¡ } t| ƒ}| d¡ d S )NÚBlues)r"   Úgcar   Úset_cmap©rr   rÃ   r0   r0   r1   Útest_nonuniformimage_setcmapY  s   rq  c                  C   s"   t  ¡ } t| ƒ}| t  ¡ ¡ d S )N)r"   rn  r   Úset_normÚ	Normalizerp  r0   r0   r1   Útest_nonuniformimage_setnorm_  s   rt  c                  C   sn   t jddd} tdƒD ]}t  ddd¡d | |d d …f< qt dd¡}| |  ¡ ¡ t 	¡ \}}| 
|¡ d S )	Nr  rA   r8   rv   ra  r×   rR   ÚL)r#   r?   r   Úlinspacer   ÚnewÚputdataÚflattenr"   r=   r(   )ÚimdÚirÃ   r,   rr   r0   r0   r1   Útest_jpeg_2de  s    r|  c                  C   sª   t jddd tjdtd} t ddd¡| d< t  | ¡ t ¡ }t j	|d	d
dd | 
d¡ t |¡}t| d¡ƒ}d|  krEdksHJ ‚ J ‚| d¡}|dksSJ ‚d S )Nr  é,  r\   )r}  r}  r6   r8   ra  r×   r:   Úredr¡   )r2  r¤   r^   r   é   é¯   é¹   rû   )éþ   r   r   )r"   r&   r#   r>   Úfloatrv  rY   rm   rn   ro   rp   r   r   ÚlenÚ	getcolorsÚgetpixel)rÃ   r¶   r   Ú
num_colorsÚcorner_pixelr0   r0   r1   Útest_jpeg_alphap  s   



r‰  c                  C   óP   t  ¡ } t| ƒ}tjdtd d¡}| |¡ d|d< |jd dks&J dƒ‚d S ©Nr+  r8   ©r6   r;   çÍÌÌÌÌÌ#@rû   r   úvalue changed)	r"   rn  r   r#   r$   rƒ  r%   rY  Ú_A)rr   rÃ   ri   r0   r0   r1   Útest_axesimage_setdataˆ  ó   
r  c                  C   rŠ  r‹  )	r"   Úgcfr   r#   r$   rƒ  r%   rY  r  )r,   rÃ   ri   r0   r0   r1   Útest_figureimage_setdata‘  r‘  r“  zimage_cls,x,y,aç      @ç      @g      (@rŒ  g      @)r;   r5   c                 C   sš   t  ¡ }| |ƒ}| |||¡ d |d<  |d< |d< |jd |jd   kr6|jd   kr6dks;J dƒ‚ J dƒ‚| ||| g |j¢d‘R ¡¡ d S )Nr  r   rû   rŽ  rd   )r"   rn  rY  r  Ú_AxÚ_Ayr%   r§   )Ú	image_clsrg   rh   r:  rr   rÃ   r0   r0   r1   Útest_setdata_xyaš  s   @$r™  c            
      C   sÞ   ddl m}  tj d¡ tj dd¡}t dd¡\}}|d  |¡}|d  |¡}tj	||d d tj	||d d t
 ¡ }tj|dd t
 | ¡ ¡}|  |¡}d }| d	¡D ]}	|d u rd|	d
 }qY|	d
 |krlJ ‚qYd S )Nr   )ÚElementTreerv   r4   r5   )rr   rH   r¥   r   r  )Ú	xml.etreerš  r#   r{   r|   r}   r"   r=   Ú
pcolormeshrõ   rm   rn   ro   ÚgetvalueÚparseÚiter)
rš  r©   r,   rr   Úp1Úp2r¶   Útreer  r   r0   r0   r1   Útest_minimized_rasterizedª  s(   

ÿür£  c                  C   sP   t tƒjd } dtjdkrdnd |  ¡  ¡  }t |¡ t t	j
 |¡¡ d S )Nz%baseline_images/test_image/imshow.pngzfile:Úwin32z///Ú )r   rŽ   r   ÚsysÚplatformÚresolveÚas_posixr"   rq   ÚurllibÚrequestÚurlopen)r˜   Úurlr0   r0   r1   Útest_load_from_urlË  s   ÿ
þ
r®  Úlog_scale_imagec                  C   sN   t  d¡} d| d d d…< t ¡ \}}|j| g d¢ddddd |jd	d
 d S )Nr  r4   r5   )r4   r   r4   r   Úviridisrd   r"  )rå   r1  ÚvmaxÚvminÚaspectÚlog)Úyscale)r#   r>   r"   r=   r(   rQ  )rÝ   r,   rr   r0   r0   r1   Útest_log_scale_imageÔ  s   
ÿr¶  Úrotate_imagec                  C   s,  d} t  dd| ¡ }}t  ||¡\}}t  |d |d   d ¡dt j  }t  |d d d |d d d   d ¡dt j d d  }|| }t dd¡\}}	|	j|dd	d
g d¢dd}
tƒ  	d¡|	j
 }|
 |¡ |
 ¡ \}}}}|	j|||||g|||||gdd|d |	 dd¡ |	 dd¡ d S )Nræ   ç      Àr”  r5   r4   ç      ø?rÚ   r<   r°  r`   )éþÿÿÿr6   éýÿÿÿr5   T)r   r1  rc   rå   Úclip_oné   zr--r;   )Úlwrì   r   r   r6   )r#   r$   ÚmeshgridÚexpÚpir"   r=   r(   r   Ú
rotate_degrë   Úset_transformÚ
get_extentrl   rˆ   r‰   )Údeltarg   rh   r+   ÚYÚZ1ÚZ2rÝ   r,   r-   Úim1Útrans_data2Úx1Úx2Úy1Úy2r0   r0   r1   Útest_rotate_imageß  s*   &*ÿ
þ
 ÿrÏ  c                  C   sR   t  ¡ } t d¡}tj| |dd |  d¡ t | ¡}|jd d… |jks'J ‚d S )N)iá  iA  rZ   r¥   r   r5   )	rm   rn   r#   r>   r"   r¦   rp   rq   r§   )r¶   rÃ   rD   r0   r0   r1   Útest_image_preserve_sizeû  s   


rÐ  c                  C   sÈ   d} t  | t¡}tj| | fdd}t |g d¢¡}| ¡  | |¡ |j|dddd t	 
¡ }|j|d	d
 | d¡ t |¡}|jdksGJ ‚tt  |d d …d d …df t¡t  | t¡d d d… ƒ d S )Né   F)r]   r*  )ra  ra  r×   r×   r   r`   r"  )r   rc   r³  r4   )r^   r   )rÑ  rÑ  r6   rd   )r#   r\  rƒ  r"   r&   ÚAxesÚset_axis_offr3  r(   rm   rn   ro   rp   rq   r§   r   rP  Úbool)Únr©   r,   rr   r¶   rD   r0   r0   r1   Útest_image_preserve_size2  s   


ÿrÖ  zmask_image_over_under.pngc               	   C   s~  d} t  dd| ¡ }}t  ||¡\}}t  |d |d   d ¡dt j  }t  |d d d |d d d   d ¡dt j d d  }d||  }ttjjƒ}| 	d	d
¡ | 
dd
¡ | dd
¡ t j |dk|¡}	t dd¡\}
\}}|j|	d|tjdd
dddg d¢d}| d¡ |
j|dd|dd |j|	d|tjg d¢ddddg d¢d}| d¡ |
j|ddd|dd d S ) Ngš™™™™™™?r¸  r”  r5   r4   r¹  rÚ   rv   r7  r×   r8  r9  g333333ó?r    g      ð¿F)r²  r±  Úclipr`   )r»  r;   r»  r;   )r   r1  r!  rc   rå   zGreen=low, Red=high, Blue=badÚbothÚ
horizontal)ÚextendÚorientationrr   r³  r   )rd   rk  gš™™™™™É¿r   rX  rÚ   r4   r  )Úncolorsr×  zWith BoundaryNormÚproportional)rÚ  ÚspacingrÛ  rr   r³  )r#   r$   r¿  rÀ  rÁ  r   r"   Úcmr0  Úset_overÚ	set_underÚset_badÚmaÚmasked_wherer=   r(   r   rs  r)   rõ   ÚBoundaryNorm)rÅ  rg   rh   r+   rÆ  rÇ  rÈ  rÝ   ÚpaletteÚZmr,   r-   r.   rÃ   r0   r0   r1   Útest_mask_image_over_under  sD   &*ÿý

ÿ
ÿü


ÿrè  Ú
mask_imagec                  C   s   t  dd¡\} \}}t d¡}tj|dd…dd…f< |j|dd tjdtd}d|dd…dd…f< tj 	tjdtj
d|¡}|j|dd d S )Nr4   r5   r7   r   r   r8   T)r"   r=   r#   r?   Únanr(   r>   rÔ  rã  Úmasked_arrayr›   )r,   r-   r.   r…   r0   r0   r1   Útest_mask_image?  s   
rì  c                  C   s2   t  dt j¡} t ¡ \}}| | ¡ |j ¡  d S )Nr[   )r#   Úfullrê  r"   r=   r(   rí   Ú	draw_idle)r©   r,   rr   r0   r0   r1   Útest_mask_image_allQ  s   
rï  zimshow_endianess.pngc                  C   s„   t  d¡} t  | | ¡\}}t  |d |d ¡}t dd¡\}\}}tdddd}|j| d	¡fi |¤Ž |j| d
¡fi |¤Ž d S )Nrv   r   r4   r5   r`   r   r°  )rc   r   r1  z<f8z>f8)	r#   r$   r¿  Úhypotr"   r=   Údictr(   rµ   )rg   r+   rÆ  rÝ   r,   r-   r.   Úkwargsr0   r0   r1   Útest_imshow_endianessY  s   
ró  Úimshow_masked_interpolationÚx86_64ré   )Útolr3   r   c            
      C   s  t t d¡ƒ} |  d¡ |  d¡ |  d¡ d}tjd|| d d}tj	|| t
d	 ||¡}d
|d< d|d< tj|d< t |¡ d¡}d|d< tj ||¡}t dd¡\}}ttjƒ}| d¡ t|| ¡ ƒD ]\}}	|	 |¡ |	j||| |d |	 d¡ qid S )Nr°  r7  r9  rÉ   r   r   r4   ©r²  r±  r8   rd   r7   g     jø@)r,  r   )r,  r,  rÔ  T)r   r,  r;   r   rz   )r!  r1  r   Úoff)r   r"   Úget_cmaprà  rá  râ  r   rs  r#   r$   rƒ  r%   ÚinfÚ
zeros_likerµ   rã  rë  r=   ÚsortedÚmimageÚ	_interpd_ÚremoveÚzipÚravelr)   r(   Úaxis)
rß  ÚNrÕ  r©   Úmaskr,   Úax_gridÚinterpsÚinterprr   r0   r0   r1   Ú test_imshow_masked_interpolationg  s*   






ýr  c                   C   s   t  ddgdtjgg¡ d S )Nr4   r5   r;   )r"   r(   r#   rê  r0   r0   r0   r1   Útest_imshow_no_warn_invalidŽ  s   r	  r9   c                 C   s   g | ]}t  |¡‘qS r0   )r#   r9   )rÈ   Úsr0   r0   r1   r  “  s    r  zu2 u4 i2 i4 i8 f4 f8c                 C   sÐ   t jd| d d¡}| jdkr|d8 }|dk }|dk}| jdkr$|d }t ¡ \}}| |¡ ¡ }|| dk ¡ s;J ‚| jdkrT|| d	k ¡ sJJ ‚|j	jdksRJ ‚d S || dk ¡ s^J ‚|j	t j
ksfJ ‚d S )
Nr}  r8   )rv   rv   r;   Úurv   r   rR   Úfr4   )r#   r$   r%   Úkindr"   r=   r(   Ú	get_arrayÚallr9   rA   )r9   r  Útoo_lowÚtoo_highÚ_rr   Úoutr0   r0   r1   Ú$test_imshow_clips_rgb_to_valid_range’  s   


r  zimshow_flatfield.pngc                  C   s0   t  ¡ \} }|jt d¡dd}| dd¡ d S )Nr7   r   r   rÚ   r¹  )r"   r=   r(   r#   r?   Úset_clim©r,   rr   rÃ   r0   r0   r1   Útest_imshow_flatfield§  s   r  zimshow_bignumbers.pngc                  C   sJ   dt d< t ¡ \} }tjg d¢g d¢gtjd}| |¡}| dd¡ d S )Nr   úimage.interpolation)r4   r5   g   ¢”mB)r;   r4   r6   r8   r   r   )r   r"   r=   r#   rV   Úuint64r(   r  ©r,   rr   rD   Úpcr0   r0   r1   Útest_imshow_bignumbers®  s
   
r  zimshow_bignumbers_real.pngc                  C   sD   dt d< t ¡ \} }t g d¢g d¢g¡}| |¡}| dd¡ d S )Nr   r  )rj  r×   g’ÕMÏð€D)r•  r×   r”  r   r   )r   r"   r=   r#   rV   r(   r  r  r0   r0   r1   Útest_imshow_bignumbers_real¹  s
   
r  Ú	make_normc                   C   ó
   t  d¡S ©Nr4   )r   Ú
SymLogNormr0   r0   r0   r1   Ú<lambda>É  ó   
 r"  c                   C   r  r   )r   Ú	PowerNormr0   r0   r0   r1   r"  Ê  r#  c                 C   s    t  ¡ \}}tjtdd |jg g| ƒ d}W d   ƒ n1 s!w   Y  | g d¢¡ |j ¡  t 	t
¡ | |j¡ W d   ƒ d S 1 sIw   Y  d S )Nz)Attempting to set identical left == right)Úmatch)r!  )éûÿÿÿr   r&  r   )r"   r=   r  ÚwarnsÚUserWarningr(   Ú
set_extentrí   rö   r  ÚRuntimeErrorÚ
make_imageÚ_cachedRenderer)r  r,   rr   rÃ   r0   r0   r1   Útest_empty_imshowÅ  s   ÿþ
"ÿr-  c                  C   st   t  ¡ \} }| tjdtjd¡ t tjtjd¡rtƒ nt	 
t¡ | j ¡  W d   ƒ d S 1 s3w   Y  d S )N)r;   r;   r8   Úequiv)r"   r=   r(   r#   r>   Ú
longdoubleÚcan_castÚfloat64r   r  r'  r(  rí   rö   ©r,   rr   r0   r0   r1   Útest_imshow_float128×  s   ÿ"ýr3  c                  C   s0   t  ¡ \} }| tjddgddggtd¡ d S )NTFr8   )r"   r=   r(   r#   rV   rÔ  r2  r0   r0   r1   Útest_imshow_boolà  s   $r4  c                  C   sZ   t  ¡ \} }| t dtj¡¡ t t¡ | j	 
¡  W d   ƒ d S 1 s&w   Y  d S )Nr  )r"   r=   r(   r#   rí  rê  r  r'  r(  rí   rö   r2  r0   r0   r1   Útest_full_invalidå  s
   "ÿr5  zfmt,counted)r¯   s    colorimage)rH   s   <imagezcomposite_image,count)Tr4   )Fr5   c           
      C   s²   t  t  ddd¡t  ddd¡¡\}}t  |d ¡}t ¡ \}}| dd¡ |j|g d¢d |j|d d d	… g d
¢d |tjd< t	 
¡ }	|j|	| d |	 ¡  |¡|ksWJ ‚d S )Nr&  r   r4   r5   r   r;   ©r   r4   r   r4   rä   rd   )r5   r;   r   r4   zimage.composite_imager¥   )r#   r¿  r$   rf   r"   r=   rˆ   r(   r   rm   rn   ro   r  Úcount)
r    ÚcountedÚcomposite_imager7  r+   rÆ  rÝ   r,   rr   rÂ   r0   r0   r1   Útest_compositeì  s   $
r:  c                  C   sV   t  ¡ \} }|jdggdd | ¡  | ¡  | ¡ | ¡   kr&dks)J ‚ J ‚d S )Nr   r6  rä   rL  )r"   r=   r(   ÚrelimÚ	autoscaleÚget_xlimÚget_ylimr2  r0   r0   r1   Ú
test_relimÿ  s
   (r?  c                  C   sx   t  ¡ \} }| ¡  |jddgddggddddd}|jddd | j ¡  t | j 	¡ ¡d	d d
…f dk 
¡ s:J ‚d S )Nr   r"  r.  r0  F)r³  rå   r1  r¼  rL  rM  .r;   )r"   r=   rÓ  r(   rQ  rí   rö   r#   rV   Úbuffer_rgbar  r  r0   r0   r1   Útest_unclipped  s   ÿ
,rA  c                  C   sÄ   t  d¡\} }|D ]}| ¡  q	|d jddgddggddd}| d ¡ | |d j¡ t ¡ }| j	|dd	 h | 
¡ £d
hksCJ ‚|d jdd t ¡ }| j	|dd	 | 
¡ | 
¡ ks`J ‚d S )Nr5   r4   r   r;   r"  r6  )r³  rå   Úrgbar¥   rR   )rd   r   )rO  )r"   r=   rÓ  r(   rþ   Úset_clip_boxÚbboxrm   rn   ro   r  rQ  )r,   r†   rr   rÃ   Ú
buf_beforeÚ	buf_afterr0   r0   r1   Útest_respects_bbox  s   
 
rG  c                  C   s„   t  ¡ \} }| t d¡¡}tjjdgdgd}| |¡dks!J ‚tjjdgdgd}| |¡dks4J ‚tj}| |¡dks@J ‚d S )	Nrá   r   T)r  z[]Fz[0]z[nan])	r"   r=   r(   r#   r>   rã  rë  rô   rê  )r,   rr   rÃ   r©   r0   r0   r1   Útest_image_cursor_formatting%  s   rH  c           
      C   s    t  dd¡}t  ||¡\}}t  d|d d  |d  ¡}|| ¡  }t d¡}|  d¡}|j|||d	d
 | d¡}|t	 
¡ |ƒƒ}	||	d< |j|	d	d dS )zPer-pixel alpha channel test.r   r4   r»  rÚ   r5   g[Âõ(\ß?r°  éo   r   )rØ   r1  r   ).rd   r   N)r#   rv  r¿  rÀ  Úmaxr"   rù  r'   r(   r   rs  )
r   r‚   rg   ÚxxÚyyÚzzrØ   r1  rr   rB  r0   r0   r1   Útest_image_array_alpha4  s   


rN  c                  C   sÌ   t tj d¡ƒ} | jdd tjddd}| g d¢¡}tjg d¢gt	d	}|j
|d
| ddd}| d¡ |j ¡  | |jj¡d d }| | |dggd  j ¡ ¡¡d  t¡}t ||k¡sdJ ‚d S )NÚautumn_rÚ	lightgrey)Úcolor)gffffffþ?rB  r   r\   ry   )rd   rd   rd   r   r   r   r   é+   éO   é_   éB   r4   rd   rd   rd   r   r   r   é"   r8   r"  r   )r³  r1  r²  r±  rø  r4   rv   rR   )r   r"   rß  rù  rá  r&   r3  r#   rV   rƒ  r(   r  rí   rö   r+  rd  r1  r!  ÚTr  rµ   r~   r  )r1  r,   rr   r©   rÃ   Ú
from_imageÚdirect_computationr0   r0   r1   Útest_exact_vminG  s    þ

$þrZ  c                  C   s   t  d¡} d S )Nz.https://matplotlib.org/1.5.0/_static/logo2.png)rý  rq   )rÊ   r0   r0   r1   Útest_https_imread_smoketestd  s   r[  c                 C   s¸   t jddt jd}d|dd…d d …f< |  ¡ }|j|tjd| ¡ dd	d
d}t jddt jd}d|dd…d d …f< tt	 
d
¡ƒ}| d¡ | ¡ }|j|tjd| ¡ dd	|d}d S )Nr7   rd   r8   g@Œµx¯Dr   r5   r   r÷  r   r°  )r!  r   r1  iè  Úw)r#   rí  r1  r=   r(   r   r#  rJ  r   r"   rù  rá  rs  )r   r‚   r©   rr   rÃ   rß  r0   r0   r1   Útest_huge_range_logj  s   ÿ

ÿr]  )wÚ
contextlibr   r   rm   r—   Úpathlibr   r§  r¦  Úurllib.requestrª  Únumpyr#   Únumpy.testingr   ÚPILr   Ú
matplotlibr   r   rý  r	   r
   r"   r   r   Úmatplotlib.imager   r   r   r   r   Úmatplotlib.testing.decoratorsr   r   Úmatplotlib.transformsr   r   r   r  r2   rE   rW   ÚmarkÚparametrizerk   rt   r‡   rŠ   r“   rž   rŸ   r®   r²   r¸   rÄ   rÔ   rÞ   ró   rù   r  r
  r  r  r  r  r  r(  r;  r>  rH  rV  r_  ri  rl  rq  rt  r|  r‰  r  r“  r$   r%   r™  r£  r®  r¶  rÏ  rÐ  rÖ  rè  rì  rï  ró  Úmachiner  r	  Úsplitr  r  r  r  rs  r#  r-  r3  r4  r5  r:  r?  rA  rG  rH  rN  rZ  ÚnetworkÚflakyr[  r]  r0   r0   r0   r1   Ú<module>   sR    

ÿ
	þ




"


>þÿ

	





ÿ
	

ÿ

ÿ

		ÿÿýÿ
	!	



!

þ
$ÿ



ÿ

ýþ
	ÿ



