o
    j                     @   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onesZtriluint8imshow)figZaxlZaxrimg r/   \/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/matplotlib/tests/test_image.pytest_alpha_interp   s   
r1   Z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   )r>   c   G   r   r   r   r"   r#   zinterpolation nonenearestzinterpolation nearestN)r   r(   arrayr+   r&   r'   r,   	set_title)Xr-   ax1ax2r/   r/   r0   test_interp_nearest_vs_none(   s   
rG   suppressCompositeFfigimagepng)r5   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)ZxoZyoorigin)r&   figurerH   r(   Zix_arangesinrI   )rH   r-   xyzcr.   r/   r/   r0   test_figimage:   s   $$$*r\   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bufferr/   r/   r0   test_image_python_ioJ   s   

re   z!img_size, fig_size, interpolation))r   r   hanning)r   r   rA   )r   
   rA   )r!   333333@rf   )r!   g333333"@rA   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,r6   r   r   r   r   autor#   )r(   randomseedr&   r   randintset_size_inchesr'   set_positionr,   )	fig_testfig_refZimg_sizeZfig_sizer$   rO   Ar-   rc   r/   r/   r0   test_imshow_antialiasedS   s   
ru   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 )
Nri   r6   r!   rh   rk   r#   rg   rP   rA   )r(   rl   rm   r&   r   rn   ro   rp   r'   r,   set_xlimset_ylim)rr   rs   rO   rt   r-   rc   r/   r/   r0   test_imshow_zoomk   s   
rx   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   Zuser   __file__parentr'   r,   r   openr&   rb   )rr   rs   Zpng_pathZ	tiff_pathaxsr/   r/   r0   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 )NZbaseline_imagesZ
test_imagez
uint16.tif )r&   rb   ospathjoindirnamer|   r   r(   uint16sumr.   r/   r/   r0   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&   rb   r   r|   r}   r   r(   r   r   r   r/   r/   r0   test_imread_fspath   s
   r   fmt)rJ   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   )formatrO   rL   r   r   r!   )r(   rl   rm   rn   r^   r_   r&   imsavera   rb   shaper   )r   Z	has_alphadataZ	buff_dpi1Zbuff_dpi100Zarr_dpi1Z
arr_dpi100r/   r/   r0   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   rJ   r   r   r!   )	r^   r_   r&   r   ra   rb   r   r(   rB   )Zimg_databuffZread_imgr/   r/   r0   test_imsave_python_sequences   s   

r   rS   upperrR   c                 C   s,   t  }tjddd}tj||d| d d S )N)rg   rg   r   r+   r   rJ   )arrr   rS   )r^   r_   r(   r)   mimager   )rS   bufresultr/   r/   r0   test_imsave_rgba_origin   s   r   )rJ   r2   psepsr3   c                 C   s&   t jttjtddgg| d d S )Nr   r   r   )r&   r   r   r   devnullr(   rB   )r   r/   r/   r0   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   )rR   r      r   rJ   )rS   r   r   r>   r+   rR   rT   )r(   rl   rm   rn   r^   r_   r&   r   ra   rb   astyper   )rS   r   r   Zarr_bufr/   r/   r0   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   )PngInfoZSoftwaretestr   r   r!   rJ   pnginfor   
pil_kwargs)
ZPIL.PngImagePluginr   r^   r_   add_textr&   r   r   r~   info)r   r   r   imr/   r/   r0   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 r/   )name).0kvZTAGSr/   r0   
<dictcomp>	      z/test_imsave_pil_kwargs_tiff.<locals>.<dictcomp>ZImageDescription)ZPIL.TiffTagsr   r^   r_   r&   r   lenr   r~   Ztag_v2items)r   r   r   tagsr/   r   r0   test_imsave_pil_kwargs_tiff  s   
r   Zimage_alphac                  C   sd   t jd t jdd} tdd\}\}}}|j| ddd |j| ddd |j| dd	d d S )
Nr      r   r!   r   r"   )alphar$         ?rA   )r(   rl   rm   rn   r&   r'   r,   )Zr-   rE   rF   ax3r/   r/   r0   test_image_alpha  s   r   Z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 )Nri   r   r!   r>   r   r   r         ?)r   r   r   axisr=      )
r(   rl   rm   rn   r+   r'   r,   concatenater*   full)
rr   rs   ZrgbfZrgbuZax0rE   rF   r   ZrgbafZrgbaur/   r/   r0   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   
MouseEventrL   rg   r   )rS   r   r   motion_notify_event,   )g333333$@r   rR   )r   r   r   r   extent)      ?r   7   )r   r   ){Gz?g{Gzr   r   	transform)r!   rg   )matplotlib.backend_basesr   r&   r'   r,   r(   rV   reshape	transDatar   canvasget_cursor_dataclearr   scalerotate)
r   r-   rc   r   rX   rY   xdispydispeventZtransr/   r/   r0   test_cursor_data2  sN   
 r   zxy, datar         ?r   g      @r   g      !@g      #@g      @U   rT   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(   rB   newaxisr&   r'   r   minmaxset_data	add_imagerv   rw   r   r   r   r   )xyr   r   rX   rY   rZ   r-   rc   r   r   r   r   r/   r/   r0   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-   rc   r   r   r   r   r/   r/   r0   test_format_cursor_data  s   

r   Z
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   )Zradiusr   )r&   r'   r,   r
   ZCircler   set_clip_path)dr-   rc   r   patchr/   r/   r0   test_image_clip  s
   
r   Zimage_cliprectc                  C   sN   t  \} }ddgddgg}|j|dd}tjddd|jjd}|| d S )	Nr   r   r!   r   r   r   r   r   r   r   r   )r   widthheightr   )r&   r'   r,   r
   Z	RectangleZaxesr   r   )r-   rc   r   r   rectr/   r/   r0   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 )NrL   )rg   rg   r   r   r%   )r   r   r   r   )r$   r   r!   )r(   rV   r   r'   r,   rv   rw   )rr   rs   r   rc   r/   r/   r0   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   )rg   rg   r   	r&   r'   r(   rV   r   pytestraises	TypeErrorr,   r-   rc   r   r/   r/   r0   test_imshow_10_10_2  
   "r  c                  C   r   )Ni  )rg   rg   r   r   r  r/   r/   r0   test_imshow_10_10_5  r  r  Zno_interpolation_originc                  C   sP   t d\} }|d jtddddd |d jtdddd	 d S )
Nr   r   rL   )r   rQ   rR   r"   )rS   r$   r   r#   )r&   r'   r,   r(   rV   r   )r-   r   r/   r/   r0   test_no_interpolation_origin  s
   "r  Zimage_shift)r   r5   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   r/   )r   rX   rY   r/   r0   
<listcomp>  r   z/test_image_shift.<locals>.<listcomp>.<listcomp>r   rL   )range)r   r/   r  r0   r    s   $ z$test_image_shift.<locals>.<listcomp>r   rL   gMk&Agk&Ar"   )normr$   r   rk   )r	  r&   r'   r,   r   LogNormZ
set_aspect)ZimgDataZtMinZtMaxr-   rc   r/   r/   r0   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   rN   rj   F)frameon      rP   r   r   rg   r  rg   r"   gray)rS   r   r$   cmapr   )r   r   r   )	facecolorr   rT   rL   z.Expected a non-green edge - but sadly, it was.)r&   rU   add_axesr(   ZtilerV   r   r,   rv   rw   
set_xticks
set_yticksr^   r_   r`   ra   rb   r   )r-   rc   r   r   rX   rY   r   rgbar/   r/   r0   test_image_edges  s$   



r  Z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(   rV   r   r,   set_facecolorrv   r  r/   r/   r0   test_image_composite_background  s   
r  Zimage_composite_alphac                  C   s  t  \} }td}d|dddddf< ttdddtdddddd f|dddddf< td	}d|dddddf< d|dddddf< ttdddtdddddd fddtjf |dddddf< |j|g d
dd |j|g ddd |j|g dd |j|g dd |j|g ddd |j|g ddd |d |	ddg |
ddg dS )z{
    Tests that the alpha value is recognized and correctly applied in the
    process of compositing images together.
    )      r   r   Nr   皙?皙?rT   r!   )r!  r   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   rV   r   r,   r  rv   rw   )r-   rc   r   Zarr2r/   r/   r0   test_image_composite_alpha  s.   
$
$
r&  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(   rV   r   add_subplotr,   mplr   r   r   rH   )rr   rs   tr-   rc   r/   r/   r0   #test_clip_path_disables_compositing6  s   

r.  Zrasterize_10dpi)r5   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)	linewidthZ
rasterizedr(  )rT   r   xlimylim)r/  Frg   r6   )r(   asarrayr&   r'   r,   r]   setr  r  ZspinesZset_visibler   )r.   r-   r   rc   r/   r/   r0   test_rasterize_dpiB  s   	

r5  Zbbox_image_invertedc                  C   s   t dd} t \}}tttddgddgg|jdd}|	|  |
d |dd |dd || t d} tttdd	gd
dgg| jdd}|	|  |
d || d S )NrL   rg   rg   r   rA   r#   Frg   r#  皙?r$  r   )r(   rV   r   r&   r'   r   r   r   r   r   Zset_clip_onrv   rw   Z
add_artistidentityZ
get_figureZtransFigure)r	   r-   rc   Zbbox_imr/   r/   r0   test_bbox_image_inverteda  s(   





r9  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   )r#  g?r   皙?)r%  r$  r   r7  )ffffff??r:  r%  r6  rL   rM   rj   r   r   )r:  r;  r7  r<  rA   )r   r$   i  r   i  i  r   )r   r$   r   )r(   rB   r&   r'   rq   rv   rw   r,   r   drawrendererZget_window_extentr   Z
get_points	transAxes)r   r-   rc   Zim_objr>  Zim_bboxr/   r/   r0   $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 )NrL   r6         @      )r(   rV   r   r&   r'   r,   rw   rv   )r	   r-   rc   r/   r/   r0   test_zoom_and_clip_upper_origin  s   


rC  c                  C   s   t  } t| }|d d S )NBlues)r&   gcar   Zset_cmaprc   r   r/   r/   r0   test_nonuniformimage_setcmap  s   rG  c                  C   s"   t  } t| }|t   d S N)r&   rE  r   set_norm	NormalizerF  r/   r/   r0   test_nonuniformimage_setnorm  s   rK  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 )	Nr6  r+   r   rg   r   r   r>   L)r(   r*   r	  linspacer   newZputdataflattenr&   r'   r,   )Zimdir   r-   rc   r/   r/   r0   test_jpeg_2d  s    rQ  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   ,  rM   )rR  rR  r   r   r   r   r    redr   )r  r   rO   r            r   )   r   r   )r&   rU   r(   r)   floatrM  rI   r^   r_   r`   ra   r   r~   r   Z	getcolorsZgetpixel)r   r   r	   Z
num_colorsZcorner_pixelr/   r/   r0   test_jpeg_alpha  s   



rY  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&   rE  r   r(   rV   rX  r   r   _Arc   r   rZ   r/   r/   r0   test_axesimage_setdata     
ra  c                  C   rZ  r[  )	r&   Zgcfr   r(   rV   rX  r   r   r_  )r-   r   rZ   r/   r/   r0   test_figureimage_setdata  rb  rc  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^  rT   )r&   rE  r   r_  Z_AxZ_Ayr   r   )Z	image_clsrX   rY   r  rc   r   r/   r/   r0   test_setdata_xya  s   @$rf  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   )ElementTreerg   r   r   )rc   r3   r   r	   r   )Z	xml.etreerg  r(   rl   rm   rn   r&   r'   Z
pcolormeshcolorbarr^   r_   r`   getvalueparseiter)
rg  r   r-   rc   p1Zp2r   treer   r	   r/   r/   r0   test_minimized_rasterized  s(   

rn  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 )Nrz   zfile:win32z/// zPlease open the URLmatch)r   r|   r}   sysplatformresolveas_posixr   r   
ValueErrorr&   rb   urllibrequesturlopen)r   urlfiler/   r/   r0   test_load_from_url  s   
"r}  Zlog_scale_imagec                  C   sN   t d} d| d d d< t \}}|j| g dddddd |jd	d
 d S )Nr6  r   r   )r   rL   r   rL   viridisrT   rk   )r   r  vmaxvminaspectlog)Zyscale)r(   r)   r&   r'   r,   r4  )r   r-   rc   r/   r/   r0   test_log_scale_image&  s   
r  Z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         rd  r   r   r   r   r"   r~  rR   )r   r   T)r$   r  rS   r   clip_on   zr--r!   )lwr   r   r   r   )r(   rV   meshgridexppir&   r'   r,   r   Z
rotate_degr   Zset_transformZ
get_extentr]   rv   rw   )deltarX   rY   rD   YZ1Z2r   r-   rE   Zim1Ztrans_data2x1Zx2y1y2r/   r/   r0   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  rJ   r   r   r   )	r^   r_   r(   r)   r&   r   ra   rb   r   )r   r   r.   r/   r/   r0   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)rN   r  )r   r   r   r   rA   rR   rk   )r$   rS   r  r   )rO   r   )r  r  r   rT   )r(   r8  rX  r&   rU   r  set_axis_offr,   r^   r_   r`   ra   rb   r   r   r3  bool)nr   r-   rc   r   r.   r/   r/   r0   test_image_preserve_size2Y  s   


r  zmask_image_over_under.pngr   )r   r4   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  rd  r   r   r   r   rg   r  r  r  Zoverunderbad333333?r%   g      r   F)r  r  cliprR   )r  r!   r  r!   )r$   r  r
  rS   r   zGreen=low, Red=high, Blue=badboth
horizontal)extendorientationrc   r  rA   )rT   rB  gɿr   r7  r   r   rT  )Zncolorsr  zWith BoundaryNormZproportional)r  spacingr  rc   r  )r(   rV   r  r  r  r&   cmr  with_extremesmaZmasked_wherer'   r,   r   rJ  rC   rh  ZBoundaryNorm)r  rX   rY   rD   r  r  r  r   paletteZZmr-   rE   rF   r   r/   r/   r0   test_mask_image_over_underm  s>   &*





r  Z
mask_imagec                  C   s   t dd\} \}}td}tj|ddddf< |j|dd tjdtd}d|ddddf< tj	tjdtj
d|}|j|dd d S )Nr   r   r   rA   r#   r   T)r&   r'   r(   r*   nanr,   r)   r  r  masked_arrayr   )r-   rE   rF   rt   r/   r/   r0   test_mask_image  s   
r  c                  C   s2   t dt j} t \}}||  |j  d S )NrK   )r(   r   r  r&   r'   r,   r   Z	draw_idle)r   r-   rc   r/   r/   r0   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 )Nrg   r   r   r   rR   rA   r~  )rS   r$   r  z<f8z>f8)	r(   rV   r  hypotr&   r'   dictr,   r   )rX   rD   r  r   r-   rE   rF   kwargsr/   r/   r0   test_imshow_endianess  s   
r  Zimshow_masked_interpolationx86_64r   )r4   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~  r  r  r   r  rP   r   r   r  r  r   rT   r   g     j@)r  r   )r  r  r  T)r   r  r!   r   rk   Zantialiased)r
  r  r$   off)r,  	colormapsr  r   rJ  r(   rV   rX  r   infZ
zeros_liker   r  r  r&   r'   sortedr   Z	_interpd_removezipravelrC   r,   r   )
r  Nr  r   maskr-   Zax_gridZinterpsinterprc   r/   r/   r0    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  r/   r/   r/   r0   test_imshow_no_warn_invalid  s   r  r   c                 C   s   g | ]}t |qS r/   )r(   r   )r   sr/   r/   r0   r    s    r  zu2 u4 i2 i4 i8 f4 f8c                 C   s   t jd| dd}| jdkr|d8 }|dk }|dk}| jdkr$|d }t \}}|| }|| dk s;J | jdkrT|| d	k sJJ |j	jdksRJ d S || dk s^J |j	t j
ksfJ d S )
NrR  r   )rg   rg   r!   urg   r   r>   fr   )r(   rV   r   kindr&   r'   r,   Z	get_arrayallr   r+   )r   r   Ztoo_lowZtoo_high_rc   outr/   r/   r0   $test_imshow_clips_rgb_to_valid_range  s   


r  zimshow_flatfield.pngc                  C   s0   t  \} }|jtddd}|dd d S )Nr   rA   r#   r   r   )r&   r'   r,   r(   r*   set_climr-   rc   r   r/   r/   r0   test_imshow_flatfield  s   r  zimshow_bignumbers.pngc                  C   sJ   dt d< t \} }tjg dg dgtjd}||}|dd d S )NrA   image.interpolation)r   r   g   mB)r!   r   r   r   r   r   )r   r&   r'   r(   rB   Zuint64r,   r  r-   rc   r.   Zpcr/   r/   r0   test_imshow_bignumbers  s
   
r  zimshow_bignumbers_real.pngc                  C   sD   dt d< t \} }tg dg dg}||}|dd d S )NrA   r  )rA  r   gMD)re  r   rd  r   r   )r   r&   r'   r(   rB   r,   r  r  r/   r/   r0   test_imshow_bignumbers_real  s
   
r  	make_normc                   C   
   t dS Nr   )r   
SymLogNormr/   r/   r/   r0   <lambda>     
 r  c                   C   r  r  )r   Z	PowerNormr/   r/   r/   r0   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 xlimsrq  r
  )r   r  r   )r&   r'   r   warnsUserWarningr,   Z
set_extentr   r=  r   RuntimeError
make_imageZget_renderer)r  r-   rc   r   r/   r/   r0   test_empty_imshow  s   
"r  c                  C   s0   t  \} }|tjdtjd | j  d S )Nr'  r   )r&   r'   r,   r(   r)   Zfloat16r   r=  r-   rc   r/   r/   r0   test_imshow_float16#  s   r  c                  C   st   t  \} }|tjdtjd ttjtjdrt nt	
t | j  W d    d S 1 s3w   Y  d S )Nr'  r   equiv)r&   r'   r,   r(   r)   Z
longdoubleZcan_castfloat64r   r   r  r  r   r=  r  r/   r/   r0   test_imshow_float128*  s   "r  c                  C   s0   t  \} }|tjddgddggtd d S )NTFr   )r&   r'   r,   r(   rB   r  r  r/   r/   r0   test_imshow_bool3  s   $r  c                  C   s.   t  \} }|tdtj | j  d S )Nr6  )r&   r'   r,   r(   r   r  r   r=  r  r/   r/   r0   test_full_invalid8  s   r  zfmt,counted)r   s    colorimage)r3   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 )Nr  r   r   r   r   r!   r   r   r   r   r   rT   )r   r!   r   r   zimage.composite_imager   )r(   r  rV   rW   r&   r'   rv   r,   r   r^   r_   r`   ri  count)
r   ZcountedZcomposite_imager  rD   r  r   r-   rc   r   r/   r/   r0   test_composite?  s   $
r  c                  C   sV   t  \} }|jdggdd |  |  | |   kr&dks)J  J d S )Nr   r  r   r(  )r&   r'   r,   ZrelimZ	autoscaleZget_xlimZget_ylimr  r/   r/   r0   
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   rk   r  r  F)r  r   r  r  r(  r0  .r!   )r&   r'   r  r,   r4  r   r=  r(   rB   Zbuffer_rgbar  r  r/   r/   r0   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!   rk   r  )r  r   rgbar   r>   )rT   r   )r2  )r&   r'   r  r,   r   Zset_clip_boxZbboxr^   r_   r`   ri  r4  )r-   r   rc   r   Z
buf_beforeZ	buf_afterr/   r/   r0   test_respects_bboxf  s   
 
r  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-   rc   r   r   r/   r/   r0   test_image_cursor_formattingx  s   r  c           
      C   s   t dd}t ||\}}t d|d d  |d  }||  }tjd }|  }|j|||dd	 | }|t	
 |}	||	d
< |j|	dd dS )zPer-pixel alpha channel test.r   r   r  r   r   g[(\?r~  rA   )r   r  r$   ).rT   r#   N)r(   rM  r  r  r   r,  r  r+  r,   r   rJ  )
rr   rs   rX   xxyyzzr   r  rc   r  r/   r/   r0   test_image_array_alpha  s   
r  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-drq  rK   r   r   )r   r   r  r&   r,   r(   r)   r/   r/   r/   r0   !test_image_array_alpha_validation  s   "r  c                  C   s   t tjd } | jdd tjddd}|g d}tjg dgt	d	}|j
|d
| ddd}|d |j  ||jjd d }|||dggd  j d t}t||kscJ d S )NZautumn_rZ	lightgrey)color)gffffff?r#  rL   rM   rj   )rT   rT   rT   r   r   r   r   +   O   _   B   r   rT   rT   rT   r   r   r   "   r   rk   r   )r  r  r  r  r  r   rg   r>   )r   r,  r  	set_underr&   rU   r  r(   rB   rX  r,   r   r   r=  r  r>  r  r
  Tr  r   ro   r  )r  r-   rc   r   r   Z
from_imageZdirect_computationr/   r/   r0   test_exact_vmin  s    

$r  Z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   r  r#  )r  r  ri   r   rD  r  r"   rT   r   )r  r   r$   r  r  gr"  N)
r&   r'   r]   r(   rl   rm   r,   Zrandnrv   rw   r  r/   r/   r0   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 rH  )r(   r3  viewunits)clsZinput_arrayr  objr/   r/   r0   __new__  s   zQuantityND.__new__c                 C   s   t |dd | _d S Nr  )getattrr  )selfr  r/   r/   r0   __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__r/   r0   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 )
Nr  r   r   r  Zdimensionlessr   *z/())r  NotImplementedr   r(   r3  addsubtractrw  multiplydivideZgreaterZgreater_equalequal	not_equallessZ
less_equalr  ndarrayrB   r  )r  ZufuncmethodZinputsr  funcZi0unitZout_arri1Zu0u1r/   r/   r0   __array_ufunc__  sF   



$

zQuantityND.__array_ufunc__c                 C   s   |  tjS rH  )r  r(   r  )r  r/   r/   r0   r     s   zQuantityND.v)
__name__
__module____qualname__r   r  r  r  propertyr   __classcell__r/   r/   r
  r0   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   r3  r  r   r   rw  )qq0q1r/   r/   r0   test_quantitynd  s    "r&  c                  C   s4   t tdd} t \}}||  |j  d S )NrK   r"  )r  r(   r*   r&   r'   r,   r   r=  )r   r-   rc   r/   r/   r0   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   rT   r   r   Fr  Tr~  wr  r   r  r   rA   )r
  r   r$   r  r  )r   rg   r   rg   r   rg   r0  )r(   r   r  r  rB   r  r,  r  r  r'   r,   r   r  rI  rJ  r4  )rr   rs   r   Zmasked_datar  rc   r   r/   r/   r0   test_norm_change   s.   r+  rX   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  rA   r~  )r
  r$   r  i  r(  r)  )r(   r   r  r'   r,   r   r  r   r,  r  r  rJ  )rr   rs   rX   r   rc   r  r/   r/   r0   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)   mixedrA   r  r   ZGreys)r$   r  rS   r  r  r  rB  r   g?r  r   )r   r   r   rg   T)ZnbinsZstepsinteger)r'   	enumerater  rC   Zspyr,   rv   rw   ZxaxisZtick_toptitleZset_yZset_ticks_positionZset_major_locatormtickerZMaxNLocatorZyaxis)	rr   rs   ax_testax_refZ	plot_dataZplot_titlesrP  rZ   r0  r/   r/   r0   test_spy_boxP  s6   

r4  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shareyrA   r%   r#   r   r   r   r*  )r1  )r&   rU   r'   r  r   r   r(   rV   r   r   Z
pcolorfastr  r4  )r   rc   r$   r   r/   r/   r0   test_nonuniform_and_pcolorq  s   &r7  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   )ZncolsZnrowsr   r   r   r'  r   r  )base)r&   r'   r	  r   r   r(   rV   r   rv   rw   Zset_box_aspectZ
set_xscaleZ
set_yscaler   )r  r   rP  rc   r   r/   r/   r0   test_nonuniform_logscale  s$    
r9  zrgba_antialias.pngg{Gz?)r   r   r4   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)rN   r5  r6  Zconstrained_layout   rT   r   rg   K   r:  r   r$  rP   rQ   g    .AF   Z   g    .r        yellowcyanr   rA   g333333r  )r$   r  r  r     rk   r   )r$   interpolation_stager  r  r  r!   r  )r&   r'   r(   r*   rV   r  sqrtrW   r  ro   r  r   r  RdBu_rset_overr  rO  r,   rv   rw   )r-   r   r  aarX   rY   rD   r  Rf0r   r  r  r/   r/   r0   test_rgba_antialias  sF   
(<<4

""
rK  )rJ   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$   r  rD  rk   Nr(   rl   rm   rn   r'   r,   rr   rs   gridrc   r/   r/   r0   !test_upsample_interpolation_stage  s   


rQ  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.
    ri   i  rk   r~  r  rM  NrN  rO  r/   r/   r0   #test_downsample_interpolation_stage  s   


rR  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   r  zimage.interpolation_stager   r   )ZDATAZfooN)	r,  Z
rc_contextr&   r,   Zget_interpolation_stager   r   rw  r   )valr/   r/   r0   test_rc_interpolation_stage  s   rU  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   rW  r   rk   r  r"   )r  r  r  r   r$   rS   zData with more than z  cannot be accurately displayed.rq  r*  )r'   r(   r)   sizer  r,   r   r  r  r   r=  )
rr   rs   dimrX  msgrS   r2  r3  rB   r   r/   r/   r0   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 )Nrg   g?r#  r   r   r   r  r  r7  )r
  r  r   Zsymlogr!   r$  r;  )r
  r  r  r   Zlogit)r  )	linthresh)r\  r  r  )r$  r;  )r
  ZclimZfoobar)r(   rl   rn   r'   r,   r   r  r  typeZimagesr
  r   r   rw  )rr   rs   r-  ZaxtsZaxrsr/   r/   r0   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 argumentsrq  )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,  Z_imageresampler   r   r   r  r(   r)   rw  r+   r  flagsZ	writeable)ra  r  r/   r/   r0   test__resample_valid_output:  s6   
$rc  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 arrayrq  r  r   r\  )r&   rE  r   r   r   r  	get_shaper(   rV   rX  r   r   get_sizer`  r/   r/   r0   test_axesimage_get_shapeQ  s   

rf  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   rK   r   rk   r   r   )r   r  )r&   rU   r+  r(   rV   r   r,   r?  Z
get_aspectr   r   r   rF  r/   r/   r0   .test_non_transdata_image_does_not_touch_aspect]  s   rg  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   rT   r   r   rL   r:  r   r$  r!   )r  r   
compressedrN   layoutr   rA   r  rF  )r$   rD  r  }   rU  r;  r   ZZoom)rA   rA   rf   rf   rk   )r   r  r   r  rk   zinterpolation='z	'
space='')r(   rV   r*   r  rE  rW   r  ro   r&   r'   r,   rv   rw   rC   r  Zflat)r  rX   rY   rH  rD   r  rI  rJ  r   r  r-   r   rc   r  spacer/   r/   r0   test_downsamplingh  s:   (<<4
rn  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@Trh  )rN   r5  r6  rj  i   rT   i  rQ   r~  r"  r!   r   r  r   z"interpolation='auto', stage='rgba'r  )r  r
  rD  z"interpolation='auto', stage='auto')r  r
  )r&   r'   rO  r(   rV   r   r*   r  Zget_cmaprG  r   r  rC   r,   Ztriu)r-   r   r.   r  r
  r/   r/   r0   test_downsampling_speckle  s   
"

ro  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 )NrL  r   r   r!   )g      @r!   rh  ri  r   r~  )r  zAinterpolation='auto'
stage='antialaised'
(default for upsampling)Zsinc)r  r$   z:interpolation='sinc'
stage='auto'
(default for upsampling)r   r  )r  r$   rD  z!interpolation='sinc'
stage='rgba'r;  r  )rc   shrinkr  )	r(   rl   rm   rn   r&   r'   r,   rC   rh  )r  r-   r   r   r/   r/   r0   test_upsampling  s   rq  )r  Zfloat32Zint16r   Z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   rK   )r   r   r!   )rX  Tr   r   )
r(   rl   Zdefault_rnguniformr   r   r&   r'   r,   r  )r   rr  rngr   r   r-   rc   Z
axes_imager/   r/   r0   test_resample_dtypes  s   
ru  
intp_stagerS  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   rT   r   r   )rD  r   )rD  r   )r'   r(   rl   rn   r*   r   r   r,   )rr   rs   rv  Zaxs_tstZaxs_refnynxZscalar_alphaZarray_alphaZim_rgbZim_concat_default_aZim_rgbaZnew_array_alphar/   r/   r0   2test_interpolation_stage_rgba_respects_alpha_param  sL    
ry  )
contextlibr   r   r_  r^   r   pathlibr   rt  rs  urllib.requestrx  numpyr(   Znumpy.testingr   ZPILr   Z
matplotlibr,  r   r	   r   r
   r   r&   r   r   Zmatplotlib.imager   r   r   r   r   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.transformsr   r   r   Zmatplotlib.tickerZtickerr1  r   r1   rG   markZparametrizer\   re   ru   rx   r   r   r   r   r   r   r   r   r   r   r   contextr   r   r   r  r   r   r   r   r  r  r  r  r  r  r&  r.  r5  r9  r@  rC  rG  rK  rQ  rY  ra  rc  rV   r   rf  rn  r}  r  r  r  r  r  r  r  r  machiner  r  splitr  r  r  r  rJ  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r'  r+  r,  r4  r7  r9  rK  rQ  rR  rU  filterwarningsr[  r^  rc  rf  rg  rn  ro  rq  ru  ry  r/   r/   r/   r0   <module>   s    

	





"





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

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