o
    ˆ‚¡eJÁ  ã                
   @   s®  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d„ ƒZ.e$dgddgdddd„ ƒZ/e,j0 1dddg¡e$dgddgdd d!„ ƒƒZ2d"d#„ Z3e,j0 1d$g d%¢¡e#dgdd&d'„ ƒƒZ4e#dgdd(d)„ ƒZ5e#ƒ d*d+„ ƒZ6d,d-„ Z7d.d/„ Z8e,j0 1d0g d1¢¡d2d3„ ƒZ9e,j0 1d0g d4¢¡d5d6„ ƒZ:d7d8„ Z;d9d:„ Z<d;d<„ Z=e$d=gddd>d?„ ƒZ>d@dA„ Z?e,j0 1dBdCdDggdEfdFdGggdHfej@dIdJggdKfdIdLggdMfdNdNggdOfg¡dPdQ„ ƒZAe$dRgdddSdT„ ƒZBe$dUgdddVdW„ ƒZCe$dXgdddYdZd[„ ƒZDe#dgdd\d]„ ƒZEd^d_„ ZFd`da„ ZGe$dbgdddcdd„ ƒZHe$degdddgdfdgdh„ ƒZIdidj„ ZJe$dkgdddYdldm„ ƒZKe$dngdddodp„ ƒZLe#dgddqdr„ ƒZMe$dsgddgdddtdudv„ ƒZNe$dwgdddYdxdy„ ƒZOdzd{„ ZPe$d|gdddYd}d~„ ƒZQdd€„ ZRdd‚„ ZSdƒd„„ ZTd…d†„ ZUd‡dˆ„ ZVd‰dŠ„ ZWe,j0 1d‹e e XdŒ¡e Xd¡e XdŽ¡ Yd¡fe!e XdŒ¡e Xd¡e Xd¡ Yd‘¡fg¡d’d“„ ƒZZd”d•„ Z[d–d—„ Z\e$d˜gddd™dš„ ƒZ]e$d›gdddœd„ ƒZ^dždŸ„ Z_d d¡„ Z`e$d¢gdd£d¤d¥d¦„ ƒZae$d§gddd¨d©„ ƒZbdªd«„ Zce$d¬gddd­d®„ ƒZde$d¯ge e¡ d°kr|d nd±ddd²d³d´„ ƒZfdµd¶„ Zge,j0 1d·d¸d¹„ dº h¡ D ƒ¡d»d¼„ ƒZie$d½gdddYd¾d¿„ ƒZje$dÀgdddYdÁdÂ„ ƒZke$dÃgdddYdÄdÅ„ ƒZle,j0 1dÆejmejndÇdÈ„ dÉdÈ„ g¡dÊdË„ ƒZodÌdÍ„ ZpdÎdÏ„ ZqdÐdÑ„ ZrdÒdÓ„ Zse,j0 1dÔdÕdÖg¡e,j0 1d×dØdÙg¡dÚdÛ„ ƒƒZtdÜdÝ„ ZudÞdß„ Zvdàdá„ Zwdâdã„ Zxe#ƒ dädå„ ƒZydædç„ Zzej {d¡dèdé„ ƒZ|e$dêgddgdddtdëdì„ ƒZ}G dídî„ dîej~ƒZdïdð„ Z€dñdò„ Ze#dgddódô„ ƒZ‚e,j0 1dõdNdIg¡e#dgddöd÷„ ƒƒZƒe#ƒ dødù„ ƒZ„e$dúgdddûdü„ ƒZ…e$dýgdde e¡ dþv r}dÿnd d dd„ ƒZ†e,j0 ‡d¡e,j0 1dddg¡e,j0 1dg d¢g d	¢g¡e#d
ddd„ ƒƒƒƒZˆe#dgddd„ ƒZ‰dd„ ZŠdd„ Z‹dd„ ZŒdS (  é    )Ú	ExitStack)ÚcopyN)ÚPath)Úassert_array_equal)ÚImage)ÚcolorsÚimageÚpatchesÚpyplotÚstyleÚrcParams)Ú	AxesImageÚ	BboxImageÚFigureImageÚNonUniformImageÚPcolorImage)Úcheck_figures_equalÚimage_comparison)ÚBboxÚAffine2DÚTransformedBboxÚimage_interpsÚmpl20)r   c                  C   s†   dt jd< t d¡ dd¡} t  d¡\}\}}}|j| dd | d	¡ | d¡ |j| d
d | d
¡ |j| dd | d¡ dS )z5Make the basic nearest, bilinear and bicubic interps.é   ztext.kerning_factoréd   é   é   é   Únearest©Úinterpolationzthree interpolationsÚbilinearÚbicubicN)	Úpltr   ÚnpÚarangeÚreshapeÚsubplotsÚimshowÚ	set_titleÚ
set_ylabel)ÚXÚfigÚax1Úax2Úax3© r0   úJ/var/www/myenv/lib/python3.10/site-packages/matplotlib/tests/test_image.pyÚtest_image_interps   s   



r2   zinterp_alpha.pngT)Úremove_textc                  C   sf   t  dd¡\} \}}t d¡}t d¡|d< t tjdtjd¡|d< |j|dd	 |j|d
d	 dS )z:Test the interpolation of the alpha channel on RGBA imagesé   é   )r   r   é   ©r   r   ).r4   ©Údtype©.r   Únoner   r!   N)r#   r'   r$   ÚzerosÚonesÚtrilÚuint8r(   )r,   ÚaxlÚaxrÚimgr0   r0   r1   Útest_alpha_interp0   s   
rC   Úinterp_nearest_vs_noneÚpdfÚsvg)Ú
extensionsr3   c                  C   s|   dt d< tjg d¢g d¢gg d¢g d¢ggtjd} t dd	¡\}\}}|j| d
d | d¡ |j| dd | d¡ dS )z5Test the effect of "nearest" and "none" interpolationr   úsavefig.dpi)éÚ   é¥   é    )éz   ég   éî   )é   éÿ   r   )rP   éc   éG   r8   r4   r5   r;   r   zinterpolation noner   zinterpolation nearestN)r   r$   Úarrayr?   r#   r'   r(   r)   )r+   r,   r-   r.   r0   r0   r1   Útest_interp_nearest_vs_none=   s   ÿÿ
rT   ÚsuppressCompositeFÚfigimageÚpng)rG   c                 C   s  t jddd}| |_t t d¡d t d¡d ¡\}}t |d |d  ||  ¡}t d|d  d|d   ¡}||d  }|j|d	d	d
d |j|d d d…d d …f d	dd
d |j|d d …d d d…f dd	d
d |j|d d d…d d d…f ddd
d d S )N©r5   r5   r   ©ÚfigsizeÚdpig      Y@r5   r   é2   r   r   Úlower)ÚxoÚyoÚoriginéÿÿÿÿ)r#   ÚfigurerU   r$   Úix_r%   ÚsinrV   )rU   r,   ÚxÚyÚzÚcrB   r0   r0   r1   Útest_figimageO   s   $$$*ri   c                  C   sD   t  ¡ \} }| g d¢¡ t ¡ }|  |¡ | d¡ t  |¡ d S )N)r4   r5   r   r   )r#   r'   ÚplotÚioÚBytesIOÚsavefigÚseekÚimread)r,   ÚaxÚbufferr0   r0   r1   Útest_image_python_io_   s   

rr   z!img_size, fig_size, interpolation))r   r5   Úhanning)r   r   r   )r   é
   r   )r   ç333333@rs   )r   g333333"@r   c           	      C   sš   t j d¡ tjd }t j t|| ƒt|| ƒ¡}| |fD ]}| ||¡ q|  ¡ }| 	g d¢¡ |j
|dd | ¡ }| 	g d¢¡ |j
||d d S )Né!N,rH   ©r   r   r4   r4   Úantialiasedr   )r$   ÚrandomÚseedr#   r   ÚrandÚintÚset_size_inchesr'   Úset_positionr(   )	Úfig_testÚfig_refÚimg_sizeÚfig_sizer    r[   ÚAr,   rp   r0   r0   r1   Útest_imshow_antialiasedh   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 )
Nrv   rH   r   ru   rx   r   rt   r   r   )r$   ry   rz   r#   r   r{   r|   r}   r'   r(   Úset_xlimÚset_ylim)r   r€   r[   rƒ   r,   rp   r0   r0   r1   Útest_imshow_zoom€   s   
r‡   c                 C   sŽ   t  d¡ ttƒjd }ttƒjd }|  d¡}|d  t |¡¡ |d  t |¡¡ | d¡}|d  t	 
|¡¡ |d  t	 
|¡¡ d S )NÚdefaultú%baseline_images/pngsuite/basn3p04.pngú%baseline_images/test_image/uint16.tifr5   r   r4   )r   Úuser   Ú__file__Úparentr'   r(   r   Úopenr#   ro   )r   r€   Úpng_pathÚ	tiff_pathÚaxsr0   r0   r1   Útest_imshow_pil’   s   


r’   c                  C   sF   t  tj tj t¡ddd¡¡} | jtj	ksJ ‚t 
| ¡dks!J ‚d S )NÚbaseline_imagesÚ
test_imagez
uint16.tifé €ÿ)r#   ro   ÚosÚpathÚjoinÚdirnamerŒ   r9   r$   Úuint16Úsum©rB   r0   r0   r1   Útest_imread_pil_uint16Ÿ   s
   ÿr   c                  C   s:   t  ttƒjd ¡} | jtjksJ ‚t | ¡dksJ ‚d S )NrŠ   r•   )	r#   ro   r   rŒ   r   r9   r$   rš   r›   rœ   r0   r0   r1   Útest_imread_fspath¦   s
   ÿrž   Úfmt)rW   ÚjpgÚjpegÚtiffc                 C   sÄ   | dv}t j d¡ t j dd¡}t ¡ }tj||| dd t ¡ }tj||| dd | d¡ tj	|| d}| d¡ tj	|| d}|j
ddd	| fksOJ ‚|j
ddd	| fks[J ‚t||ƒ d S )
N)r    r¡   r4   i@  r5   )Úformatr[   r   r   ©r£   r   )r$   ry   rz   r{   rk   rl   r#   Úimsavern   ro   Úshaper   )rŸ   Ú	has_alphaÚdataÚ	buff_dpi1Úbuff_dpi100Úarr_dpi1Ú
arr_dpi100r0   r0   r1   Útest_imsave­   s   	

r­   )rW   rE   ÚpsÚepsrF   c                 C   s&   t jttjƒt ddgg¡| d d S )Nr   r4   r¤   )r#   r¥   r   r–   Údevnullr$   rS   )rŸ   r0   r0   r1   Útest_imsave_fspathÐ   s   &r±   c                  C   s”   t j d¡ dD ]?} t j ddd¡}t ¡ }tj||| dd | d¡ t 	|¡}d|  
d	¡}| d
kr;|d d d… }d|  
d	¡}t||ƒ qd S )Nr4   )r]   Úupperé   r6   rW   )r`   r£   r   rP   r?   r]   ra   )r$   ry   rz   r{   rk   rl   r#   r¥   rn   ro   Úastyper   )r`   r¨   ÚbuffÚarr_bufr0   r0   r1   Útest_imsave_color_alphaÕ   s   

ðr·   c                  C   sh   ddl m}  t ¡ }| ƒ }| dd¡ tj|ddgddggdd	|id
 t |¡}|j	d dks2J ‚d S )Nr   )ÚPngInfoÚSoftwareÚtestr4   r5   r   rW   Úpnginfo©r£   Ú
pil_kwargs)
ÚPIL.PngImagePluginr¸   rk   rl   Úadd_textr#   r¥   r   rŽ   Úinfo)r¸   Úbufr»   Úimr0   r0   r1   Ú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 imager4   r5   r   r¢   r¼   c                    s   i | ]
\}}ˆ | j |“qS r0   )Úname)Ú.0ÚkÚv©ÚTAGSr0   r1   Ú
<dictcomp>   ó    z/test_imsave_pil_kwargs_tiff.<locals>.<dictcomp>ÚImageDescription)ÚPIL.TiffTagsrÄ   rk   rl   r#   r¥   Úlenr   rŽ   Útag_v2Úitems)rÁ   r½   rÂ   Útagsr0   rÊ   r1   Ú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   r4   r   ç      ð?r;   )Úalphar    ç      à?r   )r$   ry   rz   r{   r#   r'   r(   )ÚZr,   r-   r.   r/   r0   r0   r1   Útest_image_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s‰J ‚t ¡ \}}|jt d¡ dd¡g d¢d}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡dks¾J ‚d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d u sÝJ ‚d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d u süJ ‚tƒ  d¡ d¡}	|jt d¡ dd¡|	|j d}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	ks6J ‚d S )Nr   ©Ú
MouseEventr   rt   r²   )r`   ©r6   r6   Úmotion_notify_eventé,   )g333333$@r6   r]   )r   rØ   r   rØ   ©Úextent)ç      Ð?râ   é7   )ç      è?râ   )ç{®Gáz„?g{®Gáz„¿r5   rØ   ©Ú	transform)r   rt   )Úmatplotlib.backend_basesrÜ   r#   r'   r(   r$   r%   r&   Ú	transDatarç   ÚcanvasÚget_cursor_dataÚclearr   ÚscaleÚrotate)
rÜ   r,   rp   rÂ   re   rf   ÚxdispÚydispÚeventÚtransr0   r0   r1   Útest_cursor_data  sN   
 ÿró   z
data, texti'  i'  z[10001.000]g°rh‘í|¿?g/Ý$•ï?z[0.123]r4   r5   ú[]g     ð?z[1.0000000000000000]ra   z[-1.0000000000000000]c           	      C   sb   ddl m} t ¡ \}}| | ¡}|j ddg¡\}}|d|j||ƒ}| | 	|¡¡|ks/J ‚d S )Nr   rÛ   rÞ   )
rè   rÜ   r#   r'   r(   ré   rç   rê   Úformat_cursor_datarë   )	r¨   ÚtextrÜ   r,   rp   rÂ   rï   rð   rñ   r0   r0   r1   Útest_format_cursor_dataV  s   	
r÷   Ú
image_clipc                  C   sF   ddgddgg} t  ¡ \}}| | ¡}tjdd|jd}| |¡ d S )Nr4   r5   r   r6   ©r   r   )Úradiusrç   )r#   r'   r(   r	   ÚCircleré   Úset_clip_path)Údr,   rp   rÂ   Úpatchr0   r0   r1   Útest_image_clipi  s
   
rÿ   Úimage_cliprectc                  C   sN   t  ¡ \} }ddgddgg}|j|dd}tjddd|jjd}| |¡ d S )	Nr4   r5   r   r6   ©r   r   r   r   rà   ©r4   r4   )ÚxyÚwidthÚheightrç   )r#   r'   r(   r	   Ú	RectangleÚaxesré   rü   )r,   rp   rý   rÂ   Úrectr0   r0   r1   Útest_image_cliprects  s   ÿr	  r(   )r3   r   c                  C   sH   t  ¡ \} }t d¡ d¡}|j|ddd | dd¡ | dd¡ d S )Nr   ©rt   rt   r!   ©r4   r5   r4   r5   ©r    rá   r   r   )r#   r'   r$   r%   r&   r(   r…   r†   ©r,   rp   Úarrr0   r0   r1   Útest_imshow  s
   r  c                 C   s†   t  d¡ d¡}| ¡ }|j|d d …d d …df ddd | dd¡ | dd¡ |  ¡ }|j|ddd | dd¡ | dd¡ d S )Nr   )rt   rt   r4   r   r!   r  r  r   )r$   r%   r&   r'   r(   r…   r†   )r   r€   r  rp   r0   r0   r1   Útest_imshow_10_10_1ˆ  s   "r  c                  C   óV   t  ¡ \} }t d¡ d¡}t t¡ | |¡ W d   ƒ d S 1 s$w   Y  d S )NéÈ   )rt   rt   r5   ©	r#   r'   r$   r%   r&   ÚpytestÚraisesÚ	TypeErrorr(   r  r0   r0   r1   Útest_imshow_10_10_2—  ó
   "ÿr  c                  C   r  )Niô  )rt   rt   r   r  r  r0   r0   r1   Útest_imshow_10_10_5ž  r  r  Úno_interpolation_originc                  C   sP   t  d¡\} }|d jt d¡ d¡ddd |d jt d¡ d¡dd	 d S )
Nr5   r   r   )r5   r\   r]   r;   )r`   r    r4   r   )r#   r'   r(   r$   r%   r&   )r,   r‘   r0   r0   r1   Útest_no_interpolation_origin¥  s
   ÿ"r  Úimage_shift)r3   rG   c                  C   sT   dd„ t ddƒD ƒ} d}d}t ¡ \}}|j| t ¡ d||ddfd | d	¡ d S )
Nc                    s$   g | ]‰ ‡ fd d„t ddƒD ƒ‘qS )c                    s   g | ]
}d | d ˆ   ‘qS )r4   r0   )rÇ   re   ©rf   r0   r1   Ú
<listcomp>¯  rÍ   z/test_image_shift.<locals>.<listcomp>.<listcomp>r4   r   )Úrange)rÇ   r0   r  r1   r  ¯  s   $ z$test_image_shift.<locals>.<listcomp>r4   r   gMòãûk&Ag˜Šäûk&Ar;   )Únormr    rá   Úauto)r  r#   r'   r(   r   ÚLogNormÚ
set_aspect)ÚimgDataÚtMinÚtMaxr,   rp   r0   r0   r1   Útest_image_shift­  s   
ÿr'  c                  C   s  t jddgd} | jg d¢dd}t t d¡d¡ dd	¡}|j|d
g d¢ddd}d }}| | |g¡ | 	| |g¡ | 
g ¡ | g ¡ t ¡ }| j|dd | d¡ t  |¡}t|d d …df ƒ\}}}	}
t|d d …df ƒ\}}}	}
|dksJ dƒ‚d S )Nr4   ©rZ   rw   F)Úframeoné   é   r   é	   r²   ©éöÿÿÿrt   r.  rt   r;   Úgray)r`   rá   r    Úcmapr5   )r   r4   r   )Ú	facecolorr   ra   r   z.Expected a non-green edge - but sadly, it was.)r#   rb   Úadd_axesr$   Útiler%   r&   r(   r…   r†   Ú
set_xticksÚ
set_yticksrk   rl   rm   rn   ro   r›   )r,   rp   r¨   rÂ   re   rf   rÁ   ÚrÚgÚbÚar0   r0   r1   Útest_image_edges¹  s$   ÿ



r:  Úimage_composite_backgroundc                  C   s^   t  ¡ \} }t d¡ dd¡}|j|g d¢d |j|g d¢d | d¡ | ddg¡ d S )	Nr*  r6   r   )r   r5   r+  r   rà   )r6   r   r+  r   )r4   r   r   rØ   r   )r#   r'   r$   r%   r&   r(   Úset_facecolorr…   r  r0   r0   r1   Útest_image_composite_backgroundÕ  s   
r=  Úimage_composite_alphac                  C   sŠ  t  ¡ \} }t d¡}d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡|dd…dd…df< t d	¡}d|dd…dd…df< d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡dd…tjf |dd…dd…df< |j|g d
¢dd |j|g d¢dd |j|g d¢d |j|g d¢d |j|g d¢dd |j|g d¢dd | d¡ | 	ddg¡ | 
ddg¡ dS )z{
    Tests that the alpha value is recognized and correctly applied in the
    process of compositing images together.
    )é   é   r6   r4   Nr   çš™™™™™ñ?çš™™™™™¹?ra   r   )r@  r?  r6   )r4   r5   r   r   ç333333Ó?)rá   r×   )r5   r   r   r   ç333333ã?)r   r6   r   r   rà   )r   r   r4   r5   )r   r   r5   r   )r   r   r   r6   )r   rØ   r   r4   r   )r#   r'   r$   r<   Úconcatenater%   Únewaxisr(   r<  r…   r†   )r,   rp   r  Úarr2r0   r0   r1   Útest_image_composite_alphaà  s.   
$ÿ
$ÿÿ
rH  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   r4   )r4   r   )Ú	clip_path)r  ©r4   r5   )r5   r4   T)
r$   r%   r&   Úadd_subplotr(   Úmplr—   r   ré   rU   )r   r€   Útr,   rp   r0   r0   r1   Ú#test_clip_path_disables_compositingû  s   ÿ
ÿ
rP  Úrasterize_10dpi)rG   r3   r   c                  C   sÔ   t  ddgddgg¡} tjdddd\}}|d  | ¡ |d jddgddgdd	d
 |d jddd |d jddgddgdd |d jddd |D ]}| g ¡ | g ¡ |j	d d …  
d¡ qMdtd< d S )Nr4   r5   r   r6   )r   r4   r(  r   g      4@T)Ú	linewidthÚ
rasterizedrJ  )ra   r5   ©ÚxlimÚylim)rR  Frt   rH   )r$   Úasarrayr#   r'   r(   rj   Úsetr4  r5  ÚspinesÚset_visibler   )rB   r,   r‘   rp   r0   r0   r1   Útest_rasterize_dpi  s   	

r[  Úbbox_image_invertedc                  C   sÈ   t  d¡ d¡} t ¡ \}}tttddgddggƒ|jƒdd}| 	| ¡ | 
d¡ | dd¡ | dd¡ | |¡ t  d¡} tttdd	gd
dggƒ|jjƒdd}| 	| ¡ | 
d¡ | |¡ d S )Nr   r
  r   r   r   Frt   rB  çš™™™™™É?rC  râ   )r$   r%   r&   r#   r'   r   r   r   ré   Úset_dataÚset_clip_onr…   r†   Ú
add_artistÚidentityrb   ÚtransFigure)r   r,   rp   Úbbox_imr0   r0   r1   Útest_bbox_image_inverted&  s(   þ



ÿþ

rd  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ä   )rB  gÍÌÌÌÌÌä?rØ   çš™™™™™Ù?)rD  rC  ç        r]  )çffffffæ?çÍÌÌÌÌÌì?re  rD  r
  r   rY   rw   r   r4   )re  rg  r]  rh  r   )rá   r    i  r  i¼  i„  r5   )rá   r    rç   )r$   rS   r#   r'   r~   r…   r†   r(   rê   ÚdrawÚrendererÚget_window_extentr   Ú
get_pointsÚ	transAxes)rÂ   r,   rp   Úim_objrj  Úim_bboxr0   r0   r1   Ú$test_get_window_extent_for_AxisImage?  s4   ÿ
ÿ


þ

rp  zzoom_and_clip_upper_origin.pngc                  C   sF   t  d¡} |  d¡} t ¡ \}}| | ¡ | dd¡ | dd¡ d S )Nr   r
  ç       @ç      à¿)r$   r%   r&   r#   r'   r(   r†   r…   )r   r,   rp   r0   r0   r1   Útest_zoom_and_clip_upper_originb  s   


rs  c                  C   s   t  ¡ } t| ƒ}| d¡ d S )NÚBlues)r#   Úgcar   Úset_cmap©rp   rÂ   r0   r0   r1   Útest_nonuniformimage_setcmapn  s   rx  c                  C   s"   t  ¡ } t| ƒ}| t  ¡ ¡ d S ©N)r#   ru  r   Úset_normÚ	Normalizerw  r0   r0   r1   Útest_nonuniformimage_setnormt  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 )	Nr
  r?   r8   rt   rf  rÖ   rP   ÚL)r$   r=   r  Úlinspacer   ÚnewÚputdataÚflattenr#   r'   r(   )ÚimdÚirÂ   r,   rp   r0   r0   r1   Útest_jpeg_2dz  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  é,  rY   )r…  r…  r6   r8   rf  rÖ   r:   Úredr    )r1  r£   r[   r   é   é¯   éÒ   rù   )éþ   r   r   )r#   rb   r$   r<   Úfloatr~  rV   rk   rl   rm   rn   r   rŽ   rÐ   Ú	getcolorsÚgetpixel)rÂ   rµ   r   Ú
num_colorsÚcorner_pixelr0   r0   r1   Ú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*  r8   ©r6   r   çÍÌÌÌÌÌ#@rù   r   úvalue changed)	r#   ru  r   r$   r%   r‹  r&   r^  Ú_A©rp   rÂ   rg   r0   r0   r1   Útest_axesimage_setdata  ó   
r˜  c                  C   r‘  r’  )	r#   Úgcfr   r$   r%   r‹  r&   r^  r–  )r,   rÂ   rg   r0   r0   r1   Útest_figureimage_setdata¦  r™  r›  zimage_cls,x,y,aç      @ç      @g      (@r“  g      @)r   r5   c                 C   sš   t  ¡ }| |ƒ}| |||¡ d |d<  |d< |d< |jd |jd   kr6|jd   kr6dks;J dƒ‚ J dƒ‚| ||| g |j¢d‘R ¡¡ d S )Nr”  r   rù   r•  ra   )r#   ru  r^  r–  Ú_AxÚ_Ayr&   r¦   )Ú	image_clsre   rf   r9  rp   rÂ   r0   r0   r1   Útest_setdata_xya¯  s   @$r¡  c            
      C   sÞ   ddl m}  tj d¡ tj dd¡}t dd¡\}}|d  |¡}|d  |¡}tj	||d d tj	||d d t
 ¡ }tj|dd t
 | ¡ ¡}|  |¡}d }| d	¡D ]}	|d u rd|	d
 }qY|	d
 |krlJ ‚qYd S )Nr   )ÚElementTreert   r4   r5   )rp   rF   r¤   r   r  )Ú	xml.etreer¢  r$   ry   rz   r{   r#   r'   Ú
pcolormeshÚcolorbarrk   rl   rm   ÚgetvalueÚparseÚiter)
r¢  r¨   r,   rp   Úp1Úp2rµ   Útreer  r   r0   r0   r1   Ú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#   ro   ÚurllibÚrequestÚurlopen)r—   ÚurlÚfiler0   r0   r1   Útest_load_from_urlà  s   ÿ
þÿ"ÿr»  Úlog_scale_imagec                  C   sN   t  d¡} d| d d d…< t ¡ \}}|j| g d¢ddddd |jd	d
 d S )Nr
  r4   r5   )r4   r   r4   r   Úviridisra   r!  )rá   r0  ÚvmaxÚvminÚaspectÚlog)Úyscale)r$   r<   r#   r'   r(   rX  )rÙ   r,   rp   r0   r0   r1   Útest_log_scale_imageë  s   
ÿrÃ  Úrotate_imagec                  C   s,  d} t  dd| ¡ }}t  ||¡\}}t  |d |d   d ¡dt j  }t  |d d d |d d d   d ¡dt j d d  }|| }t dd¡\}}	|	j|dd	d
g d¢dd}
tƒ  	d¡|	j
 }|
 |¡ |
 ¡ \}}}}|	j|||||g|||||gdd|d |	 dd¡ |	 dd¡ d S )Nrâ   ç      Àrœ  r5   r4   ç      ø?rØ   r;   r½  r]   )éþÿÿÿr6   éýÿÿÿr5   T)r    r0  r`   rá   Úclip_oné   zr--r   )Úlwrç   r   r   r6   )r$   r%   ÚmeshgridÚexpÚpir#   r'   r(   r   Ú
rotate_degré   Úset_transformÚ
get_extentrj   r…   r†   )Údeltare   rf   r+   ÚYÚZ1ÚZ2rÙ   r,   r-   Úim1Útrans_data2Úx1Úx2Úy1Úy2r0   r0   r1   Útest_rotate_imageö  s*   &*ÿ
þ
 ÿrÜ  c                  C   sR   t  ¡ } t d¡}tj| |dd |  d¡ t | ¡}|jd d… |jks'J ‚d S )N)iá  iA  rW   r¤   r   r5   )	rk   rl   r$   r<   r#   r¥   rn   ro   r¦   )rµ   rÂ   rB   r0   r0   r1   Útest_image_preserve_size  s   


rÝ  c                  C   sÈ   d} t  | t¡}tj| | fdd}t |g d¢¡}| ¡  | |¡ |j|dddd t	 
¡ }|j|d	d
 | d¡ t |¡}|jdksGJ ‚tt  |d d …d d …df t¡t  | t¡d d d… ƒ d S )Né   F)rZ   r)  )rf  rf  rÖ   rÖ   r   r]   r!  )r    r`   rÀ  r4   )r[   r   )rÞ  rÞ  r6   ra   )r$   ra  r‹  r#   rb   ÚAxesÚset_axis_offr2  r(   rk   rl   rm   rn   ro   r¦   r   rW  Úbool)Únr¨   r,   rp   rµ   rB   r0   r0   r1   Útest_image_preserve_size2  s   


ÿrã  zmask_image_over_under.pngrÖ   )r3   Útolc               	   C   sl  dt jd< d} t dd| ¡ }}t ||¡\}}t |d |d   d ¡dtj  }t |d d d |d d	 d   d ¡dtj d	 d  }d
||  }t jjj	dddd}tj
 |dk|¡}	t  dd¡\}
\}}|j|	d|tjdddddg d¢d}| d¡ |
j|dd|d
d |j|	d|tjg d¢ddddg d¢d}| d¡ |
j|dd d|d
d! d S )"NFzpcolormesh.snapgš™™™™™™?rÅ  rœ  r5   r4   rÆ  rØ   rt   r6  r7  r8  ©ÚoverÚunderÚbadç333333ó?r!   g      ð¿rÖ   )r¿  r¾  Úclipr]   )rÈ  r   rÈ  r   )r    r0  r   r`   rá   zGreen=low, Red=high, Blue=badÚbothÚ
horizontal)ÚextendÚorientationrp   rÀ  r   )ra   rr  gš™™™™™É¿r   r]  rØ   r4   r‡  )Úncolorsrê  zWith BoundaryNormÚproportional)rí  Úspacingrî  rp   rÀ  )r#   r   r$   r%   rÌ  rÍ  rÎ  Úcmr/  Úwith_extremesÚmaÚmasked_wherer'   r(   r   r{  r)   r¥  ÚBoundaryNorm)rÒ  re   rf   r+   rÓ  rÔ  rÕ  rÙ   ÚpaletteÚZmr,   r-   r.   rÂ   r0   r0   r1   Útest_mask_image_over_under4  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 )Nr4   r5   r7   r   r   r8   T)r#   r'   r$   r=   Únanr(   r<   rá  rô  Úmasked_arrayrš   )r,   r-   r.   rƒ   r0   r0   r1   Útest_mask_imageV  s   
rý  c                  C   s2   t  dt j¡} t ¡ \}}| | ¡ |j ¡  d S )NrX   )r$   Úfullrû  r#   r'   r(   rê   Ú	draw_idle)r¨   r,   rp   r0   r0   r1   Útest_mask_image_allh  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 )Nrt   r   r4   r5   r]   r   r½  )r`   r    r0  z<f8z>f8)	r$   r%   rÌ  Úhypotr#   r'   Údictr(   r´   )re   r+   rÓ  rÙ   r,   r-   r.   Úkwargsr0   r0   r1   Útest_imshow_endianessp  s   
r  Úimshow_masked_interpolationÚx86_64rå   )rä  r3   r   c            
      C   sð   t jd jdddd} d}tjd|| d d	}tj|| td
 ||¡}d|d< d|d< tj	|d< t 
|¡ d¡}d|d< tj ||¡}t dd¡\}}ttjƒ}| d¡ t|| ¡ ƒD ]\}}	|	 |¡ |	j||| |d |	 d¡ q^d S )Nr½  r6  r8  rÈ   rå  r   r   r4   ©r¿  r¾  r8   ra   r7   g     jø@)r+  r   )r+  r+  rá  T)r   r+  r   r   rx   )r   r0  r    Úoff)rN  Ú	colormapsró  r   r{  r$   r%   r‹  r&   ÚinfÚ
zeros_liker´   rô  rü  r#   r'   ÚsortedÚmimageÚ	_interpd_ÚremoveÚzipÚravelr)   r(   Úaxis)
r0  ÚNrâ  r¨   Úmaskr,   Úax_gridÚinterpsÚinterprp   r0   r0   r1   Ú test_imshow_masked_interpolation~  s$   



ýr  c                   C   s   t  ddgdtjgg¡ d S )Nr4   r5   r   )r#   r(   r$   rû  r0   r0   r0   r1   Útest_imshow_no_warn_invalid¢  s   r  r9   c                 C   s   g | ]}t  |¡‘qS r0   )r$   r9   )rÇ   Úsr0   r0   r1   r  §  s    r  zu2 u4 i2 i4 i8 f4 f8c                 C   sÐ   t jd| d d¡}| jdkr|d8 }|dk }|dk}| jdkr$|d }t ¡ \}}| |¡ ¡ }|| dk ¡ s;J ‚| jdkrT|| d	k ¡ sJJ ‚|j	jdksRJ ‚d S || dk ¡ s^J ‚|j	t j
ksfJ ‚d S )
Nr…  r8   )rt   rt   r   Úurt   r   rP   Úfr4   )r$   r%   r&   Úkindr#   r'   r(   Ú	get_arrayÚallr9   r?   )r9   r  Útoo_lowÚtoo_highÚ_rp   Úoutr0   r0   r1   Ú$test_imshow_clips_rgb_to_valid_range¦  s   


r$  zimshow_flatfield.pngc                  C   s0   t  ¡ \} }|jt d¡dd}| dd¡ d S )Nr7   r   r   rØ   rÆ  )r#   r'   r(   r$   r=   Úset_clim©r,   rp   rÂ   r0   r0   r1   Útest_imshow_flatfield»  s   r'  zimshow_bignumbers.pngc                  C   sJ   dt d< t ¡ \} }tjg d¢g d¢gtjd}| |¡}| dd¡ d S )Nr   úimage.interpolation)r4   r5   g   ¢”mB)r   r4   r6   r8   r   r   )r   r#   r'   r$   rS   Úuint64r(   r%  ©r,   rp   rB   Úpcr0   r0   r1   Útest_imshow_bignumbersÂ  s
   
r,  zimshow_bignumbers_real.pngc                  C   sD   dt d< t ¡ \} }t g d¢g d¢g¡}| |¡}| dd¡ d S )Nr   r(  )rq  rÖ   g’ÕMÏð€D)r  rÖ   rœ  r   r   )r   r#   r'   r$   rS   r(   r%  r*  r0   r0   r1   Útest_imshow_bignumbers_realÍ  s
   
r-  Ú	make_normc                   C   ó
   t  d¡S ©Nr4   )r   Ú
SymLogNormr0   r0   r0   r1   Ú<lambda>Ý  ó   
 r2  c                   C   r/  r0  )r   Ú	PowerNormr0   r0   r0   r1   r2  Þ  r3  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¯  ©r   )éûÿÿÿr   r6  r   )r#   r'   r  ÚwarnsÚUserWarningr(   Ú
set_extentrê   ri  r  ÚRuntimeErrorÚ
make_imageÚget_renderer)r.  r,   rp   rÂ   r0   r0   r1   Útest_empty_imshowÙ  s   ÿþ
"ÿr=  c                  C   s0   t  ¡ \} }| tjdtjd¡ | j ¡  d S )NrI  r8   )r#   r'   r(   r$   r<   Úfloat16rê   ri  ©r,   rp   r0   r0   r1   Ú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 )NrI  r8   Úequiv)r#   r'   r(   r$   r<   Ú
longdoubleÚcan_castÚfloat64r   r  r7  r8  rê   ri  r?  r0   r0   r1   Útest_imshow_float128ò  s   ÿ"ýrE  c                  C   s0   t  ¡ \} }| tjddgddggtd¡ d S )NTFr8   )r#   r'   r(   r$   rS   rá  r?  r0   r0   r1   Útest_imshow_boolû  s   $rF  c                  C   s.   t  ¡ \} }| t dtj¡¡ | j ¡  d S )Nr
  )r#   r'   r(   r$   rþ  rû  rê   ri  r?  r0   r0   r1   Útest_full_invalid   s   rG  zfmt,counted)r®   s    colorimage)rF   s   <imagezcomposite_image,count)Tr4   )Fr5   c           
      C   s²   t  t  ddd¡t  ddd¡¡\}}t  |d ¡}t ¡ \}}| dd¡ |j|g d¢d |j|d d d	… g d
¢d |tjd< t	 
¡ }	|j|	| d |	 ¡  |¡|ksWJ ‚d S )Nr6  r   r4   r5   r   r   ©r   r4   r   r4   rà   ra   )r5   r   r   r4   zimage.composite_imager¤   )r$   rÌ  r%   rd   r#   r'   r…   r(   r   rk   rl   rm   r¦  Úcount)
rŸ   ÚcountedÚcomposite_imagerI  r+   rÓ  rÙ   r,   rp   rÁ   r0   r0   r1   Útest_composite  s   $
rL  c                  C   sV   t  ¡ \} }|jdggdd | ¡  | ¡  | ¡ | ¡   kr&dks)J ‚ J ‚d S )Nr   rH  rà   rJ  )r#   r'   r(   ÚrelimÚ	autoscaleÚget_xlimÚget_ylimr?  r0   r0   r1   Ú
test_relim  s
   (rQ  c                  C   sx   t  ¡ \} }| ¡  |jddgddggddddd}|jddd | j ¡  t | j 	¡ ¡d	d d
…f dk 
¡ s:J ‚d S )Nr   r!  r-  r/  F)rÀ  rá   r0  rÉ  rJ  rT  .r   )r#   r'   rà  r(   rX  rê   ri  r$   rS   Úbuffer_rgbar  r&  r0   r0   r1   Útest_unclipped"  s   ÿ
,rS  c                  C   sÄ   t  d¡\} }|D ]}| ¡  q	|d jddgddggddd}| d ¡ | |d j¡ t ¡ }| j	|dd	 h | 
¡ £d
hksCJ ‚|d jdd t ¡ }| j	|dd	 | 
¡ | 
¡ ks`J ‚d S )Nr5   r4   r   r   r!  rH  )rÀ  rá   Úrgbar¤   rP   )ra   r   )rV  )r#   r'   rà  r(   rü   Úset_clip_boxÚbboxrk   rl   rm   r¦  rX  )r,   r‘   rp   rÂ   Ú
buf_beforeÚ	buf_afterr0   r0   r1   Útest_respects_bbox.  s   
 
rY  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,   rp   rÂ   r¨   r0   r0   r1   Útest_image_cursor_formatting@  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   r4   rÈ  rØ   r5   g[Âõ(\ß?r½  r   )r×   r0  r    ).ra   r   N)r$   r~  rÌ  rÍ  ÚmaxrN  r	  rM  r(   r   r{  )
r   r€   re   ÚxxÚyyÚzzr×   r0  rp   rT  r0   r0   r1   Útest_image_array_alphaO  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-dr¯  rX   r4   )r×   )r  r  r  r#   r(   r$   r<   r0   r0   r0   r1   Ú!test_image_array_alpha_validationb  s   "ÿra  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þ?rB  r   rY   rw   )ra   ra   ra   r   r   r   r   é+   éO   é_   éB   r4   ra   ra   ra   r   r   r   é"   r8   r!  r   )rÀ  r0  r¿  r¾  r  r4   rt   rP   )r   rN  r	  Ú	set_underr#   rb   r2  r$   rS   r‹  r(   r  rê   ri  r;  rj  r0  r   ÚTr  r´   r|   r  )r0  r,   rp   r¨   rÂ   Ú
from_imageÚdirect_computationr0   r0   r1   Útest_exact_vming  s    þ

$þrn  Ú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   r4   r4   r   )r   r4   r4   r   r   r6  rB  )rd  rË  rv   r³   rt  rH  r;   ra   r4   )r0  rá   r    r¿  r¾  gš™™™™™¹¿rA  N)
r#   r'   rj   r$   ry   rz   r(   Úrandnr…   r†   r?  r0   r0   r1   Útest_image_placement„  s   ÿrq  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 ry  )r$   rW  ÚviewÚunits)ÚclsÚinput_arrayrt  Úobjr0   r0   r1   Ú__new__˜  s   zQuantityND.__new__c                 C   s   t |dd ƒ| _d S ©Nrt  )Úgetattrrt  )Úselfrw  r0   r0   r1   Ú__array_finalize__  s   zQuantityND.__array_finalize__c                    s8   t | dd ƒ}tƒ  |¡}t|tƒs|d urt||ƒ}|S ry  )rz  ÚsuperÚ__getitem__Ú
isinstancerr  )r{  Úitemrt  Úret©Ú	__class__r0   r1   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 r±t |¡}|S t||ƒ}|S )
Nr#  r4   r   rt  Údimensionlessr5   Ú*z/(ú))rz  ÚNotImplementedrÐ   r$   rW  ÚaddÚsubtractrµ  ÚmultiplyÚdivideÚgreaterÚgreater_equalÚequalÚ	not_equalÚlessÚ
less_equalrs  ÚndarrayrS   rr  )r{  ÚufuncÚmethodÚinputsr  ÚfuncÚi0ÚunitÚout_arrÚi1Úu0Úu1r0   r0   r1   Ú__array_ufunc__§  sF   



þ$

ÿzQuantityND.__array_ufunc__c                 C   s   |   tj¡S ry  )rs  r$   r’  )r{  r0   r0   r1   rÉ   Î  s   zQuantityND.v)
Ú__name__Ú
__module__Ú__qualname__rx  r|  r~  r  ÚpropertyrÉ   Ú__classcell__r0   r0   r‚  r1   rr  —  s    'rr  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 )Nr4   r5   Úmr   zm*mzm/(m)r  )	rr  r$   r  rÉ   rW  rt  r  r  rµ  )ÚqÚq0Úq1r0   r0   r1   Útest_quantityndÓ  s    "ÿr§  c                  C   s4   t t d¡dƒ} t ¡ \}}| | ¡ |j ¡  d S )NrX   r£  )rr  r$   r=   r#   r'   r(   rê   ri  )r  r,   rp   r0   r0   r1   Ú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 )Nr7   r4   r8   ra   r   r5   FrZ  Tr½  Úw©rç  rØ   r  r  r   )r   rá   r    r0  rÇ  )r   rt   r   rt   ©r   rt   rT  )r$   rþ  rD  rô  rS   r  rN  r	  ró  r'   r(   r   r"  rz  r{  rX  )r   r€   r¨   Úmasked_datar0  rp   rÂ   r0   r0   r1   Útest_norm_changeè  s.   ÿÿÿÿr­  re   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 )Nr7   r8   g@Œµx¯Dr   r5   r4   r  r   r½  )r   r    r0  iè  r©  rª  )r$   rþ  rD  r'   r(   r   r"  r\  rN  r	  ró  r{  )r   r€   re   r¨   rp   r0  r0   r0   r1   Ú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 )Nr4   r   r   )r=   r<   Úmixedr   rŽ  r²   ÚGreys)r    rÀ  r`   r0  r¿  r¾  rr  rÆ  gÍÌÌÌÌÌð?rë  r,  )r4   r5   r   rt   T)ÚnbinsÚstepsÚinteger)r'   Ú	enumerater  r)   Úspyr(   r…   r†   ÚxaxisÚtick_topÚtitleÚset_yÚset_ticks_positionÚset_major_locatorÚmtickerÚMaxNLocatorÚyaxis)	r   r€   Úax_testÚax_refÚ	plot_dataÚplot_titlesrƒ  rg   r¸  r0   r0   r1   Útest_spy_box  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 )NrI  r(  r   T)ÚsharexÚshareyr   r!   r   r5   r,  r6   r«  )rU  )r#   rb   r'   r  r   r^  r$   r%   r&   Ú	add_imageÚ
pcolorfastrà  rX  )r‘   rp   r    rÂ   r0   r0   r1   Útest_nonuniform_and_pcolor9  s   ÿ&ÿýrÈ  zrgba_antialias.png)Úaarch64Úppc64leÚs390xgyé&1¬|?)r   r3   rä  c                  C   s¢  t jddddddd\} }d}t ||f¡}d|d d d…d d …f< t |¡| d }t |¡| d }t ||¡\}}t |d |d  ¡}d	}	d
}
t tjd |	| |
|d  d   ¡}d|d t	|d ƒ…d d …f |d t	|d ƒ…d d …f dk < d|d t	|d ƒ…d d …f |d t	|d ƒ…d d …f dk < |d d …t	|d ƒd …f |d d …t	|d ƒd …f< tj
|dd…dd…f< d|dd…dd…f< d|dd…dd…f< d|dd…dd…f< d|dd…dd…f< tt jjƒ}| d¡ | d¡ | ¡ }|d j|d|ddd |d  |d d |d d g¡ |d  |d d |d d	 g¡ |d j|d|ddd |d j|dd |ddd! |d" j|dd#|ddd! d S )$Nr5   )ç      @rÌ  FT)rZ   rÄ  rÅ  Úconstrained_layoutéú   ra   rØ   rt   éK   re  r4   rC  r   r\   g    €„.AéF   éZ   g    €„.ÁrÊ  éÃ   é×   ÚyellowÚcyanr   r   g333333ó¿ré  )r    r0  r¿  r¾  é   rx   r¨   )r    Úinterpolation_stager0  r¿  r¾  r   rT  )r#   r'   r$   r=   r%   rÌ  Úsqrtrd   rÎ  r|   rû  r   rò  ÚRdBu_rÚset_overrj  r  r(   r…   r†   )r,   r‘   r  Úaare   rf   r+   rÓ  ÚRÚf0rÈ   r9  r0  r0   r0   r1   Útest_rgba_antialiasI  sF   
ÿ(<<4

""ÿ
ÿrÞ  z<ignore:Data with more than .* cannot be accurately displayedr`   r²   r]   zdim, size, msg)Úrowi  € z2\*\*23 columns)Úcoli   z2\*\*24 rows)rW   c           
   	   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 )Nr4   r5   rà  r   r!  rH  r;   )r¿  r¾  rÀ  rá   r    r`   zData with more than z  cannot be accurately displayed.r¯  rL  )r'   r$   r<   Úsizerk  r(   r  r7  r8  rê   ri  )
r   r€   Údimrá  Úmsgr`   r¿  rÀ  rS   rÂ   r0   r0   r1   Ú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 s–J ‚t t¡ |d j|dd W d   ƒ d S 1 s°w   Y  d S )Nrt   gš™™™™™é?rB  r4   r   r   rÁ  r5  r]  )r   r¿  r5   Úsymlogr   rC  rg  )r   r¿  r¾  r6   Úlogit)r¿  )Ú	linthresh)rç  r¿  r¾  )rC  rg  )r   ÚclimÚfoobar)r$   ry   r{   r'   r(   r   r"  r1  ÚtypeÚimagesr   r  r  rµ  )r   r€   rO  ÚaxtsÚaxrsr0   r0   r1   Útest_str_norms©  s"   "ÿrî  c                  C   sn  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	j¡t	 
d¡ƒ W d   ƒ n1 sŒw   Y  tjtd
d | t	 
d¡t	 
d¡jƒ W d   ƒ d S 1 s°w   Y  d S )Nræ   zmust be a NumPy arrayr¯  )r,  r,  zdifferent dimensionalities)r,  r,  r6   zmust be RGBA)r,  r,  r   zMismatched typeszmust be C-contiguous)Ú	functoolsÚpartialrN  Ú_imageÚresampler   r  r  rµ  r$   r<   r?   rk  )rò  r0   r0   r1   Útest__resample_valid_output¿  s    ÿÿÿÿ"ÿ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*  r8   r“  )r#   ru  r   r  r  r:  Ú	get_shaper$   r%   r‹  r&   r^  Úget_sizer—  r0   r0   r1   Útest_axesimage_get_shapeÍ  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 )Nr6   rX   ræ   r!  r5   r4   )rç   rÀ  )r#   rb   rM  r$   r%   r&   r(   rm  Ú
get_aspectr   rí   ré   rw  r0   r0   r1   Ú.test_non_transdata_image_does_not_touch_aspectÙ  s   rø  )Ú
contextlibr   r   rï  rk   r–   Úpathlibr   r²  r±  Úurllib.requestr¶  Únumpyr$   Únumpy.testingr   ÚPILr   Ú
matplotlibrN  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  r2   rC   rT   ÚmarkÚparametrizeri   rr   r„   r‡   r’   r   rž   r­   r±   r·   rÃ   rÔ   rÚ   ró   rû  r÷   rÿ   r	  r  r  r  r  r  r'  r:  r=  rH  rP  r[  rd  rp  rs  rx  r|  r„  r  r˜  r›  r%   r&   r¡  r¬  r»  rÃ  rÜ  rÝ  rã  rù  rý  r   r  Úmachiner  r  Úsplitr$  r'  r,  r-  r{  r"  r=  r@  rE  rF  rG  rL  rQ  rS  rY  r[  r`  ra  Úcontextrn  rq  r’  rr  r§  r¨  r­  r®  rÃ  rÈ  rÞ  Úfilterwarningsrä  rî  ró  rö  rø  r0   r0   r0   r1   Ú<module>   s¢    

ÿ
	þ




"


Gûÿ

	





ÿ
	



ÿ

#ÿ

		ÿÿýÿ
	!


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