o
    Cº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$dƒgddgddCd„d…d†„ ƒZQe$d‡gddCd{dˆd‰„ ƒZRdŠd‹„ ZSe$dŒgddCd{ddŽ„ ƒZTdd„ ZUd‘d’„ ZVd“d”„ ZWd•d–„ ZXd—d˜„ ZYd™dš„ ZZe,j/ 0d›e e [dœ¡e [d¡e [dž¡ \dŸ¡fe!e [dœ¡e [d¡e [d ¡ \d¡¡fg¡d¢d£„ ƒZ]d¤d¥„ Z^d¦d§„ Z_e$d¨gddd©dª„ ƒZ`e$d«gddd¬d­„ ƒZad®d¯„ Zbd°d±„ Zce$d²gdd³d´dµd¶„ ƒZde$d·gddd¸d¹„ ƒZedºd»„ Zfe$d¼gddd½d¾„ ƒZge$d¿ge h¡ dÀkr¾d ndÁddCdÂdÃdÄ„ ƒZidÅdÆ„ Zje,j/ 0dÇdÈdÉ„ dÊ k¡ D ƒ¡dËdÌ„ ƒZle$dÍgddCd{dÎdÏ„ ƒZme$dÐgddCd{dÑdÒ„ ƒZne$dÓgddCd{dÔdÕ„ ƒZoe,j/ 0dÖejpejqd×dØ„ dÙdØ„ g¡dÚdÛ„ ƒZrdÜdÝ„ ZsdÞdß„ Ztdàdá„ Zudâdã„ Zve,j/ 0dädådæg¡e,j/ 0dçdèdég¡dêdë„ ƒƒZwdìdí„ Zxdîdï„ Zydðdñ„ Zzdòdó„ Z{e#ƒ dôdõ„ ƒZ|död÷„ Z}ej @dC¡dødù„ ƒZ~e$dúgddgddCd„dûdü„ ƒZG dýdþ„ dþej€ƒZdÿd „ Z‚dd„ Zƒe#dgddd„ ƒZ„e,j/ 0ddRdKg¡e#dgddd„ ƒƒZ…e#dgddd	„ ƒZ†e$d
gdCdedd„ ƒZ‡e$dgdCdedd„ ƒZˆe$dgdCddddd„ ƒZ‰e#dddd„ ƒZŠe#dddd„ ƒZ‹dd„ ZŒe,j/ d¡e,j/ 0d2d3d4g¡e,j/ 0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’e$d*gdCdd+dd,d-„ ƒZ“e$d.gdCdd+dd/d0„ ƒZ”e$d1gdCdd2d3d4„ ƒZ•e,j/ 0dÇd5¡e,j/ 0d6d7¡d8d9„ ƒƒZ–e,j/ 0d:d;¡e#ƒ 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ÚTransformedBboxzinterp_alpha.pngT)Úremove_textc                  C   sf   t  dd¡\} \}}t d¡}t d¡|d< t tjdtjd¡|d< |j|dd	 |j|d
d	 dS )z:Test the interpolation of the alpha channel on RGBA imagesé   é   )é   r   é   ©r   r   ).r   ©Údtype©.é   Únone©ÚinterpolationÚbilinearN)ÚpltÚsubplotsÚnpÚzerosÚonesÚtrilÚuint8Úimshow)ÚfigÚaxlÚaxrÚimg© r2   úX/home/ubuntu/veenaModal/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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   ©Ú
MouseEventrP   rn   r®   )rY   ©r   r   Úmotion_notify_eventé,   )g333333$@r   rV   )r   rÛ   r   rÛ   ©Úextent)ç      Ð?rô   é7   )rá   rô   )ç{®Gáz„?g{®Gáz„¿r   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s†J | |¡|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]g°rh‘í|¿?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   gMòãûk&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Úbadç333333ó?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¨   g’ÕMÏð€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Ð  gš™™™™™¹¿rU  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 r±t |¡}|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{®Gáz”?)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    €„.AéF   éZ   g    €„.ÁrÛ  éÃ   é×   ÚyellowÚcyanr   rE   g333333ó¿rø  )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 s–J ‚t t¡ |d j|dd W d   ƒ d S 1 s°w   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 sŠw   Y  tjtd	d | t	 
d¡t	 
d¡ƒ W d   ƒ n1 s¬w   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   ƒ n1 sów   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¡ qåd 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
ÿÿ

ÿ!ÿ
ÿþ