o
    Ďi                     @   sP	  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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/ Z8d0d1 Z9e,j/0d2d3d4gd5d6 Z:e,j/0d,g d7d8d9 Z;d:d; Z<d<d= Z=d>d? Z>e$d@gdddAdB Z?ej@dCe#dgddDdE ZAdFdG ZBe,j/0dHdIdIgd gdIdJgdKgdLdIgdMgdNdIgdMgdOdPgdQgdRdIgdgdIdRgdggdSdT ZCe,j/0dUdVdWggdXfdYdZggd[fejDdKd\ggd]fdKd^ggd_fdRdRggd`fd d ggdafgdbdc ZEe$ddgdCdedfdg ZFe$dhgdCdedidj ZGe#dgddkdl ZHdmdn ZIdodp ZJe$dqgdddrds ZKe$dtgdddgdudvdw ZLdxdy ZMe$dzgddCd{d|d} ZNe$d~gdddd ZOe#dgddd ZPe$dgddgddCddd ZQe$dgddCd{dd ZRdd ZSe$dgddCd{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dCdddĄ ZiddƄ Zje,j/0dddɄ dʠk D dd̄ Zle$dgddCd{ddτ Zme$dgddCd{dd҄ Zne$dgddCd{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@dCdd Z~e$dgddgddCddd ZG dd dejZdd  Zdd Ze#dgddd Ze,j/0ddRdKge#dgddd Ze#dgddd	 Ze$d
gdCdedd Ze$dgdCdedd Ze$dgdCddddd Ze#dddd Ze#dddd Zdd Ze,j/de,j/0d2d3d4g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dCdd+dd,d- Ze$d.gdCdd+dd/d0 Ze$d1gdCdd2d3d4 Ze,j/0dǐd5e,j/0d6d7d8d9 Ze,j/0d: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   W/home/jeff/fluffinator/venv/lib/python3.10/site-packages/matplotlib/tests/test_image.pytest_alpha_interp   s   
r4   interp_nearest_vs_noneg@pdfsvg)tol
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   )rB   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   
rK   suppressCompositeFfigimagepng)r9   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&   figurerL   r(   ix_arangesinrM   )rL   r.   xyzcr1   r2   r2   r3   test_figimage:   s   $$$*rc   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   

rl   z!img_size, fig_size, interpolation))r   r   hanning)r   r   rE   )r   
   rE   )r!   333333@rm   )r!   g333333"@rE   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   r   r   autor#   )r(   randomseedr&   r   randintset_size_inchesr'   set_positionr-   )	fig_testfig_refimg_sizefig_sizer$   rS   Ar.   rj   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 )
Nrp   r:   r!   ro   rr   r#   rn   rT   rE   )r(   rs   rt   r&   r   ru   rv   rw   r'   r-   set_xlimset_ylim)ry   rz   rS   r}   r.   rj   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&   ri   )ry   rz   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&   ri   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&   ri   r   r   r   r   r(   r   r   r   r2   r2   r3   test_imread_fspath   s
   r   fmt)rN   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   )formatrS   rP   r   r   r!   )r(   rs   rt   ru   re   rf   r&   imsaverh   ri   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   rN   r   r   r!   )	re   rf   r&   r   rh   ri   r   r(   rF   )img_databuffread_imgr2   r2   r3   test_imsave_python_sequences   s   

r   rY   upperrV   c                 C   s,   t  }tjddd}tj||d| d d S )N)rn   rn   r   r,   r   rN   )arrr   rY   )re   rf   r(   r)   mimager   )rY   bufresultr2   r2   r3   test_imsave_rgba_origin   s   r   )rN   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(   rF   )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   )rV   r      r   rN   )rY   r   r   rB   r,   rV   rZ   )r(   rs   rt   ru   re   rf   r&   r   rh   ri   astyper   )rY   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!   rN   pnginfor   
pil_kwargs)
PIL.PngImagePluginr   re   rf   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   re   rf   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$         ?rE   )r(   rs   rt   ru   r&   r'   r-   )Zr.   rI   rJ   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 )Nrp   r   r!   rB   r   r   r         ?)r   r   r   axisrA      )
r(   rs   rt   ru   r,   r'   r-   concatenater*   full)
ry   rz   rgbfrgbuax0rI   rJ   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   
MouseEventrP   rn   r   )rY   r   r   motion_notify_event,   )g333333$@r   rV   )r   r   r   r   extent)      ?r   7   )r   r   ){Gz?g{Gzr   r   	transform)r!   rn   )matplotlib.backend_basesr   r&   r'   r-   r(   r]   reshape	transDatar   canvasget_cursor_dataclearr   scalerotate)
r   r.   rj   r   r_   r`   xdispydispeventtransr2   r2   r3   test_cursor_data2  sN   
 r  zxy, datar         ?r   g      @r   g      !@g      #@g      @U   rZ   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(   rF   newaxisr&   r'   r   minmaxset_data	add_imager   r   r   r   r   r   )xyr   r   r_   r`   ra   r.   rj   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.   rj   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.   rj   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.   rj   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 )NrP   )rn   rn   r   r   r%   )r   r   r   r   )r$   r   r!   )r(   r]   r   r'   r-   r   r   )ry   rz   r   rj   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   )rn   rn   r   	r&   r'   r(   r]   r   pytestraises	TypeErrorr-   r.   rj   r   r2   r2   r3   test_imshow_10_10_2  
   "r-  c                  C   r&  )Ni  )rn   rn   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   rP   )r   rU   rV   r"   )rY   r$   r   r#   )r&   r'   r-   r(   r]   r   )r.   r   r2   r2   r3   test_no_interpolation_origin  s
   "r1  image_shift)r   r9   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   rP   )range)r   r2   r3  r3   r4    s   $ z$test_image_shift.<locals>.<listcomp>r   rP   gMk&Agk&Ar"   )normr$   r   rr   )r5  r&   r'   r-   r   LogNorm
set_aspect)imgDatatMintMaxr.   rj   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   rR   rq   F)frameon      rT   r  r   rn   rB  rn   r"   gray)rY   r   r$   cmapr   )r   r   r   )	facecolorr   rZ   rP   z.Expected a non-green edge - but sadly, it was.)r&   r[   add_axesr(   tiler]   r   r-   r   r   
set_xticks
set_yticksre   rf   rg   rh   ri   r   )r.   rj   r   r   r_   r`   r   rgbar2   r2   r3   test_image_edges  s$   



rN  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   
rQ  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   皙?皙?rZ   r!   )rT  rS  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-   rP  r   r   )r.   rj   r   arr2r2   r2   r3   test_image_composite_alpha  s.   
$
$
rZ  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   rL   )ry   rz   tr.   rj   r2   r2   r3   #test_clip_path_disables_compositing6  s   

rb  rasterize_10dpi)r9   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\  )rZ   r   xlimylim)rd  Frn   r:   )r(   asarrayr&   r'   r-   rd   setrH  rI  spinesset_visibler   )r1   r.   r   rj   r2   r2   r3   test_rasterize_dpiB  s   	

rm  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 )NrP   rn   rn   r   rE   r#   Frn   rV  皙?rW  r   )r(   r]   r   r&   r'   r   r   r   r   r  set_clip_onr   r   
add_artistidentity
get_figuretransFigure)r	   r.   rj   bbox_imr2   r2   r3   test_bbox_image_inverteda  s(   





rw  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   )rV  g?r   皙?)rX  rW  r   rp  )ffffff??rx  rX  ro  rP   rQ   rq   r   r   )rx  ry  rp  rz  rE   )r   r$   i  r'  i  i  r   )r   r$   r   )r(   rF   r&   r'   rx   r   r   r-   r   drawrendererget_window_extentr   
get_points	transAxes)r   r.   rj   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 )NrP   ro         @      )r(   r]   r   r&   r'   r-   r   r   )r	   r.   rj   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rj   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 )	Nro  r,   r   rn   r   r   rB   L)r(   r*   r5  linspacer   newputdataflattenr&   r'   r-   )imdir   r.   rj   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  ,  rQ   )r  r  r   r   r   r   r    redr   )rE  r   rS   r            r  )   r   r   )r&   r[   r(   r)   floatr  rM   re   rf   rg   rh   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rj   r   ra   r2   r2   r3   test_axesimage_setdata     
r  c                  C   r  r  )	r&   gcfr   r(   r]   r  r   r  r  )r.   r   ra   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  rZ   )r&   r  r  r  _Ax_Ayr   r   )	image_clsr_   r`   rM  rj   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   )ElementTreern   r   r   )rj   r7   r   r	   r  )	xml.etreer  r(   rs   rt   ru   r&   r'   
pcolormeshcolorbarre   rf   rg   getvalueparseiter)
r  r   r.   rj   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&   ri   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 )Nro  r   r   )r   rP   r   rP   viridisrZ   rr   )r   rD  vmaxvminaspectlog)yscale)r(   r)   r&   r'   r-   rj  )r   r.   rj   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  rV   )r   r   T)r$   rD  rY   r   clip_on   zr--r!   )lwr   r   r   r   )r(   r]   meshgridexppir&   r'   r-   r   
rotate_degr   set_transform
get_extentrd   r   r   )deltar_   r`   rH   YZ1Z2r   r.   rI   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  rN   r   r   r   )	re   rf   r(   r)   r&   r   rh   ri   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)rR   r>  )r   r   r   r   rE   rV   rr   )r$   rY   r  r   )rS   r   )r  r  r   rZ   )r(   rs  r  r&   r[   rF  set_axis_offr-   re   rf   rg   rh   ri   r   r   ri  bool)nr   r.   rj   r   r1   r2   r2   r3   test_image_preserve_size2Y  s   


r  zmask_image_over_under.pngr   )r   r8   c               	   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   rn   rJ  rK  rL  overunderbad333333?r%   g      r   F)r  r  cliprV   )r  r!   r  r!   )r$   rD  r6  rY   r   zGreen=low, Red=high, Blue=badboth
horizontal)extendorientationrj   r  rE   )rZ   r  gɿr   rp  r   r   r  )ncolorsr  zWith BoundaryNormproportional)r  spacingr  rj   r  )r(   r]   r  r  r  r&   cmrC  with_extremesmamasked_wherer'   r-   r   r  rG   r  BoundaryNorm)r  r_   r`   rH   r  r  r  r   paletteZmr.   rI   rJ   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   rE   r#   r   T)r&   r'   r(   r*   nanr-   r)   r  r  masked_arrayr   )r.   rI   rJ   r}   r2   r2   r3   test_mask_image  s   
r  c                  C   s2   t dt j} t \}}||  |j  d S )NrO   )r(   r   r
  r&   r'   r-   r   	draw_idle)r   r.   rj   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 )Nrn   r   r   r   rV   rE   r  )rY   r$   rD  z<f8z>f8)	r(   r]   r  hypotr&   r'   dictr-   r   )r_   rH   r  r   r.   rI   rJ   kwargsr2   r2   r3   test_imshow_endianess  s   
r  imshow_masked_interpolationx86_64r   )r8   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  rJ  rL  r   r  rT   r   r   r  r  r   rZ   r   g     j@)r@  r   )r@  r@  r  T)r   r@  r!   r   rr   antialiased)r6  rD  r$   off)r`  	colormapsr  r   r  r(   r]   r  r   inf
zeros_liker   r  r  r&   r'   sortedr   	_interpd_removezipravelrG   r-   r   )
rD  Nr  r   maskr.   ax_gridinterpsinterprj   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   r4    s    r4  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   )rn   rn   r!   urn   r   rB   fr   )r(   r]   r   kindr&   r'   r-   	get_arrayallr   r,   )r   r   too_lowtoo_high_rj   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   rE   r#   r   r  )r&   r'   r-   r(   r*   set_climr.   rj   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 )NrE   image.interpolation)r   r   g   mB)r!   r   r   r   r   r   )r   r&   r'   r(   rF   uint64r-   r2  r.   rj   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 )NrE   r5  )r  r   gMD)r  r   r  r   r   )r   r&   r'   r(   rF   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  r6  )r   rC  r   )r&   r'   r)  warnsUserWarningr-   
set_extentr   r{  r*  RuntimeError
make_imageget_renderer)r;  r.   rj   r   r2   r2   r3   test_empty_imshow  s   
"rJ  c                  C   s0   t  \} }|tjdtjd | j  d S )Nr[  r   )r&   r'   r-   r(   r)   float16r   r{  r.   rj   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 )Nr[  r   equiv)r&   r'   r-   r(   r)   
longdoublecan_castfloat64r   r)  rD  rE  r   r{  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(   rF   r  rL  r2   r2   r3   test_imshow_bool3  s   $rS  c                  C   s.   t  \} }|tdtj | j  d S )Nro  )r&   r'   r-   r(   r   r
  r   r{  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   rZ   )r   r!   r   r   zimage.composite_imager   )r(   r  r]   r^   r&   r'   r   r-   r   re   rf   rg   r  count)
r   countedcomposite_imagerV  rH   r  r   r.   rj   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   rr   rA  rC  F)r  r   rD  r  r\  rf  .r!   )r&   r'   r  r-   rj  r   r{  r(   rF   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!   rr   rU  )r  r   rgbar   rB   )rZ   r   )rh  )r&   r'   r  r-   r  set_clip_boxbboxre   rf   rg   r  rj  )r.   r   rj   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.   rj   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  rE   )r   rD  r$   ).rZ   r#   N)r(   r  r  r  r  r`  r  r_  r-   r   r  )
ry   rz   r_   xxyyzzr   rD  rj   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  rO   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?rV  rP   rQ   rq   )rZ   rZ   rZ   r   r   r   r   +   O   _   B   r   rZ   rZ   rZ   r   r   r   "   r   rr   r   )r  rD  r  r  r  r   rn   rB   )r   r`  r  	set_underr&   r[   rF  r(   rF   r  r-   r   r   r{  rH  r|  rD  r6  Tr  r   rv   r,  )rD  r.   rj   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   rJ  rV  )rp  r  rp   r   r  rU  r"   rZ   r   )rD  r   r$   r  r  grU  N)
r&   r'   rd   r(   rs   rt   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(   ri  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(   ri  addsubtractr  multiplydividegreatergreater_equalequal	not_equalless
less_equalr  ndarrayrF   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   ri  r  r)  r*  r  )qq0q1r2   r2   r3   test_quantitynd  s    "r  c                  C   s4   t tdd} t \}}||  |j  d S )NrO   r  )r~  r(   r*   r&   r'   r-   r   r{  )r   r.   rj   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   rZ   r   r   Frg  Tr  wr  r   r  r  rE   )r6  r   r$   rD  r  )r   rn   r   rn   r   rn   rf  )r(   r   rQ  r  rF   r!  r`  r  r  r'   r-   r   r7  r  r  rj  )ry   rz   r   masked_datarD  rj   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  rE   r  )r6  r$   rD  i  r  r  )r(   r   rQ  r'   r-   r   r7  r  r`  r  r  r  )ry   rz   r_   r   rj   rD  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)   mixedrE   r  r   Greys)r$   r  rY   rD  r  r  r  r  g?r  r  )r   r   r   rn   T)nbinsstepsinteger)r'   	enumerater  rG   spyr-   r   r   xaxistick_toptitleset_yset_ticks_positionset_major_locatormtickerMaxNLocatoryaxis)	ry   rz   ax_testax_ref	plot_dataplot_titlesr  ra   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 )Nr[  r=  r!   T)sharexshareyrE   r%   r#   r   r  r   r  )rg  )r&   r[   r'   r  r   r  r(   r]   r   r  
pcolorfastr  rj  )r   rj   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  r[  r   r  )base)r&   r'   r5  r   r  r(   r]   r   r   r   set_box_aspect
set_xscale
set_yscaler  )r/  r   r  rj   r   r2   r2   r3   test_nonuniform_logscale  s$    
r  zrgba_antialias.pngg{Gz?)r   r   r8   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)rR   r  r  constrained_layout   rZ   r   rn   K   rx  r   rW  rT   rU   g    .AF   Z   g    .r        yellowcyanr   rE   g333333r  )r$   rD  r  r     rr   r   )r$   interpolation_stagerD  r  r  r!   ra  )r&   r'   r(   r*   r]   r  sqrtr^   r  rv   r
  r   r  RdBu_rset_overrv  r  r-   r   r   )r.   r   r   aar_   r`   rH   r  Rf0r   rM  rD  r2   r2   r3   test_rgba_antialias  sF   
(<<4

""
r  )rN   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$   rD  r  rr   Nr(   rs   rt   ru   r'   r-   ry   rz   gridrj   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.
    rp   i  rr   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   rr   rU  r"   )r  r  r  r   r$   rY   zData with more than z  cannot be accurately displayed.r  r^  )r'   r(   r)   sizerw  r-   r)  rD  rE  r   r{  )
ry   rz   dimr  msgrY   r  r  rF   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 )Nrn   g?rV  r   r   r   r  rB  rp  )r6  r  r   symlogr!   rW  ry  )r6  r  r  r   logit)r  )	linthresh)r  r  r  )rW  ry  )r6  climfoobar)r(   rs   ru   r'   r-   r   r7  r>  typeimagesr6  r)  r*  r  )ry   rz   ra  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   rO   r   rr   r   r   )r   r  )r&   r[   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   rZ   r   r   rP   rx  r   rW  r!   )r  r   
compressedrR   layoutr  rE   ra  r  )r$   r  rD  }   r  r  r'  Zoom)rE   rE   rm   rm   rr   )r   ra  r   ra  rr   zinterpolation='z	'
space='')r(   r]   r*   r  r  r^   r  rv   r&   r'   r-   r   r   rG   r  flat)r   r_   r`   r  rH   r  r  r  r   rM  r.   r   rj   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  )rR   r  r  r  i   rZ   i  rU   r  r  r!   rS  r  r   z"interpolation='auto', stage='rgba'ra  )rD  r6  r  z"interpolation='auto', stage='auto')rD  r6  )r&   r'   r  r(   r]   r   r*   rw  get_cmapr  r   r7  rG   r-   triu)r.   r   r1   r  r6  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  )rD  zAinterpolation='auto'
stage='antialaised'
(default for upsampling)sinc)rD  r$   z:interpolation='sinc'
stage='auto'
(default for upsampling)r   ra  )rD  r$   r  z!interpolation='sinc'
stage='rgba'ry  r  )rj   shrinkr  )	r(   rs   rt   ru   r&   r'   r-   rG   r  )rM  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   rO   )r   r   r!   )r  Tr   r   )
r(   rs   default_rnguniformr   r   r&   r'   r-   rH  )r   r*  rngr   r   r.   rj   
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!   r[  r   r   rZ   r   r   )r  r   )r  r   )r'   r(   rs   ru   r*   r   r   r-   )ry   rz   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  re   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   rK   markparametrizerc   rl   r~   r   r   r   r   r   r   r   r   r   r   r   r   contextr   r  r  r
  r  r  r$  r%  r-  r/  r1  r<  rN  rQ  rZ  rb  rm  rw  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  r7  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


!
