o
    îÇh0æ  ã                   @   s4	  d dl mZ d dlmZ d dlZd dlZd dlZd dlmZ d dlZd dl	Z	d dl
Zd dlZd dlmZ d dlmZ d dlZd dlmZmZmZmZmZmZ d dlmZmZmZm Z m!Z! d d	l"m#Z#m$Z$ d d
l%m&Z&m'Z'm(Z( d dl)m*Z+ d dl,Z,e$dgdddd„ ƒZ-e$dgddgdddd„ ƒZ.e,j/ 0dddg¡e$dgddgddd„ ƒƒZ1dd„ Z2e,j/ 0dg d ¢¡e#dgdd!d"„ ƒƒZ3e#dgdd#d$„ ƒZ4e#ƒ d%d&„ ƒZ5d'd(„ Z6d)d*„ Z7e,j/ 0d+g d,¢¡d-d.„ ƒZ8e,j/ 0d/d0d1g¡d2d3„ ƒZ9e,j/ 0d+g d4¢¡d5d6„ ƒZ:d7d8„ Z;d9d:„ Z<d;d<„ Z=e$d=gddd>d?„ ƒZ>ej ?d@¡e#dgddAdB„ ƒƒZ@dCdD„ ZAe,j/ 0dEdFdFgd gdFdGgdHgdIdFgdJgdKdFgdJgdLdMgdNgdOdFgdgdFdOgdgg¡dPdQ„ ƒZBe,j/ 0dRdSdTggdUfdVdWggdXfejCdHdYggdZfdHd[ggd\fdOdOggd]fd d ggd^fg¡d_d`„ ƒZDe$dagd@dbdcdd„ ƒZEe$degd@dbdfdg„ ƒZFe#dgddhdi„ ƒZGdjdk„ ZHdldm„ ZIe$dngdddodp„ ƒZJe$dqgdddgdrdsdt„ ƒZKdudv„ ZLe$dwgdd@dxdydz„ ƒZMe$d{gddd|d}„ ƒZNe#dgdd~d„ ƒZOe$d€gddgdd@dd‚dƒ„ ƒZPe$d„gdd@dxd…d†„ ƒZQd‡dˆ„ ZRe$d‰gdd@dxdŠd‹„ ƒZSdŒd„ ZTdŽd„ ZUdd‘„ ZVd’d“„ ZWd”d•„ ZXd–d—„ ZYe,j/ 0d˜e e Zd™¡e Zdš¡e Zd›¡ [dœ¡fe!e Zd™¡e Zdš¡e Zd¡ [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ª„ ƒZ`d«d¬„ Zad­d®„ Zbe$d¯gdd°d±d²d³„ ƒZce$d´gdddµd¶„ ƒZdd·d¸„ Zee$d¹gdddºd»„ ƒZfe$d¼ge g¡ d½kr¶d nd¾dd@d¿dÀdÁ„ ƒZhdÂdÃ„ Zie,j/ 0dÄdÅdÆ„ dÇ j¡ D ƒ¡dÈdÉ„ ƒZke$dÊgdd@dxdËdÌ„ ƒZle$dÍgdd@dxdÎdÏ„ ƒZme$dÐgdd@dxdÑdÒ„ ƒZne,j/ 0dÓejoejpdÔdÕ„ dÖdÕ„ g¡d×dØ„ ƒZqdÙdÚ„ ZrdÛdÜ„ ZsdÝdÞ„ Ztdßdà„ Zue,j/ 0dádâdãg¡e,j/ 0dädådæg¡dçdè„ ƒƒZvdédê„ Zwdëdì„ Zxdídî„ Zydïdð„ Zze#ƒ dñdò„ ƒZ{dódô„ Z|ej ?d@¡dõdö„ ƒZ}e$d÷gddgdd@ddødù„ ƒZ~G dúdû„ dûejƒZ€düdý„ Zdþdÿ„ Z‚e#dgdd d„ ƒZƒe,j/ 0ddOdHg¡e#dgddd„ ƒƒZ„e#ƒ dd„ ƒZ…e$dgd@dbdd	„ ƒZ†e$d
gd@dbdd„ ƒZ‡e$dgd@d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/ 0d/d0d1g¡e,j/ 0dg d¢g d¢g¡e#dddd„ ƒƒƒƒZe#dgddd „ ƒZŽd!d"„ Zd#d$„ Zd%d&„ Z‘e$d'gd@dd(dd)d*„ ƒZ’e$d+gd@dd(dd,d-„ ƒZ“e$d.gd@dd/d0d1„ ƒZ”e,j/ 0dÄd2¡e,j/ 0d3d4¡d5d6„ ƒƒZ•e,j/ 0d7d8¡e#ƒ d9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   úo/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/matplotlib/tests/test_image.pyÚtest_alpha_interp   s   
r4   Úinterp_nearest_vs_noneÚpdfÚsvg)Ú
extensionsr   c                  C   s|   dt d< tjg d¢g d¢gg d¢g d¢ggtjd} t dd	¡\}\}}|j| d
d | d¡ |j| dd | d¡ dS )z5Test the effect of "nearest" and "none" interpolationr!   úsavefig.dpi)éÚ   é¥   é    )éz   ég   éî   )é   éÿ   r   )rA   éc   éG   r   r   r   r"   r#   zinterpolation noneÚnearestzinterpolation nearestN)r   r(   Úarrayr,   r&   r'   r-   Ú	set_title)ÚXr.   Úax1Úax2r2   r2   r3   Útest_interp_nearest_vs_none(   s   ÿÿ
rJ   ÚsuppressCompositeFÚfigimageÚpng)r8   c                 C   s  t jddd}| |_t t d¡d t d¡d ¡\}}t |d |d  ||  ¡}t d|d  d|d   ¡}||d  }|j|d	d	d
d |j|d d d…d d …f d	dd
d |j|d d …d d d…f dd	d
d |j|d d d…d d d…f ddd
d d S )N©r   r   éd   ©ÚfigsizeÚdpig      Y@r   é   é2   r   r   Úlower)ÚxoÚyoÚoriginéÿÿÿÿ)r&   ÚfigurerK   r(   Úix_ÚarangeÚsinrL   )rK   r.   ÚxÚyÚzÚcr1   r2   r2   r3   Útest_figimage:   s   $$$*rb   c                  C   sD   t  ¡ \} }| g d¢¡ t ¡ }|  |¡ | d¡ t  |¡ d S )N)r   r   r!   r   )r&   r'   ÚplotÚioÚBytesIOÚsavefigÚseekÚimread)r.   ÚaxÚbufferr2   r2   r3   Útest_image_python_ioJ   s   

rk   z!img_size, fig_size, interpolation))r   r   Úhanning)r   r   rD   )r   é
   rD   )r!   ç333333@rl   )r!   g333333"@rD   c           	      C   sš   t j d¡ tjd }t j t|| ƒt|| ƒ¡}| |fD ]}| ||¡ q|  ¡ }| 	g d¢¡ |j
|dd | ¡ }| 	g d¢¡ |j
||d d S )Né!N,r9   ©r   r   r   r   Úautor#   )r(   ÚrandomÚseedr&   r   ÚrandÚintÚset_size_inchesr'   Úset_positionr-   )	Úfig_testÚfig_refÚimg_sizeÚfig_sizer$   rR   ÚAr.   ri   r2   r2   r3   Útest_imshow_antialiasedS   s   
r}   c                 C   s¶   t j d¡ tjd }t j t|d ƒt|d ƒ¡}| |fD ]}| dd¡ q|  ¡ }|j	|dd | 
ddg¡ | ddg¡ | ¡ }|j	|d	d | 
ddg¡ | ddg¡ d S )
Nro   r9   r!   rn   rq   r#   rm   rS   rD   )r(   rr   rs   r&   r   rt   ru   rv   r'   r-   Úset_xlimÚset_ylim)rx   ry   rR   r|   r.   ri   r2   r2   r3   Útest_imshow_zoomk   s   
r€   c                 C   sŽ   t  d¡ ttƒjd }ttƒjd }|  d¡}|d  t |¡¡ |d  t |¡¡ | d¡}|d  t	 
|¡¡ |d  t	 
|¡¡ d S )NÚdefaultú%baseline_images/pngsuite/basn3p04.pngú%baseline_images/test_image/uint16.tifr   r   r   )r   Úuser   Ú__file__Úparentr'   r-   r   Úopenr&   rh   )rx   ry   Úpng_pathÚ	tiff_pathÚaxsr2   r2   r3   Útest_imshow_pil}   s   


r‹   c                  C   sF   t  tj tj t¡ddd¡¡} | jtj	ksJ ‚t 
| ¡dks!J ‚d S )NÚbaseline_imagesÚ
test_imagez
uint16.tifé €ÿ)r&   rh   ÚosÚpathÚjoinÚdirnamer…   r   r(   Úuint16Úsum©r1   r2   r2   r3   Útest_imread_pil_uint16Š   s
   ÿr–   c                  C   s:   t  ttƒjd ¡} | jtjksJ ‚t | ¡dksJ ‚d S )Nrƒ   rŽ   )	r&   rh   r   r…   r†   r   r(   r“   r”   r•   r2   r2   r3   Útest_imread_fspath‘   s
   ÿr—   Úfmt)rM   ÚjpgÚjpegÚtiffc                 C   sÄ   | dv}t j d¡ t j dd¡}t ¡ }tj||| dd t ¡ }tj||| dd | d¡ tj	|| d}| d¡ tj	|| d}|j
ddd	| fksOJ ‚|j
ddd	| fks[J ‚t||ƒ d S )
N)r™   rš   r   i@  r   )ÚformatrR   rO   r   ©rœ   r!   )r(   rr   rs   rt   rd   re   r&   Úimsaverg   rh   Úshaper   )r˜   Ú	has_alphaÚdataÚ	buff_dpi1Úbuff_dpi100Úarr_dpi1Ú
arr_dpi100r2   r2   r3   Útest_imsave˜   s   	

r¦   rX   ÚupperrU   c                 C   s,   t  ¡ }tjddd}tj||d| d d S )N)rm   rm   r   r,   r   rM   )Úarrrœ   rX   )rd   re   r(   r)   Úmimagerž   )rX   ÚbufÚresultr2   r2   r3   Útest_imsave_rgba_origin»   s   r¬   )rM   r6   ÚpsÚepsr7   c                 C   s&   t jttjƒt ddgg¡| d d S )Nr   r   r   )r&   rž   r   r   Údevnullr(   rE   )r˜   r2   r2   r3   Útest_imsave_fspathÃ   s   &r°   c                  C   s”   t j d¡ dD ]?} t j ddd¡}t ¡ }tj||| dd | d¡ t 	|¡}d|  
d	¡}| d
kr;|d d d… }d|  
d	¡}t||ƒ qd S )Nr   )rU   r§   é   r   rM   )rX   rœ   r   rA   r,   rU   rY   )r(   rr   rs   rt   rd   re   r&   rž   rg   rh   Úastyper   )rX   r¡   ÚbuffÚarr_bufr2   r2   r3   Útest_imsave_color_alphaÈ   s   

ðrµ   c                  C   sh   ddl m}  t ¡ }| ƒ }| dd¡ tj|ddgddggdd	|id
 t |¡}|j	d dks2J ‚d S )Nr   )ÚPngInfoÚSoftwareÚtestr   r   r!   rM   Úpnginfo©rœ   Ú
pil_kwargs)
ÚPIL.PngImagePluginr¶   rd   re   Úadd_textr&   rž   r   r‡   Úinfo)r¶   rª   r¹   Úimr2   r2   r3   Útest_imsave_pil_kwargs_pngá   s   ÿ
rÀ   c                     s€   ddl m‰  t ¡ } ddi}tj| ddgddggd|d	 t|ƒdks%J ‚t | ¡}‡ fd
d„|j	 
¡ D ƒ}|d dks>J ‚d S )Nr   )ÚTAGS_V2Údescriptionz
test imager   r   r!   r›   rº   c                    s   i | ]
\}}ˆ | j |“qS r2   )Úname)Ú.0ÚkÚv©ÚTAGSr2   r3   Ú
<dictcomp>ó   ó    z/test_imsave_pil_kwargs_tiff.<locals>.<dictcomp>ÚImageDescription)ÚPIL.TiffTagsrÁ   rd   re   r&   rž   Úlenr   r‡   Útag_v2Úitems)rª   r»   r¿   Útagsr2   rÇ   r3   Útest_imsave_pil_kwargs_tiffì   s   
rÑ   Úimage_alphac                  C   sd   t j d¡ t j dd¡} t dd¡\}\}}}|j| ddd |j| ddd |j| dd	d d S )
Nr   é   r   r!   ç      ð?r"   )Úalphar$   ç      à?rD   )r(   rr   rs   rt   r&   r'   r-   )ÚZr.   rH   rI   Úax3r2   r2   r3   Útest_image_alpha÷   s   rÙ   Úmpl20c           
      C   sL  t j d¡ t j ddd¡}t  |d ¡}|  dd¡\\}}\}}|j|dd |j|dd |j|dd |j|dd t j|t  d	¡fdd
}t j|t  	d	dt j¡fdd
}	| dd¡\\}}\}}d|d d …d d …df< | |¡ d|d d …d d …df< | |¡ d|	d d …d d …df< | |	¡ d|	d d …d d …df< | |	¡ d S )Nro   rÓ   r!   rA   r   rÖ   ©rÕ   ç      è?)rÓ   rÓ   r   ©Úaxisr@   é¿   )
r(   rr   rs   rt   r,   r'   r-   Úconcatenater*   Úfull)
rx   ry   ÚrgbfÚrgbuÚax0rH   rI   rØ   ÚrgbafÚrgbaur2   r2   r3   Útest_imshow_alpha  s&   


rç   c            
      C   sp  ddl m}  t ¡ \}}|jt d¡ dd¡dd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	ks9J ‚d
\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d u sXJ ‚| ¡  |jt d¡ dd¡dd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	k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   ©Ú
MouseEventrO   rm   r§   )rX   ©r   r   Úmotion_notify_eventé,   )g333333$@r   rU   )r   rÖ   r   rÖ   ©Úextent)ç      Ð?rï   é7   )rÜ   rï   )ç{®Gáz„?g{®Gáz„¿r   rÖ   ©Ú	transform)r!   rm   )Úmatplotlib.backend_basesré   r&   r'   r-   r(   r\   ÚreshapeÚ	transDataró   ÚcanvasÚget_cursor_dataÚclearr   ÚscaleÚrotate)
ré   r.   ri   r¿   r^   r_   ÚxdispÚydispÚeventÚtransr2   r2   r3   Útest_cursor_data  sN   
 ÿr   zxy, datarÖ   ç      ø?r   g      @r±   g      !@g      #@g      @éU   rY   c                 C   s  ddl m} t g d¢¡}t g d¢¡}|tjd d …f d |d d …tjf d  }t ¡ \}}t|| ¡ | 	¡ | ¡ | 	¡ fd}| 
|||¡ | |¡ | | ¡ d | 	¡ ¡ | | ¡ d | 	¡ ¡ |j | ¡\}	}
|d|j|	|
ƒ}| |¡|ks†J | |¡|fƒ‚d S )Nr   rè   )r   r   r   é	   r±   )r   r   r   r!   r   r   rí   rë   )rô   ré   r(   rE   Únewaxisr&   r'   r   ÚminÚmaxÚset_dataÚ	add_imager~   r   rö   ró   r÷   rø   )Úxyr¡   ré   r^   r_   r`   r.   ri   r¿   rü   rý   rþ   r2   r2   r3   Útest_cursor_data_nonuniformc  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.   ri   r¿   rü   rý   rþ   r2   r2   r3   Útest_format_cursor_dataƒ  s   

r  Ú
image_clip)r   c                  C   sF   ddgddgg} t  ¡ \}}| | ¡}tjdd|jd}| |¡ d S )Nr   r   r!   r   ©r   r   )Úradiusró   )r&   r'   r-   r
   ÚCirclerö   Úset_clip_path)Údr.   ri   r¿   Úpatchr2   r2   r3   Útest_image_clip—  s
   
r  Úimage_cliprectc                  C   sN   t  ¡ \} }ddgddgg}|j|dd}tjddd|jjd}| |¡ d S )	Nr   r   r!   r   ©r   r   r   r   rí   ©r   r   )r	  ÚwidthÚheightró   )r&   r'   r-   r
   Ú	RectangleÚaxesrö   r  )r.   ri   r  r¿   Úrectr2   r2   r3   Útest_image_cliprect¡  s   ÿr  c                 C   s†   t  d¡ d¡}| ¡ }|j|d d …d d …df ddd | dd¡ | dd¡ |  ¡ }|j|ddd | dd¡ | dd¡ d S )NrO   )rm   rm   r   r   r%   )r   r   r   r   )r$   rî   r!   )r(   r\   rõ   r'   r-   r~   r   )rx   ry   r¨   ri   r2   r2   r3   Útest_imshow_10_10_1­  s   "r   c                  C   óV   t  ¡ \} }t d¡ d¡}t t¡ | |¡ W d   ƒ d S 1 s$w   Y  d S )NéÈ   )rm   rm   r   ©	r&   r'   r(   r\   rõ   ÚpytestÚraisesÚ	TypeErrorr-   ©r.   ri   r¨   r2   r2   r3   Útest_imshow_10_10_2¼  ó
   "ÿr(  c                  C   r!  )Niô  )rm   rm   r   r#  r'  r2   r2   r3   Útest_imshow_10_10_5Ã  r)  r*  Úno_interpolation_originc                  C   sP   t  d¡\} }|d jt d¡ d¡ddd |d jt d¡ d¡dd	 d S )
Nr   r   rO   )r   rT   rU   r"   )rX   r$   r   r#   )r&   r'   r-   r(   r\   rõ   )r.   rŠ   r2   r2   r3   Útest_no_interpolation_originÊ  s
   ÿ"r,  Úimage_shift)r   r8   c                  C   sT   dd„ t ddƒD ƒ} d}d}t ¡ \}}|j| t ¡ d||ddfd | d	¡ d S )
Nc                    s$   g | ]‰ ‡ fd d„t ddƒD ƒ‘qS )c                    s   g | ]
}d | d ˆ   ‘qS )r   r2   )rÄ   r^   ©r_   r2   r3   Ú
<listcomp>Ô  rÊ   z/test_image_shift.<locals>.<listcomp>.<listcomp>r   rO   )Úrange)rÄ   r2   r.  r3   r/  Ô  s   $ z$test_image_shift.<locals>.<listcomp>r   rO   gMòãûk&Ag˜Šäûk&Ar"   )Únormr$   rî   rq   )r0  r&   r'   r-   r   ÚLogNormÚ
set_aspect)ÚimgDataÚtMinÚtMaxr.   ri   r2   r2   r3   Útest_image_shiftÒ  s   
ÿr7  c                  C   s  t jddgd} | jg d¢dd}t t d¡d¡ dd	¡}|j|d
g d¢ddd}d }}| | |g¡ | 	| |g¡ | 
g ¡ | g ¡ t ¡ }| j|dd | d¡ t  |¡}t|d d …df ƒ\}}}	}
t|d d …df ƒ\}}}	}
|dksJ dƒ‚d S )Nr   ©rQ   rp   F)Úframeoné   é   rS   r  r§   ©éöÿÿÿrm   r=  rm   r"   Úgray)rX   rî   r$   Úcmapr   )r   r   r   )Ú	facecolorr   rY   rO   z.Expected a non-green edge - but sadly, it was.)r&   rZ   Úadd_axesr(   Útiler\   rõ   r-   r~   r   Ú
set_xticksÚ
set_yticksrd   re   rf   rg   rh   r”   )r.   ri   r¡   r¿   r^   r_   rª   ÚrÚgÚbÚar2   r2   r3   Útest_image_edgesÞ  s$   ÿ



rI  Ú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   
rL  Úimage_composite_alphac                  C   sŠ  t  ¡ \} }t d¡}d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡|dd…dd…df< t d	¡}d|dd…dd…df< d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡dd…tjf |dd…dd…df< |j|g d
¢dd |j|g d¢dd |j|g d¢d |j|g d¢d |j|g d¢dd |j|g d¢dd | d¡ | 	ddg¡ | 
ddg¡ dS )z{
    Tests that the alpha value is recognized and correctly applied in the
    process of compositing images together.
    )é   é   r   r   Nr   çš™™™™™ñ?çš™™™™™¹?rY   r!   )rO  rN  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-   rK  r~   r   )r.   ri   r¨   Úarr2r2   r2   r3   Útest_image_composite_alpha  s.   
$ÿ
$ÿÿ
rU  c                 C   sp   t  d¡ d¡}| |fD ]&}| ¡ }|j|tj g d¢¡|jfd |j|tj g d¢¡|jfd qd|_	d S )Nr  ©r!   r!   )r  ©r   r   )r   r   )Ú	clip_path)r  ©r   r   )r   r   T)
r(   r\   rõ   Úadd_subplotr-   Úmplr   r   rö   rK   )rx   ry   Útr.   ri   r2   r2   r3   Ú#test_clip_path_disables_compositing   s   ÿ
ÿ
r]  Úrasterize_10dpi)r8   r   r   c                  C   sÔ   t  ddgddgg¡} tjdddd\}}|d  | ¡ |d jddgddgdd	d
 |d jddd |d jddgddgdd |d jddd |D ]}| g ¡ | g ¡ |j	d d …  
d¡ qMdtd< d S )Nr   r   r!   r   )r!   r   r8  r   g      4@T)Ú	linewidthÚ
rasterizedrW  )rY   r   ©ÚxlimÚylim)r_  Frm   r9   )r(   Úasarrayr&   r'   r-   rc   ÚsetrC  rD  ÚspinesÚset_visibler   )r1   r.   rŠ   ri   r2   r2   r3   Útest_rasterize_dpi,  s   	

rh  Úbbox_image_invertedc                  C   sÊ   t  d¡ d¡} t ¡ \}}tttddgddggƒ|jƒdd}| 	| ¡ | 
d¡ | dd¡ | dd¡ | |¡ t  d¡} tttdd	gd
dggƒ| ¡ jƒdd}| 	| ¡ | 
d¡ | |¡ d S )NrO   ©rm   rm   r   rD   r#   Frm   rQ  çš™™™™™É?rR  rï   )r(   r\   rõ   r&   r'   r   r   r   rö   r  Úset_clip_onr~   r   Ú
add_artistÚidentityÚ
get_figureÚtransFigure)r	   r.   ri   Úbbox_imr2   r2   r3   Útest_bbox_image_invertedK  s(   þ



ÿþ

rr  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Ü   )rQ  gÍÌÌÌÌÌä?rÖ   çš™™™™™Ù?)rS  rR  ç        rk  )çffffffæ?çÍÌÌÌÌÌì?rs  rS  rj  rO   rP   rp   r   r   )rs  ru  rk  rv  rD   )rî   r$   i  r"  i¼  i„  r   )rî   r$   ró   )r(   rE   r&   r'   rw   r~   r   r-   r÷   ÚdrawÚrendererÚget_window_extentr   Ú
get_pointsÚ	transAxes)r¿   r.   ri   Úim_objrx  Úim_bboxr2   r2   r3   Ú$test_get_window_extent_for_AxisImaged  s4   ÿ
ÿ


þ

r~  zzoom_and_clip_upper_origin.pngc                  C   sF   t  d¡} |  d¡} t ¡ \}}| | ¡ | dd¡ | dd¡ d S )NrO   rj  ç       @ç      à¿)r(   r\   rõ   r&   r'   r-   r   r~   )r	   r.   ri   r2   r2   r3   Útest_zoom_and_clip_upper_origin‡  s   


r  c                  C   s   t  ¡ } t| ƒ}| d¡ d S )NÚBlues)r&   Úgcar   Úset_cmap©ri   r¿   r2   r2   r3   Útest_nonuniformimage_setcmap“  s   r†  c                  C   s"   t  ¡ } t| ƒ}| t  ¡ ¡ d S ©N)r&   rƒ  r   Úset_normÚ	Normalizer…  r2   r2   r3   Útest_nonuniformimage_setnorm™  s   rŠ  c                  C   sn   t jddd} tdƒD ]}t  ddd¡d | |d d …f< qt dd¡}| |  ¡ ¡ t 	¡ \}}| 
|¡ d S )	Nrj  r,   r   rm   rt  rÔ   rA   ÚL)r(   r*   r0  Úlinspacer   ÚnewÚputdataÚflattenr&   r'   r-   )ÚimdÚir¿   r.   ri   r2   r2   r3   Útest_jpeg_2dŸ  s    r’  c                  C   sª   t jddd tjdtd} t ddd¡| d< t  | ¡ t ¡ }t j	|d	d
dd | 
d¡ t |¡}t| d¡ƒ}d|  krEdksHJ ‚ J ‚| d¡}|dksSJ ‚d S )Nr  é,  rP   )r“  r“  r   r   rt  rÔ   r    Úredr™   )r@  rœ   rR   r   é   é¯   éæ   r  )éþ   r   r   )r&   rZ   r(   r)   ÚfloatrŒ  rL   rd   re   rf   rg   r   r‡   rÍ   Ú	getcolorsÚgetpixel)r¿   r³   r	   Ú
num_colorsÚcorner_pixelr2   r2   r3   Útest_jpeg_alphaª  s   



rž  c                  C   óP   t  ¡ } t| ƒ}tjdtd d¡}| |¡ d|d< |jd dks&J dƒ‚d S ©Nr:  r   ©r   r!   çÍÌÌÌÌÌ#@r  r   úvalue changed)	r&   rƒ  r   r(   r\   r™  rõ   r  Ú_A©ri   r¿   r`   r2   r2   r3   Útest_axesimage_setdataÂ  ó   
r¦  c                  C   rŸ  r   )	r&   Úgcfr   r(   r\   r™  rõ   r  r¤  )r.   r¿   r`   r2   r2   r3   Útest_figureimage_setdataË  r§  r©  zimage_cls,x,y,aç      @ç      @g      (@r¡  g      @)r!   r   c                 C   sš   t  ¡ }| |ƒ}| |||¡ d |d<  |d< |d< |jd |jd   kr6|jd   kr6dks;J dƒ‚ J dƒ‚| ||| g |j¢d‘R ¡¡ d S )Nr¢  r   r  r£  rY   )r&   rƒ  r  r¤  Ú_AxÚ_Ayrõ   rŸ   )Ú	image_clsr^   r_   rH  ri   r¿   r2   r2   r3   Útest_setdata_xyaÔ  s   @$r¯  c            
      C   sÞ   ddl m}  tj d¡ tj dd¡}t dd¡\}}|d  |¡}|d  |¡}tj	||d d tj	||d d t
 ¡ }tj|dd t
 | ¡ ¡}|  |¡}d }| d	¡D ]}	|d u rd|	d
 }qY|	d
 |krlJ ‚qYd S )Nr   )ÚElementTreerm   r   r   )ri   r7   r   r	   r  )Ú	xml.etreer°  r(   rr   rs   rt   r&   r'   Ú
pcolormeshÚcolorbarrd   re   rf   ÚgetvalueÚparseÚiter)
r°  r¡   r.   ri   Úp1Úp2r³   Útreer  r	   r2   r2   r3   Útest_minimized_rasterizedä  s(   

ÿürº  c                  C   s¤   t tƒjd } dtjdkrdnd |  ¡  ¡  }tjt	dd t
 |¡ W d   ƒ n1 s/w   Y  tj |¡}t
 |¡ W d   ƒ d S 1 sKw   Y  d S )Nr‚   zfile:Úwin32z///Ú zPlease open the URL©Úmatch)r   r…   r†   ÚsysÚplatformÚresolveÚas_posixr$  r%  Ú
ValueErrorr&   rh   ÚurllibÚrequestÚurlopen)r   ÚurlÚfiler2   r2   r3   Útest_load_from_url  s   ÿ
þÿ"ÿrÉ  Úlog_scale_imagec                  C   sN   t  d¡} d| d d d…< t ¡ \}}|j| g d¢ddddd |jd	d
 d S )Nrj  r   r   )r   rO   r   rO   ÚviridisrY   rq   )rî   r?  ÚvmaxÚvminÚaspectÚlog)Úyscale)r(   r)   r&   r'   r-   re  )r×   r.   ri   r2   r2   r3   Útest_log_scale_image  s   
ÿrÑ  Úrotate_imagec                  C   s,  d} t  dd| ¡ }}t  ||¡\}}t  |d |d   d ¡dt j  }t  |d d d |d d d   d ¡dt j d d  }|| }t dd¡\}}	|	j|dd	d
g d¢dd}
tƒ  	d¡|	j
 }|
 |¡ |
 ¡ \}}}}|	j|||||g|||||gdd|d |	 dd¡ |	 dd¡ d S )Nrï   ç      Àrª  r   r   r  rÖ   r"   rË  rU   )éþÿÿÿr   éýÿÿÿr   T)r$   r?  rX   rî   Úclip_oné   zr--r!   )Úlwró   r   r   r   )r(   r\   ÚmeshgridÚexpÚpir&   r'   r-   r   Ú
rotate_degrö   Úset_transformÚ
get_extentrc   r~   r   )Údeltar^   r_   rG   ÚYÚZ1ÚZ2r×   r.   rH   Úim1Útrans_data2Úx1Úx2Úy1Úy2r2   r2   r3   Útest_rotate_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  rM   r   r   r   )	rd   re   r(   r)   r&   rž   rg   rh   rŸ   )r³   r¿   r1   r2   r2   r3   Útest_image_preserve_size7  s   


rê  c                  C   s¸   d} t  | t¡}tj| | fdd}| d¡}| ¡  |j|dddd t 	¡ }|j
|d	d
 | d¡ t |¡}|jdks?J ‚tt  |d d …d d …df t¡t  | t¡d d d… ƒ d S )Né   F)rQ   r9  )rt  rt  rÔ   rÔ   rD   rU   rq   )r$   rX   rÎ  r   )rR   r   )rë  rë  r   rY   )r(   rn  r™  r&   rZ   rA  Úset_axis_offr-   rd   re   rf   rg   rh   rŸ   r   rd  Úbool)Únr¡   r.   ri   r³   r1   r2   r2   r3   Útest_image_preserve_size2C  s   


ÿrï  zmask_image_over_under.pngrÔ   )r   Útolc               	   C   sb  d} t  dd| ¡ }}t  ||¡\}}t  |d |d   d ¡dt j  }t  |d d d |d d d   d ¡dt j d d  }d||  }tjjjd	d
dd}t j	 
|dk|¡}	t dd¡\}
\}}|j|	d|tjdddddg d¢d}| d¡ |
j|dd|dd |j|	d|tjg d¢ddddg d¢d}| d¡ |
j|ddd|dd  d S )!Ngš™™™™™™?rÓ  rª  r   r   r  rÖ   rm   rE  rF  rG  ©ÚoverÚunderÚbadç333333ó?r%   g      ð¿rÔ   F)rÍ  rÌ  ÚcliprU   )rÕ  r!   rÕ  r!   )r$   r?  r1  rX   rî   zGreen=low, Red=high, Blue=badÚbothÚ
horizontal)ÚextendÚorientationri   rÎ  rD   )rY   r€  gš™™™™™É¿r   rk  rÖ   r   r•  )Úncolorsrö  zWith BoundaryNormÚproportional)rù  Úspacingrú  ri   rÎ  )r(   r\   rÙ  rÚ  rÛ  r&   Úcmr>  Úwith_extremesÚmaÚmasked_wherer'   r-   r   r‰  rF   r³  ÚBoundaryNorm)rß  r^   r_   rG   rà  rá  râ  r×   ÚpaletteÚZmr.   rH   rI   r¿   r2   r2   r3   Útest_mask_image_over_underW  s>   &*ÿý

ÿ
ÿü


ÿr  Ú
mask_imagec                  C   s   t  dd¡\} \}}t d¡}tj|dd…dd…f< |j|dd tjdtd}d|dd…dd…f< tj 	tjdtj
d|¡}|j|dd d S )Nr   r   r   rD   r#   r   T)r&   r'   r(   r*   Únanr-   r)   rí  r   Úmasked_arrayr“   )r.   rH   rI   r|   r2   r2   r3   Útest_mask_imagew  s   
r	  c                  C   s2   t  dt j¡} t ¡ \}}| | ¡ |j ¡  d S )NrN   )r(   rá   r  r&   r'   r-   r÷   Ú	draw_idle)r¡   r.   ri   r2   r2   r3   Útest_mask_image_all‰  s   
r  zimshow_endianess.pngc                  C   s„   t  d¡} t  | | ¡\}}t  |d |d ¡}t dd¡\}\}}tdddd}|j| d	¡fi |¤Ž |j| d
¡fi |¤Ž d S )Nrm   r   r   r   rU   rD   rË  )rX   r$   r?  z<f8z>f8)	r(   r\   rÙ  Úhypotr&   r'   Údictr-   r²   )r^   rG   rà  r×   r.   rH   rI   Úkwargsr2   r2   r3   Útest_imshow_endianess‘  s   
r  Úimshow_masked_interpolationÚx86_64rñ   )rð  r   r   c            
      C   sú   t jd jdddd} d}tjd|| d d	}tj|| td
 ||¡}d|d< d|d< tj	|d< t 
|¡ d¡}d|d< tj ||¡}t dd¡\}}ttjƒ}| d¡ | d¡ t|| ¡ ƒD ]\}}	|	 |¡ |	j||| |d |	 d¡ qcd S )NrË  rE  rG  rÅ   rñ  rS   r   r   ©rÍ  rÌ  r   rY   r   g     jø@)r;  r   )r;  r;  rí  T)r   r;  r!   rÓ   rq   Úantialiased)r1  r?  r$   Úoff)r[  Ú	colormapsrÿ  r   r‰  r(   r\   r™  rõ   ÚinfÚ
zeros_liker²   r   r  r&   r'   Úsortedr©   Ú	_interpd_ÚremoveÚzipÚravelrF   r-   rÞ   )
r?  ÚNrî  r¡   Úmaskr.   Úax_gridÚinterpsÚinterpri   r2   r2   r3   Ú test_imshow_masked_interpolationŸ  s&   




ýr"  c                   C   s   t  ddgdtjgg¡ d S )Nr   r   r!   )r&   r-   r(   r  r2   r2   r2   r3   Útest_imshow_no_warn_invalidÄ  s   r#  r   c                 C   s   g | ]}t  |¡‘qS r2   )r(   r   )rÄ   Úsr2   r2   r3   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“  r   )rm   rm   r!   Úurm   r   rA   Úfr   )r(   r\   rõ   Úkindr&   r'   r-   Ú	get_arrayÚallr   r,   )r   r¨   Útoo_lowÚtoo_highÚ_ri   Úoutr2   r2   r3   Ú$test_imshow_clips_rgb_to_valid_rangeÈ  s   


r.  zimshow_flatfield.pngc                  C   s0   t  ¡ \} }|jt d¡dd}| dd¡ d S )Nr   rD   r#   rÖ   r  )r&   r'   r-   r(   r*   Úset_clim©r.   ri   r¿   r2   r2   r3   Útest_imshow_flatfieldÝ  s   r1  zimshow_bignumbers.pngc                  C   sJ   dt d< t ¡ \} }tjg d¢g d¢gtjd}| |¡}| dd¡ d S )NrD   úimage.interpolation)r   r   g   ¢”mB)r!   r   r   r   r   r   )r   r&   r'   r(   rE   Úuint64r-   r/  ©r.   ri   r1   Úpcr2   r2   r3   Útest_imshow_bignumbersä  s
   
r6  zimshow_bignumbers_real.pngc                  C   sD   dt d< t ¡ \} }t g d¢g d¢g¡}| |¡}| dd¡ d S )NrD   r2  )r  rÔ   g’ÕMÏð€D)r«  rÔ   rª  r   r   )r   r&   r'   r(   rE   r-   r/  r4  r2   r2   r3   Útest_imshow_bignumbers_realï  s
   
r7  Ú	make_normc                   C   ó
   t  d¡S ©Nr   )r   Ú
SymLogNormr2   r2   r2   r3   Ú<lambda>ÿ  ó   
 r<  c                   C   r9  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½  ©r1  )éûÿÿÿr   r@  r   )r&   r'   r$  ÚwarnsÚUserWarningr-   Ú
set_extentr÷   rw  r%  ÚRuntimeErrorÚ
make_imageÚget_renderer)r8  r.   ri   r¿   r2   r2   r3   Útest_empty_imshowû  s   ÿþ
"ÿrG  c                  C   s0   t  ¡ \} }| tjdtjd¡ | j ¡  d S )NrV  r   )r&   r'   r-   r(   r)   Úfloat16r÷   rw  ©r.   ri   r2   r2   r3   Útest_imshow_float16  s   rJ  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 )NrV  r   Úequiv)r&   r'   r-   r(   r)   Ú
longdoubleÚcan_castÚfloat64r   r$  rA  rB  r÷   rw  rI  r2   r2   r3   Útest_imshow_float128  s   ÿ"ýrO  c                  C   s0   t  ¡ \} }| tjddgddggtd¡ d S )NTFr   )r&   r'   r-   r(   rE   rí  rI  r2   r2   r3   Útest_imshow_bool  s   $rP  c                  C   s.   t  ¡ \} }| t dtj¡¡ | j ¡  d S )Nrj  )r&   r'   r-   r(   rá   r  r÷   rw  rI  r2   r2   r3   Útest_full_invalid"  s   rQ  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 )Nr@  r   r   r   r   r!   ©r   r   r   r   rí   rY   )r   r!   r   r   zimage.composite_imager   )r(   rÙ  r\   r]   r&   r'   r~   r-   r   rd   re   rf   r´  Úcount)
r˜   ÚcountedÚcomposite_imagerS  rG   rà  r×   r.   ri   rª   r2   r2   r3   Útest_composite)  s   $
rV  c                  C   sV   t  ¡ \} }|jdggdd | ¡  | ¡  | ¡ | ¡   kr&dks)J ‚ J ‚d S )Nr   rR  rí   rW  )r&   r'   r-   ÚrelimÚ	autoscaleÚget_xlimÚget_ylimrI  r2   r2   r3   Ú
test_relim<  s
   (r[  c                  C   sx   t  ¡ \} }| ¡  |jddgddggddddd}|jddd | j ¡  t | j 	¡ ¡d	d d
…f dk 
¡ s:J ‚d S )Nr   rq   r<  r>  F)rÎ  rî   r?  rÖ  rW  ra  .r!   )r&   r'   rì  r-   re  r÷   rw  r(   rE   Úbuffer_rgbar)  r0  r2   r2   r3   Útest_unclippedD  s   ÿ
,r]  c                  C   sÄ   t  d¡\} }|D ]}| ¡  q	|d jddgddggddd}| d ¡ | |d j¡ t ¡ }| j	|dd	 h | 
¡ £d
hksCJ ‚|d jdd t ¡ }| j	|dd	 | 
¡ | 
¡ ks`J ‚d S )Nr   r   r   r!   rq   rR  )rÎ  rî   Úrgbar   rA   )rY   r   )rc  )r&   r'   rì  r-   r  Úset_clip_boxÚbboxrd   re   rf   r´  re  )r.   rŠ   ri   r¿   Ú
buf_beforeÚ	buf_afterr2   r2   r3   Útest_respects_bboxP  s   
 
rc  c                  C   s„   t  ¡ \} }| t d¡¡}tjjdgdgd}| |¡dks!J ‚tjjdgdgd}| |¡dks4J ‚tj}| |¡dks@J ‚d S )	Nrê   r   T©r  r  Fz[0]z[nan])	r&   r'   r-   r(   r)   r   r  r  r  )r.   ri   r¿   r¡   r2   r2   r3   Útest_image_cursor_formattingb  s   re  c           
      C   sœ   t  dd¡}t  ||¡\}}t  d|d d  |d  ¡}|| ¡  }tjd }|  ¡ }|j|||dd	 | ¡ }|t	 
¡ |ƒƒ}	||	d
< |j|	dd dS )zPer-pixel alpha channel test.r   r   rÕ  rÖ   r   g[Âõ(\ß?rË  rD   )rÕ   r?  r$   ).rY   r#   N)r(   rŒ  rÙ  rÚ  r  r[  r  rZ  r-   r   r‰  )
rx   ry   r^   ÚxxÚyyÚzzrÕ   r?  ri   r^  r2   r2   r3   Útest_image_array_alphaq  s   
ri  c                   C   sL   t jtdd tjt d¡ddgd W d   ƒ d S 1 sw   Y  d S )Nzalpha must be a float, two-dr½  rN   r   rÛ   )r$  r%  r&  r&   r-   r(   r)   r2   r2   r2   r3   Ú!test_image_array_alpha_validation„  s   "ÿrj  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þ?rQ  rO   rP   rp   )rY   rY   rY   r   r   r   r   é+   éO   é_   éB   r   rY   rY   rY   r   r   r   é"   r   rq   r   )rÎ  r?  rÍ  rÌ  r  r   rm   rA   )r   r[  r  Ú	set_underr&   rZ   rA  r(   rE   r™  r-   rÞ   r÷   rw  rE  rx  r?  r1  ÚTr  r²   ru   r)  )r?  r.   ri   r¡   r¿   Ú
from_imageÚdirect_computationr2   r2   r3   Útest_exact_vmin‰  s    þ

$þrw  Ú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   rE  rQ  )rm  rØ  ro   r±   r‚  rR  r"   rY   r   )r?  rî   r$   rÍ  rÌ  gš™™™™™¹¿rP  N)
r&   r'   rc   r(   rr   rs   r-   Úrandnr~   r   rI  r2   r2   r3   Útest_image_placement¦  s   ÿrz  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(   rd  Ú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 )
Nr-  r   r   r}  Údimensionlessr   Ú*z/(ú))rƒ  ÚNotImplementedrÍ   r(   rd  ÚaddÚsubtractrÃ  ÚmultiplyÚdivideÚgreaterÚgreater_equalÚequalÚ	not_equalÚlessÚ
less_equalr|  ÚndarrayrE   r{  )r„  ÚufuncÚmethodÚinputsr  ÚfuncÚi0ÚunitÚout_arrÚi1Úu0Úu1r2   r2   r3   Ú__array_ufunc__É  sF   



þ$

ÿzQuantityND.__array_ufunc__c                 C   s   |   tj¡S r‡  )r|  r(   r›  )r„  r2   r2   r3   rÆ   ð  s   zQuantityND.v)
Ú__name__Ú
__module__Ú__qualname__r  r…  r‡  r¦  ÚpropertyrÆ   Ú__classcell__r2   r2   r‹  r3   r{  ¹  s    'r{  c                  C   sÌ   t ddgdƒ} | d d … \}}t | jt ddg¡k¡sJ ‚| jdks%J ‚t || jt dg¡k¡s5J ‚|| jdks>J ‚|| jdksGJ ‚t t¡ |t ddƒ  W d   ƒ d S 1 s_w   Y  d S )Nr   r   Úmr!   zm*mzm/(m)r$  )	r{  r(   r)  rÆ   rd  r}  r$  r%  rÃ  )ÚqÚq0Úq1r2   r2   r3   Útest_quantityndõ  s    "ÿr°  c                  C   s4   t t d¡dƒ} t ¡ \}}| | ¡ |j ¡  d S )NrN   r¬  )r{  r(   r*   r&   r'   r-   r÷   rw  )r¨   r.   ri   r2   r2   r3   Útest_imshow_quantitynd  s   
r±  c                 C   s.  t jddt jd}d|dd…d d …f< t jj|dd}d	|jdd…dd…f< tjd
 jdd}|  	¡ }|j
|tjddddd|d}| tjddd¡ |j
|tjddddd|d}| tjddd¡ |jddd | 	¡ }|j
|tjddddd|d |j
|tjddddd|d |jddd d S )Nr   r   r   rY   r   r   Frd  TrË  Úw©ró  rÖ   r  r  rD   )r1  rî   r$   r?  rÔ  )r   rm   r   rm   ©r   rm   ra  )r(   rá   rN  r   rE   r  r[  r  rÿ  r'   r-   r   r2  rˆ  r‰  re  )rx   ry   r¡   Úmasked_datar?  ri   r¿   r2   r2   r3   Útest_norm_change
  s.   ÿÿÿÿr¶  r^   c                 C   s²   t jd|t jd}d|dd…d d …f< |  ¡ }|j|tjd| ¡ ddd	d
 t jd|t jd}d|dd…d d …f< | ¡ }tj	d	 j
dd}|j|tjd| ¡ dd|d
 d S )Nr   r   g@Œµx¯Dr   r   r   r  rD   rË  )r1  r$   r?  iè  r²  r³  )r(   rá   rN  r'   r-   r   r2  r  r[  r  rÿ  r‰  )rx   ry   r^   r¡   ri   r?  r2   r2   r3   Útest_huge_range_log&  s   ÿ
ÿr·  c           	   
   C   sB  |   dd¡}|  dd¡}ddgddggddgddggddgddggf}g d¢}tt||ƒƒD ]p\}\}}||  |¡ ||  |¡ ||  |¡ || j|ddddddd	 ||  d
d¡ ||  dd
¡ || j 	¡  || j
 d¡ || j d¡ || j tjdg d¢dd¡ || j tjdg d¢dd¡ q.d S )Nr   r!   r   )r*   r)   ÚmixedrD   r—  r§   ÚGreys)r$   rÎ  rX   r?  rÍ  rÌ  r€  r  gÍÌÌÌÌÌð?r÷  r  )r   r   r   rm   T)ÚnbinsÚstepsÚinteger)r'   Ú	enumerater  rF   Úspyr-   r~   r   ÚxaxisÚtick_topÚtitleÚset_yÚset_ticks_positionÚset_major_locatorÚmtickerÚMaxNLocatorÚyaxis)	rx   ry   Úax_testÚax_refÚ	plot_dataÚplot_titlesr‘  r`   rÁ  r2   r2   r3   Útest_spy_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 )NrV  r8  r!   T)ÚsharexÚshareyrD   r%   r#   r   r  r   r´  )rb  )r&   rZ   r'   r  r   r  r(   r\   rõ   r  Ú
pcolorfastrì  re  )rŠ   ri   r$   r¿   r2   r2   r3   Útest_nonuniform_and_pcolor[  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  rV  r±   rÏ  )Úbase)r&   r'   r0  r   r  r(   r\   rõ   r~   r   Úset_box_aspectÚ
set_xscaleÚ
set_yscaler  )r,  rŠ   r‘  ri   r¿   r2   r2   r3   Útest_nonuniform_logscalek  s$    ÿ
òr×  zrgba_antialias.pngg{®Gáz”?)r   r   rð  c                  C   s¢  t jddddddd\} }d}t ||f¡}d|d d d…d d …f< t |¡| d }t |¡| d }t ||¡\}}t |d |d  ¡}d	}	d
}
t tjd |	| |
|d  d   ¡}d|d t	|d ƒ…d d …f |d t	|d ƒ…d d …f dk < d|d t	|d ƒ…d d …f |d t	|d ƒ…d d …f dk < |d d …t	|d ƒd …f |d d …t	|d ƒd …f< tj
|dd…dd…f< d|dd…dd…f< d|dd…dd…f< d|dd…dd…f< d|dd…dd…f< tt jjƒ}| d¡ | d¡ | ¡ }|d j|d|ddd |d  |d d |d d g¡ |d  |d d |d d	 g¡ |d j|d|ddd |d j|dd |ddd! |d" j|dd#|ddd! d S )$Nr   )ç      @rØ  FT)rQ   rÍ  rÎ  Úconstrained_layoutéú   rY   rÖ   rm   éK   rs  r   rR  rS   rT   g    €„.AéF   éZ   g    €„.Ár×  éÃ   é×   ÚyellowÚcyanr   rD   g333333ó¿rõ  )r$   r?  rÍ  rÌ  é   rq   r¡   )r$   Úinterpolation_stager?  rÍ  rÌ  r!   r^  )r&   r'   r(   r*   r\   rÙ  Úsqrtr]   rÛ  ru   r  r   rþ  ÚRdBu_rÚset_overrs  r  r-   r~   r   )r.   rŠ   r  Úaar^   r_   rG   rà  ÚRÚf0rÅ   rH  r?  r2   r2   r3   Útest_rgba_antialias€  sF   
ÿ(<<4

""ÿ
ÿrê  )rM   c                 C   sR   t j d¡ t j dd¡}| ¡ }|j|dddd |  ¡ }|j|dddd dS )	z[
    Show that interpolation_stage='auto' gives the same as 'data'
    for upsampling.
    é*N,r   r%   rË  r¡   ©r$   r?  rã  rq   N©r(   rr   rs   rt   r'   r-   ©rx   ry   Úgridri   r2   r2   r3   Ú!test_upsample_interpolation_stage¶  s   
ÿ

ÿrð  c                 C   sR   t j d¡ t j dd¡}| ¡ }|j|dddd |  ¡ }|j|dddd dS )z]
    Show that interpolation_stage='auto' gives the same as 'rgba'
    for downsampling.
    ro   i   rq   rË  r^  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¡   r^  zimage.interpolation_stager   r   )ÚDATAÚfooN)	r[  Ú
rc_contextr&   r-   Úget_interpolation_stager$  r%  rÃ  r   )Úvalr2   r2   r3   Útest_rc_interpolation_stageÝ  s   ÿ€ÿ€ÿrø  z<ignore:Data with more than .* cannot be accurately displayedzdim, size, msg)Úrowi  € z2\*\*23 columns)Úcoli   z2\*\*24 rowsc           
   	   C   sæ   |   ¡ }|  ¡ }t d|d f¡}d|d d …|jd d …f< |dkr%|j}|j|ddddd|d}	tjtd	|› d
d | j	 
¡  W d   ƒ n1 sLw   Y  t d¡}d|d d …df< |dkre|j}|j|ddddd|d}	d S )Nr   r   rú  r   rq   rR  r"   )rÍ  rÌ  rÎ  rî   r$   rX   zData with more than z  cannot be accurately displayed.r½  rY  )r'   r(   r)   Úsizert  r-   r$  rA  rB  r÷   rw  )
rx   ry   Údimrû  ÚmsgrX   rÈ  rÉ  rE   r¿   r2   r2   r3   Útest_large_imageè  s2   
ý
ÿý

ýrþ  c                 C   sn  t j dd¡d d }|  dd¡}|d j|dd |d j|dd	d
 |d j|dd |d j|dddd |d j|dddd | dd¡}|d j|t ¡ d |d j|tjd	dd |d j|tjddd |d j|tjddddd |d j|ddd t|d j	d j
ƒtju s–J ‚t t¡ |d j|dd W d   ƒ d S 1 s°w   Y  d S )Nrm   gš™™™™™é?rQ  r   r   r   rÏ  r?  rk  )r1  rÍ  r   Úsymlogr!   rR  ru  )r1  rÍ  rÌ  r   Úlogit)rÍ  )Ú	linthresh)r  rÍ  rÌ  )rR  ru  )r1  ÚclimÚfoobar)r(   rr   rt   r'   r-   r   r2  r;  ÚtypeÚimagesr1  r$  r%  rÃ  )rx   ry   r\  ÚaxtsÚaxrsr2   r2   r3   Útest_str_norms  s"   "ÿr  c                  C   sH  t jtjjtƒ d} tjtdd | t	 
d¡d ƒ W d   ƒ n1 s$w   Y  tjtdd | t	 
d¡t	 
d¡ƒ W d   ƒ n1 sFw   Y  tjtdd | t	 
d¡t	 
d¡ƒ W d   ƒ n1 shw   Y  tjtdd | t	 
d¡t	 
d¡ƒ W d   ƒ n1 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,   rt  ÚflagsÚ	writeable)r  r-  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%  rD  Ú	get_shaper(   r\   r™  rõ   r  Úget_sizer¥  r2   r2   r3   Ú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 )Nr   rN   rò   rq   r   r   )ró   rÎ  )r&   rZ   rZ  r(   r\   rõ   r-   r{  Ú
get_aspectr   rú   rö   r…  r2   r2   r3   Ú.test_non_transdata_image_does_not_touch_aspectG  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Ö   rY   r   r   rO   rs  r   rR  r!   )rë  rÓ   Ú
compressed©rQ   Úlayoutr  rD   r^  rå  )r$   rã  r?  é}   r–  rÚ  r"  ÚZoom)rD   rD   rl   rl   rq   )r¡   r^  r¡   r^  rq   zinterpolation='z	'
space='ú')r(   r\   r*   rÙ  rä  r]   rÛ  ru   r&   r'   r-   r~   r   rF   r  Úflat)r  r^   r_   rç  rG   rà  rè  ré  rÅ   rH  r.   rŠ   ri   r!  Úspacer2   r2   r3   Útest_downsamplingR  s:   (<<4ÿþ
ÿûr  zdownsampling_speckle.pngc                  C   s¼   t jddddddd\} }| ¡ }t d¡ dd¡t d	¡ d
 j}t  d¡}| 	d¡ t
jddd}|d  d¡ |d jt |¡||dd |d  d¡ |d jt |¡||d d S )Nr   r   )r   gš™™™™™@Tr  )rQ   rÍ  rÎ  r  i   rY   iÐ  rT   rË  r¬  r!   rN  r  r   z"interpolation='auto', stage='rgba'r^  )r?  r1  rã  z"interpolation='auto', stage='auto')r?  r1  )r&   r'   r  r(   r\   rõ   r*   rt  Úget_cmapræ  r   r2  rF   r-   Útriu)r.   rŠ   r1   rþ  r1  r2   r2   r3   Útest_downsampling_speckleu  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Ë  )r?  zAinterpolation='auto'
stage='antialaised'
(default for upsampling)Úsinc)r?  r$   z:interpolation='sinc'
stage='auto'
(default for upsampling)r   r^  )r?  r$   rã  z!interpolation='sinc'
stage='rgba'ru  r÷  )ri   Úshrinkrù  )	r(   rr   rs   rt   r&   r'   r-   rF   r³  )rH  r.   rŠ   r¿   r2   r2   r3   Útest_upsamplingŒ  s   ÿÿr#  )rN  Úfloat32Úint16r“   Úint8r,   Úndim)r   r!   c                 C   s`   t j d¡}|dkrdnd}|j|d t j| dd¡}t ¡ \}}| |¡}| 	d ¡d  d S )	NiU  r   rN   )r   r   r!   )rû  Tr   r   )
r(   rr   Údefault_rngÚuniformr²   r   r&   r'   r-   rE  )r   r'  ÚrngrŸ   r¡   r.   ri   Ú
axes_imager2   r2   r3   Útest_resample_dtypes£  s   
r,  Ú
intp_stagerò  c              	   C   sÞ  |   dd¡}|  dd¡}d\}}d}tj ||¡}tj ||d¡}	t ||df¡}
tj|	| ||df¡fdd}|d d  |	¡ |d d  tj|	|
fdd¡ |d d j|	||d	 |d d jtj|	||
 fdd|d
 |d d j|	||d	 |d d j||d
 |d d  |¡ |d d j|	|d |d d j|||d	 |d d jtj|	|| ||df¡ fdd|d
 tj ||¡}|d d j|||d	 |d d jtj|	| ||df¡fdd|d
 d S )Nr   r!   rV  rÖ   r   rY   rÝ   r   )rã  rÕ   )rã  rÛ   )r'   r(   rr   rt   r*   rà   rõ   r-   )rx   ry   r-  Ú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   ÿ ÿýÿýÿ
ýr8  )—Ú
contextlibr   r   r	  rd   r   Úpathlibr   rÀ  r¿  Úurllib.requestrÄ  Únumpyr(   Únumpy.testingr   ÚPILr   Ú
matplotlibr[  r   r	   r©   r
   r   r&   r   r   Úmatplotlib.imager   r   r   r   r   Úmatplotlib.testing.decoratorsr   r   Úmatplotlib.transformsr   r   r   Úmatplotlib.tickerÚtickerrÅ  r$  r4   rJ   ÚmarkÚparametrizerb   rk   r}   r€   r‹   r–   r—   r¦   r¬   r°   rµ   rÀ   rÑ   rÙ   Úcontextrç   r   r
  r  r  r  r  r   r(  r*  r,  r7  rI  rL  rU  r]  rh  rr  r~  r  r†  rŠ  r’  rž  r¦  r©  r\   rõ   r¯  rº  rÉ  rÑ  ré  rê  rï  r  r	  r  r  Úmachiner"  r#  Úsplitr.  r1  r6  r7  r‰  r2  rG  rJ  rO  rP  rQ  rV  r[  r]  rc  re  ri  rj  rw  rz  r›  r{  r°  r±  r¶  r·  rÌ  rÐ  r×  rê  rð  rñ  rø  Úfilterwarningsrþ  r  r  r  r  r  r   r#  r,  r8  r2   r2   r2   r3   Ú<module>   sì    
ÿ
	þ




"





G






ø
úÿ
	
	




ÿ
	



ÿ

#ÿ

		ÿÿýÿ
	!


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