
    (?eJ              
       
   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&g d)          d*             Z:d+ Z;d, Z<d- Z= e$d.gd          d/             Z>d0 Z?e,j0        1                    d1d2d3ggd4fd5d6ggd7fej@        d8d9ggd:fd8d;ggd<fd=d=ggd>fg          d?             ZA e$d@gd          dA             ZB e$dBgd          dC             ZC e$dDgddE          dF             ZD e#dg          dG             ZEdH ZFdI ZG e$dJgd          dK             ZH e$dLgdddgM          dN             ZIdO ZJ e$dPgddE          dQ             ZK e$dRgd          dS             ZL e#dg          dT             ZM e$dUgddgddV          dW             ZN e$dXgddE          dY             ZOdZ ZP e$d[gddE          d\             ZQd] ZRd^ ZSd_ ZTd` ZUda ZVdb ZWe,j0        1                    dce  ejX        dd           ejX        de           ejX        df          Y                    dg          fe! ejX        dd           ejX        de           ejX        dh          Y                    di          fg          dj             ZZdk Z[dl Z\ e$dmgd          dn             Z] e$dogd          dp             Z^dq Z_dr Z` e$dsgddtu          dv             Za e$dwgd          dx             Zbdy Zc e$dzgd          d{             Zd e$d|g eje                    d}k    rd nd~dd          d             Zfd Zge,j0        1                    dd dh                                D                       d             Zi e$dgddE          d             Zj e$dgddE          d             Zk e$dgddE          d             Zle,j0        1                    dejm        ejn        d d g          d             Zod Zpd Zqd Zrd Zse,j0        1                    dddg          e,j0        1                    dddg          d                         Ztd Zud Zvd Zwd Zx e#            d             Zyd Zzej        {                    d          d             Z| e$dgddgddV          d             Z} G d dej~                  Zd Zd Z e#dg          d             Ze,j0        1                    dd=d8g           e#dg          d                         Z e#            d             Z e$dgd          d             Z e$dgdd eje                    dv rdnd           d             Ze,j0                            d          e,j0        1                    dddg          e,j0        1                    dg dg dg           e#d          d                                                 Z e#dg          d             Zd Zd Zd 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        ;lib/python3.11/site-packages/matplotlib/tests/test_image.pytest_image_interpsr3      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   ).r7   dtype.r   noner!   r#   N)r%   r)   r&   zerosonestriluint8r*   )r.   axlaxrimgs       r2   test_alpha_interprF   0   s     l1a((OC#s
(9

C'&//CK'"'&999::CKJJs&J)))JJs*J-----r4   interp_nearest_vs_nonepdfsvg)
extensionsr5   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   )rT   c   G   r;   r7   r8   r>   r!   zinterpolation noner    zinterpolation nearestN)r   r&   arrayrB   r%   r)   r*   r+   )r-   r.   r/   r0   s       r2   test_interp_nearest_vs_nonerX   =   s      H]
>>>???3 ==---029;	C 	C 	CAl1a((OC#sJJqJ'''MM&'''JJq	J***MM)*****r4   suppressCompositeFfigimagepng)rJ   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r8   r8   r   figsizedpig      Y@r8   r   2   r   r   lower)xoyoorigin)r%   figurerY   r&   ix_r'   sinrZ   )rY   r.   xyzcrE   s          r2   test_figimagern   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Ar4   c                     t          j                    \  } }|                    g d           t          j                    }|                     |           |                    d           t          j        |           d S )N)r7   r8   r   r   )r%   r)   plotioBytesIOsavefigseekimread)r.   axbuffers      r2   test_image_python_iorx   _   si    lnnGCGGIIIZ\\FKK
KKNNNJvr4   z!img_size, fig_size, interpolation))r   r8   hanning)r   r   r    )r   
   r    )r   333333@ry   )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,rL   r   r   r7   r7   antialiasedr!   )r&   randomseedr%   r   randintset_size_inchesr)   set_positionr*   )	fig_testfig_refimg_sizefig_sizer"   r`   Ar.   rv   s	            r2   test_imshow_antialiasedr   h   s     INN8
,}
%C
	s3>**Ch,?,?@@A'" 0 0Hh////					BOOLLL!!!IIa}I---					BOOLLL!!!IIa}I-----r4   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}   rL   r   r{   r   r!   rz   r   r    )r&   r   r   r%   r   r   r   r   r)   r*   set_xlimset_ylim)r   r   r`   r   r.   rv   s         r2   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r4   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.tifr8   r   r7   )r   user   __file__parentr)   r*   r   openr%   ru   )r   r   png_path	tiff_pathaxss        r2   test_imshow_pilr      s    	IiH~~$'NNHX%(OOI


A

CFMM%*X&&'''FMM%*Y''(((


1

CFMM#*X&&'''FMM#*Y''(((((r4   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%   ru   ospathjoindirnamer   r<   r&   uint16sumrE   s    r2   test_imread_pil_uint16r      st    
*RW\\"'//(";";&lD D E EC9	!!!!6#;;)######r4   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%   ru   r   r   r   r<   r&   r   r   r   s    r2   test_imread_fspathr      s[    
*X GGI IC9	!!!!6#;;)######r4   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   r7   i@  r8   )formatr`   r   r   r   r   )r&   r   r   r   rq   rr   r%   imsavert   ru   shaper   )r   	has_alphadata	buff_dpi1buff_dpi100arr_dpi1
arr_dpi100s          r2   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,,,,,r4   )r[   rH   psepsrI   c                     t          j        t          t          j                  t          j        ddgg          |            d S )Nr   r7   r   )r%   r   r   r   devnullr&   rW   )r   s    r2   test_imsave_fspathr      s9    JtBJAq6(!3!3C@@@@@@r4   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 )Nr7   )rb   upper   r9   r[   )re   r   r   rT   rB   rb   rf   )r&   r   r   r   rq   rr   r%   r   rt   ru   astyper   )re   r   buffarr_bufs       r2   test_imsave_color_alphar      s     INN1$ * *y~~b"a((z||
4fU;;;;		!*T""
 D  ))W":Dw;&&w//4))))!* *r4   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testr7   r8   r   r[   pnginfor   
pil_kwargs)
PIL.PngImagePluginr   rq   rr   add_textr%   r   r   r   info)r   bufr   ims       r2   test_imsave_pil_kwargs_pngr      s    ******
*,,CgiiGZ(((JsaVaV$G(<> > > >	CB7:&((((((r4   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 imager7   r8   r   r   r   c                 2    i | ]\  }}|         j         |S  )name).0kvTAGSs      r2   
<dictcomp>z/test_imsave_pil_kwargs_tiff.<locals>.<dictcomp>   s%    :::1DGL!:::r4   ImageDescription)PIL.TiffTagsr   rq   rr   r%   r   lenr   r   tag_v2items)r   r   r   tagsr   s       @r2   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3r4   image_alphac                  L   t           j                            d           t           j                            dd          } t	          j        dd          \  }\  }}}|                    | dd           |                    | dd           |                    | dd	           d S )
Nr   r   r7   r         ?r>   )alphar"         ?r    )r&   r   r   r   r%   r)   r*   )Zr.   r/   r0   r1   s        r2   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5r4   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   rz   r   )re   r9   r9   motion_notify_event,   )g333333$@r9   rb   )r   r   r   r   extent)      ?r   7   )      ?r   ){Gz?g{Gzr8   r   	transform)r   rz   )matplotlib.backend_basesr   r%   r)   r*   r&   r'   r(   	transDatar   canvasget_cursor_dataclearr   scalerotate)
r   r.   rv   r   rj   rk   xdispydispeventtranss
             r2   test_cursor_datar    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$$******r4   z
data, texti'  i'  z[10001.000]grh|?g/$?z[0.123]r7   r8   []g     ?z[1.0000000000000000]rf   z[-1.0000000000000000]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.   rv   r   r  r  r  s	            r2   test_format_cursor_datar
  V  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Cr4   
image_clipc                      ddgddgg} t          j                    \  }}|                    |           }t          j        dd|j                  }|                    |           d S )Nr7   r8   r   r9   r   r   )radiusr   )r%   r)   r*   r
   Circler   set_clip_path)dr.   rv   r   patchs        r2   test_image_clipr  i  sd    
Q!QAlnnGC	1BN6!r|DDDEUr4   image_cliprectc                      t          j                    \  } }ddgddgg}|                    |d          }t          j        ddd|j        j                  }|                    |           d S )	Nr7   r8   r   r9   r   r   r   r   r   r7   r7   )xywidthheightr   )r%   r)   r*   r
   	Rectangleaxesr   r  )r.   rv   r  r   rects        r2   test_image_cliprectr  s  sz    lnnGC
Q!QA	1\	*	*B10AC C CDTr4   r*   )r5   r   c                     t          j                    \  } }t          j        d                              d          }|                    |dd           |                    dd           |                    dd           d S )Nr   rz   rz   r#   r7   r8   r7   r8   r"   r   r   r   )r%   r)   r&   r'   r(   r*   r   r   r.   rv   arrs      r2   test_imshowr%    sr    lnnGC
)C..
 
 
*
*CIIcLIAAAKK1KK1r4   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   )rz   rz   r7   r   r#   r!  r"  r   )r&   r'   r(   r)   r*   r   r   )r   r   r$  rv   s       r2   test_imshow_10_10_1r'    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r4   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   )rz   rz   r8   	r%   r)   r&   r'   r(   pytestraises	TypeErrorr*   r#  s      r2   test_imshow_10_10_2r.        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  )rz   rz   r   r*  r#  s      r2   test_imshow_10_10_5r2    r/  r0  no_interpolation_originc                  >   t          j        d          \  } }|d                             t          j        d                              d          dd           |d                             t          j        d                              d          d	           d S )
Nr8   r   r   )r8   ra   rb   r>   )re   r"   r7   r!   )r%   r)   r*   r&   r'   r(   )r.   r   s     r2   test_no_interpolation_originr5    s    |AHCFMM")C..((11' &  ( ( (FMM")C..((11MHHHHHr4   image_shift)r5   rJ   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 )r7   r   )r   rj   rk   s     r2   
<listcomp>z/test_image_shift.<locals>.<listcomp>.<listcomp>  s%    555!AA555r4   r7   r   )range)r   rk   s    @r2   r:  z$test_image_shift.<locals>.<listcomp>  s6    MMM!5555uQ}}555MMMr4   r7   r   gMk&Agk&Ar>   )normr"   r   auto)r;  r%   r)   r*   r   LogNorm
set_aspect)imgDatatMintMaxr.   rv   s        r2   test_image_shiftrC    s    MMuQ}}MMMGDDlnnGCIIgFN,,FD!S)  + + +MM&r4   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 )Nr7   r_   r~   F)frameon      r   	   r   rz   rK  rz   r>   gray)re   r   r"   cmapr8   )r   r7   r   )	facecolorr   rf   r   z.Expected a non-green edge - but sadly, it was.)r%   rg   add_axesr&   tiler'   r(   r*   r   r   
set_xticks
set_yticksrq   rr   rs   rt   ru   r   )r.   rv   r   r   rj   rk   r   rgbas              r2   test_image_edgesrW    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E88888r4   image_composite_backgroundc                  >   t          j                    \  } }t          j        d                              dd          }|                    |g d           |                    |g d           |                    d           |                    ddg           d S )	NrG  r9   r   )r   r8   rH  r   r   )r9   r   rH  r   )r7   r   r   r   r   )r%   r)   r&   r'   r(   r*   set_facecolorr   r#  s      r2   test_image_composite_backgroundr[    s     lnnGC
)B--

1
%
%CIIc---I(((IIc---I(((^$$$KKBr4   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.
    )      r9   r7   Nr   皙?皙?rf   r   )r_  r^  r9   )r7   r8   r   r   333333?)r   r   )r8   r   r   r   333333?)r   r9   r   r   r   )r   r   r7   r8   )r   r   r8   r   )r   r   r   r9   )r   r   r   r7   r   )r%   r)   r&   r?   concatenater'   newaxisr*   rZ  r   r   )r.   rv   r$  arr2s       r2   test_image_composite_alpharg    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r4   c                    t          j        d                              d          }| |fD ]}|                                }|                    |t
          j                            g d          |j        f           |                    |t
          j                            g d          |j        f           d|_	        d S )NrI  r   r   )r  r   r7   )r7   r   )	clip_path)r  r7   r8   )r8   r7   T)
r&   r'   r(   add_subplotr*   mplr   r   r   rY   )r   r   tr.   rv   s        r2   #test_clip_path_disables_compositingrp    s    
	!V$$A'" / /__
		!.F.F.F G G " .	 	/ 	/ 	/
		!.F.F.F G G " .	 	/ 	/ 	/ 	/ $Gr4   rasterize_10dpi)rJ   r5   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 )Nr7   r8   r   r9   )r   r7   rE  r   g      4@T)	linewidth
rasterizedrj  )rf   r8   xlimylim)rs  Frz   rL   )r&   asarrayr%   r)   r*   rp   setrQ  rR  spinesset_visibler   )rE   r.   r   rv   s       r2   test_rasterize_dpir|    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]r4   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!   Frz   ra  皙?rb  r   )r&   r'   r(   r%   r)   r   r   r   r   set_dataset_clip_onr   r   
add_artistidentityrg   transFigure)r	   r.   rv   bbox_ims       r2   test_bbox_image_invertedr  &  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'r4   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   )ra  g?r   皙?)rc  rb          r  )ffffff??r  rc  r   r   r^   r~   r   r7   )r  r  r  r  r    )r   r"   i  r)  i  i  r8   )r   r"   r   )r&   rW   r%   r)   r   r   r   r*   r   drawrendererget_window_extentr   
get_points	transAxes)r   r.   rv   im_objr  im_bboxs         r2   $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Fr4   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.   rv   s      r2   test_zoom_and_clip_upper_originr  b  sq     IcNNEMM(##ElnnGCIIeKKTKKcr4   c                  t    t          j                    } t          |           }|                    d           d S )NBlues)r%   gcar   set_cmaprv   r   s     r2   test_nonuniformimage_setcmapr  n  s2    	B			BKKr4   c                      t          j                    } t          |           }|                    t          j                               d S N)r%   r  r   set_norm	Normalizer  s     r2   test_nonuniformimage_setnormr  t  s8    	B			BKK     r4   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   rB   r;   rz   r  r   rT   L)r&   r@   r;  linspacer   newputdataflattenr%   r)   r*   )imdir   r.   rv   s        r2   test_jpeg_2dr  z  s    
'('
*
*
*C2YY 4 4KS"--3AqqqD			3	!	!BJJs{{}}lnnGCIIbMMMMMr4   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 )Nr  ,  r^   )r  r  r9   r;   r  r   r=   redr   )rN  r   r`   r            r  )   r   r   )r%   rg   r&   r?   floatr  rZ   rq   rr   rs   rt   r   r   r   	getcolorsgetpixel)r   r   r	   
num_colorscorner_pixels        r2   test_jpeg_alphar    s    Jv3'''' 
-u	-	-	-BS#s++BvJL:<<DKe====IIaLLLJtE U__S))**J*##########>>&))L;&&&&&&r4   c                     t          j                    } t          |           }t          j        dt
                                        d          }|                    |           d|d<   |j        d         dk    s
J d            d S NrG  r;   r9   r   #@r  r   value changed)	r%   r  r   r&   r'   r  r(   r  _Arv   r   rl   s      r2   test_axesimage_setdatar    sw    	B	2B
	"E"""**622AKKNNNAdG5;!_r4   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   rl   s      r2   test_figureimage_setdatar    sy    
'))C	S		B
	"E"""**622AKKNNNAdG5;!_r4   zimage_cls,x,y,a      @      @g      (@r  g      @)r   r8   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  rf   )r%   r  r  r  _Ax_Ayr(   r   )	image_clsrj   rk   rV  rv   r   s         r2   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0r4   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   )ElementTreerz   r7   r8   )rv   rI   r   r	   r  )	xml.etreer  r&   r   r   r   r%   r)   
pcolormeshcolorbarrq   rr   rs   getvalueparseiter)
r  r   r.   rv   p1p2r   treer  r	   s
             r2   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~&& '	 r4   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_posixr+  r,  
ValueErrorr%   ru   urllibrequesturlopen)r   urlfiles      r2   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   r7   r8   )r7   r   r7   r   viridisrf   r=  )r   rM  vmaxvminaspectlog)yscale)r&   r?   r%   r)   r*   ry  )r   r.   rv   s      r2   test_log_scale_imager    sx    
AAcccFlnnGCIIa(((yqr    FF%Fr4   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  r8   r7         ?r   r>   r  rb   )r9   r8   T)r"   rM  re   r   clip_on   zr--r   )lwr   r   r   r9   )r&   r'   meshgridexppir%   r)   r*   r   
rotate_degr   set_transform
get_extentrp   r   r   )deltarj   rk   r-   YZ1Z2r   r.   r/   im1trans_data2x1x2y1y2s                   r2   test_rotate_imager	    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r4   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   r8   )	rq   rr   r&   r?   r%   r   rt   ru   r   )r   r   rE   s      r2   test_image_preserve_sizer    st    :<<D	*		BJtR&&&&IIaLLL
*T

C9RaR=BH$$$$$$r4   c                     d} t          j        | t                    }t          j        | | fd          }t          j        |g 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_   rF  )r  r  r   r   r    rb   r=  )r"   re   r  r7   )r`   r   )r  r  r9   rf   )r&   r  r  r%   rg   Axesset_axis_offrO  r*   rq   rr   rs   rt   ru   r   r   rx  bool)nr   r.   rv   r   rE   s         r2   test_image_preserve_size2r    s,   	A;q%  D
*aVU
3
3
3C	#+++	,	,BOOLLIId)GFIKKK:<<DKK!KIIaLLL
*T

C9	!!!!rz#aaaAg,55{1d++DDbD13 3 3 3 3r4   zmask_image_over_under.pngr   )r5   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  r8   r7   r  r   rz   rS  rT  rU  overunderbad333333?r#   g      r   )r  r  cliprb   )r  r   r  r   )r"   rM  r<  re   r   zGreen=low, Red=high, Blue=badboth
horizontal)extendorientationrv   r  r    )rf   r  gɿr   r  r   r7   r  )ncolorsr  zWith BoundaryNormproportional)r  spacingr  rv   r  )r%   r   r&   r'   r  r  r  cmrL  with_extremesmamasked_wherer)   r*   r   r  r+   r  BoundaryNorm)r  rj   rk   r-   r   r  r  r   paletteZmr.   r/   r0   r   s                 r2   test_mask_image_over_underr)  4  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"  > > > > >r4   
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 )Nr7   r8   r:   r    r!   r;   T)r%   r)   r&   r@   nanr*   r?   r  r$  masked_arrayr   )r.   r/   r0   r   s       r2   test_mask_imager.  V  s     l1a((OC#s
A&Aac1Q3hKJJq	J***
t$$$AAac1Q3hK
276;;;Q??AJJq	J*****r4   c                      t          j        dt           j                  } t          j                    \  }}|                    |            |j                                         d S )Nr]   )r&   fullr,  r%   r)   r*   r   	draw_idle)r   r.   rv   s      r2   test_mask_image_allr2  h  sM    7626""DlnnGCIIdOOOJr4   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 )Nrz   r   r7   r8   rb   r    r  )re   r"   rM  z<f8z>f8)	r&   r'   r  hypotr%   r)   dictr*   r   )rj   r-   r   r   r.   r/   r0   kwargss           r2   test_imshow_endianessr7  p  s    
	"A;q!DAq
QAAl1a((OC#s		JJJFCJqxx))&)))CJqxx))&)))))r4   imshow_masked_interpolationx86_64r   )r  r5   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  rS  rU  r   r  r   r   r7   r  r  r;   rf   r:   g     j@)rH  r   )rH  rH  r  T)r   rH  r   r   r   )r<  rM  r"   off)rn  	colormapsr#  r   r  r&   r'   r  r(   inf
zeros_liker   r$  r-  r%   r)   sortedmimage	_interpd_removezipravelr+   r*   axis)
rM  Nr  r   maskr.   ax_gridinterpsinterprv   s
             r2    test_imshow_masked_interpolationrL  ~  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	@@@
 r4   c                  N    t          j        ddgdt          j        gg           d S )Nr7   r8   r   )r%   r*   r&   r,  r   r4   r2   test_imshow_no_warn_invalidrN    s'    JABF$%%%%%r4   r<   c                 6    g | ]}t          j        |          S r   )r&   r<   )r   ss     r2   r:  r:    s     BBBabhqkkBBBr4   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;   )rz   rz   r   urz   r   rT   fr7   )r&   r'   r(   kindr%   r)   r*   	get_arrayallr<   rB   )r<   r$  too_lowtoo_high_rv   outs          r2   $test_imshow_clips_rgb_to_valid_ranger[    s4    )Cu
%
%
%
-
-k
:
:CzSr	AgGSyHzSCiLNNEAr
))C..
"
"
$
$CLA""$$$$$zSH"'')))))y~$$$$$$H$))+++++yBH$$$$$$r4   zimshow_flatfield.pngc                      t          j                    \  } }|                    t          j        d          d          }|                    dd           d S )Nr:   r    r!   r   r  )r%   r)   r*   r&   r@   set_climr.   rv   r   s      r2   test_imshow_flatfieldr_    sH    lnnGC	276??)	<	<BKKCr4   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)r7   r8   g   mB)r   r7   r9   r;   r   r   )r   r%   r)   r&   rW   uint64r*   r]  r.   rv   rE   pcs       r2   test_imshow_bignumbersre    sj    &/H"# lnnGC
(LLL))),BI
>
>
>C	3BKK1r4   zimshow_bignumbers_real.pngc                      dt           d<   t          j                    \  } }t          j        g dg dg          }|                    |          }|                    dd           d S )Nr    ra  )r  r   gMD)r  r   r  r   r   )r   r%   r)   r&   rW   r*   r]  rc  s       r2   test_imshow_bignumbers_realrg    se     '0H"# lnnGC
(OOO\\\2
3
3C	3BKK1r4   	make_normc                  *    t          j        d          S Nr7   )r   
SymLogNormr   r4   r2   <lambda>rl    s    Vq!! r4   c                  *    t          j        d          S rj  )r   	PowerNormr   r4   r2   rl  rl    s    Va   r4   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  r<  )r   rq  r   )r%   r)   r+  warnsUserWarningr*   
set_extentr   r  r,  RuntimeError
make_imageget_renderer)rh  r.   rv   r   s       r2   test_empty_imshowrx    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 )Nri  r;   )r%   r)   r*   r&   r?   float16r   r  r.   rv   s     r2   test_imshow_float16r|    sL    lnnGCIIbhvRZ000111JOOr4   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 )Nri  r;   equiv)r%   r)   r*   r&   r?   
longdoublecan_castfloat64r   r+  rr  rs  r   r  r{  s     r2   test_imshow_float128r    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&   rW   r  r{  s     r2   test_imshow_boolr    sE    lnnGCIIbhut}5TBBBCCCCCr4   c                      t          j                    \  } }|                    t          j        dt          j                             | j                                         d S )Nr   )r%   r)   r*   r&   r0  r,  r   r  r{  s     r2   test_full_invalidr     sI    lnnGCIIbgh''(((JOOr4   zfmt,counted)r   s    colorimage)rI   s   <imagezcomposite_image,count)Tr7   )Fr8   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 )Nrq  r   r7   r8   r   r   r   r7   r   r7   r   rf   )r8   r   r   r7   zimage.composite_imager   )r&   r  r'   ri   r%   r)   r   r*   r   rq   rr   rs   r  count)
r   countedcomposite_imager  r-   r   r   r.   rv   r   s
             r2   test_compositer    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1r4   c                     t          j                    \  } }|                    dggd           |                                 |                                 |                                |                                cxk    rdk    sn J d S )Nr   r  r   rj  )r%   r)   r*   relim	autoscaleget_xlimget_ylimr{  s     r2   
test_relimr    s    lnnGCIIseLI)))HHJJJLLNNN;;==BKKMM3333V33333333r4   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   r=  rJ  rL  F)r  r   rM  r  rj  ru  .r   )r%   r)   r  r*   ry  r   r  r&   rW   buffer_rgbarV  r^  s      r2   test_unclippedr  "  s    lnnGCOO	QFQF#F;M 
 
/ 
/BFFVF$$$JOO HSZ++--..sBQBw71<AACCCCCCCr4   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 )Nr8   r7   r   r   r=  r  )r  r   rgbar   rT   )rf   r   )rw  )r%   r)   r  r*   r  set_clip_boxbboxrq   rr   rs   r  ry  )r.   r   rv   r   
buf_before	buf_afters         r2   test_respects_bboxr  .  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8r4   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rH  r  Fz[0]z[nan])	r%   r)   r*   r&   r?   r$  r-  r  r,  )r.   rv   r   r   s       r2   test_image_cursor_formattingr  @  s    lnnGC	28F##	$	$B5qc//D  &&$....5qc00D  &&%////6D  &&'111111r4   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   r7   r  r   r8   g[(\?r  r    )r   rM  r"   ).rf   r!   N)r&   r  r  r  maxrn  r=  rm  r*   r   r  )
r   r   rj   xxyyzzr   rM  rv   r  s
             r2   test_image_array_alphar  O  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,,,,,r4   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]   r7   )r   )r+  r,  r-  r%   r*   r&   r?   r   r4   r2   !test_image_array_alpha_validationr  b  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?ra  r   r^   r~   )rf   rf   rf   r   r   r   r   +   O   _   B   r7   rf   rf   rf   r   r   r   "   r;   r=  r   )r  rM  r  r  r<  r7   rz   rT   )r   rn  r=  	set_underr%   rg   rO  r&   rW   r  r*   rF  r   r  rv  r  rM  r<  TrE  r   r   rV  )rM  r.   rv   r   r   
from_imagedirect_computations          r2   test_exact_vminr  g  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3r4   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   r7   r7   r   )r   r7   r7   r   r   rS  ra  )r  r  r}   r   r  r  r>   rf   r7   )rM  r   r"   r  r  gr`  N)
r%   r)   rp   r&   r   r   r*   randnr   r   r{  s     r2   test_image_placementr    s     lnnGCGGOOO___CCG@@@INN8IIbioob"%%GL"!  5 5 5KKeKKer4   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&   rx  viewunits)clsinput_arrayr  objs       r2   __new__zQuantityND.__new__  s+    j%%**3//	
r4   c                 2    t          |dd           | _        d S Nr  )getattrr  )selfr  s     r2   __array_finalize__zQuantityND.__array_finalize__  s    S'400


r4   c                     t          | dd           }t                                          |          }t          |t                    s|t	          ||          }|S r  )r  super__getitem__
isinstancer  )r  itemr  ret	__class__s       r2   r  zQuantityND.__getitem__  sV    gt,,gg!!$''c:&& 	)%*;S%((C
r4   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 )
NrZ  r7   r   r  dimensionlessr8   *z/())r  NotImplementedr   r&   rx  addsubtractr  multiplydividegreatergreater_equalequal	not_equalless
less_equalr  ndarrayrW   r  )r  ufuncmethodinputsr6  funci0unitout_arri1u0u1s               r2   __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r4   c                 @    |                      t          j                  S r  )r  r&   r  )r  s    r2   r   zQuantityND.v  s    yy$$$r4   )
__name__
__module____qualname__r  r  r  r  propertyr   __classcell__)r  s   @r2   r  r    s          
1 1 1    % % %N % % X% % % % %r4   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 )Nr7   r8   mr   zm*mzm/(m)rP  )	r  r&   rV  r   rx  r  r+  r,  r  )qq0q1s      r2   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&   r@   r%   r)   r*   r   r  )r$  r.   rv   s      r2   test_imshow_quantityndr    sO    
RWV__c
*
*ClnnGCIIcNNNJOOr4   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:   r7   r;   rf   r   r8   Fr  Tr  wr  r   r;  r  r    )r<  r   r"   rM  r  )r   rz   r   rz   r   rz   ru  )r&   r0  r  r$  rW   rH  rn  r=  r#  r)   r*   r   r>  r  r  ry  )r   r   r   masked_datarM  rv   r   s          r2   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&&&&&r4   rj   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   r8   r7   r;  r    r  )r<  r"   rM  i  r  r  )r&   r0  r  r)   r*   r   r>  r  rn  r=  r#  r  )r   r   rj   r   rv   rM  s         r2   test_huge_range_logr    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 2r4   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 )Nr7   r   r   )r@   r?   mixedr    r  r   Greys)r"   r  re   rM  r  r  r  r  g?r  rI  )r7   r8   r   rz   T)nbinsstepsinteger)r)   	enumeraterD  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  rl   r
  s	            r2   test_spy_boxr    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	
 	
 	
 	

 
r4   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 )Nri  rE  r   T)sharexshareyr    r#   r!   r8   rI  r9   r  )rv  )r%   rg   r)   rD  r   r  r&   r'   r(   	add_image
pcolorfastr  ry  )r   rv   r"   r   s       r2   test_nonuniform_and_pcolorr  9  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 r4   zrgba_antialias.png)aarch64ppc64les390xgy&1|?)r   r5   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 )$Nr8   )      @r   FT)r_   r  r  constrained_layout   rf   r   rz   K   r  r7   rb  r   ra   g    .AF   Z   g    .r        yellowcyanr   r    g333333r  )r"   rM  r  r     r   r   )r"   interpolation_stagerM  r  r  r   r  )r%   r)   r&   r@   r'   r  sqrtri   r  r   r,  r   r"  RdBu_rset_overr  r  r*   r   r   )r.   r   rG  aarj   rk   r-   r   Rf0r   rV  rM  s                r2   test_rgba_antialiasr2  I  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 2r4   z<ignore:Data with more than .* cannot be accurately displayedre   r   rb   z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 )Nr7   r8   r4  r   r=  r  r>   )r  r  r  r   r"   re   zData with more than z  cannot be accurately displayed.r  rl  )r)   r&   r?   sizer  r*   r+  rr  rs  r   r  )
r   r   dimr6  msgre   r  r  rW   r   s
             r2   test_large_imager9    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 )Nrz   g?ra  r7   r   r   r  rp  r  )r<  r  r8   symlogr   rb  r  )r<  r  r  r9   logit)r  )	linthresh)r=  r  r  )rb  r  )r<  climfoobar)r&   r   r   r)   r*   r   r>  rk  typeimagesr<  r+  r,  r  )r   r   ro  axtsaxrss        r2   test_str_normsrD    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                  D   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                  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            d S # 1 swxY w Y   d S )Nr   zmust be a NumPy arrayr  )rI  rI  zdifferent dimensionalities)rI  rI  r9   zmust be RGBA)rI  rI  r   zMismatched typeszmust be C-contiguous)	functoolspartialrn  _imageresampler   r+  r,  r  r&   r?   rB   r  )rI  s    r2   test__resample_valid_outputrJ    s     !4

KKKH	z)@	A	A	A ) )&!!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	8	8	8 ; ;)$$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 7 7 7sZ   A88A<?A<1CC"C1D>>EE$<F,,F03F06HHH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  rG  r;   r  )r%   r  r   r+  r,  ru  	get_shaper&   r'   r  r(   r  get_sizer  s      r2   test_axesimage_get_shaperN    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 )Nr9   r]   r   r=  r8   r7   )r   r  )r%   rg   rm  r&   r'   r(   r*   r  
get_aspectr   r   r   r  s     r2   .test_non_transdata_image_does_not_touch_aspectrQ    s    		!	!	#	#B	1		f	%	%BIIbBLI)))==??f$$$$IIbHJJ,,Q//",>I???==??aIIbBLI333==??ar4   )
contextlibr   r   rF  rq   r   pathlibr   r  r  urllib.requestr  numpyr&   numpy.testingr   PILr   
matplotlibrn  r   r	   rA  r
   r   r%   r   r   matplotlib.imager   r   r   r   r   matplotlib.testing.decoratorsr   r   matplotlib.transformsr   r   r   matplotlib.tickertickerr  r+  r3   rF   rX   markparametrizern   rx   r   r   r   r   r   r   r   r   r   r   r   r  r,  r
  r  r  r%  r'  r.  r2  r5  rC  rW  r[  rg  rp  r|  r  r  r  r  r  r  r  r  r  r'   r(   r  r  r  r  r	  r  r  r)  r.  r2  r7  machinerL  rN  splitr[  r_  re  rg  r  r>  rx  r|  r  r  r  r  r  r  r  r  r  r  contextr  r  r  r  r  r  r  r  r  r  r2  filterwarningsr9  rD  rJ  rN  rQ  r   r4   r2   <module>rd     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  B B BCCA A DCA* * *2) ) )4 4 4 =/t4446 6 546D+ D+ D+N %.	=),#61a.	4 g,/0r(,- 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!!##'FFFAO O O22 22O O22n  = > >GW#56699966689 9 	***& & +*9 9 76> >&> ((() ) )()*7 7 7	+ 	+ 	+         r4   