U
    ƒi2eK»  ã                
   @   s¬  d dl mZ d dlmZ d dlZd dlZd dlmZ d dlZd dlZd dl	Z
d dlZd dlmZ d dlmZ d dlZd dlmZmZmZmZmZmZ d dlmZmZmZmZm Z  d d	l!m"Z"m#Z# d d
l$m%Z%m&Z&m'Z' d dl(m)Z* d dl+Z+e#dgdddd„ ƒZ,e#dgdddd„ ƒZ-e#dgddgdddd„ ƒZ.e+j/ 0dddg¡e#dgddgdd d!„ ƒƒZ1d"d#„ Z2e+j/ 0d$d%d&d'd(d)g¡e"dgdd*d+„ ƒƒZ3e"dgdd,d-„ ƒZ4e"ƒ d.d/„ ƒZ5d0d1„ Z6d2d3„ Z7e+j/ 0d4dd5d6d7g¡d8d9„ ƒZ8e+j/ 0d4ddd:d;dg¡d<d=„ ƒZ9d>d?„ Z:d@dA„ Z;dBdC„ Z<e#dDgdddEdF„ ƒZ=dGdH„ Z>e+j/ 0dIdJdKggdLfdMdNggdOfej?dPdQggdRfdPdSggdTfdUdUggdVfg¡dWdX„ ƒZ@e#dYgdddZd[„ ƒZAe#d\gddd]d^„ ƒZBe#d_gddd`dadb„ ƒZCe"dgddcdd„ ƒZDdedf„ ZEdgdh„ ZFe#digdddjdk„ ƒZGe#dlgdddgdmdndo„ ƒZHdpdq„ ZIe#drgddd`dsdt„ ƒZJe#dugdddvdw„ ƒZKe"dgddxdy„ ƒZLe#dzgddgddd{d|d}„ ƒZMe#d~gddd`dd€„ ƒZNdd‚„ ZOe#dƒgddd`d„d…„ ƒZPd†d‡„ ZQdˆd‰„ ZRdŠd‹„ ZSdŒd„ ZTdŽd„ ZUdd‘„ ZVe+j/ 0d’ee Wd“¡e Wd”¡e Wd•¡ Xd–¡fe e Wd“¡e Wd”¡e Wd—¡ Xd˜¡fg¡d™dš„ ƒZYd›dœ„ ZZddž„ Z[e#dŸgddd d¡„ ƒZ\e#d¢gddd£d¤„ ƒZ]d¥d¦„ Z^d§d¨„ Z_e#d©gddªd«d¬d­„ ƒZ`e#d®gddd¯d°„ ƒZad±d²„ Zbe#d³gddd´dµ„ ƒZce#d¶ge d¡ d·kr d nd¸ddd¹dºd»„ ƒZed¼d½„ Zfe+j/ 0d¾d¿dÀ„ dÁ g¡ D ƒ¡dÂdÃ„ ƒZhe#dÄgddd`dÅdÆ„ ƒZie#dÇgddd`dÈdÉ„ ƒZje#dÊgddd`dËdÌ„ ƒZke+j/ 0dÍejlejmdÎdÏ„ dÐdÏ„ g¡dÑdÒ„ ƒZndÓdÔ„ ZodÕdÖ„ Zpd×dØ„ ZqdÙdÚ„ Zre+j/ 0dÛdÜdÝg¡e+j/ 0dÞdßdàg¡dádâ„ ƒƒZsdãdä„ Ztdådæ„ Zudçdè„ Zvdédê„ Zwe"ƒ dëdì„ ƒZxdídî„ Zyej zd¡dïdð„ ƒZ{e#dñgddgddd{dòdó„ ƒZ|G dôdõ„ dõej}ƒZ~död÷„ Zdødù„ Z€e"dgddúdû„ ƒZe+j/ 0düdUdPg¡e"dgddýdþ„ ƒƒZ‚e"ƒ dÿd „ ƒZƒe#dgdddd„ ƒZ„e#dgdde d¡ dkrdnd ddd	„ ƒZ…e+j/ †d
¡e+j/ 0dddg¡e+j/ 0ddddgdddgg¡e"dddd„ ƒƒƒƒZ‡e"dgd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image_interpsZmpl20)r   c                  C   s†   dt jd< t d¡ dd¡} t  d¡\}\}}}|j| dd | d	¡ | d¡ |j| d
d | d
¡ |j| dd | d¡ dS )z5Make the basic nearest, bilinear and bicubic interps.é   ztext.kerning_factoréd   é   é   é   Únearest©Úinterpolationzthree interpolationsÚbilinearZbicubicN)	Úpltr   ÚnpÚarangeÚreshapeÚsubplotsÚimshowÚ	set_titleZ
set_ylabel)ÚXÚfigÚax1Úax2Úax3© r,   ú?/tmp/pip-unpacked-wheel-qhyxngld/matplotlib/tests/test_image.pyÚtest_image_interps   s    



r.   zinterp_alpha.pngT)Úremove_textc                  C   sf   t  dd¡\} \}}t d¡}t d¡|d< t tjdtjd¡|d< |j|dd	 |j|d
d	 dS )z:Test the interpolation of the alpha channel on RGBA imagesé   é   )r   r   é   ©r   r   ).r0   ©Údtype©.r   Únoner   r   N)r    r$   r!   ÚzerosÚonesZtrilÚuint8r%   )r(   ZaxlZaxrÚimgr,   r,   r-   Útest_alpha_interp.   s    
r<   Zinterp_nearest_vs_noneZpdfÚsvg)Ú
extensionsr/   c                  C   s„   dt d< tjdddgdddggd	d
dgd
ddg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   éc   éG   r4   r0   r1   r7   r   zinterpolation noner   zinterpolation nearestN)r   r!   Úarrayr:   r    r$   r%   r&   )r'   r(   r)   r*   r,   r,   r-   Útest_interp_nearest_vs_none;   s    ÿÿ
rK   ÚsuppressCompositeFÚfigimageÚpng)r>   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©r1   r1   r   ©ÚfigsizeÚdpig      Y@r1   r   é2   r   r   Úlower)ZxoZyoÚoriginéÿÿÿÿ)r    ÚfigurerL   r!   Zix_r"   ÚsinrM   )rL   r(   ÚxÚyÚzÚcr;   r,   r,   r-   Útest_figimageM   s    $$$r]   c                  C   sF   t  ¡ \} }| dddg¡ t ¡ }|  |¡ | d¡ t  |¡ d S )Nr0   r1   r   r   )r    r$   ÚplotÚioÚBytesIOÚsavefigÚseekÚimread)r(   ÚaxÚbufferr,   r,   r-   Útest_image_python_io]   s    

rf   z!img_size, fig_size, interpolation)r   r1   Úhanning)r   r   r   )r   é
   r   )r   ç333333@rg   )r   g333333"@r   c           	      C   s¢   t j d¡ tjd }t j t|| ƒt|| ƒ¡}| |fD ]}| ||¡ q<|  ¡ }| 	ddddg¡ |j
|dd | ¡ }| 	ddddg¡ |j
||d d S )Né!N,r?   r   r0   Úantialiasedr   )r!   ÚrandomÚseedr    r   ÚrandÚintÚset_size_inchesr$   Úset_positionr%   )	Úfig_testÚfig_refZimg_sizeZfig_sizer   rR   ÚAr(   rd   r,   r,   r-   Útest_imshow_antialiasedf   s    
ru   c                 C   s¶   t j d¡ tjd }t j t|d ƒt|d ƒ¡}| |fD ]}| dd¡ q<|  ¡ }|j	|dd | 
ddg¡ | ddg¡ | ¡ }|j	|d	d | 
ddg¡ | ddg¡ d S )
Nrj   r?   r   ri   rk   r   rh   r   r   )r!   rl   rm   r    r   rn   ro   rp   r$   r%   Úset_xlimÚset_ylim)rr   rs   rR   rt   r(   rd   r,   r,   r-   Útest_imshow_zoom~   s    
rx   c                 C   sŽ   t  d¡ ttƒjd }ttƒjd }|  d¡}|d  t |¡¡ |d  t |¡¡ | d¡}|d  t	 
|¡¡ |d  t	 
|¡¡ d S )NÚdefaultú%baseline_images/pngsuite/basn3p04.pngú%baseline_images/test_image/uint16.tifr1   r   r0   )r   Zuser   Ú__file__Úparentr$   r%   r   Úopenr    rc   )rr   rs   Zpng_pathZ	tiff_pathÚaxsr,   r,   r-   Útest_imshow_pil   s    


r€   c                  C   sF   t  tj tj t¡ddd¡¡} | jtj	ks0t
‚t | ¡dksBt
‚d S )NZbaseline_imagesZ
test_imagez
uint16.tifé €ÿ)r    rc   ÚosÚpathÚjoinÚdirnamer|   r5   r!   Úuint16ÚAssertionErrorÚsum©r;   r,   r,   r-   Útest_imread_pil_uint16   s      ÿrŠ   c                  C   s:   t  ttƒjd ¡} | jtjks$t‚t 	| ¡dks6t‚d S )Nr{   r   )
r    rc   r   r|   r}   r5   r!   r†   r‡   rˆ   r‰   r,   r,   r-   Útest_imread_fspath¤   s
    ÿr‹   ÚfmtÚjpgÚjpegÚtiffc                 C   sÄ   | dk}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sžt‚|j
ddd	| fks¶t‚t||ƒ d S )
N)r   rŽ   r0   i@  r1   )ÚformatrR   r   r   ©r   r   )r!   rl   rm   rn   r_   r`   r    Úimsaverb   rc   Úshaper‡   r   )rŒ   Z	has_alphaÚdataZ	buff_dpi1Zbuff_dpi100Zarr_dpi1Z
arr_dpi100r,   r,   r-   Útest_imsave«   s    	

r•   ÚpsZepsc                 C   s&   t jttjƒt ddgg¡| d d S )Nr   r0   r‘   )r    r’   r   r‚   Údevnullr!   rJ   )rŒ   r,   r,   r-   Ú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rv|d d d… }d|  
d	¡}t||ƒ qd S )Nr0   )rT   Úupperé   r2   rN   )rU   r   r   rG   r:   rT   rV   )r!   rl   rm   rn   r_   r`   r    r’   rb   rc   Úastyper   )rU   r”   ÚbuffZarr_bufr,   r,   r-   Ú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sdt
‚d S )Nr   )ÚPngInfoZSoftwareÚtestr0   r1   r   rN   Úpnginfo©r   Ú
pil_kwargs)ZPIL.PngImagePluginrž   r_   r`   Úadd_textr    r’   r   r~   Úinfor‡   )rž   Úbufr    Úimr,   r,   r-   Ú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sJt‚t 	| ¡}‡ fd
d„|j
 ¡ D ƒ}|d dks|t‚d S )Nr   )ÚTAGS_V2Údescriptionz
test imager0   r1   r   r   r¡   c                    s   i | ]\}}ˆ | j |“qS r,   )Úname)Ú.0ÚkÚv©ZTAGSr,   r-   Ú
<dictcomp>þ   s      z/test_imsave_pil_kwargs_tiff.<locals>.<dictcomp>ZImageDescription)ZPIL.TiffTagsr¨   r_   r`   r    r’   Úlenr‡   r   r~   Ztag_v2Úitems)r¥   r¢   r¦   Útagsr,   r®   r-   Útest_imsave_pil_kwargs_tiff÷   s    
r³   Zimage_alphac                  C   sd   t j d¡ t j dd¡} t dd¡\}\}}}|j| ddd |j| ddd |j| dd	d d S )
Nr   r   r0   r   ç      ð?r7   )Úalphar   ç      à?r   )r!   rl   rm   rn   r    r$   r%   )ÚZr(   r)   r*   r+   r,   r,   r-   Útest_image_alpha  s    r¸   c            
      C   s|  ddl m}  t ¡ \}}|jt d¡ dd¡dd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	ksrt‚d
\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d ks°t‚| ¡  |jt d¡ dd¡dd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	kst‚t ¡ \}}|jt d¡ dd¡ddddgd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡dks„t‚d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d ksÄt‚d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d kst‚tƒ  d¡ d¡}	|jt d¡ dd¡|	|j d}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	ksxt‚d S )Nr   ©Ú
MouseEventr   rh   r™   )rU   ©r2   r2   Úmotion_notify_eventé,   )g333333$@r2   rT   r¶   ©Úextent)ç      Ð?rÀ   é7   )ç      è?rÀ   )ç{®Gáz„?g{®Gáz„¿r1   )Ú	transform)r   rh   )Úmatplotlib.backend_basesrº   r    r$   r%   r!   r"   r#   Ú	transDatarÄ   ÚcanvasÚget_cursor_datar‡   Úclearr   ZscaleÚrotate)
rº   r(   rd   r¦   rY   rZ   ÚxdispÚydispÚeventZtransr,   r,   r-   Útest_cursor_data  sN    
$ÿrÎ   z
data, texti'  i'  z[10001.000]g°rh‘í|¿?g/Ý$•ï?z[0.123]r0   r1   ú[]g     ð?z[1.0000000000000000]rV   z[-1.0000000000000000]c           	      C   sb   ddl m} t ¡ \}}| | ¡}|j ddg¡\}}|d|j||ƒ}| | 	|¡¡|ks^t
‚d S )Nr   r¹   r¼   )rÅ   rº   r    r$   r%   rÆ   rÄ   rÇ   Úformat_cursor_datarÈ   r‡   )	r”   Útextrº   r(   rd   r¦   rË   rÌ   rÍ   r,   r,   r-   Útest_format_cursor_dataT  s    	
rÒ   Z
image_clipc                  C   sF   ddgddgg} t  ¡ \}}| | ¡}tjdd|jd}| |¡ d S )Nr0   r1   r   r2   ©r   r   )ZradiusrÄ   )r    r$   r%   r	   ZCirclerÆ   Úset_clip_path)Údr(   rd   r¦   Úpatchr,   r,   r-   Útest_image_clipg  s
    
r×   Zimage_cliprectc                  C   sN   t  ¡ \} }ddgddgg}|j|dd}tjddd|jjd}| |¡ d S )	Nr0   r1   r   r2   ©r   r   r   r   r¾   ©r0   r0   )ZxyÚwidthÚheightrÄ   )r    r$   r%   r	   Z	RectangleZaxesrÆ   rÔ   )r(   rd   rÕ   r¦   Zrectr,   r,   r-   Útest_image_cliprectq  s       ÿrÜ   r%   )r/   r   c                  C   sH   t  ¡ \} }t d¡ d¡}|j|ddd | dd¡ | dd¡ d S )Nr   ©rh   rh   r   ©r0   r1   r0   r1   ©r   r¿   r   r   )r    r$   r!   r"   r#   r%   rv   rw   ©r(   rd   Úarrr,   r,   r-   Útest_imshow}  s
    râ   c                 C   s†   t  d¡ d¡}| ¡ }|j|d d …d d …df ddd | dd¡ | dd¡ |  ¡ }|j|ddd | dd¡ | dd¡ d S )Nr   )rh   rh   r0   r   r   rÞ   rß   r   )r!   r"   r#   r$   r%   rv   rw   )rr   rs   rá   rd   r,   r,   r-   Útest_imshow_10_10_1†  s    "rã   c               	   C   s@   t  ¡ \} }t d¡ d¡}t t¡ | |¡ W 5 Q R X d S )NéÈ   )rh   rh   r1   ©	r    r$   r!   r"   r#   ÚpytestÚraisesÚ	TypeErrorr%   rà   r,   r,   r-   Útest_imshow_10_10_2•  s    ré   c               	   C   s@   t  ¡ \} }t d¡ d¡}t t¡ | |¡ W 5 Q R X d S )Niô  )rh   rh   r   rå   rà   r,   r,   r-   Útest_imshow_10_10_5œ  s    rê   Zno_interpolation_originc                  C   sP   t  d¡\} }|d jt d¡ d¡ddd |d jt d¡ d¡dd	 d S )
Nr1   r   r   )r1   rS   rT   r7   )rU   r   r0   r   )r    r$   r%   r!   r"   r#   )r(   r   r,   r,   r-   Útest_no_interpolation_origin£  s
    ÿrë   Zimage_shift)r/   r>   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 )r0   r,   )r«   rY   ©rZ   r,   r-   Ú
<listcomp>­  s     z/test_image_shift.<locals>.<listcomp>.<listcomp>r0   r   )Úrange)r«   r,   rì   r-   rí   ­  s     z$test_image_shift.<locals>.<listcomp>r0   r   gMòãûk&Ag˜Šäûk&Ar7   )Únormr   r¿   Úauto)rî   r    r$   r%   r   ÚLogNormZ
set_aspect)ZimgDataZtMinZtMaxr(   rd   r,   r,   r-   Útest_image_shift«  s    
ÿrò   c                  C   s  t jddgd} | jddddgdd}t t d¡d¡ dd	¡}|j|d
ddddg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stdƒ‚d S )Nr0   ©rQ   r   F)Úframeoné   é   r   é	   r™   éöÿÿÿrh   r7   Úgray)rU   r¿   r   Úcmapr1   )r   r0   r   )Ú	facecolorrV   r   z.Expected a non-green edge - but sadly, it was.)r    rW   Úadd_axesr!   Ztiler"   r#   r%   rv   rw   Ú
set_xticksÚ
set_yticksr_   r`   ra   rb   rc   rˆ   r‡   )r(   rd   r”   r¦   rY   rZ   r¥   ÚrÚgÚbÚar,   r,   r-   Útest_image_edges·  s&     ÿ



r  Zimage_composite_backgroundc                  C   sf   t  ¡ \} }t d¡ dd¡}|j|ddddgd |j|ddddgd | d	¡ | ddg¡ d S )
Nrõ   r2   r   r   r1   rö   r¾   r   )r0   r   r   r¶   )r    r$   r!   r"   r#   r%   Úset_facecolorrv   rà   r,   r,   r-   Útest_image_composite_backgroundÓ  s    
r  Zimage_composite_alphac                  C   s¢  t  ¡ \} }t d¡}d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡|dd…dd…df< t d	¡}d|dd…dd…df< d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡dd…tjf |dd…dd…df< |j|dd
ddgdd |j|d
dddgdd |j|ddddgd |j|dddd
gd |j|ddd
dgdd |j|ddddg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.
    )é   é   r2   r0   Nr   çš™™™™™ñ?çš™™™™™¹?rV   r   )r  r  r2   r1   r   ç333333Ó?)r¿   rµ   ç333333ã?r2   r¾   )r   r¶   r   r0   )r    r$   r!   r8   Zconcatenater"   Znewaxisr%   r  rv   rw   )r(   rd   rá   Zarr2r,   r,   r-   Útest_image_composite_alphaÞ  s.    
$ÿ
$ÿÿ
r  c                 C   st   t  d¡ d¡}| |fD ]P}| ¡ }|j|tj dddg¡|jfd |j|tj ddd	g¡|jfd qd
|_	d S )Nr÷   ©r   r   rÓ   ©r   r0   )r0   r   )Z	clip_pathrÙ   ©r0   r1   )r1   r0   T)
r!   r"   r#   Úadd_subplotr%   Úmplrƒ   r   rÆ   rL   )rr   rs   Útr(   rd   r,   r,   r-   Ú#test_clip_path_disables_compositingù  s    ÿÿ
r  Zrasterize_10dpi)r>   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¡ qšdtd< d S )Nr0   r1   r   r2   )r   r0   ró   r   g      4@T)Ú	linewidthZ
rasterizedr  )rV   r1   ©ÚxlimÚylim)r  Frh   r?   )r!   Úasarrayr    r$   r%   r^   Úsetrý   rþ   ZspinesZset_visibler   )r;   r(   r   rd   r,   r,   r-   Útest_rasterize_dpi  s    	

r  Zbbox_image_invertedc                  C   sÈ   t  d¡ d¡} t ¡ \}}tttddgddggƒ|jƒdd}| 	| ¡ | 
d¡ | dd¡ | dd¡ | |¡ t  d¡} tttdd	gd
dggƒ|jjƒdd}| 	| ¡ | 
d¡ | |¡ d S )Nr   rÝ   r   r   r   Frh   r	  çš™™™™™É?r
  rÀ   )r!   r"   r#   r    r$   r   r   r   rÆ   Úset_dataZset_clip_onrv   rw   Z
add_artistÚidentityrW   ZtransFigure)r   r(   rd   Zbbox_imr,   r,   r-   Útest_bbox_image_inverted$  s(    þ



ÿþ

r  c               	   C   sN  t  ddddgddddgdd	d
dgddddgg¡} tjddd\}}| ddddg¡ | dd¡ | dd¡ |j| ddddgdd}|j 	¡  |jj
}| |¡}t| ¡ ddgddggƒ tjddd\}}| ddddg¡ | dd¡ | dd¡ |j| ddddgd|jd}|j 	¡  |jj
}| |¡}t| ¡ ddgddggƒ d S )NrÀ   rÂ   r´   r	  gÍÌÌÌÌÌä?r¶   çš™™™™™Ù?r  r
  ç        r  çffffffæ?gÍÌÌÌÌÌì?rÝ   r   rP   r   r0   r   )r¿   r   i  rä   i¼  i„  r1   )r¿   r   rÄ   )r!   rJ   r    r$   rq   rv   rw   r%   rÇ   ÚdrawÚrendererZget_window_extentr   Z
get_pointsZ	transAxes)r¦   r(   rd   Zim_objr#  Zim_bboxr,   r,   r-   Ú$test_get_window_extent_for_AxisImage=  s>    
 
ÿ 
 ÿ

 
 þ

r$  zzoom_and_clip_upper_origin.pngc                  C   sF   t  d¡} |  d¡} t ¡ \}}| | ¡ | dd¡ | dd¡ d S )Nr   rÝ   ç       @ç      à¿)r!   r"   r#   r    r$   r%   rw   rv   )r   r(   rd   r,   r,   r-   Útest_zoom_and_clip_upper_origin`  s    


r'  c                  C   s   t  ¡ } t| ƒ}| d¡ d S )NÚBlues)r    Úgcar   Zset_cmap©rd   r¦   r,   r,   r-   Útest_nonuniformimage_setcmapl  s    r+  c                  C   s"   t  ¡ } t| ƒ}| t  ¡ ¡ d S ©N)r    r)  r   Úset_normÚ	Normalizer*  r,   r,   r-   Útest_nonuniformimage_setnormr  s    r/  c                  C   sn   t jddd} tdƒD ]"}t  ddd¡d | |d d …f< qt dd¡}| |  ¡ ¡ t 	¡ \}}| 
|¡ d S )	NrÝ   r:   r4   rh   r   r´   rG   ÚL)r!   r9   rî   Úlinspacer   ÚnewZputdataÚflattenr    r$   r%   )ZimdÚir¦   r(   rd   r,   r,   r-   Útest_jpeg_2dx  s     r5  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rˆdksŽn t‚| d¡}|dks¤t‚d S )NrÙ   é,  rP   )r6  r6  r2   r4   r   r´   r6   Zredr   )rû   r   rR   r   é   é¯   éÒ   rÓ   )éþ   r   r   )r    rW   r!   r8   Úfloatr1  rM   r_   r`   ra   rb   r   r~   r°   Z	getcolorsr‡   Zgetpixel)r¦   rœ   r   Z
num_colorsZcorner_pixelr,   r,   r-   Útest_jpeg_alphaƒ  s    



r<  c                  C   sP   t  ¡ } t| ƒ}tjdtd d¡}| |¡ d|d< |jd dksLt	dƒ‚d S ©Nrõ   r4   ©r2   r   çÍÌÌÌÌÌ#@rÓ   r   úvalue changed)
r    r)  r   r!   r"   r;  r#   r  Ú_Ar‡   )rd   r¦   r[   r,   r,   r-   Útest_axesimage_setdata›  s    
rB  c                  C   sP   t  ¡ } t| ƒ}tjdtd d¡}| |¡ d|d< |jd dksLt	dƒ‚d S r=  )
r    Zgcfr   r!   r"   r;  r#   r  rA  r‡   )r(   r¦   r[   r,   r,   r-   Útest_figureimage_setdata¤  s    
rC  zimage_cls,x,y,aç      @ç      @g      (@r>  g      @)r   r1   c                 C   sŽ   t  ¡ }| |ƒ}| |||¡ d |d<  |d< |d< |jd |jd   krf|jd   krfdkspn tdƒ‚| ||| |jd˜¡¡ d S )Nr?  r   rÓ   r@  rV   )rV   )	r    r)  r  rA  Z_AxZ_Ayr‡   r#   r“   )Z	image_clsrY   rZ   r  rd   r¦   r,   r,   r-   Útest_setdata_xya­  s    :rF  c            
      C   sâ   ddl m}  tj d¡ tj dd¡}t dd¡\}}|d  |¡}|d  |¡}tj	||d d tj	||d d t
 ¡ }tj|dd t
 | ¡ ¡}|  |¡}d }| d	¡D ]*}	|d krÈ|	d
 }q²|	d
 |kr²ds²t‚q²d S )Nr   )ÚElementTreerh   r0   r1   )rd   r=   r‘   r   rÚ   F)Z	xml.etreerG  r!   rl   rm   rn   r    r$   Z
pcolormeshÚcolorbarr_   r`   ra   ÚgetvalueÚparseÚiterr‡   )
rG  r”   r(   rd   Úp1Úp2rœ   ÚtreerÚ   r   r,   r,   r-   Útest_minimized_rasterized½  s$    

rO  c               	   C   sz   t tƒjd } dtjdkrdnd |  ¡  ¡  }tjt	dd t
 |¡ W 5 Q R X tj |¡}t
 |¡ W 5 Q R X d S )Nrz   zfile:Úwin32z///Ú zPlease open the URL©Úmatch)r   r|   r}   ÚsysÚplatformÚresolveÚas_posixræ   rç   Ú
ValueErrorr    rc   ÚurllibÚrequestÚurlopen)rƒ   ÚurlÚfiler,   r,   r-   Útest_load_from_urlÞ  s    ÿ
þr^  Zlog_scale_imagec                  C   sR   t  d¡} d| d d d…< t ¡ \}}|j| ddddgddddd |jd	d
 d S )NrÝ   r0   r1   r   ÚviridisrV   rð   )r¿   rú   ÚvmaxÚvminÚaspectÚlog)Zyscale)r!   r8   r    r$   r%   r  )r·   r(   rd   r,   r,   r-   Útest_log_scale_imageé  s    
ÿrd  Zrotate_imagec               	   C   s0  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
ddddgdd}
tƒ  	d¡|	j
 }|
 |¡ |
 ¡ \}}}}|	j|||||g|||||gdd|d |	 dd¡ |	 dd¡ d S )NrÀ   ç      ÀrD  r1   r0   ç      ø?r¶   r7   r_  rT   éþÿÿÿr2   éýÿÿÿT)r   rú   rU   r¿   Úclip_oné   zr--r   )ÚlwrÄ   r   r   )r!   r"   ÚmeshgridÚexpÚpir    r$   r%   r   Z
rotate_degrÆ   Zset_transformZ
get_extentr^   rv   rw   )ÚdeltarY   rZ   r'   ÚYÚZ1ÚZ2r·   r(   r)   Zim1Ztrans_data2Úx1Zx2Úy1Úy2r,   r,   r-   Útest_rotate_imageô  s,    &*ÿ

 þ
 ÿrv  c                  C   sR   t  ¡ } t d¡}tj| |dd |  d¡ t | ¡}|jd d… |jksNt	‚d S )N)iá  iA  rN   r‘   r   r1   )
r_   r`   r!   r8   r    r’   rb   rc   r“   r‡   )rœ   r¦   r;   r,   r,   r-   Útest_image_preserve_size  s    


rw  c                  C   sÌ   d} t  | t¡}tj| | fdd}t |ddddg¡}| ¡  | |¡ |j|dddd	 t	 
¡ }|j|d
d | d¡ t |¡}|jdks’t‚tt  |d d …d d …df t¡t  | t¡d d d… ƒ d S )Né   F)rQ   rô   r   r´   r   rT   rð   )r   rU   rb  r0   )rR   r   )rx  rx  r2   rV   )r!   r  r;  r    rW   ZAxesÚset_axis_offrü   r%   r_   r`   ra   rb   rc   r“   r‡   r   r  Úbool)Únr”   r(   rd   rœ   r;   r,   r,   r-   Útest_image_preserve_size2  s    


ÿr|  zmask_image_over_under.pngr´   )r/   Útolc                  C   s~  dt jd< d} t dd| ¡ }}t ||¡\}}t |d |d   d ¡dtj  }t |d d d |d d	 d   d ¡dtj d	 d  }d
||  }t jjj	dddd}tj
 |dk|¡}	t  dd¡\}
\}}|j|	d|tjdddddddddgd}| d¡ |
j|dd|d
d |j|	d|tjdddd d!d	dgd"dd#dddddgd}| d$¡ |
j|dd%d|d
d& d S )'NFzpcolormesh.snapgš™™™™™™?re  rD  r1   r0   rf  r¶   rh   rÿ   r   r  ©ZoverÚunderÚbadç333333ó?r   g      ð¿r´   )ra  r`  ÚcliprT   rh  r   )r   rú   rï   rU   r¿   zGreen=low, Red=high, Blue=badÚbothZ
horizontal)ÚextendÚorientationrd   rb  r   rV   r&  gš™™™™™É¿r   r  r7  )Zncolorsr‚  zWith BoundaryNormZproportional)r„  Úspacingr…  rd   rb  )r    r   r!   r"   rl  rm  rn  Úcmrù   Úwith_extremesÚmaZmasked_wherer$   r%   r   r.  r&   rH  ZBoundaryNorm)ro  rY   rZ   r'   rp  rq  rr  r·   ZpaletteZZmr(   r)   r*   r¦   r,   r,   r-   Útest_mask_image_over_under2  sL    
&*ÿ 
ý

 ÿ ÿ 
ü

  ÿrŠ  Z
mask_imagec                  C   s   t  dd¡\} \}}t d¡}tj|dd…dd…f< |j|dd tjdtd}d|dd…dd…f< tj 	tjdtj
d|¡}|j|dd d S )Nr0   r1   r3   r   r   r4   T)r    r$   r!   r9   Únanr%   r8   rz  r‰  Úmasked_arrayr†   )r(   r)   r*   rt   r,   r,   r-   Útest_mask_imageT  s    
r  c                  C   s2   t  dt j¡} t ¡ \}}| | ¡ |j ¡  d S )NrO   )r!   Úfullr‹  r    r$   r%   rÇ   Z	draw_idle)r”   r(   rd   r,   r,   r-   Útest_mask_image_allf  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|Ž |j| d
¡f|Ž d S )Nrh   r   r0   r1   rT   r   r_  )rU   r   rú   z<f8z>f8)	r!   r"   rl  Úhypotr    r$   Údictr%   r›   )rY   r'   rp  r·   r(   r)   r*   Úkwargsr,   r,   r-   Útest_imshow_endianessn  s    
r“  Z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¡ t|| ¡ ƒD ].\}}	|	 |¡ |	j||| |d |	 d¡ q¼d S )Nr_  rÿ   r  r¬   r~  r   r   r0   ©ra  r`  r4   rV   r3   g     jø@)rö   r   )rö   rö   rz  T)r   rö   r   r   rk   )rï   rú   r   Úoff)r  Ú	colormapsrˆ  r   r.  r!   r"   r;  r#   ÚinfZ
zeros_liker›   r‰  rŒ  r    r$   ÚsortedÚmimageZ	_interpd_ÚremoveÚzipÚravelr&   r%   Úaxis)
rú   ÚNr{  r”   Úmaskr(   Zax_gridZinterpsZinterprd   r,   r,   r-   Ú test_imshow_masked_interpolation|  s"    



r¡  c                   C   s   t  ddgdtjgg¡ d S )Nr0   r1   r   )r    r%   r!   r‹  r,   r,   r,   r-   Útest_imshow_no_warn_invalid   s    r¢  r5   c                 C   s   g | ]}t  |¡‘qS r,   )r!   r5   )r«   Úsr,   r,   r-   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rH|d }t ¡ \}}| |¡ ¡ }|| dk ¡ svt	‚| jdkr¦|| d	k ¡ s”t	‚|j
jdksÊt	‚n$|| dk ¡ sºt	‚|j
t jksÊt	‚d S )
Nr6  r4   )rh   rh   r   Úurh   r   rG   Úfr0   )r!   r"   r#   Úkindr    r$   r%   Z	get_arrayÚallr‡   r5   r:   )r5   rá   Ztoo_lowZtoo_highÚ_rd   Úoutr,   r,   r-   Ú$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 )Nr3   r   r   r¶   rf  )r    r$   r%   r!   r9   Úset_clim©r(   rd   r¦   r,   r,   r-   Útest_imshow_flatfield¹  s    r­  zimshow_bignumbers.pngc                  C   sN   dt d< t ¡ \} }tjdddgdddggtjd}| |¡}| d	d
¡ d S )Nr   úimage.interpolationr0   r1   g   ¢”mBr   r2   r4   r   r   )r   r    r$   r!   rJ   Zuint64r%   r«  ©r(   rd   r;   Zpcr,   r,   r-   Útest_imshow_bignumbersÀ  s
     
r°  zimshow_bignumbers_real.pngc                  C   sH   dt d< t ¡ \} }t dddgdddgg¡}| |¡}| dd	¡ d S )
Nr   r®  r%  r´   g’ÕMÏð€DrE  rD  r   r   )r   r    r$   r!   rJ   r%   r«  r¯  r,   r,   r-   Útest_imshow_bignumbers_realË  s
    
r±  Ú	make_normc                   C   s
   t  d¡S ©Nr0   )r   Ú
SymLogNormr,   r,   r,   r-   Ú<lambda>Û  ó    rµ  c                   C   s
   t  d¡S r³  )r   Z	PowerNormr,   r,   r,   r-   rµ  Ü  r¶  c              	   C   s~   t  ¡ \}}tjtdd |jg g| ƒ d}W 5 Q R X | ddddg¡ |j ¡  t 	t
¡ | |j ¡ ¡ W 5 Q R X d S )Nz.Attempting to set identical low and high xlimsrR  ©rï   éûÿÿÿr   )r    r$   ræ   ÚwarnsÚUserWarningr%   Z
set_extentrÇ   r"  rç   ÚRuntimeErrorÚ
make_imageZget_renderer)r²  r(   rd   r¦   r,   r,   r-   Útest_empty_imshow×  s    ÿ
r½  c                  C   s0   t  ¡ \} }| tjdtjd¡ | j ¡  d S )Nr  r4   )r    r$   r%   r!   r8   Zfloat16rÇ   r"  ©r(   rd   r,   r,   r-   Útest_imshow_float16é  s    r¿  c               	   C   s^   t  ¡ \} }| tjdtjd¡ t tjtjd¡r:tƒ nt	 
t¡ | j ¡  W 5 Q R X d S )Nr  r4   Úequiv)r    r$   r%   r!   r8   Z
longdoubleZcan_castÚfloat64r   ræ   r¹  rº  rÇ   r"  r¾  r,   r,   r-   Útest_imshow_float128ð  s    ÿrÂ  c                  C   s0   t  ¡ \} }| tjddgddggtd¡ d S )NTFr4   )r    r$   r%   r!   rJ   rz  r¾  r,   r,   r-   Útest_imshow_boolù  s    rÃ  c                  C   s.   t  ¡ \} }| t dtj¡¡ | j ¡  d S )NrÝ   )r    r$   r%   r!   rŽ  r‹  rÇ   r"  r¾  r,   r,   r-   Útest_full_invalidþ  s    rÄ  zfmt,counted)r–   s    colorimage)r=   s   <imagezcomposite_image,count)Tr0   )Fr1   c           
      C   sº   t  t  ddd¡t  ddd¡¡\}}t  |d ¡}t ¡ \}}| dd¡ |j|ddddgd |j|d d d… ddddgd |tjd	< t	 
¡ }	|j|	| d
 |	 ¡  |¡|ks¶t‚d S )Nr¸  r   r0   r1   r   r   r¾   rV   zimage.composite_imager‘   )r!   rl  r"   rX   r    r$   rv   r%   r   r_   r`   ra   rI  Úcountr‡   )
rŒ   ZcountedZcomposite_imagerÅ  r'   rp  r·   r(   rd   r¥   r,   r,   r-   Útest_composite  s    $ 
rÆ  c                  C   sT   t  ¡ \} }|jdggdd | ¡  | ¡  | ¡ | ¡   krJdksPn t‚d S )Nr   ©r   r0   r   r0   r¾   r  )r    r$   r%   ZrelimZ	autoscaleZget_xlimZget_ylimr‡   r¾  r,   r,   r-   Ú
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 
¡ stt‚d S )Nr   rð   )rø   rh   rø   rh   rù   F)rb  r¿   rú   ri  r  r  .r   )r    r$   ry  r%   r  rÇ   r"  r!   rJ   Zbuffer_rgbar§  r‡   r¬  r,   r,   r-   Útest_unclipped   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	 | 
¡ ™d
hks„t‚|d jdd t ¡ }| j	|dd	 | 
¡ | 
¡ ks¾t‚d S )Nr1   r0   r   r   rð   rÇ  )rb  r¿   Úrgbar‘   rG   )rV   r   )r  )r    r$   ry  r%   rÔ   Zset_clip_boxZbboxr_   r`   ra   rI  r‡   r  )r(   r   rd   r¦   Z
buf_beforeZ	buf_afterr,   r,   r-   Útest_respects_bbox,  s    
 
rË  c                  C   s„   t  ¡ \} }| t d¡¡}tjjdgdgd}| |¡dksBt‚tjjdgdgd}| |¡dksht‚tj	}| |¡dks€t‚d S )	Nr»   r   T©r   rÏ   Fz[0]z[nan])
r    r$   r%   r!   r8   r‰  rŒ  rÐ   r‡   r‹  )r(   rd   r¦   r”   r,   r,   r-   Útest_image_cursor_formatting>  s    rÍ  c           
      C   sœ   t  dd¡}t  ||¡\}}t  d|d d  |d  ¡}|| ¡  }tjd }|  ¡ }|j|||dd	 | ¡ }|t	 
¡ |ƒƒ}	||	d
< |j|	dd dS )zPer-pixel alpha channel test.r   r0   rh  r¶   r1   g[Âõ(\ß?r_  r   )rµ   rú   r   ).rV   r   N)r!   r1  rl  rm  Úmaxr  r—  r  r%   r   r.  )
rr   rs   rY   ZxxÚyyÚzzrµ   rú   rd   rÊ  r,   r,   r-   Útest_image_array_alphaM  s    
rÑ  c                	   C   s6   t jtdd tjt d¡ddgd W 5 Q R X d S )Nzalpha must be a float, two-drR  rO   r0   )rµ   )ræ   rç   rè   r    r%   r!   r8   r,   r,   r,   r-   Ú!test_image_array_alpha_validation`  s    rÒ  c                  C   sð   t tjd ƒ} | jdd tjddd}| ddddg¡}tjd	d	d	ddddd
ddddd	d	d	ddddggt	d}|j
|d| ddd}| d¡ |j ¡  | |jj¡d d }| | |dggd  j ¡ ¡¡d  t¡}t ||k¡sìt‚d S )NZautumn_rZ	lightgrey)Úcolor)gffffffþ?r	  r   rP   r   r0   rV   é+   éO   é_   éB   é"   r4   rð   )rb  rú   ra  r`  r–  rh   rG   )r   r  r—  Ú	set_underr    rW   rü   r!   rJ   r;  r%   rž  rÇ   r"  r¼  r#  rú   rï   ÚTr  r›   ro   r§  r‡   )rú   r(   rd   r”   r¦   Z
from_imageZdirect_computationr,   r,   r-   Útest_exact_vmine  s"    *þ

$ÿþrÛ  Zimage_placementc                  C   sz   t  ¡ \} }|jdddddgdddddg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   r0   rÿ   r	  )rÓ  rk  rj   rš   r(  rÇ  r7   rV   )rú   r¿   r   ra  r`  gš™™™™™¹¿r  N)
r    r$   r^   r!   rl   rm   r%   Zrandnrv   rw   r¾  r,   r,   r-   Ú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!   r  ÚviewÚunits)ÚclsZinput_arrayrß  Úobjr,   r,   r-   Ú__new__–  s    zQuantityND.__new__c                 C   s   t |dd ƒ| _d S ©Nrß  )Úgetattrrß  )Úselfrá  r,   r,   r-   Ú__array_finalize__›  s    zQuantityND.__array_finalize__c                    s<   t | dd ƒ}tt| ƒ |¡}t|tƒs.|d k	r8t||ƒ}|S rã  )rä  ÚsuperrÝ  Ú__getitem__Ú
isinstance)rå  Úitemrß  Úret©Ú	__class__r,   r-   rè  ž  s
    
zQuantityND.__getitem__c                 O   sl  t ||ƒ}d|krtS t|ƒdkrJ|d }t |ddƒ}|t |¡f|Ž}nþt|ƒdkrD|d }|d }	t |ddƒ}
t |	ddƒ}|
d krŒ|n|
}
|d krœ|
n|}|tjtjfkrÂ|
|kr¼t‚|
}nb|tjkrÜ|
› d|› }nH|tj	krø|
› d|› d	}n,|tj
tjtjtjtjtjfkr d }ntS || tj¡|	 tj¡f|Ž}ntS |d kr^t |¡}n
t||ƒ}|S )
Nr©  r0   r   rß  Zdimensionlessr1   Ú*z/(ú))rä  ÚNotImplementedr°   r!   r  ÚaddÚsubtractrX  ÚmultiplyÚdivideZgreaterZgreater_equalÚequalÚ	not_equalZlessZ
less_equalrÞ  ÚndarrayrJ   rÝ  )rå  ZufuncÚmethodÚinputsr’  ÚfuncZi0ÚunitZout_arrÚi1Zu0Úu1r,   r,   r-   Ú__array_ufunc__¥  sH    



  þ 

zQuantityND.__array_ufunc__c                 C   s   |   tj¡S r,  )rÞ  r!   r÷  )rå  r,   r,   r-   r­   Ì  s    zQuantityND.v)
Ú__name__Ú
__module__Ú__qualname__râ  ræ  rè  rþ  Úpropertyr­   Ú__classcell__r,   r,   rì  r-   rÝ  •  s   'rÝ  c               	   C   s¶   t ddgdƒ} | d d … \}}t | jt ddg¡k¡s<t‚| jdksJt‚t || jt dg¡k¡sjt‚|| jdks|t‚|| jdksŽt‚t t	¡ |t ddƒ  W 5 Q R X d S )Nr0   r1   Úmr   zm*mzm/(m)r£  )
rÝ  r!   r§  r­   r  r‡   rß  ræ   rç   rX  )ÚqZq0Zq1r,   r,   r-   Útest_quantityndÑ  s     r  c                  C   s4   t t d¡dƒ} t ¡ \}}| | ¡ |j ¡  d S )NrO   r  )rÝ  r!   r9   r    r$   r%   rÇ   r"  )rá   r(   rd   r,   r,   r-   Ú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 )Nr3   r0   r4   rV   r   r1   FrÌ  Tr_  Úw©r  r¶   r•  rØ   r   )rï   r¿   r   rú   rg  )r   rh   r   rh   ©r   rh   r  )r!   rŽ  rÁ  r‰  rJ   r   r  r—  rˆ  r$   r%   r   rñ   r-  r.  r  )rr   rs   r”   Zmasked_datarú   rd   r¦   r,   r,   r-   Útest_norm_changeæ  s>      ÿ  ÿ  ÿ  ÿr  rY   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 )Nr3   r4   g@Œµx¯Dr   r1   r0   r•  r   r_  )rï   r   rú   iè  r  r	  )r!   rŽ  rÁ  r$   r%   r   rñ   rÎ  r  r—  rˆ  r.  )rr   rs   rY   r”   rd   rú   r,   r,   r-   Útest_huge_range_log  s     ÿ ÿr  c           	   
   C   sL  |   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}dddg}tt||ƒƒD ]è\}\}}||  |¡ ||  |¡ ||  |¡ || j|ddd	d
ddd ||  dd¡ ||  dd¡ || j 	¡  || j
 d¡ || j d¡ || j tjdddddgdd¡ || j tjdddddgdd¡ q^d S )Nr0   r   r   r9   r8   Úmixedr   rõ  r™   ZGreys)r   rb  rU   rú   ra  r`  r&  rf  gÍÌÌÌÌÌð?rƒ  r÷   r1   r   rh   T)ZnbinsZstepsÚinteger)r$   Ú	enumeraterœ  r&   Zspyr%   rv   rw   ZxaxisZtick_topÚtitleZset_yZset_ticks_positionZset_major_locatorÚmtickerZMaxNLocatorZyaxis)	rr   rs   Úax_testÚax_refZ	plot_dataZplot_titlesr4  r[   r  r,   r,   r-   Útest_spy_box  s:    ý
   þ
ÿ
ÿr  znonuniform_and_pcolor.pngc                  C   sÈ   t jddjdddd} t| ddgƒD ]L\}}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 qªd S )Nr  ró   r   T)ÚsharexÚshareyr   r   r   r1   r÷   r2   r
  )r  )r    rW   r$   rœ  r   r  r!   r"   r#   Z	add_imageZ
pcolorfastry  r  )r   rd   r   r¦   r,   r,   r-   Útest_nonuniform_and_pcolor7  s    ÿ  ÿr  zrgba_antialias.png)Úaarch64Úppc64leÚs390xgyé&1¬|?)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 )$Nr1   )ç      @r  FT)rQ   r  r  Zconstrained_layoutéú   rV   r¶   rh   éK   r  r0   r
  r   rS   g    €„.AéF   éZ   g    €„.Árj  éÃ   é×   ZyellowZcyanr   r   g333333ó¿r  )r   rú   ra  r`  é   rk   r”   )r   Zinterpolation_stagerú   ra  r`  r   rÊ  )r    r$   r!   r9   r"   rl  ÚsqrtrX   rn  ro   r‹  r   r‡  ZRdBu_rZset_overrÙ  r3  r%   rv   rw   )r(   r   rŸ  ZaarY   rZ   r'   rp  ÚRZf0r¬   r  rú   r,   r,   r-   Útest_rgba_antialiasG  sP     ÿ
(<<4

""  ÿ  ÿr%  z<ignore:Data with more than .* cannot be accurately displayedrU   r™   rT   zdim, size, msgÚrowi  € z2\*\*23 columnsÚcoli   z2\*\*24 rows)rN   c           
   	   C   sÒ   |   ¡ }|  ¡ }t d|d f¡}d|d d …|jd d …f< |dkrJ|j}|j|ddddd|d}	tjtd	|› d
d | j	 
¡  W 5 Q R X t d¡}d|d d …df< |dkr¶|j}|j|ddddd|d}	d S )Nr0   r1   r'  r   rð   rÇ  r7   )ra  r`  rb  r¿   r   rU   zData with more than z  cannot be accurately displayed.rR  r  )r$   r!   r8   ÚsizerÚ  r%   ræ   r¹  rº  rÇ   r"  )
rr   rs   Zdimr(  ÚmsgrU   r  r  rJ   r¦   r,   r,   r-   Útest_large_image  s2    
 ý
ÿ
ýr*  c              	   C   sZ  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ks.t‚t t¡ |d j|dd W 5 Q R X d S )Nrh   gš™™™™™é?r	  r0   r   r   rc  r·  r  )rï   ra  r1   Zsymlogr   r
  r!  )rï   ra  r`  r2   Zlogit)ra  )Ú	linthresh)r+  ra  r`  )r
  r!  )rï   ZclimZfoobar)r!   rl   rn   r$   r%   r   rñ   r´  ÚtypeZimagesrï   r‡   ræ   rç   rX  )rr   rs   r  ZaxtsZaxrsr,   r,   r-   Útest_str_norms§  s      r-  )‰Ú
contextlibr   r   r_   r‚   Úpathlibr   rU  rT  Úurllib.requestrY  Znumpyr!   Znumpy.testingr   ZPILr   Z
matplotlibr  r   r   rš  r	   r
   r    r   r   Zmatplotlib.imager   r   r   r   r   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.transformsr   r   r   Zmatplotlib.tickerZtickerr  ræ   r.   r<   rK   ÚmarkZparametrizer]   rf   ru   rx   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/  r5  r<  rB  rC  r"   r#   rF  rO  r^  rd  rv  rw  r|  rŠ  r  r  r“  Úmachiner¡  r¢  Úsplitrª  r­  r°  r±  r.  rñ   r½  r¿  rÂ  rÃ  rÄ  rÆ  rÈ  rÉ  rË  rÍ  rÑ  rÒ  ÚcontextrÛ  rÜ  r÷  rÝ  r  r  r  r  r  r  r%  Úfilterwarningsr*  r-  r,   r,   r,   r-   Ú<module>   sÂ   

 ÿ
	üþ




"


Gûÿ

	





 ÿ
	


  ÿ

# ÿ

		  ÿ  ÿýÿ
	!



!

 þ
! ÿ



 ÿ

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