o
    *wi                     @   sL	  d dl mZ d dlmZ d dl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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gdd%d& Z5d'd( Z6d)d* Z7e,j/0d+g d,d-d. Z8d/d0 Z9e,j/0d1d2d3gd4d5 Z:e,j/0d+g d6d7d8 Z;d9d: Z<d;d< Z=d=d> Z>e$d?gddd@dA Z?ej@dBe#dgddCdD ZAdEdF ZBe,j/0dGdHdHgd gdHdIgdJgdKdHgdLgdMdHgdLgdNdOgdPgdQdHgdgdHdQgdggdRdS ZCe,j/0dTdUdVggdWfdXdYggdZfejDdJd[ggd\fdJd]ggd^fdQdQggd_fd d ggd`fgdadb ZEe$dcgdBdddedf ZFe$dggdBdddhdi ZGe#dgddjdk ZHdldm ZIdndo ZJe$dpgdddqdr ZKe$dsgdddgdtdudv ZLdwdx ZMe$dygddBdzd{d| ZNe$d}gddd~d ZOe#dgddd ZPe$dgddgddBddd ZQe$dgddBdzdd ZRdd ZSe$dgddBdzdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZe,j/0de e[de[de[d\dfe!e[de[de[d\dfgdd Z]dd Z^dd Z_e$dgdddd Z`e$dgdddd Zadd Zbdd Zce$dgddddd Zde$dgdddd Zedd Zfe$dgdddd Zge$dgeh dkrd ndddBdddÄ Ziddń Zje,j/0dddȄ dɠk D dd˄ Zle$dgddBdzdd΄ Zme$dgddBdzddф Zne$dgddBdzddԄ Zoe,j/0dejpejqddׄ ddׄ gddڄ Zrdd܄ Zsddބ Ztdd Zudd Zve,j/0dddge,j/0dddgdd Zwdd Zxdd Zydd Zzdd Z{e# dd Z|dd Z}ej@dBdd Z~e$dgddgddBddd ZG dd dejZdd Zd d Ze#dgddd Ze,j/0ddQdJge#dgddd Ze#dgddd Ze$d	gdBddd
d Ze$dgdBdddd Ze$dgdBddddd Ze#dddd Ze#dddd Zdd Ze,j/de,j/0d1d2d3ge,j/0dg dg dge#dddd  Ze#dgdd!d" Zd#d$ Zd%d& Zd'd( Ze$d)gdBdd*dd+d, Ze$d-gdBdd*dd.d/ Ze$d0gdBdd1d2d3 Ze,j/0dƐd4e,j/0d5d6d7d8 Ze,j/0d9d:e# 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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   dtype.   noneinterpolationbilinearN)pltsubplotsnpzerosonestriluint8imshow)figaxlaxrimg r2   X/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/matplotlib/tests/test_image.pytest_alpha_interp   s   
r4   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   )rA   c   G   r   r   r   r"   r#   zinterpolation nonenearestzinterpolation nearestN)r   r(   arrayr,   r&   r'   r-   	set_title)Xr.   ax1ax2r2   r2   r3   test_interp_nearest_vs_none(   s   
rJ   suppressCompositeFfigimagepng)r8   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r   r   d   figsizedpig      Y@r      2   r   r   lower)xoyoorigin)r&   figurerK   r(   ix_arangesinrL   )rK   r.   xyzcr1   r2   r2   r3   test_figimage:   s   $$$*rb   c                  C   sD   t  \} }|g d t }| | |d t | d S )N)r   r   r!   r   )r&   r'   plotioBytesIOsavefigseekimread)r.   axbufferr2   r2   r3   test_image_python_ioJ   s   

rk   z!img_size, fig_size, interpolation))r   r   hanning)r   r   rD   )r   
   rD   )r!   333333@rl   )r!   g333333"@rD   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,r9   r   r   r   r   autor#   )r(   randomseedr&   r   randintset_size_inchesr'   set_positionr-   )	fig_testfig_refimg_sizefig_sizer$   rR   Ar.   ri   r2   r2   r3   test_imshow_antialiasedS   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 )
Nro   r9   r!   rn   rq   r#   rm   rS   rD   )r(   rr   rs   r&   r   rt   ru   rv   r'   r-   set_xlimset_ylim)rx   ry   rR   r|   r.   ri   r2   r2   r3   test_imshow_zoomk   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default%baseline_images/pngsuite/basn3p04.png%baseline_images/test_image/uint16.tifr   r   r   )r   user   __file__parentr'   r-   r   openr&   rh   )rx   ry   png_path	tiff_pathaxsr2   r2   r3   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&   rh   ospathjoindirnamer   r   r(   uint16sumr1   r2   r2   r3   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&   rh   r   r   r   r   r(   r   r   r   r2   r2   r3   test_imread_fspath   s
   r   fmt)rM   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   r   i@  r   )formatrR   rO   r   r   r!   )r(   rr   rs   rt   rd   re   r&   imsaverg   rh   shaper   )r   	has_alphadata	buff_dpi1buff_dpi100arr_dpi1
arr_dpi100r2   r2   r3   test_imsave   s   	

r   c                  C   sl   ddgddgddgg} t  }tj|| dd |d	 t|}tt| |d d d d d d
f  d S )N)      ?        r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   rM   r   r   r!   )	rd   re   r&   r   rg   rh   r   r(   rE   )img_databuffread_imgr2   r2   r3   test_imsave_python_sequences   s   

r   rX   upperrU   c                 C   s,   t  }tjddd}tj||d| d d S )N)rm   rm   r   r,   r   rM   )arrr   rX   )rd   re   r(   r)   mimager   )rX   bufresultr2   r2   r3   test_imsave_rgba_origin   s   r   )rM   r6   psepsr7   c                 C   s&   t jttjtddgg| d d S )Nr   r   r   )r&   r   r   r   devnullr(   rE   )r   r2   r2   r3   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 )Nr   )rU   r      r   rM   )rX   r   r   rA   r,   rU   rY   )r(   rr   rs   rt   rd   re   r&   r   rg   rh   astyper   )rX   r   r   arr_bufr2   r2   r3   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testr   r   r!   rM   pnginfor   
pil_kwargs)
PIL.PngImagePluginr   rd   re   add_textr&   r   r   r   info)r   r   r   imr2   r2   r3   test_imsave_pil_kwargs_png   s   
r   c                     s   ddl m  t } ddi}tj| ddgddggd|d	 t|dks%J t| } fd
d|j	
 D }|d dks>J d S )Nr   )TAGS_V2descriptionz
test imager   r   r!   r   r   c                    s   i | ]
\}} | j |qS r2   )name).0kvTAGSr2   r3   
<dictcomp>	      z/test_imsave_pil_kwargs_tiff.<locals>.<dictcomp>ImageDescription)PIL.TiffTagsr   rd   re   r&   r   lenr   r   tag_v2items)r   r   r   tagsr2   r   r3   test_imsave_pil_kwargs_tiff  s   
r   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   r!   r   r"   )alphar$         ?rD   )r(   rr   rs   rt   r&   r'   r-   )Zr.   rH   rI   ax3r2   r2   r3   test_image_alpha  s   r   mpl20c           
      C   sL  t jd t jddd}t |d }| dd\\}}\}}|j|dd |j|dd |j|dd |j|dd t j|t d	fdd
}t j|t 	d	dt jfdd
}	|dd\\}}\}}d|d d d d df< || d|d d d d df< || d|	d d d d df< ||	 d|	d d d d df< ||	 d S )Nro   r   r!   rA   r   r   r         ?)r   r   r   axisr@      )
r(   rr   rs   rt   r,   r'   r-   concatenater*   full)
rx   ry   rgbfrgbuax0rH   rI   r   rgbafrgbaur2   r2   r3   test_imshow_alpha  s&   


r   c            
      C   sp  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sJ 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 sJ t dd}	|jtddd|	|j d}d\}}|j	||g\}}| d|j
||}||d	ks6J d S )Nr   
MouseEventrO   rm   r   )rX   r   r   motion_notify_event,   )g333333$@r   rU   )r   r   r   r   extent)      ?r   7   )r   r   ){Gz?g{Gzr   r   	transform)r!   rm   )matplotlib.backend_basesr   r&   r'   r-   r(   r\   reshape	transDatar   canvasget_cursor_dataclearr   scalerotate)
r   r.   ri   r   r^   r_   xdispydispeventtransr2   r2   r3   test_cursor_data2  sN   
 r  zxy, datar         ?r   g      @r   g      !@g      #@g      @U   rY   c                 C   s  ddl m} tg d}tg d}|tjd d f d |d d tjf d  }t \}}t|| |	 | |	 fd}|
||| || || d |	  || d |	  |j| \}	}
|d|j|	|
}|||ksJ |||fd S )Nr   r   )r   r   r   	   r   )r   r   r   r!   r   r   r   r   )r   r   r(   rE   newaxisr&   r'   r   minmaxset_data	add_imager~   r   r   r   r   r   )xyr   r   r^   r_   r`   r.   ri   r   r   r  r  r2   r2   r3   test_cursor_data_nonuniformy  s   ,$
$r  z
data, texti'  i'  z[10001.000]grh|?g/$?z[0.123]r   []g     ?z[1.0000000000000000]z[-1.0]z[0.00]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.   ri   r   r   r  r  r2   r2   r3   test_format_cursor_data  s   

r  
image_clip)r   c                  C   sF   ddgddgg} t  \}}|| }tjdd|jd}|| d S )Nr   r   r!   r   r   r   )radiusr   )r&   r'   r-   r
   Circler   set_clip_path)dr.   ri   r   patchr2   r2   r3   test_image_clip  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 )	Nr   r   r!   r   r   r   r   r   r   r   r   )r  widthheightr   )r&   r'   r-   r
   	Rectangleaxesr   r  )r.   ri   r  r   rectr2   r2   r3   test_image_cliprect  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 )NrO   )rm   rm   r   r   r%   )r   r   r   r   )r$   r   r!   )r(   r\   r   r'   r-   r~   r   )rx   ry   r   ri   r2   r2   r3   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   )rm   rm   r   	r&   r'   r(   r\   r   pytestraises	TypeErrorr-   r.   ri   r   r2   r2   r3   test_imshow_10_10_2  
   "r,  c                  C   r%  )Ni  )rm   rm   r   r'  r+  r2   r2   r3   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 )
Nr   r   rO   )r   rT   rU   r"   )rX   r$   r   r#   )r&   r'   r-   r(   r\   r   )r.   r   r2   r2   r3   test_no_interpolation_origin  s
   "r0  image_shift)r   r8   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 )r   r2   )r   r^   r_   r2   r3   
<listcomp>  r   z/test_image_shift.<locals>.<listcomp>.<listcomp>r   rO   )range)r   r2   r2  r3   r3    s   $ z$test_image_shift.<locals>.<listcomp>r   rO   gMk&Agk&Ar"   )normr$   r   rq   )r4  r&   r'   r-   r   LogNorm
set_aspect)imgDatatMintMaxr.   ri   r2   r2   r3   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 )Nr   rQ   rp   F)frameon      rS   r  r   rm   rA  rm   r"   gray)rX   r   r$   cmapr   )r   r   r   )	facecolorr   rY   rO   z.Expected a non-green edge - but sadly, it was.)r&   rZ   add_axesr(   tiler\   r   r-   r~   r   
set_xticks
set_yticksrd   re   rf   rg   rh   r   )r.   ri   r   r   r^   r_   r   rgbar2   r2   r3   test_image_edges  s$   



rM  image_composite_background)r   r   c                  C   s^   t  \} }tddd}|j|g dd |j|g dd |d |ddg d S )	Nr>  r   r!   )r   r   r?  r   r   )r   r   r?  r   )r   r   r   r   r   )r&   r'   r(   r\   r   r-   set_facecolorr~   r+  r2   r2   r3   test_image_composite_background  s   
rP  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.
    )      r   r   Nr   皙?皙?rY   r!   )rS  rR  r   )r   r   r   r   333333?)r   r   )r   r!   r   r   333333?)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  r-   rO  r~   r   )r.   ri   r   arr2r2   r2   r3   test_image_composite_alpha  s.   
$
$
rY  c                 C   sp   t dd}| |fD ]&}| }|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   r   )r   r   )	clip_path)r  r   r   )r   r   T)
r(   r\   r   add_subplotr-   mplr   r   r   rK   )rx   ry   tr.   ri   r2   r2   r3   #test_clip_path_disables_compositing6  s   

ra  rasterize_10dpi)r8   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 qMdtd< d S )Nr   r   r!   r   )r!   r   r<  r   g      4@T)	linewidth
rasterizedr[  )rY   r   xlimylim)rc  Frm   r9   )r(   asarrayr&   r'   r-   rc   setrG  rH  spinesset_visibler   )r1   r.   r   ri   r2   r2   r3   test_rasterize_dpiB  s   	

rl  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dd}|	|  |
d || d S )NrO   rm   rm   r   rD   r#   Frm   rU  皙?rV  r   )r(   r\   r   r&   r'   r   r   r   r   r  set_clip_onr~   r   
add_artistidentity
get_figuretransFigure)r	   r.   ri   bbox_imr2   r2   r3   test_bbox_image_inverteda  s(   





rv  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 tjddd\}}|g d |d
d |d	d
 |j| g dd|jd}|j	  |jj
}||}t| ddgddgg d S )N)r   r   r   r   )rU  g?r   皙?)rW  rV  r   ro  )ffffff??rw  rW  rn  rO   rP   rp   r   r   )rw  rx  ro  ry  rD   )r   r$   i  r&  i  i  r   )r   r$   r   )r(   rE   r&   r'   rw   r~   r   r-   r   drawrendererget_window_extentr   
get_points	transAxes)r   r.   ri   im_objr{  im_bboxr2   r2   r3   $test_get_window_extent_for_AxisImagez  s4   





r  zzoom_and_clip_upper_origin.pngc                  C   sF   t d} | d} t \}}||  |dd |dd d S )NrO   rn         @      )r(   r\   r   r&   r'   r-   r   r~   )r	   r.   ri   r2   r2   r3   test_zoom_and_clip_upper_origin  s   


r  c                  C   s   t  } t| }|d d S )NBlues)r&   gcar   set_cmapri   r   r2   r2   r3   test_nonuniformimage_setcmap  s   r  c                  C   s"   t  } t| }|t   d S N)r&   r  r   set_norm	Normalizer  r2   r2   r3   test_nonuniformimage_setnorm  s   r  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 )	Nrn  r,   r   rm   r   r   rA   L)r(   r*   r4  linspacer   newputdataflattenr&   r'   r-   )imdir   r.   ri   r2   r2   r3   test_jpeg_2d  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  ,  rP   )r  r  r   r   r   r   r    redr   )rD  r   rR   r            r  )   r   r   )r&   rZ   r(   r)   floatr  rL   rd   re   rf   rg   r   r   r   	getcolorsgetpixel)r   r   r	   
num_colorscorner_pixelr2   r2   r3   test_jpeg_alpha  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>  r   r   r!   #@r  r   value changed)	r&   r  r   r(   r\   r  r   r  _Ari   r   r`   r2   r2   r3   test_axesimage_setdata     
r  c                  C   r  r  )	r&   gcfr   r(   r\   r  r   r  r  )r.   r   r`   r2   r2   r3   test_figureimage_setdata  r  r  zimage_cls,x,y,a      @      @g      (@r  g      @)r!   r   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  rY   )r&   r  r  r  _Ax_Ayr   r   )	image_clsr^   r_   rL  ri   r   r2   r2   r3   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   )ElementTreerm   r   r   )ri   r7   r   r	   r  )	xml.etreer  r(   rr   rs   rt   r&   r'   
pcolormeshcolorbarrd   re   rf   getvalueparseiter)
r  r   r.   ri   p1p2r   treer  r	   r2   r2   r3   test_minimized_rasterized  s(   

r  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/w   Y  tj|}t
| W d    d S 1 sKw   Y  d S )Nr   zfile:win32z/// zPlease open the URLmatch)r   r   r   sysplatformresolveas_posixr(  r)  
ValueErrorr&   rh   urllibrequesturlopen)r   urlfiler2   r2   r3   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 )Nrn  r   r   )r   rO   r   rO   viridisrY   rq   )r   rC  vmaxvminaspectlog)yscale)r(   r)   r&   r'   r-   ri  )r   r.   ri   r2   r2   r3   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  r   r   r  r   r"   r  rU   )r   r   T)r$   rC  rX   r   clip_on   zr--r!   )lwr   r   r   r   )r(   r\   meshgridexppir&   r'   r-   r   
rotate_degr   set_transform
get_extentrc   r~   r   )deltar^   r_   rG   YZ1Z2r   r.   rH   im1trans_data2x1x2y1y2r2   r2   r3   test_rotate_image1  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  rM   r   r   r   )	rd   re   r(   r)   r&   r   rg   rh   r   )r   r   r1   r2   r2   r3   test_image_preserve_sizeM  s   


r  c                  C   s   d} t | t}tj| | fdd}|d}|  |j|dddd t	 }|j
|d	d
 |d t|}|jdks?J tt |d d d d df tt | td d d  d S )N   F)rQ   r=  )r   r   r   r   rD   rU   rq   )r$   rX   r  r   )rR   r   )r  r  r   rY   )r(   rr  r  r&   rZ   rE  set_axis_offr-   rd   re   rf   rg   rh   r   r   rh  bool)nr   r.   ri   r   r1   r2   r2   r3   test_image_preserve_size2Y  s   


r  zmask_image_over_under.pngr   )r   tolc               	   C   sb  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 )!Ng?r  r  r   r   r  r   rm   rI  rJ  rK  overunderbad333333?r%   g      r   F)r  r  cliprU   )r  r!   r  r!   )r$   rC  r5  rX   r   zGreen=low, Red=high, Blue=badboth
horizontal)extendorientationri   r  rD   )rY   r  gɿr   ro  r   r   r  )ncolorsr  zWith BoundaryNormproportional)r  spacingr  ri   r  )r(   r\   r  r  r  r&   cmrB  with_extremesmamasked_wherer'   r-   r   r  rF   r  BoundaryNorm)r  r^   r_   rG   r  r  r  r   paletteZmr.   rH   rI   r   r2   r2   r3   test_mask_image_over_underm  s>   &*





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 )Nr   r   r   rD   r#   r   T)r&   r'   r(   r*   nanr-   r)   r  r  masked_arrayr   )r.   rH   rI   r|   r2   r2   r3   test_mask_image  s   
r  c                  C   s2   t dt j} t \}}||  |j  d S )NrN   )r(   r   r
  r&   r'   r-   r   	draw_idle)r   r.   ri   r2   r2   r3   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 )Nrm   r   r   r   rU   rD   r  )rX   r$   rC  z<f8z>f8)	r(   r\   r  hypotr&   r'   dictr-   r   )r^   rG   r  r   r.   rH   rI   kwargsr2   r2   r3   test_imshow_endianess  s   
r  imshow_masked_interpolationx86_64r   )r  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 |d t|| D ]\}}	|	| |	j||| |d |	d qcd S )Nr  rI  rK  r   r  rS   r   r   r  r  r   rY   r   g     j@)r?  r   )r?  r?  r  T)r   r?  r!   r   rq   antialiased)r5  rC  r$   off)r_  	colormapsr  r   r  r(   r\   r  r   inf
zeros_liker   r  r  r&   r'   sortedr   	_interpd_removezipravelrF   r-   r   )
rC  Nr  r   maskr.   ax_gridinterpsinterpri   r2   r2   r3    test_imshow_masked_interpolation  s&   




r%  c                   C   s   t ddgdtjgg d S )Nr   r   r!   )r&   r-   r(   r
  r2   r2   r2   r3   test_imshow_no_warn_invalid  s   r&  r   c                 C   s   g | ]}t |qS r2   )r(   r   )r   sr2   r2   r3   r3    s    r3  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  r   )rm   rm   r!   urm   r   rA   fr   )r(   r\   r   kindr&   r'   r-   	get_arrayallr   r,   )r   r   too_lowtoo_high_ri   outr2   r2   r3   $test_imshow_clips_rgb_to_valid_range  s   


r1  zimshow_flatfield.pngc                  C   s0   t  \} }|jtddd}|dd d S )Nr   rD   r#   r   r  )r&   r'   r-   r(   r*   set_climr.   ri   r   r2   r2   r3   test_imshow_flatfield  s   r4  zimshow_bignumbers.pngc                  C   sJ   dt d< t \} }tjg dg dgtjd}||}|dd d S )NrD   image.interpolation)r   r   g   mB)r!   r   r   r   r   r   )r   r&   r'   r(   rE   uint64r-   r2  r.   ri   r1   pcr2   r2   r3   test_imshow_bignumbers  s
   
r9  zimshow_bignumbers_real.pngc                  C   sD   dt d< t \} }tg dg dg}||}|dd d S )NrD   r5  )r  r   gMD)r  r   r  r   r   )r   r&   r'   r(   rE   r-   r2  r7  r2   r2   r3   test_imshow_bignumbers_real  s
   
r:  	make_normc                   C   
   t dS Nr   )r   
SymLogNormr2   r2   r2   r3   <lambda>     
 r?  c                   C   r<  r=  )r   	PowerNormr2   r2   r2   r3   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 sKw   Y  d S )Nz.Attempting to set identical low and high xlimsr  r5  )r   rC  r   )r&   r'   r(  warnsUserWarningr-   
set_extentr   rz  r)  RuntimeError
make_imageget_renderer)r;  r.   ri   r   r2   r2   r3   test_empty_imshow  s   
"rJ  c                  C   s0   t  \} }|tjdtjd | j  d S )NrZ  r   )r&   r'   r-   r(   r)   float16r   rz  r.   ri   r2   r2   r3   test_imshow_float16#  s   rM  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 )NrZ  r   equiv)r&   r'   r-   r(   r)   
longdoublecan_castfloat64r   r(  rD  rE  r   rz  rL  r2   r2   r3   test_imshow_float128*  s   "rR  c                  C   s0   t  \} }|tjddgddggtd d S )NTFr   )r&   r'   r-   r(   rE   r  rL  r2   r2   r3   test_imshow_bool3  s   $rS  c                  C   s.   t  \} }|tdtj | j  d S )Nrn  )r&   r'   r-   r(   r   r
  r   rz  rL  r2   r2   r3   test_full_invalid8  s   rT  zfmt,counted)r   s    colorimage)r7   s   <imagezcomposite_image,count)Tr   )Fr   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 )NrC  r   r   r   r   r!   r   r   r   r   r   rY   )r   r!   r   r   zimage.composite_imager   )r(   r  r\   r]   r&   r'   r~   r-   r   rd   re   rf   r  count)
r   countedcomposite_imagerV  rG   r  r   r.   ri   r   r2   r2   r3   test_composite?  s   $
rY  c                  C   sV   t  \} }|jdggdd |  |  | |   kr&dks)J  J d S )Nr   rU  r   r[  )r&   r'   r-   relim	autoscaleget_xlimget_ylimrL  r2   r2   r3   
test_relimR  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   rq   r@  rB  F)r  r   rC  r  r[  re  .r!   )r&   r'   r  r-   ri  r   rz  r(   rE   buffer_rgbar,  r3  r2   r2   r3   test_unclippedZ  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sCJ |d jdd t }| j	|dd	 |
 |
 ks`J d S )Nr   r   r   r!   rq   rU  )r  r   rgbar   rA   )rY   r   )rg  )r&   r'   r  r-   r  set_clip_boxbboxrd   re   rf   r  ri  )r.   r   ri   r   
buf_before	buf_afterr2   r2   r3   test_respects_bboxf  s   
 
rf  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!  r  Fz[0]z[nan])	r&   r'   r-   r(   r)   r  r  r  r
  )r.   ri   r   r   r2   r2   r3   test_image_cursor_formattingx  s   rh  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   r   r  r   r   g[(\?r  rD   )r   rC  r$   ).rY   r#   N)r(   r  r  r  r
  r_  r  r^  r-   r   r  )
rx   ry   r^   xxyyzzr   rC  ri   ra  r2   r2   r3   test_image_array_alpha  s   
rl  c                   C   sL   t jtdd tjtdddgd W d    d S 1 sw   Y  d S )Nzalpha must be a float, two-dr  rN   r   r   )r(  r)  r*  r&   r-   r(   r)   r2   r2   r2   r3   !test_image_array_alpha_validation  s   "rm  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scJ d S )Nautumn_r	lightgrey)color)gffffff?rU  rO   rP   rp   )rY   rY   rY   r   r   r   r   +   O   _   B   r   rY   rY   rY   r   r   r   "   r   rq   r   )r  rC  r  r  r  r   rm   rA   )r   r_  r  	set_underr&   rZ   rE  r(   rE   r  r-   r   r   rz  rH  r{  rC  r5  Tr  r   ru   r,  )rC  r.   ri   r   r   
from_imagedirect_computationr2   r2   r3   test_exact_vmin  s    

$rz  image_placementc                  C   sn   t  \} }|jg dg dddd tjd |jtjdddd	d
ddd |dd |	dd dS )zK
    The red box should line up exactly with the outside of the image.
    )r   r   r   r   r   )r   r   r   r   r   rI  rU  )rp  r  ro   r   r  rU  r"   rY   r   )rC  r   r$   r  r  grT  N)
r&   r'   rc   r(   rr   rs   r-   randnr~   r   rL  r2   r2   r3   test_image_placement  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 r  )r(   rh  viewunits)clsinput_arrayr  objr2   r2   r3   __new__  s   zQuantityND.__new__c                 C   s   t |dd | _d S Nr  )getattrr  )selfr  r2   r2   r3   __array_finalize__  s   zQuantityND.__array_finalize__c                    s8   t | dd }t |}t|ts|d urt||}|S r  )r  super__getitem__
isinstancer~  )r  itemr  ret	__class__r2   r3   r    s
   
zQuantityND.__getitem__c                 O   sp  t ||}d|v rtS t|dkr'|d }t |dd}|t|fi |}nt|dkr|d }|d }	t |dd}
t |	dd}|
d u rG|n|
}
|d u rO|
n|}|tjtjfv rb|
|kr_t|
}n0|tjkro|
 d| }n#|tj	kr}|
 d| d	}n|tj
tjtjtjtjtjfv rd }ntS ||tj|	tjfi |}ntS |d u rt|}|S t||}|S )
Nr0  r   r   r  dimensionlessr   *z/())r  NotImplementedr   r(   rh  addsubtractr  multiplydividegreatergreater_equalequal	not_equalless
less_equalr  ndarrayrE   r~  )r  ufuncmethodinputsr  funci0unitout_arri1u0u1r2   r2   r3   __array_ufunc__  sF   



$

zQuantityND.__array_ufunc__c                 C   s   |  tjS r  )r  r(   r  )r  r2   r2   r3   r     s   zQuantityND.v)
__name__
__module____qualname__r  r  r  r  propertyr   __classcell__r2   r2   r  r3   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s%J t|| jtdgks5J || jdks>J || jdksGJ tt |t dd  W d    d S 1 s_w   Y  d S )Nr   r   mr!   zm*mzm/(m)r'  )	r~  r(   r,  r   rh  r  r(  r)  r  )qq0q1r2   r2   r3   test_quantitynd  s    "r  c                  C   s4   t tdd} t \}}||  |j  d S )NrN   r  )r~  r(   r*   r&   r'   r-   r   rz  )r   r.   ri   r2   r2   r3   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 )Nr   r   r   rY   r   r   Frg  Tr  wr  r   r  r  rD   )r5  r   r$   rC  r  )r   rm   r   rm   r   rm   re  )r(   r   rQ  r  rE   r!  r_  r  r  r'   r-   r   r6  r  r  ri  )rx   ry   r   masked_datarC  ri   r   r2   r2   r3   test_norm_change   s.   r  r^   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 )Nr   r   g@xDr   r   r   r  rD   r  )r5  r$   rC  i  r  r  )r(   r   rQ  r'   r-   r   r6  r
  r_  r  r  r  )rx   ry   r^   r   ri   rC  r2   r2   r3   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 ]p\}\}}|| | || | || | || 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 )Nr   r!   r   )r*   r)   mixedrD   r  r   Greys)r$   r  rX   rC  r  r  r  r  g?r  r  )r   r   r   rm   T)nbinsstepsinteger)r'   	enumerater  rF   spyr-   r~   r   xaxistick_toptitleset_yset_ticks_positionset_major_locatormtickerMaxNLocatoryaxis)	rx   ry   ax_testax_ref	plot_dataplot_titlesr  r`   r  r2   r2   r3   test_spy_boxP  s6   

r  znonuniform_and_pcolor.pngc                  C   s   t jddjdddd} t| ddgD ]&\}}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 qUd S )NrZ  r<  r!   T)sharexshareyrD   r%   r#   r   r  r   r  )rf  )r&   rZ   r'   r  r   r  r(   r\   r   r  
pcolorfastr  ri  )r   ri   r$   r   r2   r2   r3   test_nonuniform_and_pcolorq  s   &r  znonuniform_logscale.pngc                  C   s   t jddd\} }tdD ]]}|| }t|}|tddd tddd tdd |dd |	dd |
d |dkrS|jd	dd
 |jd	dd
 |dkre|jd	dd
 |jd	dd
 || qd S )Nr!   r   )ncolsnrowsr   r   r  rZ  r   r  )base)r&   r'   r4  r   r  r(   r\   r   r~   r   set_box_aspect
set_xscale
set_yscaler  )r/  r   r  ri   r   r2   r2   r3   test_nonuniform_logscale  s$    
r  zrgba_antialias.pngg{Gz?)r   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 )$Nr   )      @r  FT)rQ   r  r  constrained_layout   rY   r   rm   K   rw  r   rV  rS   rT   g    .AF   Z   g    .r        yellowcyanr   rD   g333333r  )r$   rC  r  r     rq   r   )r$   interpolation_stagerC  r  r  r!   ra  )r&   r'   r(   r*   r\   r  sqrtr]   r  ru   r
  r   r  RdBu_rset_overrv  r  r-   r~   r   )r.   r   r   aar^   r_   rG   r  Rf0r   rL  rC  r2   r2   r3   test_rgba_antialias  sF   
(<<4

""
r  )rM   c                 C   sR   t jd t jdd}| }|j|dddd |  }|j|dddd dS )	z[
    Show that interpolation_stage='auto' gives the same as 'data'
    for upsampling.
    *N,r   r%   r  r   r$   rC  r  rq   Nr(   rr   rs   rt   r'   r-   rx   ry   gridri   r2   r2   r3   !test_upsample_interpolation_stage  s   


r  c                 C   sR   t jd t jdd}| }|j|dddd |  }|j|dddd dS )z]
    Show that interpolation_stage='auto' gives the same as 'rgba'
    for downsampling.
    ro   i  rq   r  ra  r  Nr  r  r2   r2   r3   #test_downsample_interpolation_stage  s   


r  c               	   C   s   dD ]'} t d| i tddgg | ksJ W d    n1 s$w   Y  qdD ]} tt | t jd< W d    n1 sCw   Y  q,d S )Nr   ra  zimage.interpolation_stager   r   )DATAfooN)	r_  
rc_contextr&   r-   get_interpolation_stager(  r)  r  r   )valr2   r2   r3   test_rc_interpolation_stage  s   r  z<ignore:Data with more than .* cannot be accurately displayedzdim, size, msg)rowi   z2\*\*23 columns)coli   z2\*\*24 rowsc           
   	   C   s   |   }|  }td|d f}d|d d |jd d f< |dkr%|j}|j|ddddd|d}	tjtd	| d
d | j	
  W d    n1 sLw   Y  td}d|d d df< |dkre|j}|j|ddddd|d}	d S )Nr   r   r  r   rq   rU  r"   )r  r  r  r   r$   rX   zData with more than z  cannot be accurately displayed.r  r]  )r'   r(   r)   sizerw  r-   r(  rD  rE  r   rz  )
rx   ry   dimr  msgrX   r  r  rE   r   r2   r2   r3   test_large_image  s2   



r  c                 C   sn  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u sJ tt |d j|dd W d    d S 1 sw   Y  d S )Nrm   g?rU  r   r   r   r  rB  ro  )r5  r  r   symlogr!   rV  rx  )r5  r  r  r   logit)r  )	linthresh)r  r  r  )rV  rx  )r5  climfoobar)r(   rr   rt   r'   r-   r   r6  r>  typeimagesr5  r(  r)  r  )rx   ry   r`  axtsaxrsr2   r2   r3   test_str_norms$  s"   "r  c                  C   sH  t jtjjt d} tjtdd | t	
dd  W d    n1 s$w   Y  tjtdd | t	
dt	
d W d    n1 sFw   Y  tjtdd | t	
dt	
d W d    n1 shw   Y  tjtdd | t	
dt	
d W d    n1 sw   Y  tjtd	d | t	
dt	
d W d    n1 sw   Y  tjtd
d | t	
dt	jt	
d W d    n1 sw   Y  tjtdd | t	
dt	
dj W d    n1 sw   Y  t	
d}d|j_tjtdd | t	
d| W d    d S 1 sw   Y  d S )Nr   zincompatible function argumentsr  )r  r  zdifferent dimensionalities)r  r  r   z3D input array must be RGBA)r  r  r!   z3D output array must be RGBAzmismatched typeszmust be C-contiguousFzOutput array must be writeable)	functoolspartialr_  _imageresampler   r(  r)  r*  r(   r)   r  r,   rw  flags	writeable)r  r0  r2   r2   r3   test__resample_valid_output:  s6   
$r  c                  C   s   t  } t| }tjtdd |  W d    n1 sw   Y  tjdt	d
d}|| | dks:J | | ksDJ d S )Nz"You must first set the image arrayr  r>  r   r  )r&   r  r   r(  r)  rG  	get_shaper(   r\   r  r   r  get_sizer  r2   r2   r3   test_axesimage_get_shapeQ  s   

r  c                  C   s   t   } tdd}| j|| jd |  dksJ | j|t	 
d| j d |  dks4J | j|| jdd |  dksEJ d S )Nr   rN   r   rq   r   r   )r   r  )r&   rZ   r^  r(   r\   r   r-   r~  
get_aspectr   r   r   r  r2   r2   r3   .test_non_transdata_image_does_not_touch_aspect]  s   r  zdownsampling.pngg
ףp=
?c                  C   s  d} t | |  d }t | |  d }t | | f}d|d d dd d f< 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d\}
}|d j
|	dddd |d dd |d dd |d d t|jdd  g dg dD ]\}}}|j
|	||dd |d| d| d qd S )Ni  r   rY   r   r   rO   rw  r   rV  r!   )r  r   
compressedrQ   layoutr  rD   ra  r  )r$   r  rC  }   r  r  r&  Zoom)rD   rD   rl   rl   rq   )r   ra  r   ra  rq   zinterpolation='z	'
space='')r(   r\   r*   r  r  r]   r  ru   r&   r'   r-   r~   r   rF   r  flat)r   r^   r_   r  rG   r  r  r  r   rL  r.   r   ri   r$  spacer2   r2   r3   test_downsamplingh  s:   (<<4
r   zdownsampling_speckle.pngc                  C   s   t jddddddd\} }| }tdddtd	 d
 j}t d}|	d t
jddd}|d d |d jt|||dd |d d |d jt|||d d S )Nr   r   )r   g@Tr  )rQ   r  r  r  i   rY   i  rT   r  r  r!   rR  r  r   z"interpolation='auto', stage='rgba'ra  )rC  r5  r  z"interpolation='auto', stage='auto')rC  r5  )r&   r'   r  r(   r\   r   r*   rw  get_cmapr  r   r6  rF   r-   triu)r.   r   r1   r  r5  r2   r2   r3   test_downsampling_speckle  s   
"

r#  zupsampling.png)r   r   c                  C   s   t jd t jdd} tjddddd\}}|d j| d	d
}|d d |d j| d	dd |d d |d j| d	ddd |d d |j||ddd d S )Nr  r   r   r!   )g      @r!   r  r  r   r  )rC  zAinterpolation='auto'
stage='antialaised'
(default for upsampling)sinc)rC  r$   z:interpolation='sinc'
stage='auto'
(default for upsampling)r   ra  )rC  r$   r  z!interpolation='sinc'
stage='rgba'rx  r  )ri   shrinkr  )	r(   rr   rs   rt   r&   r'   r-   rF   r  )rL  r.   r   r   r2   r2   r3   test_upsampling  s   r&  )rQ  float32int16r   int8r,   ndim)r   r!   c                 C   s`   t jd}|dkrdnd}|j|dt j| dd}t \}}||}|	d d  d S )	NiU  r   rN   )r   r   r!   )r  Tr   r   )
r(   rr   default_rnguniformr   r   r&   r'   r-   rH  )r   r*  rngr   r   r.   ri   
axes_imager2   r2   r3   test_resample_dtypes  s   
r/  
intp_stager  c              	   C   s  |  dd}| dd}d\}}d}tj||}tj||d}	t||df}
tj|	|||dffdd}|d d |	 |d d tj|	|
fdd |d d j|	||d	 |d d jtj|	||
 fdd|d
 |d d j|	||d	 |d d j||d
 |d d | |d d j|	|d |d d j|||d	 |d d jtj|	||||df fdd|d
 tj||}|d d j|||d	 |d d jtj|	|||dffdd|d
 d S )Nr   r!   rZ  r   r   rY   r   r   )r  r   )r  r   )r'   r(   rr   rt   r*   r   r   r-   )rx   ry   r0  axs_tstaxs_refnynxscalar_alphaarray_alphaim_rgbim_concat_default_aim_rgbanew_array_alphar2   r2   r3   2test_interpolation_stage_rgba_respects_alpha_param  sL    
r;  )
contextlibr   r   r  rd   r   pathlibr   r  r  urllib.requestr  numpyr(   numpy.testingr   PILr   
matplotlibr_  r   r	   r   r
   r   r&   r   r   matplotlib.imager   r   r   r   r   matplotlib.testing.decoratorsr   r   matplotlib.transformsr   r   r   matplotlib.tickertickerr  r(  r4   rJ   markparametrizerb   rk   r}   r   r   r   r   r   r   r   r   r   r   r   r   contextr   r  r  r
  r  r  r#  r$  r,  r.  r0  r;  rM  rP  rY  ra  rl  rv  r  r  r  r  r  r  r  r  r\   r   r  r  r  r  r  r  r  r  r  r  r  machiner%  r&  splitr1  r4  r9  r:  r  r6  rJ  rM  rR  rS  rT  rY  r^  r`  rf  rh  rl  rm  rz  r}  r  r~  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r  r  r   r#  r&  r/  r;  r2   r2   r2   r3   <module>   s    

	





"





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





"






	



<
	

 
5


!
