
    g                        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gd      d        Z.e,j^                  ja                  dddg       e$dgddg      d               Z1d Z2e,j^                  ja                  dg d       e#dg      d               Z3 e#dg      d        Z4 e#       d        Z5d  Z6d! Z7e,j^                  ja                  d"g d#      d$        Z8e,j^                  ja                  d%d&d'g      d(        Z9e,j^                  ja                  d"g d)      d*        Z:d+ Z;d, Z<d- Z= e$d.gd      d/        Z>ej4                  j                  d0       e#dg      d1               Z@d2 ZAe,j^                  ja                  d3d4d4gd gd4d5gd6gd7d4gd8gd9d4gd8gd:d;gd<gd=d4gdgd4d=gdgg      d>        ZBe,j^                  ja                  d?d@dAggdBfdCdDggdEfej                  d6dFggdGfd6dHggdIfd=d=ggdJfd d ggdKfg      dL        ZD e$dMgd0N      dO        ZE e$dPgd0N      dQ        ZF e#dg      dR        ZGdS ZHdT ZI e$dUgd      dV        ZJ e$dWgdddgX      dY        ZKdZ ZL e$d[gdd0\      d]        ZM e$d^gd      d_        ZN e#dg      d`        ZO e$dagddgdd0b      dc        ZP e$ddgdd0\      de        ZQdf ZR e$dggdd0\      dh        ZSdi ZTdj ZUdk ZVdl ZWdm ZXdn ZYe,j^                  ja                  doe  ej                  dp       ej                  dq       ej                  dr      j                  ds      fe! ej                  dp       ej                  dq       ej                  dt      j                  du      fg      dv        Z\dw Z]dx Z^ e$dygd      dz        Z_ e$d{gd      d|        Z`d} Zad~ Zb e$dgdd      d        Zc e$dgd      d        Zdd Ze e$dgd      d        Zf e$dg ej                         dk(  rd nddd0      d        Zhd Zie,j^                  ja                  ddj                         D  cg c]  }  ej                  |        c}       d        Zl e$dgdd0\      d        Zm e$dgdd0\      d        Zn e$dgdd0\      d        Zoe,j^                  ja                  dej                  ej                  d d g      d        Zrd Zsd Ztd Zud Zve,j^                  ja                  dddg      e,j^                  ja                  dddg      d               Zwd Zxd Zyd Zzd Z{ e#       d        Z|d Z}ej4                  j                  d0      d        Z~ e$dgddgdd0b      d        Z G d dej                         Zd Zd Z e#dg      d        Ze,j^                  ja                  dd=d6g       e#dg      d               Z e#       d        Z e$dgd0N      d        Z e$dgd0N      d        Z e$dgd0dd      d        Z e#d      d        Z e#d      d        Zd Ze,j^                  j                  dë      e,j^                  ja                  d%d&d'g      e,j^                  ja                  dg dŢg dƢg       e#d      dǄ                             Z e#dg      dȄ        ZdɄ Zdʄ Zd˄ Z e$dgd0ddͬ      d΄        Z e$dgd0ddͬ      dЄ        Z e$dgd0dҫ      dӄ        Ze,j^                  ja                  ddԫ      e,j^                  ja                  dd֫      dׄ               Zyc c} w )    )	ExitStackcopyN)Path)assert_array_equal)Image)colorsimagepatchespyplotstylercParams)	AxesImage	BboxImageFigureImageNonUniformImagePcolorImage)check_figures_equalimage_comparison)BboxAffine2DTransformedBboxzinterp_alpha.pngT)remove_textc                  X   t        j                  dd      \  } \  }}t        j                  d      }t        j                  d      |d<   t        j
                  t        j                  dt        j                              |d<   |j                  |d	       |j                  |d
	       y)z:Test the interpolation of the alpha channel on RGBA images      )   r      r   r   ).r   dtype.   noneinterpolationbilinearN)pltsubplotsnpzerosonestriluint8imshow)figaxlaxrimgs       X/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_image.pytest_alpha_interpr5      s|     ll1a(OC#s
((9
C''&/CK''"''&9:CKJJs&J)JJs*J-    interp_nearest_vs_nonepdfsvg)
extensionsr   c                  D   dt         d<   t        j                  g dg dgg dg dggt        j                        } t	        j
                  dd	      \  }\  }}|j                  | d
       |j                  d       |j                  | d       |j                  d       y)z5Test the effect of "nearest" and "none" interpolationr#   savefig.dpi)          )z   g      )      r   )rD   c   G   r    r   r   r$   r%   zinterpolation nonenearestzinterpolation nearestN)r   r*   arrayr.   r(   r)   r/   	set_title)Xr0   ax1ax2s       r4   test_interp_nearest_vs_nonerM   (   s      H]
>?3 -029;	CAll1a(OC#sJJqJ'MM&'JJq	J*MM)*r6   suppressCompositeFfigimagepng)r:   c                 P   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   }|j                  |d	d	d
       |j                  |d d dd d f   d	dd
       |j                  |d d d d df   dd	d
       |j                  |d d dd d df   ddd
       y )Nr   r   d   figsizedpig      Y@r      2   r   r   lower)xoyoorigin)r(   figurerN   r*   ix_arangesinrO   )rN   r0   xyzcr3   s          r4   test_figimagerf   :   s    **V
-C-C66"))C.5("))C.3*>?DAq
q!tad{QqS !A
r!Q$wAqD !A
ac'CLLqL1LLTrT1W!GL<LLQ"W#!GL<LLTrT4R4ZSSLAr6   c                      t        j                         \  } }|j                  g d       t        j                         }| j                  |       |j                  d       t        j                  |       y )N)r   r   r#   r   )r(   r)   plotioBytesIOsavefigseekimread)r0   axbuffers      r4   test_image_python_iorp   J   sK    llnGCGGIZZ\FKK
KKNJJvr6   z!img_size, fig_size, interpolation))r   r   hanning)r   r   rG   )r   
   rG   )r#   333333@rq   )r#   g333333"@rG   c                    t         j                  j                  d       t        j                  d   }t         j                  j                  t        ||z        t        ||z              }| |fD ]  }|j                  ||        | j                         }|j                  g d       |j                  |d       |j                         }|j                  g d       |j                  ||       y )N!N,r<   r   r   r   r   autor%   )r*   randomseedr(   r   randintset_size_inchesr)   set_positionr/   )	fig_testfig_refimg_sizefig_sizer&   rV   Ar0   rn   s	            r4   test_imshow_antialiasedr   S   s     IINN8
,,}
%C
		s3>*Ch,?@A'" 0Hh/0				BOOL!IIavI&				BOOL!IIa}I-r6   c                 2   t         j                  j                  d       t        j                  d   }t         j                  j                  t        |dz        t        |dz              }| |fD ]  }|j                  dd        | j                         }|j                  |d       |j                  ddg       |j                  ddg       |j                         }|j                  |d	       |j                  ddg       |j                  ddg       y )
Nru   r<   r#   rs   rw   r%   rr   rW   rG   )r*   rx   ry   r(   r   rz   r{   r|   r)   r/   set_xlimset_ylim)r~   r   rV   r   r0   rn   s         r4   test_imshow_zoomr   k   s     IINN8
,,}
%C
		s37|Sq\2A'" &C%&				BIIavI&KKRKKR				BIIayI)KKRKKRr6   c                    t        j                  d       t        t              j                  dz  }t        t              j                  dz  }| j                  d      }|d   j                  t        j                  |             |d   j                  t        j                  |             |j                  d      }|d   j                  t        j                  |             |d   j                  t        j                  |             y )Ndefault%baseline_images/pngsuite/basn3p04.png%baseline_images/test_image/uint16.tifr   r   r   )r   user   __file__parentr)   r/   r   openr(   rm   )r~   r   png_path	tiff_pathaxss        r4   test_imshow_pilr   }   s    	IIiH~$$'NNHX%%(OOI


A
CFMM%**X&'FMM%**Y'(


1
CFMM#**X&'FMM#**Y'(r6   c                  "   t        j                  t        j                  j	                  t        j                  j                  t              ddd            } | j                  t        j                  k(  sJ t        j                  |       dk(  sJ y )Nbaseline_images
test_imagez
uint16.tif )r(   rm   ospathjoindirnamer   r!   r*   uint16sumr3   s    r4   test_imread_pil_uint16r      sc    
**RWW\\"''//(";&lD EC99		!!!66#;)###r6   c                      t        j                  t        t              j                  dz        } | j
                  t        j                  k(  sJ t        j                  |       dk(  sJ y )Nr   r   )	r(   rm   r   r   r   r!   r*   r   r   r   s    r4   test_imread_fspathr      sP    
**X GGIC99		!!!66#;)###r6   fmt)rP   jpgjpegtiffc                 R   | dv}t         j                  j                  d       t         j                  j                  dd      }t	        j
                         }t        j                  ||| d       t	        j
                         }t        j                  ||| d       |j                  d       t        j                  ||       }|j                  d       t        j                  ||       }|j                  ddd	|z   fk(  sJ |j                  ddd	|z   fk(  sJ t        ||       y )
N)r   r   r   i@  r   )formatrV   rS   r   r   r#   )r*   rx   ry   rz   ri   rj   r(   imsaverl   rm   shaper   )r   	has_alphadata	buff_dpi1buff_dpi100arr_dpi1
arr_dpi100s          r4   test_imsaver      s    ?*I IINN1 99>>$"D

IJJy$s2**,KJJ{D#6NN1zz)C0HQK4J>>dAq9}5555aY7777x,r6   r\   upperrY   c                     t        j                         }t        j                  dd      }t	        j
                  ||d|        y )N)rr   rr   r   r.   r    rP   )arrr   r\   )ri   rj   r*   r+   mimager   )r\   bufresults      r4   test_imsave_rgba_originr      s1     **,CXXk1F
MM#6%?r6   )rP   r8   psepsr9   c                     t        j                  t        t        j                        t        j                  ddgg      |        y )Nr   r   r   )r(   r   r   r   devnullr*   rH   )r   s    r4   test_imsave_fspathr      s*    JJtBJJAq6(!3C@r6   c                     t         j                  j                  d       dD ]  } t         j                  j                  ddd      }t	        j
                         }t        j                  ||| d       |j                  d       t        j                  |      }d|z  j                  d	      }| d
k(  r|d d d   }d|z  j                  d	      }t        ||        y )Nr   )rY   r      r   rP   )r\   r   r   rD   r.   rY   r]   )r*   rx   ry   rz   ri   rj   r(   r   rl   rm   astyper   )r\   r   buffarr_bufs       r4   test_imsave_color_alphar      s     IINN1$ *yy~~b"a(zz|

4fU;		!**T"
 D  )W":Dw;&&w/4)!*r6   c                      ddl m}  t        j                         } |        }|j	                  dd       t        j                  |ddgddggdd	|i
       t        j                  |      }|j                  d   dk(  sJ y )Nr   )PngInfoSoftwaretestr   r   r#   rP   pnginfor   
pil_kwargs)
PIL.PngImagePluginr   ri   rj   add_textr(   r   r   r   info)r   r   r   ims       r4   test_imsave_pil_kwargs_pngr      sr    *
**,CiGZ(JJsaVaV$G(<>	CB77:&(((r6   c                  \   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                  |      }|j                  j                         D ci c]  \  }}| |   j                  | }}}|d
   dk(  sJ y c c}}w )Nr   )TAGS_V2descriptionz
test imager   r   r#   r   r   ImageDescription)PIL.TiffTagsr   ri   rj   r(   r   lenr   r   tag_v2itemsname)TAGSr   r   r   kvtagss          r4   test_imsave_pil_kwargs_tiffr      s    ,
**,C.JJJsaVaV$V
Kz?a	CB(*		(9:1DGLL!O:D:"#|333 ;s    B(image_alphac                  4   t         j                  j                  d       t         j                  j                  dd      } t	        j
                  dd      \  }\  }}}|j                  | dd       |j                  | dd       |j                  | dd	       y )
Nr      r   r#         ?r$   )alphar&         ?rG   )r*   rx   ry   rz   r(   r)   r/   )Zr0   rK   rL   ax3s        r4   test_image_alphar      sw    IINN1
		q!A<<1-C#sCJJq6J2JJq6J2JJq9J5r6   mpl20c                 p   t         j                  j                  d       t         j                  j                  ddd      }t        j                  |dz        }| j                  dd      \  \  }}\  }}|j                  |d       |j                  |d       |j                  |d       |j                  |d       t        j                  |t        j                  d	      fd
      }t        j                  |t        j                  d	dt         j                        fd
      }	|j                  dd      \  \  }}\  }}d|d d d d df<   |j                  |       d|d d d d df<   |j                  |       d|	d d d d df<   |j                  |	       d|	d d d d df<   |j                  |	       y )Nru   r   r#   rD   r   r   r         ?)r   r   r   )axisrC      )
r*   rx   ry   rz   r.   r)   r/   concatenater,   full)
r~   r   rgbfrgbuax0rK   rL   r   rgbafrgbaus
             r4   test_imshow_alphar     sj    IINN899>>!Q"D88D3JD'00A6Zc3#sJJt3JJJt4J JJt3JJJt4J NND"'')"45A>ENND"'')S"(("CD1ME&//15Zc3#sE!Q'NJJuE!Q'NJJuE!Q'NJJuE!Q'NJJur6   c                     ddl m}  t        j                         \  }}|j	                  t        j                  d      j                  dd      d      }d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      d	k(  sJ d
\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      J |j                          |j	                  t        j                  d      j                  dd      d      }d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      d	k(  sJ t        j                         \  }}|j	                  t        j                  d      j                  dd      g d      }d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      dk(  sJ d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      J d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      J t               j                  d      j                  d      }	|j	                  t        j                  d      j                  dd      |	|j                  z         }d\  }}|j                  j                  ||g      \  }} | d|j                  ||      }|j                  |      d	k(  sJ y )Nr   
MouseEventrS   rr   r   )r\   r   r   motion_notify_event,   )g333333$@r   rY   )r   r   r   r   extent)      ?r   7   )r   r   ){Gz?g{Gzr   r   	transform)r#   rr   )matplotlib.backend_basesr   r(   r)   r/   r*   r`   reshape	transDatar  canvasget_cursor_dataclearr   scalerotate)
r   r0   rn   r   rb   rc   xdispydispeventtranss
             r4   test_cursor_datar    s<   3llnGC	299S>))"b1'	BBDAq<<))1a&1LE5,cjj%GEe$*** DAq<<))1a&1LE5,cjj%GEe$,,, HHJ	299S>))"b1'	BBDAq<<))1a&1LE5,cjj%GEe$***llnGC	299S>))"b1:J	KBDAq<<))1a&1LE5,cjj%GEe$*** DAq<<))1a&1LE5,cjj%GEe$,,,DAq<<))1a&1LE5,cjj%GEe$,,, JQ&&s+E	299S>))"b1"R\\1 
 
3BDAq<<))1a&1LE5,cjj%GEe$***r6   zxy, datar         ?r   g      @r   g      !@g      #@g      @U   r]   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        ||j                         |j                         |j                         |j                         f      }|j                  |||       |j                  |       |j                  |j                         dz
  |j                                |j                  |j                         dz
  |j                                |j                  j                  |       \  }	}
 |d|j                   |	|
      }|j#                  |      |k(  sJ |j#                  |      |f       y )Nr   r   )r   r   r   	   r   )r   r   r   r#   r   r   r   r   )r  r   r*   rH   newaxisr(   r)   r   minmaxset_data	add_imager   r   r  r  r  r  )xyr   r   rb   rc   rd   r0   rn   r   r
  r  r  s               r4   test_cursor_data_nonuniformr  c  sC    4 	!"A
!A	"**a-!a2::.11AllnGC	QUUWaeegquuw$H	IBKK1aLLKK!QUUW%KK!QUUW%<<))"-LE5,cjj%GEe$,Or/A/A%/H$.OO,r6   z
data, texti'  i'  z[10001.000]grh|?g/$?z[0.123]r   []g     ?z[1.0000000000000000]z[-1.0]z[0.00]c                    ddl m} t        j                         \  }}|j	                  |       }|j
                  j                  ddg      \  }} |d|j                  ||      }|j                  |j                  |            |k(  sJ y )Nr   r   r   )
r  r   r(   r)   r/   r  r  r  format_cursor_datar  )	r   textr   r0   rn   r   r
  r  r  s	            r4   test_format_cursor_datar    sx     4llnGC	4B<<))1a&1LE5,cjj%GE  !3!3E!:;tCCCr6   
image_clip)r   c                      ddgddgg} t        j                         \  }}|j                  |       }t        j                  dd|j
                        }|j                  |       y )Nr   r   r#   r   r   r   )radiusr  )r(   r)   r/   r   Circler  set_clip_path)dr0   rn   r   patchs        r4   test_image_clipr'    sT    
Q!QAllnGC	1BNN6!r||DEUr6   image_cliprectc                      t        j                         \  } }ddgddgg}|j                  |d      }t        j                  ddd|j
                  j                        }|j                  |       y )	Nr   r   r#   r   r   r   r   r   r   r   r   )r  widthheightr  )r(   r)   r/   r   	Rectangleaxesr  r$  )r0   rn   r%  r   rects        r4   test_image_cliprectr1    sg    llnGC
Q!QA	1\	*B10A0ACDTr6   c                    t        j                  d      j                  d      }|j                         }|j	                  |d d d d df   dd       |j                  dd       |j                  dd       | j                         }|j	                  |dd       |j                  dd       |j                  dd       y )NrS   )rr   rr   r   r   r'   )r   r   r   r   )r&   r   r#   )r*   r`   r  r)   r/   r   r   )r~   r   r   rn   s       r4   test_imshow_10_10_1r3    s     ))C.
 
 
-C				BIIc!Q'l*\IJKK1KK1				BIIcLIAKK1KK1r6   c                      t        j                         \  } }t        j                  d      j	                  d      }t        j                  t              5  |j                  |       d d d        y # 1 sw Y   y xY w)N   )rr   rr   r   	r(   r)   r*   r`   r  pytestraises	TypeErrorr/   r0   rn   r   s      r4   test_imshow_10_10_2r;    U    llnGC
))C.
 
 
-C	y	! 
		#     A00A9c                      t        j                         \  } }t        j                  d      j	                  d      }t        j                  t              5  |j                  |       d d d        y # 1 sw Y   y xY w)Ni  )rr   rr   r   r6  r:  s      r4   test_imshow_10_10_5r?    r<  r=  no_interpolation_originc                     t        j                  d      \  } }|d   j                  t        j                  d      j                  d      dd       |d   j                  t        j                  d      j                  d      d	       y )
Nr   r   rS   )r   rX   rY   r$   )r\   r&   r   r%   )r(   r)   r/   r*   r`   r  )r0   r   s     r4   test_no_interpolation_originrB    si    ||AHCFMM"))C.((1' &  (FMM"))C.((1MHr6   image_shift)r   r:   c            
      @   t        dd      D  cg c]%  } t        dd      D cg c]  }d|z  d| z  z    c}' }} }d}d}t        j                         \  }}|j                  |t	        j
                         d||ddf       |j                  d       y c c}w c c}} w )Nr   rS   gMk&Agk&Ar$   )normr&   r   rw   )ranger(   r)   r/   r	   LogNorm
set_aspect)rc   rb   imgDatatMintMaxr0   rn   s          r4   test_image_shiftrL    s    ?DQ}M!uQ}5!AA5MGMDDllnGCIIgFNN,FD!S)  +MM& 6Ms   BBBBc                     t        j                  ddg      } | j                  g dd      }t        j                  t        j
                  d      d      j                  dd	      }|j                  |d
g ddd      }dx}}|j                  | |g       |j                  | |g       |j                  g        |j                  g        t        j                         }| j                  |d       |j                  d       t        j                   |      }t#        |d d df         \  }}}	}
t#        |d d df         \  }}}	}
|dk7  sJ d       y )Nr   rU   rv   F)frameon      rW   r  r   rr   rS  rr   r$   gray)r\   r   r&   cmapr   )r   r   r   )	facecolorr   r]   rS   z.Expected a non-green edge - but sadly, it was.)r(   r^   add_axesr*   tiler`   r  r/   r   r   
set_xticks
set_yticksri   rj   rk   rl   rm   r   )r0   rn   r   r   rb   rc   r   rgbas              r4   test_image_edgesr_    s(   
**aV
$C	lE	2B77299R="%--b!4D	40B!'f 
 
6B IAKK!QKK!QMM"MM"
**,CKKyK)HHQK	CBR1XJAq!QR2YJAq!Q8EEE8r6   image_composite_background)r   r   c                     t        j                         \  } }t        j                  d      j	                  dd      }|j                  |g d       |j                  |g d       |j                  d       |j                  ddg       y )	NrP  r   r#   )r   r   rQ  r   r   )r   r   rQ  r   )r   r   r   r   r   )r(   r)   r*   r`   r  r/   set_facecolorr   r:  s      r4   test_image_composite_backgroundrc    sk     llnGC
))B-

1
%CIIc-I(IIc-I(^$KKBr6   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<   |j                  |g d
d       |j                  |g dd       |j                  |g d       |j                  |g d       |j                  |g dd       |j                  |g dd       |j                  d       |j                  ddg       |j                  ddg       y)z{
    Tests that the alpha value is recognized and correctly applied in the
    process of compositing images together.
    )      r   r   Nr   皙?皙?r]   r#   )rg  rf  r   )r   r   r   r   333333?)r   r   )r   r#   r   r   333333?)r#   r   r   r   r   )r   r   r   r   )r   r   r   r#   )r   r   r#   r   )r   r   r   r   r   )r(   r)   r*   r+   r   r`   r  r/   rb  r   r   )r0   rn   r   arr2s       r4   test_image_composite_alpharm    s    llnGC
((;
CC1aL>>	1c3	1a!5dd!;<>C1aL88K DDAqMDAqMNN	1c3	1a!5dd!;<>>?mMDAqMIIc,cI2IIc,cI2IIc,I'IId<I(IId<sI3IId<sI3^$KKAKKAr6   c                    t        j                  d      j                  d      }| |fD ]  }|j                         }|j	                  |t
        j                  j                  g d      |j                  f       |j	                  |t
        j                  j                  g d      |j                  f        d|_	        y )Nr  r#   r#   )r!  r   r   )r   r   )	clip_path)r+  r   r   )r   r   T)
r*   r`   r  add_subplotr/   mplr   r   r  rN   )r~   r   tr0   rn   s        r4   #test_clip_path_disables_compositingrv     s    
		!V$A'" /__
		!.F G " .	 	/
		!.F G " .	 	/	/ !%Gr6   rasterize_10dpi)r:   r   r   c                     t        j                  ddgddgg      } t        j                  ddd      \  }}|d   j	                  |        |d   j                  ddgddgdd	
       |d   j                  dd       |d   j                  ddgddgd       |d   j                  dd       |D ]B  }|j                  g        |j                  g        |j                  d d  j                  d       D dt        d<   y )Nr   r   r#   r   )r#   r   rN  r   g      4@T)	linewidth
rasterizedrp  )r]   r   xlimylim)ry  Frr   r<   )r*   asarrayr(   r)   r/   rh   setrY  rZ  spinesset_visibler   )r3   r0   r   rn   s       r4   test_rasterize_dpir  ,  s     **q!fq!f%
&C||Aq&1HCFMM#FKKAA#$K?FJJFJ)FKKAA#K.FJJFJ)  (
b
b
		!  '(
 !H]r6   bbox_image_invertedc            	         t        j                  d      j                  d      } t        j                         \  }}t        t        t        ddgddgg      |j                        d      }|j                  |        |j                  d       |j                  dd       |j                  dd       |j                  |       t        j                  d      } t        t        t        dd	gd
dgg      |j                         j                         d      }|j                  |        |j                  d       |j                  |       y )NrS   rr   rr   r   rG   r%   Frr   ri  皙?rj  r   )r*   r`   r  r(   r)   r   r   r   r  r  set_clip_onr   r   
add_artistidentity
get_figuretransFigure)r
   r0   rn   bbox_ims       r4   test_bbox_image_invertedr  K  s    IIcN""8,EllnGCsCj1a&12BLLA!G UKK3KK3MM'KKOEsCj3+-F(G(*(C(CE&/1G UMM'r6   c                  |   t        j                  g dg dg dg dg      } t        j                  dd      \  }}|j	                  g d       |j                  d	d
       |j                  d	d
       |j                  | g dd      }|j                  j                          |j                  j                  }|j                  |      }t        |j                         ddgddgg       t        j                  dd      \  }}|j	                  g d       |j                  d
d       |j                  d	d
       |j                  | g dd|j                        }|j                  j                          |j                  j                  }|j                  |      }t        |j                         ddgddgg       y )N)r   r   r   r   )ri  g?r   皙?)rk  rj          r  )ffffff??r  rk  r  rS   rT   rv   r   r   )r  r  r  r  rG   )r   r&   i  r5  i  i  r   )r   r&   r  )r*   rH   r(   r)   r}   r   r   r/   r  drawrendererget_window_extentr   
get_points	transAxes)r   r0   rn   im_objr  im_bboxs         r4   $test_get_window_extent_for_AxisImager  d  sx   
 
*,A')=? 
@Bll85GCOOL!KK1KK1YY
'y  BF JJOOzz""H&&x0Gw))+sCj3*-EFll85GCOOL!KK1KK1YY
'y,,   F JJOOzz""H&&x0Gw))+sCj3*-EFr6   zzoom_and_clip_upper_origin.pngc                      t        j                  d      } | j                  d      } t        j                         \  }}|j                  |        |j                  dd       |j                  dd       y )NrS   r         @      )r*   r`   r  r(   r)   r/   r   r   )r
   r0   rn   s      r4   test_zoom_and_clip_upper_originr    sV     IIcNEMM(#EllnGCIIeKKTKKcr6   c                  d    t        j                         } t        |       }|j                  d       y )NBlues)r(   gcar   set_cmaprn   r   s     r4   test_nonuniformimage_setcmapr    s#    	B		BKKr6   c                      t        j                         } t        |       }|j                  t        j                                y N)r(   r  r   set_norm	Normalizer  s     r4   test_nonuniformimage_setnormr    s)    	B		BKK r6   c                  N   t        j                  dd      } t        d      D ]#  }t        j                  ddd      dz  | |d d f<   % t	        j
                  dd      }|j                  | j                                t        j                         \  }}|j                  |       y )	Nr  r.   r    rr   r  r   rD   L)r*   r,   rF  linspacer   newputdataflattenr(   r)   r/   )imdir   r0   rn   s        r4   test_jpeg_2dr    s    
''('
*C2Y 4KKS"-3AqD	4	3	!BJJs{{}llnGCIIbMr6   c                     t        j                  dd       t        j                  dt              } t        j
                  ddd      | d<   t        j                  |        t        j                         }t        j                  |d	d
d       |j                  d       t        j                  |      }t        |j                  d            }d|cxk  rdk  sJ  J |j                  d      }|dk(  sJ y )Nr+  ,  rT   )r  r  r   r    r  r   r"   redr   )rV  r   rV   r            r!  )   r   r   )r(   r^   r*   r+   floatr  rO   ri   rj   rk   rl   r   r   r   	getcolorsgetpixel)r   r   r
   
num_colorscorner_pixels        r4   test_jpeg_alphar    s    JJv3' 
-u	-BS#s+BvJLL::<DKKe=IIaLJJtE U__S)*J*######>>&)L;&&&r6   c                      t        j                         } t        |       }t        j                  dt
              j                  d      }|j                  |       d|d<   |j                  d   dk(  sJ d       y NrP  r    r   r#   #@r!  r   value changed)	r(   r  r   r*   r`   r  r  r  _Arn   r   rd   s      r4   test_axesimage_setdatar    s`    	B	2B
		"E"**62AKKNAdG55;!,_,r6   c                      t        j                         } t        |       }t        j                  dt
              j                  d      }|j                  |       d|d<   |j                  d   dk(  sJ d       y r  )	r(   gcfr   r*   r`   r  r  r  r  )r0   r   rd   s      r4   test_figureimage_setdatar    sa    
'')C	S	B
		"E"**62AKKNAdG55;!,_,r6   zimage_cls,x,y,a      @      @g      (@r  g      @)r#   r   c                 p   t        j                         } | |      }|j                  |||       dx|d<   x|d<   |d<   |j                  d   |j                  d   cxk(  r|j
                  d   cxk(  rdk(  sJ d        J d       |j                  |||j                  g |j                  d             y )Nr  r   r!  r  r]   )r(   r  r  r  _Ax_Ayr  r   )	image_clsrb   rc   r^  rn   r   s         r4   test_setdata_xyar    s     
B	2BKK1aAaD1Q4!D'55;"&&)5rvvay5A5FF5FF5KK1aii!''2/0r6   c                     ddl m}  t        j                  j	                  d       t        j                  j                  dd      }t        j                  dd      \  }}|d   j                  |      }|d   j                  |      }t        j                  ||d          t        j                  ||d          t        j                         }t        j                  |d       t        j                  |j                               }| j                  |      }d }|j                  d	      D ]  }	||	d
   }|	d
   |k7  sJ  y )Nr   )ElementTreerr   r   r   )rn   r9   r   r
   r,  )	xml.etreer  r*   rx   ry   rz   r(   r)   
pcolormeshcolorbarri   rj   rk   getvalueparseiter)
r  r   r0   rn   p1p2r   treer,  r
   s
             r4   test_minimized_rasterizedr    s    &IINN199>>"b!Dll1a GC	A		$	B	A		$	BLL1LL1::<DKKU#::dmmo&DT"DE7# ='NEW~&ur6   c                     t        t              j                  dz  } dt        j                  dk(  rdndz   | j                         j                         z   }t        j                  t        d      5  t        j                  |       d d d        t        j                  j                  |      5 }t        j                  |       d d d        y # 1 sw Y   GxY w# 1 sw Y   y xY w)Nr   zfile:win32z/// zPlease open the URLmatch)r   r   r   sysplatformresolveas_posixr7  r8  
ValueErrorr(   rm   urllibrequesturlopen)r   urlfiles      r4   test_load_from_urlr    s    >  #JJD||w.eB8\\^$$&'C 
z)>	? 

3				$ 

4   s   1C.CCC"log_scale_imagec                      t        j                  d      } d| d d d<   t        j                         \  }}|j	                  | g ddddd       |j                  d	
       y )Nr  r   r   )r   rS   r   rS   viridisr]   rw   )r   rU  vmaxvminaspectlog)yscale)r*   r+   r(   r)   r/   r  )r   r0   rn   s      r4   test_log_scale_imager    sY    
AAccFllnGCIIa(yqr  FF%Fr6   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      \  }}	|	j                  |dd	d
g dd      }
t               j                  d      |	j                  z   }|
j                  |       |
j                         \  }}}}|	j                  |||||g|||||gdd|       |	j                  dd       |	j                  dd       y )Nr         r  r   r   r  r   r$   r  rY   )r   r   T)r&   rU  r\   r   clip_on   zr--r#   )lwr  r   r   r   )r*   r`   meshgridexppir(   r)   r/   r   
rotate_degr  set_transform
get_extentrh   r   r   )deltarb   rc   rJ   YZ1Z2r   r0   rK   im1trans_data2x1x2y1y2s                   r4   test_rotate_imager    s}   EIIdC''A;;q!DAq	!Q$A+"	#q255y	1B
&&QUcMA%!a%3(::;a?
@ruu9s?S "B
RA||Aq!HC
**Qf9#*D  :C *''+cmm;Kk" ^^%NBBHHb"b"b!BBB#71"  $ LLALLAr6   c                     t        j                         } t        j                  d      }t	        j
                  | |d       | j                  d       t	        j                  |       }|j                  d d |j                  k(  sJ y )N)i  iA  rP   r   r   r   )	ri   rj   r*   r+   r(   r   rl   rm   r   )r   r   r3   s      r4   test_image_preserve_sizer  7  s`    ::<D	*	BJJtR&IIaL
**T
C99Ra=BHH$$$r6   c                  .   d} t        j                  | t              }t        j                  | | fd      }|j                  d      }|j                          |j                  |ddd       t        j                         }|j                  |d	
       |j                  d       t        j                  |      }|j                  dk(  sJ t        t        j                  |d d d d df   t               t        j                  | t               d d d          y )N   F)rU   rO  )r  r  r   r   rG   rY   rw   )r&   r\   r  r   )rV   r   )r  r  r   r]   )r*   r  r  r(   r^   rW  set_axis_offr/   ri   rj   rk   rl   rm   r   r   r~  bool)nr   r0   rn   r   r3   s         r4   test_image_preserve_size2r  C  s    	A;;q% D
**aVU
3C	*	+BOOIId)GFIK::<DKK!KIIaL
**T
C99	!!!rzz#aAg,5{{1d+DbD13r6   zmask_image_over_under.pngr   )r   tolc            
         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                  j                  d	d
d      }t         j                  j                  |dkD  |      }	t        j                  dd      \  }
\  }}|j                  |	d|t        j                  ddd      dg d      }|j                  d       |
j!                  |dd|d       |j                  |	d|t        j"                  g ddd      dg d      }|j                  d       |
j!                  |ddd|d        y )!Ng?r  r  r   r   r  r   rr   r[  r\  r]  overunderbad333333?r'   g      r   F)r  r  cliprY   )r  r#   r  r#   )r&   rU  rE  r\   r   zGreen=low, Red=high, Blue=badboth
horizontal)extendorientationrn   r  rG   )r]   r  gɿr   r  r   r   r  )ncolorsr  zWith BoundaryNormproportional)r"  spacingr#  rn   r  )r*   r`   r  r   r  r(   cmrT  with_extremesmamasked_wherer)   r/   r	   r  rI   r  BoundaryNorm)r  rb   rc   rJ   r  r  r  r   paletteZmr0   rK   rL   r   s                 r4   test_mask_image_over_underr.  W  s    EIIdC''A;;q!DAq	!Q$A+"	#q255y	1B
&&QUcMA%!a%3(::;a?
@ruu9s?S "B
BGAffkk''S'EG			AGQ	'Bll1a(OC#s	Bj ))t#EJ"> 
 
;B MM12LLF  $ 
Bi ,,-M58uF">	 
 
;B
 MM%&LLFN)c"  >r6   
mask_imagec                     t        j                  dd      \  } \  }}t        j                  d      }t        j                  |ddddf<   |j                  |d       t        j                  dt              }d|ddddf<   t        j                  j                  t        j                  dt        j                        |      }|j                  |d       y )Nr   r   r   rG   r%   r    T)r(   r)   r*   r,   nanr/   r+   r  r)  masked_arrayr   )r0   rK   rL   r   s       r4   test_mask_imager3  w  s     ll1a(OC#s
A&&Aac1Q3hKJJq	J*
t$AAac1Q3hK
2776;Q?AJJq	J*r6   c                      t        j                  dt         j                        } t        j                         \  }}|j                  |        |j                  j                          y )NrR   )r*   r   r1  r(   r)   r/   r  	draw_idle)r   r0   rn   s      r4   test_mask_image_allr6    s@    776266"DllnGCIIdOJJr6   zimshow_endianess.pngc                  t   t        j                  d      } t        j                  | |       \  }}t        j                  |dz
  |dz
        }t	        j
                  dd      \  }\  }}t        ddd      } |j                  |j                  d	      fi |  |j                  |j                  d
      fi | y )Nrr   r   r   r   rY   rG   r  )r\   r&   rU  z<f8z>f8)	r*   r`   r  hypotr(   r)   dictr/   r   )rb   rJ   r  r   r0   rK   rL   kwargss           r4   test_imshow_endianessr;    s    
		"A;;q!DAq
QAAll1a(OC#s		JFCJJqxx)&)CJJqxx)&)r6   imshow_masked_interpolationx86_64r   )r  r   r   c                     t         j                  d   j                  ddd      } d}t        j                  d||z  dz
  	      }t        j                  ||z  t        
      j                  ||      }d|d<   d|d<   t
        j                  |d<   t        j                  |      j                  d      }d|d<   t
        j                  j                  ||      }t        j                  dd      \  }}t!        t"        j$                        }|j'                  d       |j'                  d       t)        ||j+                               D ]<  \  }}	|	j-                  |       |	j/                  ||| |       |	j1                  d       > y )Nr  r[  r]  r   r  rW   r   r   r  r  r    r]   r   g     j@)rQ  r   )rQ  rQ  r  T)r   rQ  r#   r   rw   antialiased)rE  rU  r&   off)rt  	colormapsr(  r	   r  r*   r`   r  r  inf
zeros_liker   r)  r2  r(   r)   sortedr   	_interpd_removezipravelrI   r/   r   )
rU  Nr  r   maskr0   ax_gridinterpsinterprn   s
             r4    test_imshow_masked_interpolationrO    sF   
 ==#11s#31OD
Aaac!e,A99QqS&..q!4DDJ DK 66DL==%%f-DDK55dD)D<<1%LCV%%&GNN6NN=!'7==?3 

V
		$QT	@
r6   c                  V    t        j                  ddgdt        j                  gg       y )Nr   r   r#   )r(   r/   r*   r1   r6   r4   test_imshow_no_warn_invalidrR    s    JJABFF$%r6   r!   zu2 u4 i2 i4 i8 f4 f8c                 D   t        j                  d|       j                  d      }| j                  dk7  r|dz  }|dk  }|dkD  }| j                  dk(  r|dz  }t	        j
                         \  }}|j                  |      j                         }||   dk(  j                         sJ | j                  dk(  r4||   d	k(  j                         sJ |j                  j                  dk(  sJ y ||   dk(  j                         sJ |j                  t         j                  k(  sJ y )
Nr  r    )rr   rr   r#   urr   r   rD   fr   )r*   r`   r  kindr(   r)   r/   	get_arrayallr!   r.   )r!   r   too_lowtoo_high_rn   outs          r4   $test_imshow_clips_rgb_to_valid_ranger]    s	    ))Cu
%
-
-k
:CzzSr	AgGSyHzzSCiLLNEAr
))C.
"
"
$CLA""$$$zzSH"'')))yy~~$$$H$))+++yyBHH$$$r6   zimshow_flatfield.pngc                      t        j                         \  } }|j                  t        j                  d      d      }|j                  dd       y )Nr   rG   r%   r   r  )r(   r)   r/   r*   r,   set_climr0   rn   r   s      r4   test_imshow_flatfieldra    s9    llnGC	2776?)	<BKKCr6   zimshow_bignumbers.pngc                      dt         d<   t        j                         \  } }t        j                  g dg dgt        j
                        }|j                  |      }|j                  dd       y )NrG   image.interpolation)r   r   g   mB)r#   r   r   r    r   r   )r   r(   r)   r*   rH   uint64r/   r_  r0   rn   r3   pcs       r4   test_imshow_bignumbersrg    sR    &/H"# llnGC
((L),BII
>C	3BKK1r6   zimshow_bignumbers_real.pngc                      dt         d<   t        j                         \  } }t        j                  g dg dg      }|j                  |      }|j                  dd       y )NrG   rc  )r  r   gMD)r  r   r  r   r   )r   r(   r)   r*   rH   r/   r_  re  s       r4   test_imshow_bignumbers_realri    sN     '0H"# llnGC
((O\2
3C	3BKK1r6   	make_normc                  ,    t        j                  d      S Nr   )r	   
SymLogNormrQ  r6   r4   <lambda>rn    s    Vq! r6   c                  ,    t        j                  d      S rl  )r	   	PowerNormrQ  r6   r4   rn  rn     s    Va  r6   c                    t        j                         \  }}t        j                  t        d      5  |j                  g g |              }d d d        j                  g d       |j                  j                          t        j                  t              5  |j                  |j                  j                                d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz.Attempting to set identical low and high xlimsr  rE  )r   rs  r   )r(   r)   r7  warnsUserWarningr/   
set_extentr  r  r8  RuntimeError
make_imageget_renderer)rj  r0   rn   r   s       r4   test_empty_imshowrz    s     llnGC	kL
N /YYt)+Y./ MM.!JJOO	|	$ 1
cjj--/01 1/ /1 1s   C*CCC#c                      t        j                         \  } }|j                  t        j                  dt        j
                               | j                  j                          y )Nro  r    )r(   r)   r/   r*   r+   float16r  r  r0   rn   s     r4   test_imshow_float16r~    s:    llnGCIIbhhvRZZ01JJOOr6   c                     t        j                         \  } }|j                  t        j                  dt        j
                               t        j                  t        j
                  t        j                  d      r
t               nt        j                  t              5  | j                  j                          d d d        y # 1 sw Y   y xY w)Nro  r    equiv)r(   r)   r/   r*   r+   
longdoublecan_castfloat64r   r7  rt  ru  r  r  r}  s     r4   test_imshow_float128r    sy    llnGCIIbhhvR]]34R]]BJJH)+||K( 	

  s   "CCc                      t        j                         \  } }|j                  t        j                  ddgddggt
                     y )NTFr    )r(   r)   r/   r*   rH   r  r}  s     r4   test_imshow_boolr    s5    llnGCIIbhhut}5TBCr6   c                      t        j                         \  } }|j                  t        j                  dt        j
                               | j                  j                          y )Nr  )r(   r)   r/   r*   r   r1  r  r  r}  s     r4   test_full_invalidr  "  s:    llnGCIIbggh'(JJOOr6   zfmt,counted)r   s    colorimage)r9   s   <imagezcomposite_image,count)Tr   )Fr   c                 (   t        j                  t        j                  ddd      t        j                  ddd            \  }}t        j                  |dz        }t	        j
                         \  }}|j                  dd       |j                  |g d       |j                  |d d d	   g d
       |t        j                  d<   t        j                         }	|j                  |	|        |	j                         j                  |      |k(  sJ y )Nrs  r   r   r   r   r#   r   r   r   r   r   r]   )r   r#   r   r   zimage.composite_imager   )r*   r  r`   ra   r(   r)   r   r/   r   ri   rj   rk   r  count)
r   countedcomposite_imager  rJ   r  r   r0   rn   r   s
             r4   test_compositer  )  s     ;;ryyQ*BIIb!Q,?@DAq
qAvAllnGCKK1IIaI%IIa"glI+,;CLL()
**,CKKCK <<>(E111r6   c                      t        j                         \  } }|j                  dggd       |j                          |j	                          |j                         |j                         cxk(  rdk(  sJ  J y )Nr   r  r   rp  )r(   r)   r/   relim	autoscaleget_xlimget_ylimr}  s     r4   
test_relimr  <  s\    llnGCIIseLI)HHJLLN;;=BKKM3V33333r6   c                  r   t        j                         \  } }|j                          |j                  ddgddggdddd      }|j	                  dd       | j
                  j                          t        j                  | j
                  j                               d	d d
f   dk(  j                         sJ y )Nr   rw   rR  rT  F)r  r   rU  r  rp  r{  .r#   )r(   r)   r  r/   r  r  r  r*   rH   buffer_rgbarX  r`  s      r4   test_unclippedr  D  s    llnGCOO	QFQF#F;M 
 
/BFFVF$JJOO HHSZZ++-.sBQBw71<AACCCr6   c                  6   t        j                  d      \  } }|D ]  }|j                           |d   j                  ddgddggdd      }|j	                  d        |j                  |d   j                         t        j                         }| j                  |d	       h |j                         d
hk(  sJ |d   j                  d       t        j                         }| j                  |d	       |j                         |j                         k7  sJ y )Nr   r   r   r#   rw   r  )r  r   rgbar   rD   )r]   r   )r}  )r(   r)   r  r/   r$  set_clip_boxbboxri   rj   rk   r  r  )r0   r   rn   r   
buf_before	buf_afters         r4   test_respects_bboxr  P  s    ||AHC 
	QAA'|	LBT OOCFKK JKK
6K*#Z  "#v---FJJGJ

IKK	&K) I$6$6$8888r6   c                     t        j                         \  } }|j                  t        j                  d            }t        j
                  j                  dgdg      }|j                  |      dk(  sJ t        j
                  j                  dgdg      }|j                  |      dk(  sJ t        j                  }|j                  |      dk(  sJ y )	Nr   r   TrK  r  Fz[0]z[nan])	r(   r)   r/   r*   r+   r)  r2  r  r1  )r0   rn   r   r   s       r4   test_image_cursor_formattingr  b  s    llnGC	288F#	$B55qc/D  &$...55qc0D  &%///66D  &'111r6   c                    t        j                  dd      }t        j                  ||      \  }}t        j                  d|dz
  dz  z  |dz
  z         }||j	                         z  }t
        j                  d   }| j                         }|j                  |||d	       |j                         } | t        j                         |            }	||	d
<   |j                  |	d       y)zPer-pixel alpha channel test.r   r   r  r   r   g[(\?r  rG   )r   rU  r&   ).r]   r%   N)r*   r  r  r   r  rt  rB  rs  r/   r	   r  )
r~   r   rb   xxyyzzr   rU  rn   r  s
             r4   test_image_array_alphar  q  s     	AqA[[AFB	SQ'2=9	:BME==#D				BIIbD	IB				B"  "2&'DDMIId)I,r6   c                      t        j                  t        d      5  t        j                  t        j                  d      ddg       d d d        y # 1 sw Y   y xY w)Nzalpha must be a float, two-dr  rR   r   r   )r7  r8  r9  r(   r/   r*   r+   rQ  r6   r4   !test_image_array_alpha_validationr    sA    	y(F	G 3

288F#Aq623 3 3s   -AAc                     t        t        j                  d         } | j                  d       t	        j
                  dd      }|j                  g d      }t        j                  g dgt        	      }|j                  |d
| dd      }|j                  d       |j                  j                          |j                  |j                  j                        d   d   }|j!                  |j#                  |dggdz  z  j$                  j'                                     dz  j)                  t*              }t        j,                  ||k(        sJ y )Nautumn_r	lightgrey)color)gffffff?ri  rS   rT   rv   )r]   r]   r]   r   r   r   r   +   O   _   B   r   r]   r]   r]   r   r   r   "   r    rw   r   )r  rU  r  r  rA  r   rr   rD   )r   rt  rB  	set_underr(   r^   rW  r*   rH   r  r/   r   r  r  rx  r  rU  rE  TrI  r   r{   rX  )rU  r0   rn   r   r   
from_imagedirect_computations          r4   test_exact_vminr    s   j)*DNNN% **ZS
1C	l	#B88	MND
 
4T	DBGGENJJOO szz223A6q9J 	1#,//55789C?fSk 
 66* 22333r6   image_placementc                  T   t        j                         \  } }|j                  g dg ddd       t        j                  j                  d       |j                  t        j                  j                  dd      dd	d
dd       |j                  dd       |j                  dd       y)zK
    The red box should line up exactly with the outside of the image.
    )r   r   r   r   r   )r   r   r   r   r   r[  ri  )r  r  ru   r   r  r  r$   r]   r   )rU  r   r&   r  r  grh  N)
r(   r)   rh   r*   rx   ry   r/   randnr   r   r}  s     r4   test_image_placementr    s     llnGCGGO_CCG@IINN8IIbiioob"%GL"!  5KKeKKer6   c                   @     e Zd Zd Zd Z fdZd Zed        Z xZ	S )
QuantityNDc                 \    t        j                  |      j                  |       }||_        |S r  )r*   r~  viewunits)clsinput_arrayr  objs       r4   __new__zQuantityND.__new__  s'    jj%**3/	
r6   c                 (    t        |dd       | _        y Nr  )getattrr  )selfr  s     r4   __array_finalize__zQuantityND.__array_finalize__  s    S'40
r6   c                 |    t        | dd       }t        | 	  |      }t        |t              s|t	        ||      }|S r  )r  super__getitem__
isinstancer  )r  itemr  ret	__class__s       r4   r  zQuantityND.__getitem__  s@    gt,g!$'c:&%*;S%(C
r6   c                    t        ||      }d|v rt        S t        |      dk(  r0|d   }t        |dd      } |t        j                  |      fi |}nXt        |      dk(  rC|d   }|d   }	t        |dd      }
t        |	dd      }|
|n|
}
||
n|}|t        j
                  t        j                  fv r|
|k7  rt        |
}n|t        j                  k(  r|
 d| }n|t        j                  k(  r	|
 d| d	}ng|t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  fv rd }nt        S  ||j!                  t        j"                        |	j!                  t        j"                        fi |}nt        S |t        j$                  |      }|S t'        ||      }|S )
Nr\  r   r   r  dimensionlessr   *z/())r  NotImplementedr   r*   r~  addsubtractr  multiplydividegreatergreater_equalequal	not_equalless
less_equalr  ndarrayrH   r  )r  ufuncmethodinputsr:  funci0unitout_arri1u0u1s               r4   __array_ufunc__zQuantityND.__array_ufunc__  s   uf%F?!!v;!B2w8D2::b>4V4G[ABBWo6BWo6BzrBzrB--8$$"++%Qrd|"))#Rt1~2::r'7'788R\\77BMM3 3 %%2772::.

0CNvNG!!<hhw'G  !$/Gr6   c                 @    | j                  t        j                        S r  )r  r*   r  )r  s    r4   r   zQuantityND.v  s    yy$$r6   )
__name__
__module____qualname__r  r  r  r  propertyr   __classcell__)r  s   @r4   r  r    s,    
1%N % %r6   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        y # 1 sw Y   y xY w)Nr   r   mr#   zm*mzm/(m)s)	r  r*   rX  r   r~  r  r7  r8  r  )qq0q1s      r4   test_quantityndr    s    Aq63AqTFB66!##QF++,,,77c>>6627++QC0111G??e###G??g%%%	z	"  
Z3     s   C66C?c                      t        t        j                  d      d      } t        j                         \  }}|j                  |        |j                  j                          y )NrR   r  )r  r*   r,   r(   r)   r/   r  r  )r   r0   rn   s      r4   test_imshow_quantityndr    s>    
RWWV_c
*CllnGCIIcNJJOOr6   c                    t        j                  ddt         j                        }d|ddd d f<   t         j                  j	                  |d      }d	|j
                  ddddf<   t        j                  d
   j                  d      }| j                         }|j                  |t        j                  dd      dd|      }|j                  t        j                  dd             |j                  |t        j                  dd      dd|      }|j                  t        j                  dd             |j                  dd       |j                         }|j                  |t        j                  dd      dd|       |j                  |t        j                  dd      dd|       |j                  dd       y )Nr   r   r    r]   r   r   Fr  Tr  wr  r   r?  r*  rG   )rE  r   r&   rU  r  )r   rr   r   rr   r   rr   r{  )r*   r   r  r)  rH   rK  rt  rB  r(  r)   r/   r	   rG  r  r  r  )r~   r   r   masked_datarU  rn   r   s          r4   test_norm_changer  
  s    7761BJJ/DD1aL%%++d+/K!%KQqS!A#X==#111<D				B	4fnn#A>&id 
 
LBKK  bq12	;V^^1%E(	 
 
NBKK  bq12FFgF&				BIId))r:!  GIIk 0 0bq A#94  IFFgF&r6   rb   c                 .   t        j                  d|t         j                        }d|ddd d f<   | j                         }|j	                  |t        j                  d|j                               dd	
       t        j                  d|t         j                        }d|ddd d f<   |j                         }t        j                  d	   j                  d      }|j	                  |t        j                  d|j                               d|
       y )Nr   r    g@xDr   r   r   r?  rG   r  )rE  r&   rU  i  r  r  )r*   r   r  r)   r/   r	   rG  r  rt  rB  r(  r  )r~   r   rb   r   rn   rU  s         r4   test_huge_range_logr  &  s     7761BJJ/DD1aL				BIIdQTXXZ@%I  7 7761BJJ/DD1aL				B==#111<DIId))qtxxzB%D  2r6   c           
      R   | j                  dd      }|j                  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 ]O  \  }\  }}||   j                  |       ||   j	                  |       ||   j                  |       ||   j                  |dddddd	       ||   j                  d
d       ||   j                  dd
       ||   j                  j                          ||   j                  j                  d       ||   j                  j                  d       ||   j                  j                  t        j                  dg dd             ||   j                   j                  t        j                  dg dd             R y )Nr   r#   r   )r,   r+   mixedrG   r  r   Greys)r&   r  r\   rU  r  r  r  r  g?r   r  )r   r   r   rr   T)nbinsstepsinteger)r)   	enumeraterH  rI   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  rd   r  s	            r4   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q	))a}dK	
 	q	))a}dK	

r6   znonuniform_and_pcolor.pngc                     t        j                  d      j                  ddd      } t        | ddg      D ]  \  }}t	        ||      }|j                  t        j                  d      d	z  t        j                  d      d	z  t        j                  d
      j                  d             |j                  |        | d	   j                  t        j                  d      d	z  t        j                  d      d	z  t        j                  d
      j                  d             | D ]$  }|j                          |j                  d       & y )Nro  rN  r#   T)sharexshareyrG   r'   r%   r   r  r   r  )r|  )r(   r^   r)   rH  r   r  r*   r`   r  r  
pcolorfastr  r  )r   rn   r&   r   s       r4   test_nonuniform_and_pcolorr  [  s
   
**V
$
-
-aT
-
JC y*&=> MR}=
BIIaLA%ryy|q'8IIaL((0	2
R	
 F
		!299Q<1,biil.B.B6.JL 

Gr6   znonuniform_logscale.pngc                  z   t        j                  dd      \  } }t        d      D ]  }||   }t        |      }|j	                  t        j                  dd      dz  t        j                  dd      dz  t        j                  d      j                  d             |j                  dd       |j                  dd       |j                  d       |dk(  r&|j                  d	d
       |j                  d	d
       |dk(  r&|j                  d	d
       |j                  d	d
       |j                  |        y )Nr#   r   )ncolsnrowsr   r   r  ro  r   r  )base)r(   r)   rF  r   r  r*   r`   r  r   r   set_box_aspect
set_xscale
set_yscaler  )r[  r   r  rn   r   s        r4   test_nonuniform_logscaler$  k  s   \\+FAs1X VR 
BIIaOq("))Aq/Q*>IIaL((0	2
Ar
Ar
!6MM%aM(MM%aM(6MM%aM(MM%aM(
Rr6   zrgba_antialias.pngg{Gz?)r   r   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                        }|j                  d       |j                  d       |j!                         }|d   j#                  |d|dd       |d   j%                  |dz  dz
  |dz  dz   g       |d   j'                  |dz  dz   |dz  d	z
  g       |d   j#                  |d|dd       |d   j#                  |dd |dd!       |d"   j#                  |dd#|dd!       y )$Nr   )      @r&  FT)rU   r  r  constrained_layout   r]   r   rr   K   r  r   rj  rW   rX   g    .AF   Z   g    .r        yellowcyanr   rG   g333333r  )r&   rU  r  r     rw   r   )r&   interpolation_stagerU  r  r  r#   r  )r(   r)   r*   r,   r`   r  sqrtra   r  r{   r1  r   r'  RdBu_rset_overr  r  r/   r   r   )r0   r   rJ  aarb   rc   rJ   r  Rf0r   r^  rU  s                r4   test_rgba_antialiasr8    s   ||Aq*U#(TCHCA	!QBBssAvJ
		!q3A
		!q3A;;q!DAq
1q!tA	B
A
ruuqyBFQAX\123A .0Ais1Q3xilOAis1Q3xilOc)*-.Ais1Q3xilOAis1Q3xilOc)*C!HIBq#ac()| vvBr"ube|Br"ube|Br"ube|Br"uc#g~Br"uc#g~DMM(NN6
++-CFMM"IDt#MNFOOQqSVQqSV$%FOOQqSVQqSV$% FMM"IDt#MN FMM"F$S  2
 FMM"F$S  2r6   )rP   c                    t         j                  j                  d       t         j                  j                  dd      }|j	                         }|j                  |ddd       | j	                         }|j                  |ddd       y)	z[
    Show that interpolation_stage='auto' gives the same as 'data'
    for upsampling.
    *N,r   r'   r  r   r&   rU  r1  rw   Nr*   rx   ry   rz   r)   r/   r~   r   gridrn   s       r4   !test_upsample_interpolation_stager?    sz     IINN:99>>!QD				BIId*9"(  * 
			BIId*9"(  *r6   c                    t         j                  j                  d       t         j                  j                  dd      }|j	                         }|j                  |ddd       | j	                         }|j                  |ddd       y)z]
    Show that interpolation_stage='auto' gives the same as 'rgba'
    for downsampling.
    ru   i  rw   r  r  r;  Nr<  r=  s       r4   #test_downsample_interpolation_stagerA    sz     IINN899>>$%D				BIId&y"(  * 
			BIId&y"(  *r6   c                  R   dD ]N  } t        j                  d| i      5  t        j                  ddgg      j	                         | k(  sJ 	 d d d        P dD ]7  } t        j                  t              5  | t         j                  d<   d d d        9 y # 1 sw Y   xY w# 1 sw Y   PxY w)N)r   r  zimage.interpolation_stager   r   )DATAfooN)	rt  
rc_contextr(   r/   get_interpolation_stager7  r8  r  r   )vals    r4   test_rc_interpolation_stagerH    s     I^^8#>? 	I::1vh'??ASHHH	I 	II % <]]:& 	<8;CLL45	< 	<<	I 	I	< 	<s   ,B2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 rowsc           	      $   | j                         }|j                         }t        j                  d|dz   f      }d|d d |j                  dz  d f<   |dk(  r|j                  }|j                  |ddddd|      }	t        j                  t        d	| d
      5  | j                  j                          d d d        t        j                  d      }d|d d df<   |dk(  r|j                  }|j                  |ddddd|      }	y # 1 sw Y   QxY w)Nr   r   rJ  r   rw   r  r$   )r  r  r  r   r&   r\   zData with more than z  cannot be accurately displayed.r  rr  )r)   r*   r+   sizer  r/   r7  rt  ru  r  r  )
r~   r   dimrL  msgr\   r  r  rH   r   s
             r4   test_large_imagerO    s    !GFHHa]#E!"E!UZZ1_

e|	AA%l&,% 
 
'B
 
k23% 8. .
/  	
 HHVEE!Q$K
e|	u11V*%+$ 
 
&B s   DDc                    t         j                  j                  dd      dz  dz   }| j                  dd      }|d   j	                  |d       |d   j	                  |dd	
       |d   j	                  |d       |d   j	                  |ddd       |d   j	                  |ddd       |j                  dd      }|d   j	                  |t        j                                |d   j	                  |t        j                  d	             |d   j	                  |t        j                  d             |d   j	                  |t        j                  ddd             |d   j	                  |dd       t        |d   j                  d   j                        t
        j                  u sJ t        j                  t              5  |d   j	                  |d       d d d        y # 1 sw Y   y xY w)Nrr   g?ri  r   r   r   r  rr  r  )rE  r  r   symlogr#   rj  r  )rE  r  r  r   logit)r  )	linthresh)rS  r  r  )rj  r  )rE  climfoobar)r*   rx   rz   r)   r/   r	   rG  rm  typeimagesrE  r7  r8  r  )r~   r   ru  axtsaxrss        r4   test_str_normsrZ    s   
		r2#b(AQ"DGNN15N!GNN15rN*GNN18N$GNN18"2N6GNN17"N5Aq!DGNN16>>+N,GNN16>>r2N3GNN16,,q9N:GNN16,,qrKNLGNN17N2Qq!&&'6>>999	z	" )Qqx() ) )s   G--G6c                     t        j                  t        j                  j                  t                     } t        j                  t        d      5   | t        j                  d      d        d d d        t        j                  t        d      5   | t        j                  d      t        j                  d             d d d        t        j                  t        d      5   | t        j                  d      t        j                  d             d d d        t        j                  t        d      5   | t        j                  d      t        j                  d             d d d        t        j                  t        d	      5   | t        j                  d      t        j                  d             d d d        t        j                  t        d
      5   | t        j                  dt        j                        t        j                  d             d d d        t        j                  t        d      5   | t        j                  d      t        j                  d      j                         d d d        t        j                  d      }d|j                  _        t        j                  t        d      5   | t        j                  d      |       d d d        y # 1 sw Y   |xY w# 1 sw Y   6xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   dxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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partialrt  _imageresampler   r7  r8  r9  r*   r+   r  r.   r  flags	writeable)r_  r\  s     r4   test__resample_valid_outputrb  $  s;     !4!4
KH	y(I	J )&!4()	z)E	F 8&!288I#678	z)E	F 8)$bhhv&678	z)F	G ;)$bhhy&9:;	z)G	H ;)$bhhy&9:;	z);	< ?&"((+RXXf-=>?	z)?	@ 7&!288F#3#5#567 ((6
CCII	z)I	J (&!3'( (#) )8 88 8; ;; ;? ?7 7
( (s`   K*0K7&0L90L0L?L+:L8M*K47LLLL(+L58MMc                     t        j                         } t        |       }t        j                  t
        d      5  |j                          d d d        t        j                  dt              j                  d      }|j                  |       |j                         dk(  sJ |j                         |j                         k(  sJ y # 1 sw Y   }xY w)Nz"You must first set the image arrayr  rP  r    r  )r(   r  r   r7  r8  rw  	get_shaper*   r`   r  r  r  get_sizer  s      r4   test_axesimage_get_shaperf  ;  s    	B	2B	|+O	P 

		"E"**62AKKN<<>V###;;=BLLN*** s   CCc                     t        j                         j                         } t        j                  d      j                  d      }| j                  || j                         | j                         dk(  sJ | j                  |t               j                  d      | j                  z          | j                         dk(  sJ | j                  || j                  d       | j                         dk(  sJ y )Nr   rR   r   rw   r   r   )r  r  )r(   r^   rs  r*   r`   r  r/   r  
get_aspectr   r  r  r  s     r4   .test_non_transdata_image_does_not_touch_aspectri  G  s    		!	!	#B	1		f	%BIIbBLLI)==?f$$$IIbHJ,,Q/",,>I?==?aIIbBLLI3==?ar6   zdownsampling.pngg
ףp=
?c                  P   d} t        j                  |       | z  dz
  }t        j                  |       | z  dz
  }t        j                  | | f      }d|d d dd d f<   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      \  }
}|d   j                  |	ddd       |d   j                  dd       |d   j                  dd       |d   j                  d       t        |j                  dd  g dg d      D ]3  \  }}}|j                  |	||d       |j                  d| d| d       5 y )Ni  r   r]   r   r   rS   r  r   rj  r#   )r  r   
compressedrU   layoutr!  rG   r  r3  )r&   r1  rU  }   r  r(  r5  Zoom)rG   rG   rq   rq   rw   )r   r  r   r  rw   zinterpolation='z	'
space='')r*   r`   r,   r  r2  ra   r  r{   r(   r)   r/   r   r   rI   rH  flat)rJ  rb   rc   r5  rJ   r  r6  r7  r   r^  r0   r   rn   rN  spaces                  r4   test_downsamplingrs  R  s?    	A
		!q3A
		!q3A	!QBBssAvJ;;q!DAq
1q!tA	
BA
ruuqyBFQAX\123A13Aks1q5zk1naQUQ'#-.12Aks1q5zk1naQUQ'#-.1c!a%jk>*Bq#a!e*+~
A||Aq&FHCIQiV"  $IsC IsC I !" 0C!IK CFE 			!6u 	 	!
vhjqABCr6   zdownsampling_speckle.pngc                  d   t        j                  dddddd      \  } }|j                         }t        j                  d      j                  dd      t        j                  d	      z  d
z  j                  }t        j                  d      }|j                  d       t        j                  dd      }|d   j                  d       |d   j                  t        j                  |      ||d       |d   j                  d       |d   j                  t        j                  |      ||       y )Nr   r   )r   g@Trk  )rU   r  r  rm  i   r]   i  rX   r  r  r#   rf  r?  r   z"interpolation='auto', stage='rgba'r  )rU  rE  r1  z"interpolation='auto', stage='auto')rU  rE  )r(   r)   r  r*   r`   r  r,   r  get_cmapr4  r	   rG  rI   r/   triu)r0   r   r3   r'  rE  s        r4   test_downsampling_specklerw  u  s     ||Aq(4#/1HC
++-CIIdO##B*RWWS\9b@
C
CC	i	 BKK>>qr*D
 F9:FMM"''#,RdMO F9:FMM"''#,RdM3r6   zupsampling.png)r   r   c                     t         j                  j                  d       t         j                  j                  dd      } t	        j
                  dddd      \  }}|d   j                  | d	
      }|d   j                  d       |d   j                  | d	d       |d   j                  d       |d   j                  | d	dd       |d   j                  d       |j                  ||dd       y )Nr:  r   r   r#   )g      @r#   rk  rl  r   r  )rU  zAinterpolation='auto'
stage='antialaised'
(default for upsampling)sinc)rU  r&   z:interpolation='sinc'
stage='auto'
(default for upsampling)r   r  )rU  r&   r1  z!interpolation='sinc'
stage='rgba'r  r   )rn   shrinkr"  )	r*   rx   ry   rz   r(   r)   r/   rI   r  )r^  r0   r   r   s       r4   test_upsamplingr{    s     IINN:
		q!A||Aq(<HHC	Qqy	)BFMO FMM!)6M:FFH FMM!)6vMVF9:LLCL7r6   )r  float32int16r   int8r.   ndim)r   r#   c                 8   t         j                  j                  d      }|dk(  rdnd}|j                  |      j	                  t        j
                  | d            }t        j                         \  }}|j                  |      }|j                  d       d    y )	NiU  r   rR   )r   r   r#   )rL  Tr   r   )
r*   rx   default_rnguniformr   r!   r(   r)   r/   rx  )r!   r  rngr   r   r0   rn   
axes_images           r4   test_resample_dtypesr    sz     ))


%CaiFYE;;E;"))"((5t*DEDllnGC4J$"r6   )
contextlibr   r   r\  ri   r   pathlibr   r  r  urllib.requestr  numpyr*   numpy.testingr   PILr   
matplotlibrt  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  r7  r5   rM   markparametrizerf   rp   r   r   r   r   r   r   r   r   r   r   r   r   contextr   r  r  r1  r  r'  r1  r3  r;  r?  rB  rL  r_  rc  rm  rv  r  r  r  r  r  r  r  r  r  r  r`   r  r  r  r  r  r  r  r  r.  r3  r6  r;  machinerO  rR  splitr!   r]  ra  rg  ri  r  rG  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r8  r?  rA  rH  filterwarningsrO  rZ  rb  rf  ri  rs  rw  r{  r  )r  s   0r4   <module>r     s
       	 	   
   ,  F F< < O A A #  %&D9	. :	. +,#U^?+?+  ,udm<:,E5>:B ; =B ' (. ). ( )" 	) 	)$$  >?- @-D GW#56@ 7@  BCA DA*2)4 =/t46 56 7( ) 0D+N 	3Z	3Z	3Z	3Z	3Z#Y	2Y	& 
P
P* %.	=),#661a.	4 g,/0r(Xa&8DD <.0 1 #$G4 5 ( ) ,-4@I AI =/tO PF8 /0"'33 *+> ?4 (% )% $%#U^WN!N!: ()t7K L0 GF 34"'33!'0-- 		2			"yryy~'='=f'E	G		2			"yryy}'<'<V'D	F11B $%48 9 >"5 66	%3( ./TsK> L>> <.d3+ 4+" )*=
* >
* 01+8++-9at"'33D& #9#?#?#ABahbhhqkBD%D%& )*GL M *+WM N /0"'33 ^^! "#	1#	1D
 02DEG09j2IJ2 KG2 4	D9$2 - -$3
 74 48 $%5%."'3
3
"9% 9%x	  (' )'6 r1g&(2 ) '2$ 
 
@ ./w? @ ,-W= >( '(TtT22 U22j 	** +*& 	** +*$<  = >GW#569689 	*& +9 7>&> () ))*(.	+  TtECECB  TtM4M4* g49898* > (	# )	
	# Cs   :^<
