
    Ng.                        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             Z- e$dgd          d             Z. e$dgddgd          d             Z/e,j0        1                    dddg           e$dgddg          d                         Z2d Z3e,j0        1                    dg d            e#dg          d!                         Z4 e#dg          d"             Z5 e#            d#             Z6d$ Z7d% Z8e,j0        1                    d&g d'          d(             Z9e,j0        1                    d)d*d+g          d,             Z:e,j0        1                    d&g d-          d.             Z;d/ Z<d0 Z=d1 Z> e$d2gd          d3             Z?ej        @                    d           e#dg          d4                         ZAd5 ZBe,j0        1                    d6d7d7gd gd7d8gd9gd:d7gd;gd<d7gd;gd=d>gd?gd@d7gdgd7d@gdgg          dA             ZCe,j0        1                    dBdCdDggdEfdFdGggdHfejD        d9dIggdJfd9dKggdLfd@d@ggdMfd d ggdNfg          dO             ZE e$dPgd          dQ             ZF e$dRgd          dS             ZG e$dTgddU          dV             ZH e#dg          dW             ZIdX ZJdY ZK e$dZgd          d[             ZL e$d\gdddg]          d^             ZMd_ ZN e$d`gddU          da             ZO e$dbgd          dc             ZP e#dg          dd             ZQ e$degddgddf          dg             ZR e$dhgddU          di             ZSdj ZT e$dkgddU          dl             ZUdm ZVdn ZWdo ZXdp ZYdq ZZdr Z[e,j0        1                    dse  ej\        dt           ej\        du           ej\        dv          ]                    dw          fe! ej\        dt           ej\        du           ej\        dx          ]                    dy          fg          dz             Z^d{ Z_d| Z` e$d}gd          d~             Za e$dgd          d             Zbd Zcd Zd e$dgdd          d             Ze e$dgd          d             Zfd Zg e$dgd          d             Zh e$dg eji                    dk    rd nddd          d             Zjd Zke,j0        1                    dd dl                                D                       d             Zm e$dgddU          d             Zn e$dgddU          d             Zo e$dgddU          d             Zpe,j0        1                    dejq        ejr        d d g          d             Zsd Ztd Zud Zvd Zwe,j0        1                    dddg          e,j0        1                    dddg          d                         Zxd Zyd Zzd Z{d Z| e#            d             Z}d Z~ej        @                    d          d             Z e$dgddgddf          d             Z G d dej                  Zd Zd Z e#dg          d             Ze,j0        1                    dd@d9g           e#dg          d                         Z e#            d             Z e$dgd          d             Z e$dgdd eji                    dk    rd nd          d             Zd Ze,j0                            dæ          e,j0        1                    d)d*d+g          e,j0        1                    dg dŢg dƢg           e#dǬ          dȄ                                                 Z e#dg          dɄ             Zdʄ Zd˄ Zd̄ Ze,j0        1                    ddͦ          e,j0        1                    ddϦ          dЄ                         ZdS )    )	ExitStackcopyN)Path)assert_array_equal)Image)colorsimagepatchespyplotstylercParams)	AxesImage	BboxImageFigureImageNonUniformImagePcolorImage)check_figures_equalimage_comparison)BboxAffine2DTransformedBboximage_interpsmpl20)r   c                     dt           j        d<   t          j        d                              dd          } t          j        d          \  }\  }}}|                    | d           |                    d	           |                    d           |                    | d
           |                    d
           |                    | d           |                    d           dS )z5Make the basic nearest, bilinear and bicubic interps.   ztext.kerning_factord            nearestinterpolationzthree interpolationsbilinearbicubicN)	pltr   nparangereshapesubplotsimshow	set_title
set_ylabel)Xfigax1ax2ax3s        W/var/www/html/ai-engine/env/lib/python3.11/site-packages/matplotlib/tests/test_image.pytest_image_interpsr4      s    
 +,CL&'
	#q"%%A<??C#sCJJq	J***MM()))NN9JJq
J+++NN:JJq	J***NN9    zinterp_alpha.pngT)remove_textc                  X   t          j        dd          \  } \  }}t          j        d          }t          j        d          |d<   t          j        t          j        dt          j                            |d<   |                    |d	           |                    |d
	           dS )z:Test the interpolation of the alpha channel on RGBA images      )r   r      r   r   ).r8   dtype.r    noner"   r$   N)r&   r*   r'   zerosonestriluint8r+   )r/   axlaxrimgs       r3   test_alpha_interprG   0   s     l1a((OC#s
(9

C'&//CK'"'&999::CKJJs&J)))JJs*J-----r5   interp_nearest_vs_nonepdfsvg)
extensionsr6   c                  \   dt           d<   t          j        g dg dgg dg dggt          j                  } t	          j        dd	          \  }\  }}|                    | d
           |                    d           |                    | d           |                    d           dS )z5Test the effect of "nearest" and "none" interpolationr    savefig.dpi)          )z   g      )      r   )rU   c   G   r<   r8   r9   r?   r"   zinterpolation noner!   zinterpolation nearestN)r   r'   arrayrC   r&   r*   r+   r,   )r.   r/   r0   r1   s       r3   test_interp_nearest_vs_nonerY   =   s      H]
>>>???3 ==---029;	C 	C 	CAl1a((OC#sJJqJ'''MM&'''JJq	J***MM)*****r5   suppressCompositeFfigimagepng)rK   c                 x   t          j        dd          }| |_        t          j        t          j        d          dz  t          j        d          dz            \  }}t          j        |dz  |dz  z   ||z  z
            }t          j        d|dz  z  d|dz  z  z             }||dz  z   }|                    |d	d	d
           |                    |d d dd d f         d	dd
           |                    |d d d d df         dd	d
           |                    |d d dd d df         ddd
           d S )Nr9   r9   r   figsizedpig      Y@r9   r   2   r   r   lower)xoyoorigin)r&   figurerZ   r'   ix_r(   sinr[   )rZ   r/   xyzcrF   s          r3   test_figimagero   O   sJ    *V
-
-
-C-C6")C..5(")C..3*>??DAq
q!tad{QqS !!A
r!Q$wAqD !!A
ac'CLLqL111LLTTrT111W!GL<<<LLQQQ"W#!GL<<<LLTTrT44R4ZSSLAAAAAr5   c                     t          j                    \  } }|                    g d           t          j                    }|                     |           |                    d           t          j        |           d S )N)r8   r9   r    r   )r&   r*   plotioBytesIOsavefigseekimread)r/   axbuffers      r3   test_image_python_iory   _   si    lnnGCGGIIIZ\\FKK
KKNNNJvr5   z!img_size, fig_size, interpolation))r   r9   hanning)r   r   r!   )r   
   r!   )r    333333@rz   )r    g333333"@r!   c                 *   t           j                            d           t          j        d         }t           j                            t          ||z            t          ||z                      }| |fD ]}|                    ||           |                                 }|	                    g d           |
                    |d           |                                }|	                    g d           |
                    ||           d S )N!N,rM   r   r   r8   r8   antialiasedr"   )r'   randomseedr&   r   randintset_size_inchesr*   set_positionr+   )	fig_testfig_refimg_sizefig_sizer#   ra   Ar/   rw   s	            r3   test_imshow_antialiasedr   h   s     INN8
,}
%C
	s3>**Ch,?,?@@A'" 0 0Hh////					BOOLLL!!!IIa}I---					BOOLLL!!!IIa}I-----r5   c                    t           j                            d           t          j        d         }t           j                            t          |dz            t          |dz                      }| |fD ]}|                    dd           |                                 }|	                    |d           |
                    ddg           |                    ddg           |                                }|	                    |d	           |
                    ddg           |                    ddg           d S )
Nr~   rM   r    r|   r   r"   r{   r   r!   )r'   r   r   r&   r   r   r   r   r*   r+   set_xlimset_ylim)r   r   ra   r   r/   rw   s         r3   test_imshow_zoomr      s&    INN8
,}
%C
	s37||Sq\\22A'" & &C%%%%					BIIa}I---KKRKKR					BIIayI)))KKRKKRr5   c                 Z   t          j        d           t          t                    j        dz  }t          t                    j        dz  }|                     d          }|d                             t          j        |                     |d                             t          j        |                     |                    d          }|d                             t          j
        |                     |d                             t          j
        |                     d S )Ndefault%baseline_images/pngsuite/basn3p04.png%baseline_images/test_image/uint16.tifr9   r   r8   )r   user   __file__parentr*   r+   r   openr&   rv   )r   r   png_path	tiff_pathaxss        r3   test_imshow_pilr      s    	IiH~~$'NNHX%(OOI


A

CFMM%*X&&'''FMM%*Y''(((


1

CFMM#*X&&'''FMM#*Y''(((((r5   c                     t          j        t          j                            t          j                            t                    ddd                    } | j        t          j	        k    sJ t          j
        |           dk    sJ d S )Nbaseline_images
test_imagez
uint16.tif )r&   rv   ospathjoindirnamer   r=   r'   uint16sumrF   s    r3   test_imread_pil_uint16r      st    
*RW\\"'//(";";&lD D E EC9	!!!!6#;;)######r5   c                      t          j        t          t                    j        dz            } | j        t          j        k    sJ t          j        |           dk    sJ d S )Nr   r   )	r&   rv   r   r   r   r=   r'   r   r   r   s    r3   test_imread_fspathr      s[    
*X GGI IC9	!!!!6#;;)######r5   fmt)r\   jpgjpegtiffc                 P   | dv}t           j                            d           t           j                            dd          }t	          j                    }t          j        ||| d           t	          j                    }t          j        ||| d           |                    d           t          j	        ||           }|                    d           t          j	        ||           }|j
        ddd	|z   fk    sJ |j
        ddd	|z   fk    sJ t          ||           d S )
N)r   r   r8   i@  r9   )formatra   r   r   r   r    )r'   r   r   r   rr   rs   r&   imsaveru   rv   shaper   )r   	has_alphadata	buff_dpi1buff_dpi100arr_dpi1
arr_dpi100s          r3   test_imsaver      s"   ?*I INN1 9>>$""D
IJy$s2222*,,KJ{D#6666NN1z)C000HQK444J>dAq9}55555aY77777x,,,,,r5   rf   upperrc   c                     t          j                    }t          j        dd          }t	          j        ||d|            d S )N)r{   r{   r:   rC   r<   r\   )arrr   rf   )rr   rs   r'   r@   mimager   )rf   bufresults      r3   test_imsave_rgba_originr      sB     *,,CXk111F
M#6%??????r5   )r\   rI   psepsrJ   c                     t          j        t          t          j                  t          j        ddgg          |            d S )Nr   r8   r   )r&   r   r   r   devnullr'   rX   )r   s    r3   test_imsave_fspathr      s9    JtBJAq6(!3!3C@@@@@@r5   c                     t           j                            d           dD ]} t           j                            ddd          }t	          j                    }t          j        ||| d           |                    d           t          j	        |          }d|z  
                    d	          }| d
k    r|d d d         }d|z  
                    d	          }t          ||           d S )Nr8   )rc   r      r:   r\   )rf   r   r   rU   rC   rc   rg   )r'   r   r   r   rr   rs   r&   r   ru   rv   astyper   )rf   r   buffarr_bufs       r3   test_imsave_color_alphar      s     INN1$ * *y~~b"a((z||
4fU;;;;		!*T""
 D  ))W":Dw;&&w//4))))!* *r5   c                     ddl m}  t          j                    } |             }|                    dd           t          j        |ddgddggdd	|i
           t          j        |          }|j	        d         dk    sJ d S )Nr   )PngInfoSoftwaretestr8   r9   r    r\   pnginfor   
pil_kwargs)
PIL.PngImagePluginr   rr   rs   add_textr&   r   r   r   info)r   r   r   ims       r3   test_imsave_pil_kwargs_pngr      s    ******
*,,CgiiGZ(((JsaVaV$G(<> > > >	CB7:&((((((r5   c                  6   ddl m t          j                    } ddi}t	          j        | ddgddggd|	           t          |          dk    sJ t          j        |           }fd
|j	        
                                D             }|d         dk    sJ d S )Nr   )TAGS_V2descriptionz
test imager8   r9   r    r   r   c                 2    i | ]\  }}|         j         |S  )name).0kvTAGSs      r3   
<dictcomp>z/test_imsave_pil_kwargs_tiff.<locals>.<dictcomp>  s%    :::1DGL!:::r5   ImageDescription)PIL.TiffTagsr   rr   rs   r&   r   lenr   r   tag_v2items)r   r   r   tagsr   s       @r3   test_imsave_pil_kwargs_tiffr     s    ,,,,,,
*,,C.JJsaVaV$V
KKKKz??a	CB::::	(9(9:::D"#|333333r5   image_alphac                  L   t           j                            d           t           j                            dd          } t	          j        dd          \  }\  }}}|                    | dd           |                    | dd           |                    | dd	           d S )
Nr   r   r8   r          ?r?   )alphar#         ?r!   )r'   r   r   r   r&   r*   r+   )Zr/   r0   r1   r2   s        r3   test_image_alphar     s    INN1
	q!A<1--C#sCJJq6J222JJq6J222JJq9J55555r5   c                    t           j                            d           t           j                            ddd          }t          j        |dz            }|                     dd          \  \  }}\  }}|                    |d           |                    |d           |                    |d           |                    |d           t          j        |t          j        d	          fd
          }t          j        |t          j	        d	dt           j                  f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 )Nr~   r   r    rU   r9   r   r         ?)r   r   r8   )axisrT      )
r'   r   r   r   rC   r*   r+   concatenaterA   full)
r   r   rgbfrgbuax0r0   r1   r2   rgbafrgbaus
             r3   test_imshow_alphar     s    INN89>>!Q""D8D3JD'00A66Zc3#sJJt3JJJt4J   JJt3JJJt4J   ND"')"4"45A>>>END"')S"("C"CD1MMME&//155Zc3#sE!!!QQQ'NJJuE!!!QQQ'NJJuE!!!QQQ'NJJuE!!!QQQ'NJJur5   c                  Z   ddl m}  t          j                    \  }}|                    t          j        d                              dd          d          }d\  }}|j        	                    ||g          \  }} | d|j
        ||          }|                    |          d	k    sJ d
\  }}|j        	                    ||g          \  }} | d|j
        ||          }|                    |          J |                                 |                    t          j        d                              dd          d          }d\  }}|j        	                    ||g          \  }} | d|j
        ||          }|                    |          d	k    sJ t          j                    \  }}|                    t          j        d                              dd          g d          }d\  }}|j        	                    ||g          \  }} | d|j
        ||          }|                    |          dk    sJ d\  }}|j        	                    ||g          \  }} | d|j
        ||          }|                    |          J d\  }}|j        	                    ||g          \  }} | d|j
        ||          }|                    |          J t                                          d                              d          }	|                    t          j        d                              dd          |	|j        z             }d\  }}|j        	                    ||g          \  }} | d|j
        ||          }|                    |          d	k    sJ d S )Nr   
MouseEventr   r{   r   )rf   r:   r:   motion_notify_event,   )g333333$@r:   rc   )r   r   r   r   extent)      ?r  7   )r   r  ){Gz?g{Gzr9   r   	transform)r    r{   )matplotlib.backend_basesr  r&   r*   r+   r'   r(   r)   	transDatar  canvasget_cursor_dataclearr   scalerotate)
r  r/   rw   r   rk   rl   xdispydispeventtranss
             r3   test_cursor_datar  1  s   333333lnnGC	29S>>))"b11'	B	BBDAq<))1a&11LE5J,cj%GGEe$$**** DAq<))1a&11LE5J,cj%GGEe$$,,, HHJJJ	29S>>))"b11'	B	BBDAq<))1a&11LE5J,cj%GGEe$$****lnnGC	29S>>))"b11:J:J:J	K	KBDAq<))1a&11LE5J,cj%GGEe$$**** DAq<))1a&11LE5J,cj%GGEe$$,,,DAq<))1a&11LE5J,cj%GGEe$$,,, JJQ&&s++E	29S>>))"b11"R\1 
 
3 
3BDAq<))1a&11LE5J,cj%GGEe$$******r5   zxy, datar         ?r8   g      @r   g      !@g      #@g      @U   rg   c                    ddl m} t          j        g d          }t          j        g d          }|t          j        d d f         dz  |d d t          j        f         dz  z   }t          j                    \  }}t          ||                                |	                                |                                |	                                f          }|
                    |||           |                    |           |                    |                                dz
  |	                                           |                    |                                dz
  |	                                           |j                            |           \  }	}
 |d|j        |	|
          }|                    |          |k    sJ |                    |          |f            d S )Nr   r   )r   r8   r:   	   r   )r   r8   r9   r    r:   r9   r  r  )r  r  r'   rX   newaxisr&   r*   r   minmaxset_data	add_imager   r   r  r  r  r  )xyr   r  rk   rl   rm   r/   rw   r   r  r  r  s               r3   test_cursor_data_nonuniformr"  x  s    433333 	!!!""A
!!A	"*aaa-!a2:.11AlnnGC	QUUWWaeeggquuww$H	I	I	IBKK1aLLKK!QUUWW%%%KK!QUUWW%%%<))"--LE5J,cj%GGEe$$,,,r/A/A%/H/H$.O,,,,,r5   z
data, texti'  i'  z[10001.000]grh|?g/$?z[0.123]r9   []g     ?z[1.0000000000000000]z[-1.0]z[0.00]c                 (   ddl m} t          j                    \  }}|                    |           }|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/   rw   r   r  r  r  s	            r3   test_format_cursor_datar'    s     433333lnnGC	4B<))1a&11LE5J,cj%GGE  !3!3E!:!:;;tCCCCCCr5   
image_clipc                      ddgddgg} t          j                    \  }}|                    |           }t          j        dd|j                  }|                    |           d S )Nr8   r9   r    r:   r   r   )radiusr  )r&   r*   r+   r   Circler  set_clip_path)dr/   rw   r   patchs        r3   test_image_clipr0    sd    
Q!QAlnnGC	1BN6!r|DDDEUr5   image_cliprectc                      t          j                    \  } }ddgddgg}|                    |d          }t          j        ddd|j        j                  }|                    |           d S )	Nr8   r9   r    r:   r   r   r   r   r  r8   r8   )r!  widthheightr  )r&   r*   r+   r   	Rectangleaxesr  r-  )r/   rw   r.  r   rects        r3   test_image_cliprectr:    sz    lnnGC
Q!QA	1\	*	*B10AC C CDTr5   r+   )r6   r   c                     t          j                    \  } }t          j        d                              d          }|                    |dd           |                    dd           |                    dd           d S )Nr   r{   r{   r$   r8   r9   r8   r9   r#   r  r   r    )r&   r*   r'   r(   r)   r+   r   r   r/   rw   r   s      r3   test_imshowr@    sr    lnnGC
)C..
 
 
*
*CIIcLIAAAKK1KK1r5   c                    t          j        d                              d          }|                                }|                    |d d d d df         dd           |                    dd           |                    dd           |                                 }|                    |dd           |                    dd           |                    dd           d S )Nr   )r{   r{   r8   r   r$   r=  r>  r    )r'   r(   r)   r*   r+   r   r   )r   r   r   rw   s       r3   test_imshow_10_10_1rB    s     )C..
 
 
-
-C					BIIc!!!QQQ'l*\IJJJKK1KK1					BIIcLIAAAKK1KK1r5   c                     t          j                    \  } }t          j        d                              d          }t          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )N   )r{   r{   r9   	r&   r*   r'   r(   r)   pytestraises	TypeErrorr+   r?  s      r3   test_imshow_10_10_2rI        lnnGC
)C..
 
 
-
-C	y	!	!  
		#                    A::A>A>c                     t          j                    \  } }t          j        d                              d          }t          j        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Ni  )r{   r{   r   rE  r?  s      r3   test_imshow_10_10_5rM    rJ  rK  no_interpolation_originc                  >   t          j        d          \  } }|d                             t          j        d                              d          dd           |d                             t          j        d                              d          d	           d S )
Nr9   r   r   )r9   rb   rc   r?   )rf   r#   r8   r"   )r&   r*   r+   r'   r(   r)   )r/   r   s     r3   test_no_interpolation_originrP    s    |AHCFMM")C..((11' &  ( ( (FMM")C..((11MHHHHHr5   image_shift)r6   rK   c            	          d t          dd          D             } d}d}t          j                    \  }}|                    | t	          j                    d||ddf           |                    d           d S )	Nc                 H    g | ]fd t          dd          D             S )c                 &    g | ]}d |z  d z  z   S )r8   r   )r   rk   rl   s     r3   
<listcomp>z/test_image_shift.<locals>.<listcomp>.<listcomp>  s%    555!AA555r5   r8   r   )range)r   rl   s    @r3   rU  z$test_image_shift.<locals>.<listcomp>  s6    MMM!5555uQ}}555MMMr5   r8   r   gMk&Agk&Ar?   )normr#   r  auto)rV  r&   r*   r+   r	   LogNorm
set_aspect)imgDatatMintMaxr/   rw   s        r3   test_image_shiftr^    s    MMuQ}}MMMGDDlnnGCIIgFN,,FD!S)  + + +MM&r5   c                     t          j        ddg          } |                     g dd          }t          j        t          j        d          d                              dd	          }|                    |d
g ddd          }dx}}|                    | |g           |	                    | |g           |
                    g            |                    g            t          j                    }|                     |d           |                    d           t          j        |          }t#          |d d df                   \  }}}	}
t#          |d d df                   \  }}}	}
|dk    s
J d            d S )Nr8   r`   r   F)frameon      r   r  r   r{   re  r{   r?   gray)rf   r  r#   cmapr9   )r   r8   r   )	facecolorr   rg   r   z.Expected a non-green edge - but sadly, it was.)r&   rh   add_axesr'   tiler(   r)   r+   r   r   
set_xticks
set_yticksrr   rs   rt   ru   rv   r   )r/   rw   r   r   rk   rl   r   rgbas              r3   test_image_edgesrq    sv   
*aV
$
$
$C	lllE	2	2B729R=="%%--b!44D	40B0B0B!'f 
 
6 
6B IAKK!QKK!QMM"MM"
*,,CKKyK)))HHQKKK	CBR1XJAq!QR2YJAq!Q888E88888r5   image_composite_backgroundc                  >   t          j                    \  } }t          j        d                              dd          }|                    |g d           |                    |g d           |                    d           |                    ddg           d S )	Nrb  r:   r    )r   r9   rc  r   r  )r:   r   rc  r   )r8   r   r   r   r   )r&   r*   r'   r(   r)   r+   set_facecolorr   r?  s      r3   test_image_composite_backgroundru    s     lnnGC
)B--

1
%
%CIIc---I(((IIc---I(((^$$$KKBr5   image_composite_alphac                     t          j                    \  } }t          j        d          }d|dddddf<   t          j        t          j        ddd          t          j        ddd          ddd         f          |dddddf<   t          j        d	          }d|dddddf<   d|dddddf<   t          j        t          j        ddd          t          j        ddd          ddd         f          ddt          j        f         |dddddf<   |                    |g d
d           |                    |g dd           |                    |g d           |                    |g d           |                    |g 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.
    )      r:   r8   Nr   皙?皙?rg   r    )ry  rx  r:   )r8   r9   r   r   333333?)r  r   )r9   r    r   r   333333?)r    r:   r   r   r  )r   r   r8   r9   )r   r   r9   r    )r   r   r    r:   )r   r   r   r8   r   )r&   r*   r'   r@   r   r(   r  r+   rt  r   r   )r/   rw   r   arr2s       r3   test_image_composite_alphar  #  s    lnnGC
(;

CC111aL>	1c3		1a!5!5ddd!;<> >C111aL8K  DDAAAqMDAAAqMN	1c3		1a!5!5ddd!;<> >>?aamMDAAAqMIIc,,,cI222IIc,,,cI222IIc,,,I'''IId<<<I(((IId<<<sI333IId<<<sI333^$$$KKAKKAr5   c                    t          j        d                              d          }| |fD ]}|                                }|                    |t
          j                            g d          |j        f           |                    |t
          j                            g d          |j        f           d|_	        d S )Nr  r    r    )r*  r   r8   )r8   r   )	clip_path)r4  r8   r9   )r9   r8   T)
r'   r(   r)   add_subplotr+   mplr   r   r  rZ   )r   r   tr/   rw   s        r3   #test_clip_path_disables_compositingr  >  s    
	!V$$A'" / /__
		!.F.F.F G G " .	 	/ 	/ 	/
		!.F.F.F G G " .	 	/ 	/ 	/ 	/ $Gr5   rasterize_10dpi)rK   r6   r   c                  X   t          j        ddgddgg          } t          j        ddd          \  }}|d                             |            |d                             ddgddgdd	
           |d                             dd           |d                             ddgddgd           |d                             dd           |D ]N}|                    g            |                    g            |j	        d d          
                    d           Odt          d<   d S )Nr8   r9   r    r:   )r    r8   r`  r   g      4@T)	linewidth
rasterizedr  )rg   r9   xlimylim)r  Fr{   rM   )r'   asarrayr&   r*   r+   rq   setrk  rl  spinesset_visibler   )rF   r/   r   rw   s       r3   test_rasterize_dpir  J  s4    *q!fq!f%
&
&C|Aq&111HCFMM#FKKAA#$K???FJJFJ)))FKKAA#K...FJJFJ)))  ( (
b
b
	!!!  '''' H]r5   bbox_image_invertedc            	         t          j        d                              d          } t          j                    \  }}t          t          t          ddgddgg          |j                  d          }|	                    |            |
                    d           |                    dd           |                    dd           |                    |           t          j        d          } t          t          t          dd	gd
dgg          |j        j                  d          }|	                    |            |
                    d           |                    |           d S )Nr   r<  r   r!   r"   Fr{   r{  皙?r|  r  )r'   r(   r)   r&   r*   r   r   r   r  r  set_clip_onr   r   
add_artistidentityrh   transFigure)r
   r/   rw   bbox_ims       r3   test_bbox_image_invertedr  i  s^    IcNN""8,,ElnnGCsCj1a&122BLAA! ! !G UKK3KK3MM'KOOEsCj3+-F(G(G(*	(=? ?&/1 1 1G UMM'r5   c                     t          j        g dg dg dg dg          } t          j        dd          \  }}|                    g d           |                    d	d
           |                    d	d
           |                    | g dd          }|j        	                                 |j        j
        }|                    |          }t          |                                ddgddgg           t          j        dd          \  }}|                    g d           |                    d
d           |                    d	d
           |                    | g dd|j                  }|j        	                                 |j        j
        }|                    |          }t          |                                ddgddgg           d S )N)r  r   r   r   )r{  g?r   皙?)r}  r|          r  )ffffff??r  r}  r<  r   r_   r   r   r8   )r  r  r  r  r!   )r  r#   i  rD  i  i  r9   )r  r#   r  )r'   rX   r&   r*   r   r   r   r+   r  drawrendererget_window_extentr   
get_points	transAxes)r   r/   rw   im_objr  im_bboxs         r3   $test_get_window_extent_for_AxisImager    s   
 
***,A,A,A''')=)=)=? 
@ 
@Bl8555GCOOLLL!!!KK1KK1YY
'''y  B BF JOOz"H&&x00Gw))++sCj3*-EFFFl8555GCOOLLL!!!KK1KK1YY
'''y,     F JOOz"H&&x00Gw))++sCj3*-EFFFFFr5   zzoom_and_clip_upper_origin.pngc                     t          j        d          } |                     d          } t          j                    \  }}|                    |            |                    dd           |                    dd           d S )Nr   r<         @      )r'   r(   r)   r&   r*   r+   r   r   )r
   r/   rw   s      r3   test_zoom_and_clip_upper_originr    sq     IcNNEMM(##ElnnGCIIeKKTKKcr5   c                  t    t          j                    } t          |           }|                    d           d S )NBlues)r&   gcar   set_cmaprw   r   s     r3   test_nonuniformimage_setcmapr    s2    	B			BKKr5   c                      t          j                    } t          |           }|                    t          j                               d S N)r&   r  r   set_norm	Normalizer  s     r3   test_nonuniformimage_setnormr    s8    	B			BKK     r5   c                  d   t          j        dd          } t          d          D ]"}t          j        ddd          dz  | |d d f<   #t	          j        dd          }|                    |                                            t          j	                    \  }}|
                    |           d S )	Nr<  rC   r<   r{   r  r   rU   L)r'   rA   rV  linspacer   newputdataflattenr&   r*   r+   )imdir   r/   rw   s        r3   test_jpeg_2dr    s    
'('
*
*
*C2YY 4 4KS"--3AqqqD			3	!	!BJJs{{}}lnnGCIIbMMMMMr5   c                  
   t          j        dd           t          j        dt                    } t          j        ddd          | d<   t          j        |            t          j                    }t          j	        |d	d
d           |
                    d           t          j        |          }t          |                    d                    }d|cxk    rdk    sn J |                    d          }|dk    sJ d S )Nr4  ,  r_   )r  r  r:   r<   r  r   r>   redr   )rh  r   ra   r            r*  )   r   r   )r&   rh   r'   r@   floatr  r[   rr   rs   rt   ru   r   r   r   	getcolorsgetpixel)r   r   r
   
num_colorscorner_pixels        r3   test_jpeg_alphar    s    Jv3'''' 
-u	-	-	-BS#s++BvJL:<<DKe====IIaLLLJtE U__S))**J*##########>>&))L;&&&&&&r5   c                     t          j                    } t          |           }t          j        dt
                                        d          }|                    |           d|d<   |j        d         dk    s
J d            d S Nrb  r<   r:   r    #@r*  r   value changed)	r&   r  r   r'   r(   r  r)   r  _Arw   r   rm   s      r3   test_axesimage_setdatar    sw    	B	2B
	"E"""**622AKKNNNAdG5;!_r5   c                     t          j                    } t          |           }t          j        dt
                                        d          }|                    |           d|d<   |j        d         dk    s
J d            d S r  )	r&   gcfr   r'   r(   r  r)   r  r  )r/   r   rm   s      r3   test_figureimage_setdatar    sy    
'))C	S		B
	"E"""**622AKKNNNAdG5;!_r5   zimage_cls,x,y,a      @      @g      (@r  g      @)r    r9   c                 x   t          j                    } | |          }|                    |||           dx|d<   x|d<   |d<   |j        d         |j        d         cxk    r|j        d         cxk    rdk    sn J d            |                    |||                    g |j        dR                      d S )Nr  r   r*  r  rg   )r&   r  r  r  _Ax_Ayr)   r   )	image_clsrk   rl   rp  rw   r   s         r3   test_setdata_xyar    s     
B	2BKK1aAaD1Q4!D'5;"&)5555rvay5555A55555555KK1aii!'2//00000r5   c                     ddl m}  t          j                            d           t          j                            dd          }t          j        dd          \  }}|d                             |          }|d                             |          }t          j	        ||d                    t          j	        ||d                    t          j                    }t          j        |d           t          j        |                                          }|                     |          }d }|                    d	          D ]}	|	|	d
         }|	d
         |k    rJ d S )Nr   )ElementTreer{   r8   r9   )rw   rJ   r   r
   r5  )	xml.etreer  r'   r   r   r   r&   r*   
pcolormeshcolorbarrr   rs   rt   getvalueparseiter)
r  r   r/   rw   p1p2r   treer5  r
   s
             r3   test_minimized_rasterizedr    sQ    &%%%%%INN19>>"b!!Dl1a  GC	A		$		B	A		$		BL1L1:<<DKU####:dmmoo&&DT""DE7##  ='NEEW~&& '	 r5   c                     t          t                    j        dz  } dt          j        dk    rdndz   |                                                                 z   }t          j        t          d          5  t          j        |           d d d            n# 1 swxY w Y   t          j                            |          5 }t          j        |           d d d            d S # 1 swxY w Y   d S )Nr   zfile:win32z/// zPlease open the URLmatch)r   r   r   sysplatformresolveas_posixrF  rG  
ValueErrorr&   rv   urllibrequesturlopen)r   urlfiles      r3   test_load_from_urlr  #  sP   >> #JJD|w..eeB8\\^^$$&&'C 
z)>	?	?	?  
3              				$	$ 
4                 s$   6BBBC##C'*C'log_scale_imagec                      t          j        d          } d| d d d<   t          j                    \  }}|                    | g ddddd           |                    d	
           d S )Nr<  r8   r9   )r8   r   r8   r   viridisrg   rX  )r  rg  vmaxvminaspectlog)yscale)r'   r@   r&   r*   r+   r  )r   r/   rw   s      r3   test_log_scale_imager  .  sx    
AAcccFlnnGCIIa(((yqr    FF%Fr5   rotate_imagec                     d} t          j        dd|           x}}t          j        ||          \  }}t          j        |dz  |dz  z    dz            dt           j        z  z  }t          j        |dz
  dz  dz  |dz
  dz  dz  z    dz            dt           j        z  dz  dz  z  }||z
  }t          j        dd          \  }}	|	                    |dd	d
g dd          }
t                      	                    d          |	j
        z   }|
                    |           |
                                \  }}}}|	                    |||||g|||||gdd|           |	                    dd           |	                    dd           d S )Nr        r  r9   r8   r  r   r?   r   rc   )r:   r9   T)r#   rg  rf   r  clip_on   zr--r    )lwr  r   r   r:   )r'   r(   meshgridexppir&   r*   r+   r   
rotate_degr  set_transform
get_extentrq   r   r   )deltark   rl   r.   YZ1Z2r   r/   r0   im1trans_data2x1x2y1y2s                   r3   test_rotate_imager  9  s   EIdC'''A;q!DAq	!Q$A+"	#	#q25y	1B
&QUcMA%!a%3(::;a?
@
@ru9s?S "B
RA|Aq!!HC
**Qf9#*NND  : :C **''++cm;Kk""" ^^%%NBBHHb"b"b!BBB#71"  $ $ $ LLALLAr5   c                     t          j                    } t          j        d          }t	          j        | |d           |                     d           t	          j        |           }|j        d d         |j        k    sJ d S )N)i  iA  r\   r   r   r9   )	rr   rs   r'   r@   r&   r   ru   rv   r   )r   r   rF   s      r3   test_image_preserve_sizer!  U  st    :<<D	*		BJtR&&&&IIaLLL
*T

C9RaR=BH$$$$$$r5   c                  ^   d} t          j        | t                    }t          j        | | fd          }|                    d          }|                                 |                    |ddd           t          j	                    }|
                    |d	
           |                    d           t          j        |          }|j        dk    sJ t          t          j        |d d d d df         t                     t          j        | t                     d d d                    d S )N   F)r`   ra  )r  r  r   r   r!   rc   rX  )r#   rf   r  r8   )ra   r   )r#  r#  r:   rg   )r'   r  r  r&   rh   ri  set_axis_offr+   rr   rs   rt   ru   rv   r   r   r  bool)nr   r/   rw   r   rF   s         r3   test_image_preserve_size2r'  a  s   	A;q%  D
*aVU
3
3
3C	*	+	+BOOIId)GFIKKK:<<DKK!KIIaLLL
*T

C9	!!!!rz#aaaAg,55{1d++DDbD13 3 3 3 3r5   zmask_image_over_under.pngr   )r6   tolc            
         dt           j        d<   d} t          j        dd|           x}}t          j        ||          \  }}t          j        |dz  |dz  z    dz            dt          j        z  z  }t          j        |dz
  dz  dz  |dz
  d	z  dz  z    dz            dt          j        z  d	z  dz  z  }d
||z
  z  }t           j        j        	                    ddd          }t          j
                            |dk    |          }	t          j        dd          \  }
\  }}|                    |	d|t          j        ddd          dg d          }|                    d           |
                    |dd|d
           |                    |	d|t          j        g ddd          dg d          }|                    d           |
                    |dd d|d
!           d S )"NFzpcolormesh.snapg?r	  r  r9   r8   r  r   r{   rm  rn  ro  overunderbad333333?r$   g      r   )r  r  cliprc   )r  r    r  r    )r#   rg  rW  rf   r  zGreen=low, Red=high, Blue=badboth
horizontal)extendorientationrw   r  r!   )rg   r  gɿr   r  r   r8   r  )ncolorsr/  zWith BoundaryNormproportional)r2  spacingr3  rw   r  )r&   r   r'   r(   r  r  r  cmrf  with_extremesmamasked_wherer*   r+   r	   r  r,   r  BoundaryNorm)r  rk   rl   r.   r  r  r  r   paletteZmr/   r0   r1   r   s                 r3   test_mask_image_over_underr>  u  s+    ',CL"#EIdC'''A;q!DAq	!Q$A+"	#	#q25y	1B
&QUcMA%!a%3(::;a?
@
@ru9s?S "B
BGAfk''S'EEG			AGQ	'	'Bl1a((OC#s	Bj )t#EJJJ">>> 
 
; 
;B MM1222LLF  $ $ $ 
Bi ,-M-M-M58uF F F">>>	 
 
; 
;B
 MM%&&&LLFN)c"  > > > > >r5   
mask_imagec                     t          j        dd          \  } \  }}t          j        d          }t          j        |ddddf<   |                    |d           t          j        dt                    }d|ddddf<   t          j        	                    t          j        dt          j
                  |          }|                    |d           d S )Nr8   r9   r;   r!   r"   r<   T)r&   r*   r'   rA   nanr+   r@   r%  r9  masked_arrayr   )r/   r0   r1   r   s       r3   test_mask_imagerC    s     l1a((OC#s
A&Aac1Q3hKJJq	J***
t$$$AAac1Q3hK
276;;;Q??AJJq	J*****r5   c                      t          j        dt           j                  } t          j                    \  }}|                    |            |j                                         d S )Nr^   )r'   r   rA  r&   r*   r+   r  	draw_idle)r   r/   rw   s      r3   test_mask_image_allrF    sM    7626""DlnnGCIIdOOOJr5   zimshow_endianess.pngc                  r   t          j        d          } t          j        | |           \  }}t          j        |dz
  |dz
            }t	          j        dd          \  }\  }}t          ddd          } |j        |                    d	          fi |  |j        |                    d
          fi | d S )Nr{   r   r8   r9   rc   r!   r   )rf   r#   rg  z<f8z>f8)	r'   r(   r  hypotr&   r*   dictr+   r   )rk   r.   r  r   r/   r0   r1   kwargss           r3   test_imshow_endianessrK    s    
	"A;q!DAq
QAAl1a((OC#s		JJJFCJqxx))&)))CJqxx))&)))))r5   imshow_masked_interpolationx86_64r	  )r(  r6   r   c                  "   t           j        d                             ddd          } d}t          j        d||z  dz
  	          }t          j        ||z  t          
                              ||          }d|d<   d|d<   t
          j	        |d<   t          j
        |                              d          }d|d<   t
          j                            ||          }t          j        dd          \  }}t!          t"          j                  }|                    d           t)          ||                                          D ]H\  }}	|	                    |           |	                    ||| |           |	                    d           Id S )Nr   rm  ro  r   r*  r   r   r8   r  r  r<   rg   r;   g     j@)rc  r   )rc  rc  r%  T)r   rc  r    r   r   )rW  rg  r#   off)r  	colormapsr8  r	   r  r'   r(   r  r)   inf
zeros_liker   r9  rB  r&   r*   sortedr   	_interpd_removezipravelr,   r+   r   )
rg  Nr&  r   maskr/   ax_gridinterpsinterprw   s
             r3    test_imshow_masked_interpolationr^    sp   
 =#11s#31OOD
Aaac!e,,,A9QqS&&&..q!44DDJ DK 6DL=%%f--DDK5dD))D<1%%LCV%&&GNN=!!!'7==??33  

V
		$QT	@@@
 r5   c                  N    t          j        ddgdt          j        gg           d S )Nr8   r9   r    )r&   r+   r'   rA  r   r5   r3   test_imshow_no_warn_invalidr`    s'    JABF$%%%%%r5   r=   c                 6    g | ]}t          j        |          S r   )r'   r=   )r   ss     r3   rU  rU    s     BBBabhqkkBBBr5   zu2 u4 i2 i4 i8 f4 f8c                 V   t          j        d|                               d          }| j        dk    r|dz  }|dk     }|dk    }| j        dk    r|dz  }t	          j                    \  }}|                    |                                          }||         dk                                    sJ | j        dk    r4||         d	k                                    sJ |j	        j        dk    sJ d S ||         dk                                    sJ |j	        t           j
        k    sJ d S )
Nr  r<   )r{   r{   r    ur{   r   rU   fr8   )r'   r(   r)   kindr&   r*   r+   	get_arrayallr=   rC   )r=   r   too_lowtoo_high_rw   outs          r3   $test_imshow_clips_rgb_to_valid_rangerm    s4    )Cu
%
%
%
-
-k
:
:CzSr	AgGSyHzSCiLNNEAr
))C..
"
"
$
$CLA""$$$$$zSH"'')))))y~$$$$$$H$))+++++yBH$$$$$$r5   zimshow_flatfield.pngc                      t          j                    \  } }|                    t          j        d          d          }|                    dd           d S )Nr;   r!   r"   r   r  )r&   r*   r+   r'   rA   set_climr/   rw   r   s      r3   test_imshow_flatfieldrq    sH    lnnGC	276??)	<	<BKKCr5   zimshow_bignumbers.pngc                      dt           d<   t          j                    \  } }t          j        g dg dgt          j                  }|                    |          }|                    dd           d S )Nr!   image.interpolation)r8   r9   g   mB)r    r8   r:   r<   r   r   )r   r&   r*   r'   rX   uint64r+   ro  r/   rw   rF   pcs       r3   test_imshow_bignumbersrw    sj    &/H"# lnnGC
(LLL))),BI
>
>
>C	3BKK1r5   zimshow_bignumbers_real.pngc                      dt           d<   t          j                    \  } }t          j        g dg dg          }|                    |          }|                    dd           d S )Nr!   rs  )r  r   gMD)r  r   r  r   r   )r   r&   r*   r'   rX   r+   ro  ru  s       r3   test_imshow_bignumbers_realry    se     '0H"# lnnGC
(OOO\\\2
3
3C	3BKK1r5   	make_normc                  *    t          j        d          S Nr8   )r	   
SymLogNormr   r5   r3   <lambda>r~    s    Vq!! r5   c                  *    t          j        d          S r|  )r	   	PowerNormr   r5   r3   r~  r~    s    Va   r5   c                    t          j                    \  }}t          j        t          d          5  |                    g g |                       }d d d            n# 1 swxY w Y   |                    g d           |j                                         t          j	        t                    5  |                    |j                                                   d d d            d S # 1 swxY w Y   d S )Nz.Attempting to set identical low and high xlimsr  rW  )r   r  r   )r&   r*   rF  warnsUserWarningr+   
set_extentr  r  rG  RuntimeError
make_imageget_renderer)rz  r/   rw   r   s       r3   test_empty_imshowr    sb    lnnGC	kL
N 
N 
N / /YYt))++Y../ / / / / / / / / / / / / / / MM...!!!JOO	|	$	$ 1 1
cj--//0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s#   !AA#&A#3-C--C14C1c                      t          j                    \  } }|                    t          j        dt          j                             | j                                         d S )Nr  r<   )r&   r*   r+   r'   r@   float16r  r  r/   rw   s     r3   test_imshow_float16r  ,  sL    lnnGCIIbhvRZ000111JOOr5   c                     t          j                    \  } }|                    t          j        dt          j                             t          j        t          j        t          j        d          rt                      nt          j
        t                    5  | j                                         d d d            d S # 1 swxY w Y   d S )Nr  r<   equiv)r&   r*   r+   r'   r@   
longdoublecan_castfloat64r   rF  r  r  r  r  r  s     r3   test_imshow_float128r  3  s    lnnGCIIbhvR]333444R]BJHH ))+++|K((  	
                 s   CC	Cc                      t          j                    \  } }|                    t          j        ddgddggt
                               d S )NTFr<   )r&   r*   r+   r'   rX   r%  r  s     r3   test_imshow_boolr  <  sE    lnnGCIIbhut}5TBBBCCCCCr5   c                      t          j                    \  } }|                    t          j        dt          j                             | j                                         d S )Nr<  )r&   r*   r+   r'   r   rA  r  r  r  s     r3   test_full_invalidr  A  sI    lnnGCIIbgh''(((JOOr5   zfmt,counted)r   s    colorimage)rJ   s   <imagezcomposite_image,count)Tr8   )Fr9   c                 N   t          j        t          j        ddd          t          j        ddd                    \  }}t          j        |dz            }t	          j                    \  }}|                    dd           |                    |g d           |                    |d d d	         g d
           |t          j        d<   t          j
                    }	|                    |	|            |	                                                    |          |k    sJ d S )Nr  r   r8   r9   r   r    r   r8   r   r8   r  rg   )r9   r    r   r8   zimage.composite_imager   )r'   r  r(   rj   r&   r*   r   r+   r   rr   rs   rt   r  count)
r   countedcomposite_imager  r.   r  r   r/   rw   r   s
             r3   test_compositer  H  s    ;ryQ**BIb!Q,?,?@@DAq
qAvAlnnGCKK1IIaI%%%IIa"glllI+++,;CL()
*,,CKKCK   <<>>((E111111r5   c                     t          j                    \  } }|                    dggd           |                                 |                                 |                                |                                cxk    rdk    sn J d S )Nr   r  r  r  )r&   r*   r+   relim	autoscaleget_xlimget_ylimr  s     r3   
test_relimr  [  s    lnnGCIIseLI)))HHJJJLLNNN;;==BKKMM3333V33333333r5   c                     t          j                    \  } }|                                 |                    ddgddggdddd          }|                    dd           | j                                         t          j        | j        	                                          d	d d
f         dk    
                                sJ d S )Nr   rX  rd  rf  F)r  r  rg  r  r  r  .r    )r&   r*   r$  r+   r  r  r  r'   rX   buffer_rgbarh  rp  s      r3   test_unclippedr  c  s    lnnGCOO	QFQF#F;M 
 
/ 
/BFFVF$$$JOO HSZ++--..sBQBw71<AACCCCCCCr5   c                     t          j        d          \  } }|D ]}|                                 |d                             ddgddggdd          }|                    d            |                    |d         j                   t          j                    }| 	                    |d	           h |
                                d
hk    sJ |d                             d           t          j                    }| 	                    |d	           |
                                |
                                k    sJ d S )Nr9   r8   r   r    rX  r  )r  r  rgbar   rU   )rg   r   )r  )r&   r*   r$  r+   r-  set_clip_boxbboxrr   rs   rt   r  r  )r/   r   rw   r   
buf_before	buf_afters         r3   test_respects_bboxr  o  s8   |AHC  
	QAA'|	L	LBT OOCFK   JKK
6K***#Z  ""#v----FJJGJ
IKK	&K)))  I$6$6$8$8888888r5   c                     t          j                    \  } }|                    t          j        d                    }t          j                            dgdg          }|                    |          dk    sJ t          j                            dgdg          }|                    |          dk    sJ t          j        }|                    |          dk    sJ d S )	Nr  r   TrZ  r#  Fz[0]z[nan])	r&   r*   r+   r'   r@   r9  rB  r%  rA  )r/   rw   r   r   s       r3   test_image_cursor_formattingr    s    lnnGC	28F##	$	$B5qc//D  &&$....5qc00D  &&%////6D  &&'111111r5   c                    t          j        dd          }t          j        ||          \  }}t          j        d|dz
  dz  z  |dz
  z             }||                                z  }t
          j        d         }|                                 }|                    |||d	           |                                } | t          j
                    |                    }	||	d
<   |                    |	d           dS )zPer-pixel alpha channel test.r   r8   r  r   r9   g[(\?r   r!   )r   rg  r#   ).rg   r"   N)r'   r  r  r  r  r  rQ  r  r+   r	   r  )
r   r   rk   xxyyzzr   rg  rw   r  s
             r3   test_image_array_alphar    s     	AqA[AFB	SQ'2=9	:	:BME=#D					BIIbD	IBBB					B4" ""2&&''DDMIId)I,,,,,r5   c                      t          j        t          d          5  t          j        t          j        d          ddg           d d d            d S # 1 swxY w Y   d S )Nzalpha must be a float, two-dr  r^   r8   r   )rF  rG  rH  r&   r+   r'   r@   r   r5   r3   !test_image_array_alpha_validationr    s    	y(F	G	G	G 3 3
28F##Aq622223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   +AAAc                     t          t          j        d                   } |                     d           t	          j        dd          }|                    g d          }t          j        g dgt          	          }|
                    |d
| dd          }|                    d           |j                                         |                    |j        j                  d         d         }|                    |                    |dggdz  z  j                                                            dz                      t*                    }t          j        ||k              sJ d S )Nautumn_r	lightgrey)color)gffffff?r{  r   r_   r   )rg   rg   rg   r   r   r   r   +   O   _   B   r8   rg   rg   rg   r   r   r   "   r<   rX  r   )r  rg  r  r  rP  r8   r{   rU   )r   r  rQ  	set_underr&   rh   ri  r'   rX   r  r+   r   r  r  r  r  rg  rW  TrX  r   r   rh  )rg  r/   rw   r   r   
from_imagedirect_computations          r3   test_exact_vminr    sL   j)**DNNN%%% *ZS
1
1
1C	lll	#	#B8	M	M	MN  D
 
4T	D	DBGGENNNJOO sz233A6q9J 	1#,/55778899C?fSkk 
 6* 223333333r5   image_placementc                  t   t          j                    \  } }|                    g dg ddd           t          j                            d           |                    t          j                            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   r8   r8   r   )r   r8   r8   r   r   rm  r{  )r  r  r~   r   r  r  r?   rg   r8   )rg  r  r#   r  r  grz  N)
r&   r*   rq   r'   r   r   r+   randnr   r   r  s     r3   test_image_placementr    s     lnnGCGGOOO___CCG@@@INN8IIbioob"%%GL"!  5 5 5KKeKKer5   c                   F     e Zd Zd Zd Z fdZd Zed             Z xZ	S )
QuantityNDc                 b    t          j        |                              |           }||_        |S r  )r'   r  viewunits)clsinput_arrayr  objs       r3   __new__zQuantityND.__new__  s+    j%%**3//	
r5   c                 2    t          |dd           | _        d S Nr  )getattrr  )selfr  s     r3   __array_finalize__zQuantityND.__array_finalize__  s    S'400


r5   c                     t          | dd           }t                                          |          }t          |t                    s|t	          ||          }|S r  )r  super__getitem__
isinstancer  )r  itemr  ret	__class__s       r3   r  zQuantityND.__getitem__  sV    gt,,gg!!$''c:&& 	)%*;S%((C
r5   c                    t          ||          }d|v rt          S t          |          dk    r6|d         }t          |dd          } |t          j        |          fi |}nIt          |          dk    r.|d         }|d         }	t          |dd          }
t          |	dd          }|
|n|
}
||
n|}|t          j        t          j        fv r|
|k    rt          |
}n|t          j        k    r|
 d| }ni|t          j	        k    r	|
 d| d	}nP|t          j
        t          j        t          j        t          j        t          j        t          j        fv rd }nt          S  ||                    t          j                  |	                    t          j                  fi |}nt          S |t          j        |          }nt'          ||          }|S )
Nrl  r8   r   r  dimensionlessr9   *z/())r  NotImplementedr   r'   r  addsubtractr  multiplydividegreatergreater_equalequal	not_equalless
less_equalr  ndarrayrX   r  )r  ufuncmethodinputsrJ  funci0unitout_arri1u0u1s               r3   __array_ufunc__zQuantityND.__array_ufunc__  s   uf%%F??!!v;;!B2w88Dd2:b>>44V44GG[[ABBWo66BWo66BzrBzrB---88$$"+%%||r||")##~~~~~2:r'78R\7BM3 3 3 %%d2772:..
0C0CNNvNNGG!!<hw''GG $//Gr5   c                 @    |                      t          j                  S r  )r  r'   r  )r  s    r3   r   zQuantityND.v  s    yy$$$r5   )
__name__
__module____qualname__r  r  r  r  propertyr   __classcell__)r  s   @r3   r  r    s          
1 1 1    % % %N % % X% % % % %r5   r  c                     t          ddgd          } | d d          \  }}t          j        | j        t          j        ddg          k              sJ | j        dk    sJ t          j        ||z   j        t          j        dg          k              sJ ||z  j        dk    sJ ||z  j        dk    sJ t          j        t                    5  |t          dd          z    d d d            d S # 1 swxY w Y   d S )Nr8   r9   mr    zm*mzm/(m)rb  )	r  r'   rh  r   r  r  rF  rG  r  )qq0q1s      r3   test_quantityndr    sB   Aq63AqqqTFB6!#QF+++,,,,,7c>>>>627+QC011111G?e####G?g%%%%	z	"	"    
Z3                                   s   C//C36C3c                      t          t          j        d          d          } t          j                    \  }}|                    |            |j                                         d S )Nr^   r  )r  r'   rA   r&   r*   r+   r  r  )r   r/   rw   s      r3   test_imshow_quantityndr     sO    
RWV__c
*
*ClnnGCIIcNNNJOOr5   c                    t          j        ddt           j                  }d|ddd d f<   t           j                            |d          }d	|j        ddddf<   t          j        d
                             d          }| 	                                }|
                    |t          j        dd          dd|          }|                    t          j        dd                     |
                    |t          j        dd          dd|          }|                    t          j        dd                     |                    dd           |	                                }|
                    |t          j        dd          dd|           |
                    |t          j        dd          dd|           |                    dd           d S )Nr;   r8   r<   rg   r   r9   Fr  Tr   wr,  r   rO  r3  r!   )rW  r  r#   rg  r
  )r   r{   r   r{   r   r{   r  )r'   r   r  r9  rX   rZ  r  rQ  r8  r*   r+   r	   rY  r  r  r  )r   r   r   masked_datarg  rw   r   s          r3   test_norm_changer  )  s    761BJ///DD1aaaL%++d+//K!%KQqS!A#X=#111<<D					B	4fn#A>>>&id 
 
L 
LBKK bq111222	;V^1%E%E%E(	 
 
N 
NBKK bq111222FFgF&&&					BIId)r:::!  G G GIIk 0bq A A A#94  I I IFFgF&&&&&r5   rk   c                 N   t          j        d|t           j                  }d|ddd d f<   |                                 }|                    |t          j        d|                                          dd	
           t          j        d|t           j                  }d|ddd d f<   |                                }t          j	        d	         
                    d          }|                    |t          j        d|                                          d|
           d S )Nr;   r<   g@xDr   r9   r8   rO  r!   r   )rW  r#   rg  i  r
  r  )r'   r   r  r*   r+   r	   rY  r  r  rQ  r8  r  )r   r   rk   r   rw   rg  s         r3   test_huge_range_logr  E  s     761BJ///DD1aaaL					BIIdQTXXZZ@@@%I  7 7 7 761BJ///DD1aaaL					B=#111<<DIId)qtxxzzBBB%D  2 2 2 2 2r5   c           
         |                      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 ]\  }\  }}||                             |           ||                             |           ||                             |           ||                             |dddddd	           ||                             d
d           ||                             dd
           ||         j        	                                 ||         j
                            d           ||         j                            d           ||         j                            t          j        dg dd                     ||         j                            t          j        dg dd                     d S )Nr8   r    r   )rA   r@   mixedr!   r  r   Greys)r#   r  rf   rg  r  r  r  r  g?r0  r  )r8   r9   r   r{   T)nbinsstepsinteger)r*   	enumeraterW  r,   spyr+   r   r   xaxistick_toptitleset_yset_ticks_positionset_major_locatormtickerMaxNLocatoryaxis)	r   r   ax_testax_ref	plot_dataplot_titlesr  rm   r  s	            r3   test_spy_boxr&  Y  s    1%%Ga##F Q!Q
Q!Q
Q!QI
 -,,K"3y+#>#>?? 
 
:Au
U###
qq	E"""q	)#*7!" 	 	, 	, 	, 	q	4%%%q	3%%%q	  """q	d###q	**6222q	))a}}}dKKK	
 	
 	
 	q	))a}}}dKKK	
 	
 	
 	

 
r5   znonuniform_and_pcolor.pngc                     t          j        d                              ddd          } t          | ddg          D ]\  }}t	          ||          }|                    t          j        d          d	z  t          j        d          d	z  t          j        d
                              d                     |	                    |           | d	         
                    t          j        d          d	z  t          j        d          d	z  t          j        d
                              d                     | D ],}|                                 |                    d           -d S )Nr  r`  r    T)sharexshareyr!   r$   r"   r9   r  r:   r  )r  )r&   rh   r*   rW  r   r  r'   r(   r)   r   
pcolorfastr$  r  )r   rw   r#   r   s       r3   test_nonuniform_and_pcolorr+  z  sV   
*V
$
$
$
-
-aT
-
J
JC y*&=>>  MR}===
BIaLLA%ry||q'8IaLL((00	2 	2 	2
RF
	!29Q<<1,bill.B.B6.J.JL L L  

G r5   zrgba_antialias.pnggy&1|?)r   r6   r(  c                     t          j        dddddd          \  } }d}t          j        ||f          }d|d d dd d f<   t          j        |          |z  dz
  }t          j        |          |z  dz
  }t          j        ||          \  }}t          j        |dz  |dz  z             }d	}	d
}
t          j        t          j        dz  |	|z  |
|dz  z  dz  z   z            }d|d t          |dz            d d f         |d t          |dz            d d f         dk     <   d|d t          |dz            d d f         |d t          |dz            d d f         dk     <   |d d t          |dz            d f         |d d t          |dz            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                             |d|dd           |d                             |dz  dz
  |dz  dz   g           |d                             |dz  dz   |dz  d	z
  g           |d                             |d|dd           |d                             |dd |dd!           |d"                             |dd#|dd!           d S )$Nr9   )      @r-  FT)r`   r(  r)  constrained_layout   rg   r   r{   K   r  r8   r|  r   rb   g    .AF   Z   g    .r        yellowcyanr   r!   g333333r.  )r#   rg  r  r     r   r   )r#   interpolation_stagerg  r  r  r    r  )r&   r*   r'   rA   r(   r  sqrtrj   r  r   rA  r   r7  RdBu_rset_overr  r  r+   r   r   )r/   r   rY  aark   rl   r.   r  Rf0r   rp  rg  s                r3   test_rgba_antialiasr?    sf    |Aq*U#(TC C CHCA	!QBBsssAAAvJ
	!q3A
	!q3A;q!DAq
1q!tA	B
A
ruqyBFQAX\1233A .0Ais1Q3xxilOAis1Q3xxilOc)*-.Ais1Q3xxilOAis1Q3xxilOc)*C!HHIIBqqq#ac(())| vBr"ube|Br"ube|Br"ube|Br"uc#g~Br"uc#g~DMM(NN6
++--CFMM"IDt#MNNNFOOQqSVQqSV$%%%FOOQqSVQqSV$%%% FMM"IDt#MNNN FMM"Mv$S  2 2 2
 FMM"Mv$S  2 2 2 2 2r5   c                  V   dD ]`} t          j        d| i          5  t          j        ddgg                                          | k    sJ 	 d d d            n# 1 swxY w Y   adD ]B} t          j        t                    5  | t           j        d<   d d d            n# 1 swxY w Y   Cd S )N)r   r  zimage.interpolation_stager8   r9   )DATAfooN)	r  
rc_contextr&   r+   get_interpolation_stagerF  rG  r  r   )vals    r3   test_rc_interpolation_stagerF    sL    I I^8#>?? 	I 	I:1vh''??AASHHHHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I$ < <]:&& 	< 	<8;CL45	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<< <s#   0AA	A	BB!	$B!	z<ignore:Data with more than .* cannot be accurately displayedzdim, size, msg)rowi   z2\*\*23 columns)coli   z2\*\*24 rows)r\   c           	      ,   |                                  }|                                 }t          j        d|dz   f          }d|d d |j        dz  d f<   |dk    r|j        }|                    |ddddd|          }	t          j        t          d	| d
          5  | j	        
                                 d d d            n# 1 swxY w Y   t          j        d          }d|d d df<   |dk    r|j        }|                    |ddddd|          }	d S )Nr8   r9   rH  r   rX  r  r?   )r  r  r  r  r#   rf   zData with more than z  cannot be accurately displayed.r  r  )r*   r'   r@   sizer  r+   rF  r  r  r  r  )
r   r   dimrJ  msgrf   r"  r#  rX   r   s
             r3   test_large_imagerM    s    !!GFHa]##E!"E!!!UZ1_

e||	AA%l&,% 
 
' 
'B
 
k.3 . . .
/ 
/ 
/   	              
 HVEE!!!Q$K
e||	u11V*%+$ 
 
& 
&BBBs   CC
Cc                    t           j                            dd          dz  dz   }|                     dd          }|d                             |d           |d                             |dd	
           |d                             |d           |d                             |ddd           |d                             |ddd           |                    dd          }|d                             |t          j                               |d                             |t          j        d	                     |d                             |t          j        d                     |d                             |t          j        ddd                     |d                             |dd           t          |d         j	        d         j
                  t
          j        u sJ t          j        t                    5  |d                             |d           d d d            d S # 1 swxY w Y   d S )Nr{   g?r{  r8   r   r   r  r  r  )rW  r  r9   symlogr    r|  r  )rW  r  r  r:   logit)r  )	linthresh)rQ  r  r  )r|  r  )rW  climfoobar)r'   r   r   r*   r+   r	   rY  r}  typeimagesrW  rF  rG  r  )r   r   r  axtsaxrss        r3   test_str_normsrX    sG   
	r2#b(AQ""DGNN15N!!!GNN15rN***GNN18N$$$GNN18"2N666GNN17"N555Aq!!DGNN16>++N,,,GNN16>r222N333GNN16,q999N:::GNN16,qrKKKNLLLGNN17N222Qq!&''6>9999	z	"	" ) )Qqx((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   H>>IIc                     t          j        t          j        j        t                                } t          j        t          d          5   | t          j
        d          d            d d d            n# 1 swxY w Y   t          j        t          d          5   | t          j
        d          t          j
        d                     d d d            n# 1 swxY w Y   t          j        t          d          5   | t          j
        d          t          j
        d                     d d d            n# 1 swxY w Y   t          j        t          d          5   | t          j
        d          t          j
        d                     d d d            n# 1 swxY w Y   t          j        t          d	          5   | t          j
        d          t          j
        d                     d d d            n# 1 swxY w Y   t          j        t          d
          5   | t          j
        dt          j                  t          j
        d                     d d d            n# 1 swxY w Y   t          j        t          d          5   | t          j
        d          t          j
        d          j                   d d d            n# 1 swxY w Y   t          j
        d          }d|j        _        t          j        t          d          5   | t          j
        d          |           d d d            d S # 1 swxY 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   rF  rG  rH  r'   r@   r  rC   r  flags	writeable)r]  rl  s     r3   test__resample_valid_outputr`  	  s    !4

KKKH	y(I	J	J	J ) )&!!4((() ) ) ) ) ) ) ) ) ) ) ) ) ) )	z)E	F	F	F 8 8&!!28I#6#67778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	z)E	F	F	F 8 8)$$bhv&6&67778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	z)F	G	G	G ; ;)$$bhy&9&9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	z)G	H	H	H ; ;)$$bhy&9&9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	z);	<	<	< ? ?&"(++RXf-=-=>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	z)?	@	@	@ 7 7&!!28F#3#3#56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 (6

CCI	z)I	J	J	J ( (&!!3'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   A88A<?A<1CC"C1D>>EE$1F!!F%(F%1HHH*<I22I69I66KK!K MMMc                     t          j                    } t          |           }t          j        t
          d          5  |                                 d d d            n# 1 swxY w Y   t          j        dt                    
                    d          }|                    |           |                                dk    sJ |                                |                                k    sJ d S )Nz"You must first set the image arrayr  rb  r<   r  )r&   r  r   rF  rG  r  	get_shaper'   r(   r  r)   r  get_sizer  s      r3   test_axesimage_get_shaperd     s   	B	2B	|+O	P	P	P  
              
	"E"""**622AKKNNN<<>>V####;;==BLLNN******s   AA#&A#c                  (   t          j                                                    } t          j        d                              d          }|                     || j                   |                                 dk    sJ |                     |t                      
                    d          | j        z              |                                 dk    sJ |                     || j        d           |                                 dk    sJ d S )Nr:   r^   r
  rX  r9   r8   )r  r  )r&   rh   r  r'   r(   r)   r+   r  
get_aspectr   r  r  r  s     r3   .test_non_transdata_image_does_not_touch_aspectrg  ,  s    		!	!	#	#B	1		f	%	%BIIbBLI)))==??f$$$$IIbHJJ,,Q//",>I???==??aIIbBLI333==??ar5   )r  float32int16r   int8rC   ndim)r9   r    c                 ^   t           j                            d          }|dk    rdnd}|                    |                              t          j        | d                    }t          j                    \  }}|                    |          }|	                    d           d          d S )	NiU  r9   r^   )r9   r9   r    )rJ  Tr   r   )
r'   r   default_rnguniformr   r=   r&   r*   r+   r  )r=   rk  rngr   r   r/   rw   
axes_images           r3   test_resample_dtypesrq  7  s     )


%
%CaiiFFYE;;E;""))"(5t*D*D*DEEDlnnGC4J$""""r5   )
contextlibr   r   rZ  rr   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  rF  r4   rG   rY   markparametrizero   ry   r   r   r   r   r   r   r   r   r   r   r   r   contextr   r  r"  rA  r'  r0  r:  r@  rB  rI  rM  rP  r^  rq  ru  r  r  r  r  r  r  r  r  r  r  r  r  r(   r)   r  r  r  r  r  r!  r'  r>  rC  rF  rK  machiner^  r`  splitrm  rq  rw  ry  r  rY  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r&  r+  r?  rF  filterwarningsrM  rX  r`  rd  rg  rq  r   r5   r3   <module>r     s                         				 				        



         , , , , , ,          F F F F F F F F F F F F F F F F< < < < < < < < < < < < < < O O O O O O O O A A A A A A A A A A # # # # # #  ?#7333  43( %&D999	. 	. :9	. +,#U^? ? ?+ +? ?+  ,udm<<:,E5>:::B B ;: =<B   '    (((. . )( . (((  )(" 	) 	) 	)$ $ $$ $ $  > > >??- - @?-D GW#566@ @ 76@  B B BCCA A DCA* * *2) ) )4 4 4 =/t4446 6 546 7(((  )( 0D+ D+ D+N 	3Z	3Z	3Z	3Z	3Z#Y	2Y	& 
 
P P
 
P* %.	=),#61a.	4 g,/0r(Xa&8 D D D <.000  10 #$G444  54 8*$g>>>  ?> (((  )(     ,-4@@@I I A@I =/tOOO  POF F F8 /0"'3 3 3 3 3 *+>>>  ?>4 (((% % )(% $%#U^WN N N! !N N!: ()t7KKK  LK0 G  G  GF 34"'3 3 3 3 3  ! ! !  ' ' '0- - -- - - 		2		"yry~~'='=f'E'E	G		2		"yry}}'<'<V'D'D	F 1 1 1  B   $%4888  98 >"555  656	% 	% 	%3 3 3( ./TsKKK> > LK>B <.d333+ + 43+"   )*===
* 
* >=
* 01+8+--99aat"'3 3 3 3 3B& & & BB#9#?#?#A#ABBBD D% %D D%& )*GLLL  ML *+WMMM  NM /0"'3 3 3 3 3 ^!!  "# #	1 	1# #	1    D D D
   02DEG G09j2IJJ2 2 KJG G2 4 4 4	D 	D 	D9 9 9$2 2 2 - - -$3 3 3
 74 4 48 $%5%."'3 3 3
 
3 3
"9% 9% 9% 9% 9% 9% 9% 9%x	  	  	    (((' ' )('6 r1g&&(((2 2 )( '&2$ 
 
 
@ ./w???  @? 'tX8++8 8 822 228 822j< < <  = > >GW#56699966689 9 	***& & +*9 9 76> >&> ((() ) )()*( ( (.	+ 	+ 	+      >  ((	# 	# )(	 
	# 	# 	#r5   