a
    s=ic                  
   @   sJ  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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(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/0dddge#dgddgdd d! Z1d"d# Z2e+j/0d$g d%e"dgdd&d' Z3e"dgdd(d) Z4e" d*d+ Z5d,d- Z6d.d/ Z7e+j/0d0g d1d2d3 Z8e+j/0d0g d4d5d6 Z9d7d8 Z:d9d: Z;d;d< Z<e#d=gddd>d? Z=d@dA Z>e+j/0dBdCdDggdEfdFdGggdHfej?dIdJggdKfdIdLggdMfdNdNggdOfgdPdQ Z@e#dRgdddSdT ZAe#dUgdddVdW ZBe#dXgdddYdZd[ ZCe"dgdd\d] ZDd^d_ ZEd`da ZFe#dbgdddcdd ZGe#degdddgdfdgdh ZHdidj ZIe#dkgdddYdldm ZJe#dngdddodp ZKe"dgddqdr ZLe#dsgddgdddtdudv ZMe#dwgdddYdxdy ZNdzd{ ZOe#d|gdddYd}d~ ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVe+j/0deeWdeWdeWdXdfe eWdeWdeWdXdfgdd ZYdd ZZdd Z[e#dgdddd Z\e#dgddddd Z]dd Z^dd Z_e#dgddddd Z`e#dgdddd Zadd Zbe#dgdddd Zce#dged dkrd ndddddd Zedd Zfe+j/0ddd dg D dd Zhe#dgdddYdd Zie#dgdddYddÄ Zje#dgdddYddƄ Zke+j/0dejlejmddɄ ddɄ gdd̄ Zndd΄ ZoddЄ Zpdd҄ ZqddԄ Zre+j/0dddge+j/0dddgdd܄ Zsddބ Ztdd Zudd Zvdd Zwe" dd Zxdd Zyejzddd Z{G dd dej|Z}dd Z~dd Ze"dgddd Ze+j/0ddNdIge"dgddd Ze" dd Ze#dgdddd Ze#dgddddd Ze+j/de+j/0d ddge+j/0dg dg dge"dddd Ze"dgdd	d
 Zd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TransformedBboxZimage_interpsZmpl20)r   c                  C   s   dt jd< tddd} t d\}\}}}|j| dd |d	 |d |j| d
d |d
 |j| dd |d dS )z5Make the basic nearest, bilinear and bicubic interps.   ztext.kerning_factord            nearestinterpolationzthree interpolationsbilinearZbicubicN)	pltr   nparangereshapesubplotsimshow	set_titleZ
set_ylabel)Xfigax1ax2ax3 r,   l/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_image.pytest_image_interps   s    



r.   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   ).r0   dtype.r   noner   r   N)r    r$   r!   zerosonesZtriluint8r%   )r(   ZaxlZaxrimgr,   r,   r-   test_alpha_interp.   s    
r<   Zinterp_nearest_vs_nonepdfsvg)
extensionsr/   c                  C   s|   dt d< tjg dg dgg dg dggtjd} tdd	\}\}}|j| d
d |d |j| dd |d dS )z5Test the effect of "nearest" and "none" interpolationr   savefig.dpi)          )z   g      )      r   )rH   c   G   r4   r0   r1   r7   r   zinterpolation noner   zinterpolation nearestN)r   r!   arrayr:   r    r$   r%   r&   )r'   r(   r)   r*   r,   r,   r-   test_interp_nearest_vs_none;   s    
rL   suppressCompositeFfigimagepng)r?   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r1   r1   r   figsizedpig      Y@r1   r   2   r   r   lower)ZxoZyoorigin)r    figurerM   r!   Zix_r"   sinrN   )rM   r(   xyzcr;   r,   r,   r-   test_figimageM   s    $$$r^   c                  C   sD   t  \} }|g d t }| | |d t | d S )N)r0   r1   r   r   )r    r$   plotioBytesIOsavefigseekimread)r(   axbufferr,   r,   r-   test_image_python_io]   s    

rg   z!img_size, fig_size, interpolation))r   r1   hanning)r   r   r   )r   
   r   )r   333333@rh   )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,r@   r   r   r0   r0   antialiasedr   )r!   randomseedr    r   randintset_size_inchesr$   set_positionr%   )	fig_testfig_refZimg_sizeZfig_sizer   rS   Ar(   re   r,   r,   r-   test_imshow_antialiasedf   s    
rw   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 )
Nrk   r@   r   rj   rm   r   ri   r   r   )r!   rn   ro   r    r   rp   rq   rr   r$   r%   set_xlimset_ylim)rt   ru   rS   rv   r(   re   r,   r,   r-   test_imshow_zoom~   s    
rz   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default%baseline_images/pngsuite/basn3p04.png%baseline_images/test_image/uint16.tifr1   r   r0   )r   Zuser   __file__parentr$   r%   r   openr    rd   )rt   ru   Zpng_pathZ	tiff_pathaxsr,   r,   r-   test_imshow_pil   s    


r   c                  C   sF   t tjtjtddd} | jtj	ks0J t
| dksBJ d S )NZbaseline_imagesZ
test_imagez
uint16.tif )r    rd   ospathjoindirnamer~   r5   r!   uint16sumr;   r,   r,   r-   test_imread_pil_uint16   s
    r   c                  C   s:   t ttjd } | jtjks$J t| dks6J d S )Nr}   r   )	r    rd   r   r~   r   r5   r!   r   r   r   r,   r,   r-   test_imread_fspath   s
    r   fmt)rO   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sJ |j
ddd	| fksJ t|| d S )
N)r   r   r0   i@  r1   )formatrS   r   r   r   r   )r!   rn   ro   rp   r`   ra   r    imsaverc   rd   shaper   )r   Z	has_alphadataZ	buff_dpi1Zbuff_dpi100Zarr_dpi1Z
arr_dpi100r,   r,   r-   test_imsave   s    	

r   )rO   r=   psZepsr>   c                 C   s&   t jttjtddgg| d d S )Nr   r0   r   )r    r   r   r   devnullr!   rK   )r   r,   r,   r-   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rv|d d d }d| 
d	}t|| qd S )Nr0   )rU   upper   r2   rO   )rV   r   r   rH   r:   rU   rW   )r!   rn   ro   rp   r`   ra   r    r   rc   rd   astyper   )rV   r   buffZarr_bufr,   r,   r-   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sdJ d S )Nr   )PngInfoZSoftwaretestr0   r1   r   rO   pnginfor   
pil_kwargs)
ZPIL.PngImagePluginr   r`   ra   add_textr    r   r   r   info)r   bufr   imr,   r,   r-   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slJ d S )Nr   )TAGS_V2descriptionz
test imager0   r1   r   r   r   c                    s   i | ]\}} | j |qS r,   )name).0kvZTAGSr,   r-   
<dictcomp>       z/test_imsave_pil_kwargs_tiff.<locals>.<dictcomp>ZImageDescription)
ZPIL.TiffTagsr   r`   ra   r    r   r   r   Ztag_v2items)r   r   r   tagsr,   r   r-   test_imsave_pil_kwargs_tiff   s    
r   Zimage_alphac                  C   sd   t jd t jdd} tdd\}\}}}|j| ddd |j| ddd |j| dd	d d S )
Nr   r   r0   r         ?r7   )alphar         ?r   )r!   rn   ro   rp   r    r$   r%   )Zr(   r)   r*   r+   r,   r,   r-   test_image_alpha  s    r   c            
      C   sx  ddl m}  t \}}|jtddddd}d\}}|j	||g\}}| d|j
||}||d	ksrJ d
\}}|j	||g\}}| d|j
||}||d u sJ |  |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sJ d\}}|j	||g\}}| d|j
||}||d u sJ d\}}|j	||g\}}| d|j
||}||d u s J t dd}	|jtddd|	|j d}d\}}|j	||g\}}| d|j
||}||d	kstJ d S )Nr   
MouseEventr   ri   r   )rV   r2   r2   motion_notify_event,   )g333333$@r2   rU   )r   r   r   r   extent)      ?r   7   )      ?r   ){Gz?g{Gzr1   r   )	transform)r   ri   )matplotlib.backend_basesr   r    r$   r%   r!   r"   r#   	transDatar   canvasget_cursor_dataclearr   scalerotate)
r   r(   re   r   rZ   r[   xdispydispeventZtransr,   r,   r-   test_cursor_data  sN    
 r   z
data, texti'  i'  z[10001.000]grh|?g/$?z[0.123]r0   r1   []g     ?z[1.0000000000000000]rW   z[-1.0000000000000000]c           	      C   sb   ddl m} t \}}|| }|jddg\}}|d|j||}||	||ks^J d S )Nr   r   r   )
r   r   r    r$   r%   r   r   r   format_cursor_datar   )	r   textr   r(   re   r   r   r   r   r,   r,   r-   test_format_cursor_dataS  s    	
r   Z
image_clipc                  C   sF   ddgddgg} t  \}}|| }tjdd|jd}|| d S )Nr0   r1   r   r2   r   r   )Zradiusr   )r    r$   r%   r	   ZCircler   set_clip_path)dr(   re   r   patchr,   r,   r-   test_image_clipf  s
    
r   Z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 )	Nr0   r1   r   r2   r   r   r   r   r   r0   r0   )Zxywidthheightr   )r    r$   r%   r	   Z	RectangleZaxesr   r   )r(   re   r   r   rectr,   r,   r-   test_image_cliprectp  s    r   r%   )r/   r   c                  C   sH   t  \} }tdd}|j|ddd |dd |dd d S )Nr   ri   ri   r   r0   r1   r0   r1   r   r   r   r   )r    r$   r!   r"   r#   r%   rx   ry   r(   re   arrr,   r,   r-   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   )ri   ri   r0   r   r   r   r   r   )r!   r"   r#   r$   r%   rx   ry   )rt   ru   r   re   r,   r,   r-   test_imshow_10_10_1  s    "r   c                  C   sT   t  \} }tdd}tt || W d    n1 sF0    Y  d S )N   )ri   ri   r1   	r    r$   r!   r"   r#   pytestraises	TypeErrorr%   r   r,   r,   r-   test_imshow_10_10_2  s    r   c                  C   sT   t  \} }tdd}tt || W d    n1 sF0    Y  d S )Ni  )ri   ri   r   r   r   r,   r,   r-   test_imshow_10_10_5  s    r   Zno_interpolation_originc                  C   sP   t d\} }|d jtddddd |d jtdddd	 d S )
Nr1   r   r   )r1   rT   rU   r7   )rV   r   r0   r   )r    r$   r%   r!   r"   r#   )r(   r   r,   r,   r-   test_no_interpolation_origin  s
    r   Zimage_shift)r/   r?   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 )r0   r,   )r   rZ   r[   r,   r-   
<listcomp>  r   z/test_image_shift.<locals>.<listcomp>.<listcomp>r0   r   )range)r   r,   r   r-   r     r   z$test_image_shift.<locals>.<listcomp>r0   r   gMk&Agk&Ar7   )normr   r   auto)r   r    r$   r%   r   LogNormZ
set_aspect)ZimgDataZtMinZtMaxr(   re   r,   r,   r-   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sJ dd S )Nr0   rR   rl   F)frameon      r   	   r   ri   r   ri   r7   gray)rV   r   r   cmapr1   )r   r0   r   )	facecolorr   rW   r   z.Expected a non-green edge - but sadly, it was.)r    rX   add_axesr!   Ztiler"   r#   r%   rx   ry   
set_xticks
set_yticksr`   ra   rb   rc   rd   r   )r(   re   r   r   rZ   r[   r   rgbar,   r,   r-   test_image_edges  s$    



r  Z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   r2   r   )r   r1   r   r   r   )r2   r   r   r   )r0   r   r   r   r   )r    r$   r!   r"   r#   r%   set_facecolorrx   r   r,   r,   r-   test_image_composite_background  s    
r	  Z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.
    )      r2   r0   Nr   g?皙?rW   r   )r  r
  r2   )r0   r1   r   r   333333?)r   r   )r1   r   r   r   333333?)r   r2   r   r   r   )r   r   r0   r1   )r   r   r1   r   )r   r   r   r2   )r   r   r   r0   r   )r    r$   r!   r8   Zconcatenater"   Znewaxisr%   r  rx   ry   )r(   re   r   Zarr2r,   r,   r-   test_image_composite_alpha  s.    
$
$
r  c                 C   sp   t dd}| |fD ]L}| }|j|tjg d|jfd |j|tjg d|jfd qd|_	d S )Nr   r   r   )r   r   r0   )r0   r   )	clip_path)r   r0   r1   )r1   r0   T)
r!   r"   r#   add_subplotr%   mplr   r   r   rM   )rt   ru   tr(   re   r,   r,   r-   #test_clip_path_disables_compositing  s    
r  Zrasterize_10dpi)r?   r/   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  
d qdtd< d S )Nr0   r1   r   r2   )r   r0   r   r   g      4@T)	linewidthZ
rasterizedr  )rW   r1   xlimylim)r  Fri   r@   )r!   asarrayr    r$   r%   r_   setr  r  ZspinesZset_visibler   )r;   r(   r   re   r,   r,   r-   test_rasterize_dpi  s    	

r  Z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   Fri   r  皙?r  r   )r!   r"   r#   r    r$   r   r   r   r   set_dataZset_clip_onrx   ry   Z
add_artistidentityrX   ZtransFigure)r   r(   re   Zbbox_imr,   r,   r-   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   )r  g?r   皙?)r  r          r  )ffffff??r#  r  r   r   rQ   rl   r   r0   )r#  r%  r  r&  r   )r   r   i  r   i  i  )r!   rK   r    r$   rs   rx   ry   r%   r   drawrendererZget_window_extentr   Z
get_points)r   r(   re   Zim_objr(  Zim_bboxr,   r,   r-   $test_get_window_extent_for_AxisImage<  s    


r)  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%   ry   rx   )r   r(   re   r,   r,   r-   test_zoom_and_clip_upper_originQ  s    


r,  c                  C   s   t  } t| }|d d S )NZBlues)r    gcar   Zset_cmapre   r   r,   r,   r-   test_nonuniformimage_setcmap]  s    r/  c                  C   s"   t  } t| }|t   d S N)r    r-  r   set_norm	Normalizer.  r,   r,   r-   test_nonuniformimage_setnormc  s    r3  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   r:   r4   ri   r$  r   rH   L)r!   r9   r   linspacer   newZputdataflattenr    r$   r%   )Zimdir   r(   re   r,   r,   r-   test_jpeg_2di  s     r9  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rdksn J |d}|dksJ d S )Nr   ,  rQ   )r:  r:  r2   r4   r$  r   r6   redr   )r   r   rS   r            r   )   r   r   )r    rX   r!   r8   floatr5  rN   r`   ra   rb   rc   r   r   lenZ	getcolorsZgetpixel)r   r   r   Z
num_colorsZcorner_pixelr,   r,   r-   test_jpeg_alphat  s    



rB  c                  C   sP   t  } t| }tjdtdd}|| d|d< |jd dksLJ dd S Nr   r4   r2   r   #@r   r   value changed)	r    r-  r   r!   r"   r@  r#   r   _A)re   r   r\   r,   r,   r-   test_axesimage_setdata  s    
rH  c                  C   sP   t  } t| }tjdtdd}|| d|d< |jd dksLJ dd S rC  )	r    Zgcfr   r!   r"   r@  r#   r   rG  )r(   r   r\   r,   r,   r-   test_figureimage_setdata  s    
rI  zimage_cls,x,y,a      @      @g      (@rD  g      @)r   r1   c                 C   s   t  }| |}|||| d |d<  |d< |d< |jd |jd   krf|jd   krfdkspn J d||||g |jdR  d S )NrE  r   r   rF  rW   )r    r-  r   rG  Z_AxZ_Ayr#   r   )Z	image_clsrZ   r[   r  re   r   r,   r,   r-   test_setdata_xya  s    :rL  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 r|	d
 }q|	d
 |krdsJ qd S )Nr   )ElementTreeri   r0   r1   )re   r>   r   r   r   F)Z	xml.etreerM  r!   rn   ro   rp   r    r$   Z
pcolormeshcolorbarr`   ra   rb   getvalueparseiter)
rM  r   r(   re   p1p2r   treer   r   r,   r,   r-   test_minimized_rasterized  s$    

rU  c                  C   s   t tjd } dtjdkrdnd |    }tjt	dd t
| W d    n1 s^0    Y  tj|}t
| W d    n1 s0    Y  d S )Nr|   zfile:win32z/// zPlease open the URLmatch)r   r~   r   sysplatformresolveas_posixr   r   
ValueErrorr    rd   urllibrequesturlopen)r   urlfiler,   r,   r-   test_load_from_url  s    
(rd  Z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   r0   r1   )r0   r   r0   r   viridisrW   r   )r   r   vmaxvminaspectlog)Zyscale)r!   r8   r    r$   r%   r  )r   r(   re   r,   r,   r-   test_log_scale_image  s    
rj  Zrotate_imagegffffff?)r/   tolc                  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         rJ  r1   r0         ?r   r7   re  rU   )r2   r1   T)r   r   rV   r   clip_on   zr--r   )Zlwr   r   r   r2   )r!   r"   meshgridexppir    r$   r%   r   Z
rotate_degr   Zset_transformZ
get_extentr_   rx   ry   )deltarZ   r[   r'   YZ1Z2r   r(   r)   Zim1Ztrans_data2x1Zx2y1y2r,   r,   r-   test_rotate_image  s*    &*

 r|  c                  C   sR   t  } td}tj| |dd | d t| }|jd d |jksNJ d S )N)i  iA  rO   r   r   r1   )	r`   ra   r!   r8   r    r   rc   rd   r   )r   r   r;   r,   r,   r-   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sJ tt |d d d d df tt | td d d  d S )N   F)rR   r   )r$  r$  r   r   r   rU   r   )r   rV   rh  r0   )rS   r   )r~  r~  r2   rW   )r!   r!  r@  r    rX   ZAxesset_axis_offr   r%   r`   ra   rb   rc   rd   r   r   r  bool)nr   r(   re   r   r;   r,   r,   r-   test_image_preserve_size2  s    


r  zmask_image_over_under.pngr   c               	   C   sl  dt jd< 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 jjj	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 )"NFzpcolormesh.snapg?rl  rJ  r1   r0   rm  r   ri   r  r  r  Zoverunderbad333333?r   g      r   )rg  rf  cliprU   )ro  r   ro  r   )r   r   r   rV   r   zGreen=low, Red=high, Blue=badboth
horizontal)extendorientationre   rh  r   )rW   r+  gɿr   r  r   r0   r<  )Zncolorsr  zWith BoundaryNormZproportional)r  spacingr  re   rh  )r    r   r!   r"   rr  rs  rt  cmr   with_extremesmaZmasked_wherer$   r%   r   r2  r&   rN  ZBoundaryNorm)ru  rZ   r[   r'   rv  rw  rx  r   paletteZZmr(   r)   r*   r   r,   r,   r-   test_mask_image_over_under'  s@    
&*




r  Z
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 )Nr0   r1   r3   r   r   r4   T)r    r$   r!   r9   nanr%   r8   r  r  masked_arrayr   )r(   r)   r*   rv   r,   r,   r-   test_mask_imageI  s    
r  c                  C   s2   t dt j} t \}}||  |j  d S )NrP   )r!   fullr  r    r$   r%   r   Z	draw_idle)r   r(   re   r,   r,   r-   test_mask_image_all[  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 )Nri   r   r0   r1   rU   r   re  )rV   r   r   z<f8z>f8)	r!   r"   rr  hypotr    r$   dictr%   r   )rZ   r'   rv  r   r(   r)   r*   kwargsr,   r,   r-   test_imshow_endianessc  s    
r  Zimshow_masked_interpolationx86_64r   )rk  r/   r   c            
      C   s   t jd j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 qd S )Nre  r  r  r   r  r   r   r0   rg  rf  r4   rW   r3   g     j@)r   r   )r   r   r  T)r   r   r   r   rm   )r   r   r   off)r  	colormapsr  r   r2  r!   r"   r@  r#   infZ
zeros_liker   r  r  r    r$   sortedmimageZ	_interpd_removezipravelr&   r%   axis)
r   Nr  r   maskr(   Zax_gridZinterpsZinterpre   r,   r,   r-    test_imshow_masked_interpolationq  s"    



r  c                   C   s   t ddgdtjgg d S )Nr0   r1   r   )r    r%   r!   r  r,   r,   r,   r-   test_imshow_no_warn_invalid  s    r  r5   c                 C   s   g | ]}t |qS r,   )r!   r5   )r   sr,   r,   r-   r     r   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rH|d }t \}}|| }|| dk svJ | jdkr|| d	k sJ |j	jdksJ n$|| dk sJ |j	t j
ksJ d S )
Nr:  r4   )ri   ri   r   uri   r   rH   fr0   )r!   r"   r#   kindr    r$   r%   Z	get_arrayallr5   r:   )r5   r   Ztoo_lowZtoo_high_re   outr,   r,   r-   $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 )Nr3   r   r   r   rm  )r    r$   r%   r!   r9   set_climr(   re   r   r,   r,   r-   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)r0   r1   g   mB)r   r0   r2   r4   r   r   )r   r    r$   r!   rK   Zuint64r%   r  r(   re   r;   Zpcr,   r,   r-   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  )r*  r   gMD)rK  r   rJ  r   r   )r   r    r$   r!   rK   r%   r  r  r,   r,   r-   test_imshow_bignumbers_real  s
    
r  	make_normc                   C   s
   t dS Nr0   )r   
SymLogNormr,   r,   r,   r-   <lambda>  r   r  c                   C   s
   t dS r  )r   Z	PowerNormr,   r,   r,   r-   r    r   c                 C   s   t  \}}tjtdd" |jg g|  d}W d    n1 sB0    Y  |g d |j  t	t
  ||j  W d    n1 s0    Y  d S )Nz.Attempting to set identical low and high xlimsrX  r   )r   r  r   )r    r$   r   warnsUserWarningr%   Z
set_extentr   r'  r   RuntimeError
make_imageZget_renderer)r  r(   re   r   r,   r,   r-   test_empty_imshow  s    0
r  c                  C   s0   t  \} }|tjdtjd | j  d S )Nr  r4   )r    r$   r%   r!   r8   float16r   r'  r(   re   r,   r,   r-   test_imshow_float16  s    r  c                  C   sr   t  \} }|tjdtjd ttjtjdr:t nt	
t | j  W d    n1 sd0    Y  d S )Nr  r4   equiv)r    r$   r%   r!   r8   Z
longdoubleZcan_castfloat64r   r   r  r  r   r'  r  r,   r,   r-   test_imshow_float128  s    r  c                  C   s0   t  \} }|tjddgddggtd d S )NTFr4   )r    r$   r%   r!   rK   r  r  r,   r,   r-   test_imshow_bool  s    r  c                  C   s.   t  \} }|tdtj | j  d S )Nr   )r    r$   r%   r!   r  r  r   r'  r  r,   r,   r-   test_full_invalid  s    r  zfmt,counted)r   s    colorimage)r>   s   <imagezcomposite_image,count)Tr0   )Fr1   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sJ d S )Nr  r   r0   r1   r   r   r   r0   r   r0   r   rW   )r1   r   r   r0   zimage.composite_imager   )r!   rr  r"   rY   r    r$   rx   r%   r   r`   ra   rb   rO  count)
r   ZcountedZcomposite_imager  r'   rv  r   r(   re   r   r,   r,   r-   test_composite  s    $
r  c                  C   sT   t  \} }|jdggdd |  |  | |   krJdksPn J d S )Nr   r  r   r  )r    r$   r%   ZrelimZ	autoscaleZget_xlimZget_ylimr  r,   r,   r-   
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
 stJ d S )Nr   r   r   r   F)rh  r   r   rp  r  r  .r   )r    r$   r  r%   r  r   r'  r!   rK   Zbuffer_rgbar  r  r,   r,   r-   test_unclipped  s    
r  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sJ |d jdd t }| j	|dd	 |
 |
 ksJ d S )Nr1   r0   r   r   r   r  )rh  r   rgbar   rH   )rW   r   )r  )r    r$   r  r%   r   Zset_clip_boxZbboxr`   ra   rb   rO  r  )r(   r   re   r   Z
buf_beforeZ	buf_afterr,   r,   r-   test_respects_bbox!  s    
 
r  c                  C   s   t  \} }|td}tjjdgdgd}||dksBJ tjjdgdgd}||dkshJ tj}||dksJ d S )	Nr   r   Tr  r   Fz[0]z[nan])	r    r$   r%   r!   r8   r  r  r   r  )r(   re   r   r   r,   r,   r-   test_image_cursor_formatting3  s    r  c           
      C   s   t dd}t ||\}}t d|d d  |d  }||  }tjd }|  }|j|||dd	 | }|t	
 |}	||	d
< |j|	dd dS )zPer-pixel alpha channel test.r   r0   ro  r   r1   g[(\?re  r   )r   r   r   ).rW   r   N)r!   r5  rr  rs  maxr  r  r  r%   r   r2  )
rt   ru   rZ   xxyyzzr   r   re   r  r,   r,   r-   test_image_array_alphaB  s    
r  c                   C   sJ   t jtdd( tjtdddgd W d    n1 s<0    Y  d S )Nzalpha must be a float, two-drX  rP   r0   )r   )r   r   r   r    r%   r!   r8   r,   r,   r,   r-   !test_image_array_alpha_validationU  s    r  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sJ d S )NZautumn_rZ	lightgrey)color)gffffff?r  r   rQ   rl   )rW   rW   rW   r   r   r   r   +   O   _   B   r0   rW   rW   rW   r   r   r   "   r4   r   r   )rh  r   rg  rf  r  r0   ri   rH   )r   r  r  	set_underr    rX   r   r!   rK   r@  r%   r  r   r'  r  r(  r   r   Tr  r   rq   r  )r   r(   re   r   r   Z
from_imageZdirect_computationr,   r,   r-   test_exact_vminZ  s"    

$r  c                       s@   e Zd Zdd Zdd Z fddZdd Zed	d
 Z  Z	S )
QuantityNDc                 C   s   t || }||_|S r0  )r!   r  viewunits)clsZinput_arrayr  objr,   r,   r-   __new__|  s    zQuantityND.__new__c                 C   s   t |dd | _d S Nr  )getattrr  )selfr  r,   r,   r-   __array_finalize__  s    zQuantityND.__array_finalize__c                    s<   t | dd }tt| |}t|ts.|d ur8t||}|S r  )r  superr  __getitem__
isinstance)r  itemr  ret	__class__r,   r-   r    s
    
zQuantityND.__getitem__c                 O   sv  t ||}d|v rtS t|dkrP|d }t |dd}|t|fi |}nt|dkrN|d }|d }	t |dd}
t |	dd}|
d u r|n|
}
|d u r|
n|}|tjtjfv r|
|krt|
}nb|tjkr|
 d| }nH|tj	kr|
 d| d	}n,|tj
tjtjtjtjtjfv r&d }ntS ||tj|	tjfi |}ntS |d u rht|}n
t||}|S )
Nr  r0   r   r  Zdimensionlessr1   *z/())r  NotImplementedrA  r!   r  addsubtractr^  multiplydivideZgreaterZgreater_equalequal	not_equallessZ
less_equalr  ndarrayrK   r  )r  Zufuncmethodinputsr  funcZi0unitZout_arri1Zu0u1r,   r,   r-   __array_ufunc__  sD    



$

zQuantityND.__array_ufunc__c                 C   s   |  tjS r0  )r  r!   r  )r  r,   r,   r-   r     s    zQuantityND.v)
__name__
__module____qualname__r  r  r  r  propertyr   __classcell__r,   r,   r  r-   r  {  s   'r  c                  C   s   t ddgd} | d d  \}}t| jtddgks<J | jdksJJ t|| jtdgksjJ || jdks|J || jdksJ tt |t dd  W d    n1 s0    Y  d S )Nr0   r1   mr   zm*mzm/(m)r  )	r  r!   r  r   r  r  r   r   r^  )qq0q1r,   r,   r-   test_quantitynd  s     r  c                  C   s4   t tdd} t \}}||  |j  d S )NrP   r  )r  r!   r9   r    r$   r%   r   r'  )r   r(   re   r,   r,   r-   test_imshow_quantitynd  s    
r  c                 C   s.  t jddt jd}d|ddd d f< t jj|dd}d	|jddddf< tjd
 jdd}| 	 }|j
|tjddddd|d}|tjddd |j
|tjddddd|d}|tjddd |jddd |	 }|j
|tjddddd|d |j
|tjddddd|d |jddd d S )Nr3   r0   r4   rW   r   r1   Fr  Tre  wr  r   r  r   r   )r   r   r   r   rn  )r   ri   r   ri   r   ri   r  )r!   r  r  r  rK   r  r  r  r  r$   r%   r   r   r1  r2  r  )rt   ru   r   Zmasked_datar   re   r   r,   r,   r-   test_norm_change  s.    r  rZ   c                 C   s   t jd|t jd}d|ddd d f< |  }|j|tjd| ddd	d
 t jd|t jd}d|ddd d f< | }tj	d	 j
dd}|j|tjd| dd|d
 d S )Nr3   r4   g@xDr   r1   r0   r  r   re  )r   r   r   i  r  r  )r!   r  r  r$   r%   r   r   r  r  r  r  r2  )rt   ru   rZ   r   re   r   r,   r,   r-   test_huge_range_log  s    r  c           	   
   C   sB  |  dd}| dd}ddgddggddgddggddgddggf}g d}tt||D ]\}\}}|| | || | || | || j|ddddddd	 || d
d || dd
 || j	  || j
d || jd || jtjdg ddd || jtjdg ddd q\d S )Nr0   r   r   )r9   r8   mixedr   r  r   ZGreys)r   rh  rV   r   rg  rf  r+  rm  g?r  r   )r0   r1   r   ri   T)ZnbinsZstepsinteger)r$   	enumerater  r&   Zspyr%   rx   ry   ZxaxisZtick_toptitleZset_yZset_ticks_positionZset_major_locatormtickerZMaxNLocatorZyaxis)	rt   ru   ax_testax_refZ	plot_dataZplot_titlesr8  r\   r  r,   r,   r-   test_spy_box  s4    

r  znonuniform_and_pcolor.pngc                  C   s   t jddjdddd} t| ddgD ]L\}}t||d}|tdd	 tdd	 td
d |	| q&| d	 
tdd	 tdd	 td
d | D ]}|  |jdd qd S )Nr  r   r   T)sharexshareyr   r   r   r1   r   r2   r  )r  )r    rX   r$   r  r   r   r!   r"   r#   Z	add_imageZ
pcolorfastr  r  )r   re   r   r   r,   r,   r-   test_nonuniform_and_pcolor  s    &r!  zrgba_antialias.png)r   r/   c                  C   s  t jddddddd\} }d}t||f}d|d d dd d f< t|| d }t|| d }t||\}}t|d |d  }d	}	d
}
ttjd |	| |
|d  d   }d|d t	|d d d f |d t	|d d d f dk < d|d t	|d d d f |d t	|d d d f dk < |d d t	|d d f |d d t	|d d f< tj
|ddddf< d|ddddf< d|ddddf< d|ddddf< d|ddddf< tt jj}|d |d | }|d j|d|ddd |d |d d |d d g |d |d d |d d	 g |d j|d|ddd |d j|dd |ddd! |d" j|dd#|ddd! d S )$Nr1   )      @r"  FT)rR   r  r   Zconstrained_layout   rW   r   ri   K   r#  r0   r  r   rT   g    .AF   Z   g    .rq        yellowcyanr   r   g333333r  )r   r   rg  rf     rm   r   )r   Zinterpolation_stager   rg  rf  r   r  )r    r$   r!   r9   r"   rr  sqrtrY   rt  rq   NaNr   r  ZRdBu_rZset_overr  r7  r%   rx   ry   )r(   r   r  ZaarZ   r[   r'   rv  RZf0r   r  r   r,   r,   r-   test_rgba_antialias-  sF    
(<<4

""r/  z<ignore:Data with more than .* cannot be accurately displayedrV   r   rU   zdim, size, msg)rowi   z2\*\*23 columns)coli   z2\*\*24 rows)rO   c           
   	   C   s   |   }|  }td|d f}d|d d |jd d f< |dkrJ|j}|j|ddddd|d}	tjtd	| d
d | j	
  W d    n1 s0    Y  td}d|d d df< |dkr|j}|j|ddddd|d}	d S )Nr0   r1   r1  r   r   r  r7   )rg  rf  rh  r   r   rV   zData with more than z  cannot be accurately displayed.rX  r  )r$   r!   r8   sizer  r%   r   r  r  r   r'  )
rt   ru   dimr2  msgrV   r  r  rK   r   r,   r,   r-   test_large_imagef  s0    

(
r5  c                 C   sp  t jddd d }| dd}|d j|dd |d j|dd	d
 |d j|dd |d j|dddd |d j|dddd |dd}|d j|t d |d j|tjd	dd |d j|tjddd |d j|tjddddd |d j|ddd t|d j	d j
tjks.J tt" |d j|dd W d    n1 sb0    Y  d S )Nri   g?r  r0   r   r   ri  r  r  )r   rg  r1   Zsymlogr   r  r%  )r   rg  rf  r2   Zlogit)rg  )	linthresh)r6  rg  rf  )r  r%  )r   ZclimZfoobar)r!   rn   rp   r$   r%   r   r   r  typeZimagesr   r   r   r^  )rt   ru   r  ZaxtsZaxrsr,   r,   r-   test_str_norms  s      r8  )
contextlibr   r   r`   r   pathlibr   r[  rZ  Zurllib.requestr_  numpyr!   Znumpy.testingr   ZPILr   Z
matplotlibr  r   r   r  r	   r
   r    r   r   Zmatplotlib.imager   r   r   r   r   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.transformsr   r   r   Zmatplotlib.tickerZtickerr  r   r.   r<   rL   markZparametrizer^   rg   rw   rz   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r"  r)  r,  r/  r3  r9  rB  rH  rI  r"   r#   rL  rU  rd  rj  r|  r}  r  r  r  r  r  machiner  r  splitr  r  r  r  r2  r   r  r  r  r  r  r  r  r  r  r  r  r  contextr  r  r  r  r  r  r  r  r!  r/  filterwarningsr5  r8  r,   r,   r,   r-   <module>   s   


	




"



G

	






	







		
	!


!


!






	


 <	



 

7


