+
     ]ih c                   s   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHtHtHtH	t	 ^ RI
Ht ^ RIt^ RIHtHtHt ^ RIHt ^ RIHtHt ^ RIHtHt ^ RIHt ^ R	IHtHt ^ R
I H!t!H"t" ^ RI#H$t$ ^ RI%H&t& ^ RI'H(t) ^ RI*t+] PX                  ! ]RRR7      t-R t.]! R.R7      R 4       t/]-! R.RR7      R 4       t0]-! R.RR7      R 4       t1]-! R.RRR7      R 4       t2]-! R.RRR7      R 4       t3]-! R.RRR7      R  4       t4R! t5]-! R".R]P                  R#8X  d   R$M^ R%7      R& 4       t6]-! R'.RR7      R( 4       t7R) t8]-! R*.RR7      R+ 4       t9]-! R,.RR7      R- 4       t:R. t;]-! R/.R]Px                  ! 4       R08X  d   ^ MR1R%7      R2 4       t=]-! R3.RR7      R4 4       t>]-! R5.RR7      R6 4       t?]-! R7.RR7      R8 4       t@]P                  P                  R9R:. RO.R;. RO.R<. ER O..4      ]! R.R7      R= 4       4       tC]-! R>.R?RR@7      RA 4       tDRB tE]-! RC.RR7      RD 4       tF]! R.R7      RE 4       tGRF tH]-! RG.RR7      RH 4       tI]! R.R7      RI 4       tJ]-! RJ.RR7      RK 4       tK]-! RL.RR7      RM 4       tL]-! RN.RR7      RO 4       tM]! R.R7      RP 4       tN]! R.R7      RQ 4       tO]P                  P                  RRRR.4      ]! R.R7      RS 4       4       tP]P                  P                  RTER^.4      ]! R.R7      RU 4       4       tQ]! R.R7      RV 4       tR]-! RW.RXRR@7      RY 4       tS]-! RZ.RR7      R[ 4       tT]-! R\.RR7      R] 4       tU]-! R^.RR7      R_ 4       tV]! R`.RR7      Ra 4       tW]-! Rb.RR7      Rc 4       tX]-! Rd.RR7      Re 4       tY]! R.R7      Rf 4       tZ]! R.R7      Rg 4       t[]-! Rh.RR7      Ri 4       t\]-! Rj.RRR7      Rk 4       t]]! R.R7      Rl 4       t^]-! Rm.RnRR@7      Ro 4       t_]-! Rp.RqRR@7      Rr 4       t`]-! Rs.RR7      Rt 4       ta]-! Ru.RR7      Rv 4       tb]-! Rw.RR7      Rx 4       tcRy tdRz te]-! R{.RR|R%7      R} 4       tf]! R.R7      R~ 4       tg]-! R.RR7      R 4       th]-! R.RR7      R 4       tiR tj]! R.R7      R 4       tkR tl]-! R.RR7      R 4       tmR tn]-! R.RR7      R 4       to]-! R.RR7      R 4       tp]-! R.RR7      R 4       tqR trR ts]-! R.RRR7      R 4       tt]-! R.RRR7      R 4       tu]-! R.RRR7      R 4       tvR twR txR tyERR ltz]-! R.RR7      R 4       t{]-! R.RR7      R 4       t|R t}R t~]P                  P                  RER4      ]P                  P                  RER4      R 4       4       t]! R.R7      R 4       tR t]-! R.RRR7      R 4       t]-! R.RRR7      R 4       t]-! R.RR7      R 4       t]! R.R7      R 4       t]P                  P                  R]+EP                  ]+EP                  .4      ]P                  P                  ER. ERO4      R 4       4       t ! R R4      tR t]! R.R7      R 4       tR tR t]! R.R7      R 4       t]! R.R7      R 4       t]! R.RR7      R 4       t]-! R.RR|R%7      R 4       t]-! R.R]Px                  ! 4       R08X  d   ^ MR?R%7      R 4       t]! R.RRR%7      R 4       t]! R.RR7      R 4       tR tR tR t]! R.R7      R 4       tR tR t]P                  P                  RER4      R 4       tR t]P                  P                  RR]EP:                  RER3R]EP:                  RER	3R]EP:                  RER
3R]EP<                  RER3R]EP:                  RER3R]EP:                  RER3R]EP:                  RER3.4      R 4       t]EP@                  EPC                  R4      ]! R.R7      R 4       4       tR t]! R.RR.RR7      R 4       tR tR tR tR t]P                  P                  R]ER/ R3]ER/ R3]ER/ R3]]! 4       RER/R3]]! 4       RER/R3]]! 4       RER/R3]ERR^/R3]ERR^R^R^/R3]ERR^R^/R3]ER/ R33
4      R 4       t]! R.R7      R 4       tR t]! R.R7      R 4       t]! R.RRR7      R 4       tR tR tR t]P                  P                  RR. ERO. ERO. ERO. ERO.RR.ERER.3ERR.ERER.3ERER.ERR.3.. ERO3R. ERO. ERO. ERO. ERO.ERR.RR.3RR.ERR.3ERER.RR.3.. ER O3R. ER!O. ER"O. ERO. ER#O.ERER.RER.3RR.RR.3RER.RR.3.. ER$O3.4      R 4       t]P                  P                  R. ERO4      R R l4       t]P                  P                  RR. ER%O3R. ER&O3R. ER'O3.4      R 4       t]! R.RRR7      R 4       t]! R.RRR7      R 4       t]! R.R7      R 4       tR t]-! R.RR7      R 4       tR tR tR# ((      N)Axes3Daxes3dproj3dart3d)_Quaternion)MouseButton
MouseEventNavigationToolbar2)cm)colorspatches)image_comparisoncheck_figures_equal)
mock_event)LineCollectionPolyCollection)Circle	PathPatch)Path)TextTdefault)remove_textstylec                 s   ^ ^.p\         P                  ! \        P                  ! \	        \         P
                  ! W"V4      4      4      ^4      pV F  w  rE\        P                  ! \        P                  ! WE,
          4      4      V^,          V^ ,          ,
          8X  g   KQ  V P                  ! \        V\        P                  ! V4      ,          V\        P                  ! V4      ,          4      !   K  	  R# )r    N)
	itertoolscombinationsnparraylistproductsumabsplot3Dzip)axscalerZptsZstartZend   &&    M/usr/lib64/python3.14/site-packages/mpl_toolkits/mplot3d/tests/test_axes3d.pyplot_cuboidr'      s    	
AA

 
 $y/@/@q/I*J!KQ
OC
66"&&%&!A$1+5IIs5%0#bhhuo2EFG     Zpng)
extensionsc                 s`    V P                  \        R R7      R7      pVP                  R4       R# )3d
projection
subplot_kwFN)subplotsdictset_visiblefig_testfig_refr"      && r&   test_invisible_axesr6   '   s&    			dd&;		<BNN5r(   zgrid_off.pngmpl20r   c                  v    \         P                  ! 4       p V P                  R R7      pVP                  R4       R# r*   r+   FN)pltfigureadd_subplotgridfigr"        r&   test_grid_offrB   -   s(    
**,C	D	)BGGENr(   zinvisible_ticks_axis.pngc                  sD   \         P                  ! 4       p V P                  R R7      pVP                  . 4       VP	                  . 4       VP                  . 4       VP                  VP                  VP                  3 F  pVP                  P                  R4       K   	  R# r:   )r;   r<   r=   
set_xticks
set_yticks
set_zticksxaxisyaxiszaxisliner1   )r@   r"   axis      r&   test_invisible_ticks_axisrL   4   sp    
**,C	D	)BMM"MM"MM"288RXX.		e$ /r(   zaxis_positions.pngFc                  sV   . R	Op \         P                  ! ^^RR/R7      w  r\        VP                  4       V 4       Fi  w  r4VP                  VP
                  VP                  3 F%  pVP                  V4       VP                  V4       K'  	  T pVP                  RRRVR7       Kk  	  R# )
upperr,   r*   r-   xyz)ZxlabelZylabelZzlabeltitleN)rM   lowerbothnone)
r;   r/   r!   flattenrF   rG   rH   Zset_label_positionZset_ticks_positionset)Z	positionsr@   axsr"   ZposrJ   rQ             r&   test_axis_positionsrY   ?   s    2I||AqlD-ABHCs{{}i0HHbhh0D##C(##C( 1 %
c#c? 1r(   zaspects.pngc                  s   R	p \         P                  ! ^^RR/R7      w  rVP                  4       ^ R
  F  p\        V. ROR7       K  	  \        V^,          ^,          . ROR7       \	        VP                  4       4       FF  w  rCVP                  W,          4       VP                  R4       VP                  W,          RR7       KH  	  V^,          ^,          P                  R4       R# )autor,   r*   r-   r#   ZdatalimZ
adjustablezequal (cube)N)rZ   equalequalxyequalyzequalxzr]   )   rb      rb   rb   rb         rc   )r;   r/   rU   r'   	enumerate	set_titleset_box_aspect
set_aspect)aspectsZ_rW   r"   i        r&   test_aspectsro   K   s    IG\\!QL$+?@FAkkmAb!Bi( " Aq	+3;;=)
WZ 
)$
gjY7 * F1I'r(   zaspects_adjust_box.pngc                  s    Rp \         P                  ! ^\        V 4      RR/R	R7      w  r\        V4       FD  w  r4\	        V. R
OR7       VP                  W,          4       VP                  W,          RR7       KF  	  R# )rZ   r,   r*   )r.   figsizer[   Zboxr\   N)rZ   r]   r^   r_   r`   )   rf   )rg   rf   rc   )r;   r/   lenrh   r'   ri   rk   )rl   r@   rW   rm   r"   rn   r&   test_aspects_adjust_boxrs   \   sh     AG||As7|t8L$+-HC 3Bi(
WZ 
gjU3  r(   c                  s    \         P                  ! 4       p V P                  R R7      pVP                  R4       VP	                  R4       VP                  R4       VP                  R4       VP                  R4       R# )r*   r+   labelrQ   rN   rO   rP   N)r;   r<   r=   Z	set_labelri   
set_xlabel
set_ylabel
set_zlabelr?   rA   r&   test_axes3d_reprrx   i   sY    
**,C	D	)BLLLLMM#MM#MM#r(   zaxes3d_primary_views.pngZdarwin皙?)r   tolc                  s   . R
Op \         P                  ! ^^RR/R7      w  r\        VP                  4       F  w  r4VP	                  R4       VP                  R4       VP                  R4       VP                  R4       VP                  W,          ^ ,          W,          ^,          W,          ^,          R7       K  	  \         P                  ! 4        R	# )Z   r,   r*   r-   rN   rO   rP   orthoelevazimrollN))r{   r    r    r   r    r    r    r    )r   r{   r    r    r{   r    r    i   r    )
r;   r/   rh   flatru   rv   rw   set_proj_type	view_inittight_layout)viewsr@   rW   rm   r"   rn   r&   test_axes3d_primary_viewsr   v   s    E ||AqlD-ABHC388$
c
c
c
!
%(1+EHQKehqkJ % r(   z	bar3d.pngc                  s<   \         P                  ! 4       p V P                  R R7      p\        . RO. R	O4       F`  w  r#\        P
                  ! ^4      p\        P
                  ! ^4      pV.\        V4      ,          pRV^ &   VP                  WEVRRVRR7       Kb  	  R# )
r*   r+   rO   cZedge皙?)zszdirZaligncoloralphaN)r$   gbrO   )      
   r    )r;   r<   r=   r!   r   arangerr   Zbar)r@   r"   r   rP   xsysZcsrX   r&   
test_bar3dr      s{    
**,C	D	)B(/:YYr]YYr]S3r7]1
r!#V2SI ;r(   c                  s*   \         P                  ! 4       p V P                  R R7      pR Fe  p\        P                  ! \        V4      4      p\        P                  ! V4      p\        P                  ! V4      pVP                  W4V^^^VR7       Kg  	  R# )r*   r+   r   N)redgreenblueZyellow)r;   r<   r=   r   r   rr   
zeros_likebar3d)r@   r"   r   r   r   r            r&   test_bar3d_colorsr      so    
**,C	D	)B/YYs1v]]2]]2 	Q1A. 0r(   zbar3d_shaded.pngc                  s|   \         P                  ! ^4      p \         P                  ! ^4      p\         P                  ! W4      w  r#VP                  4       VP                  4       r2W#,           ^,           p. R	Op\        P
                  ! \        P                  ! ^\        V4      ,          4      R7      pVP                  ^\        V4      \        RR7      R7      p\        Wu4       F:  w  pw  rpVP                  W#V^ ,          ^^VRR7       VP                  WVR7       K<  	  VP                  P                  4        R# )
rg   rp   r*   r+   r-   Tshader}   N))r   r    )r   r   r   )r   r   ),  r   r    )r   r   meshgridravelr;   r<   	figaspectrr   r/   r0   r!   r   r   canvasdraw)rN   rO   x2dy2drP   r   r@   rW   r"   r~   r   r                  r&   test_bar3d_shadedr      s    
		!A
		!A{{1 HCyy{CIIK	AAGE
**S]]1s5z>:
;C
,,	3u:4(  C #&c/T
37Aq!48
$5 #2 JJOOr(   zbar3d_notshaded.pngc            
      s   \         P                  ! 4       p V P                  R R7      p\        P                  ! ^4      p\        P                  ! ^4      p\        P
                  ! W#4      w  rEVP                  4       VP                  4       rTWE,           pVP                  WEV^ ,          ^^VRR7       V P                  P                  4        R# )r*   r+   Fr   N)
r;   r<   r=   r   r   r   r   r   r   r   )r@   r"   rN   rO   r   r   rP   rX   r&   test_bar3d_notshadedr      s    
**,C	D	)B
		!A
		!A{{1 HCyy{CIIK	AHHSsQw1auH5JJOOr(   c                  sx   \         P                  ! 4       p V P                  ^^^RR7      p\        P                  ! ^ ^ZR7      p^^rCW4,          p\
        P                  ! \
        P                  ! V4      \
        P                  ! V4      4      w  rgVP                  4       pVP                  4       pWg,           p\        V4       U	u. uF  p	\        P                  ! W,          4      NK!  	  p
p	VP                  Wg^ ^^VV
RVR7	      p\
        P                  P                  WP                  R,          ^4       R# u up	i )rb   r*   r+   )ZazdegZaltdegT)	rN   rO   rP   dxdydzr   r   Zlightsource:rb   N   N)r;   r<   r=   mcolorsZLightSourcer   r   r   r   ranger	   coolwarmr   testingZassert_array_max_ulpZ_facecolor3d)r@   r"   ZlslengthwidthZarearN   rO   r   rm   r   Z
collectionr   r&   test_bar3d_lightsourcer      s    
**,C	AqT	2B			1R	0BqE>D;;ryy("))E*:;DA		A		A	
B*/+6+QR[[ +E6Aa1 %Tr  CJ JJ##E+B+B4+H!L 7s   %D7zcontour3d.pngZx86_64gMb`?c            	      s   R \         P                  R&   \         P                  ! 4       p V P                  RR7      p\        P
                  ! R4      w  r#pVP                  W#VRR\        P                  R7       VP                  W#VRR\        P                  R7       VP                  W#VR^(\        P                  R7       VP                  R^(R^(R^dR	7       R
# )Taxes3d.automarginr*   r+   ry   rP   r   offsetcmaprN   rO   )xminxmaxyminymaxzminzmaxN)
r;   rcParamsr<   r=   r   get_test_datacontourr	   r   rJ   r@   r"   XYZrn   r&   test_contour3dr      s     )-CLL$%
**,C	D	)B""4(GA!JJqQSBKKJ@JJqQS2;;J?JJqQS"++J>GG2Cbt#GFr(   zcontour3d_extend3d.pngc            
      sb   R \         P                  R&   \         P                  ! 4       p V P                  RR7      p\        P
                  ! R4      w  r#pVP                  W#VRR\        P                  R R7       VP                  R	^4       VP                  R
^(4       VP                  R^P4       R# )Tr   r*   r+   ry   rP   )r   r   r   Zextend3dNr   r   )r;   r   r<   r=   r   r   r   r	   r   set_xlimset_ylimset_zlimr   rn   r&   test_contour3d_extend3dr      s    (,CLL$%
**,C	D	)B""4(GA!JJqQSBKK$JOKKRKKRKKRr(   zcontourf3d.pngc            	      s   R \         P                  R&   \         P                  ! 4       p V P                  RR7      p\        P
                  ! R4      w  r#pVP                  W#VRR
\        P                  R7       VP                  W#VRR\        P                  R7       VP                  W#VR^(\        P                  R7       VP                  R^(4       VP                  R^(4       VP                  R
^d4       R	# )Tr   r*   r+   ry   rP   r   rN   rO   Nr   r   )r;   r   r<   r=   r   r   contourfr	   r   r   r   r   r   rn   r&   test_contourf3dr      s    (,CLL$%
**,C	D	)B""4(GA!KKac$R[[KAKKac#BKKK@KKac"2;;K?KKRKKRKKcr(   zcontourf3d_fill.pngc            	      s   R \         P                  R&   \         P                  ! 4       p V P                  RR7      p\        P
                  ! \        P                  ! R^R4      \        P                  ! R^R4      4      w  r#VP                  ^ ^ 4      pRVR	&   VP                  W#V^ R
^ .\        P                  R7       VP                  R^4       VP                  R^4       VP                  R^4       R# )Tr   r*   r+         ?皙?)r   levelsr   N)NNrc   r   皙ra   )r;   r   r<   r=   r   r   r   clipr   r	   r   r   r   r   r   rn   r&   test_contourf3d_fillr     s    (,CLL$%
**,C	D	)B;;ryyQ-ryyQ/EFDA	q!A AhKKKa4)"++KFKKAKKAKKAr(   zextend, levelsrS   minmaxc                 s   \         P                  ! \         P                  ! R^R4      \         P                  ! R^R4      4      w  rEV^,          V^,          ,           p\        P                  R,          P                  4       pVP                  V! ^ 4      4       VP                  V! ^4      4       R^R^RV/pVP                  RR7      p	V	P                  ! WEV3R. RO/VB  V P                  RR7      p
V
P                  ! WEWc3R	V/VB  W3 F9  pVP                  R^4       VP                  R^4       VP                  R^
4       K;  	  R
# )   r   viridisvminvmaxr   r*   r+   r   extendNr   )r    r   rg   r      )r   r   r   mpl	colormapscopyZ	set_underZset_overr=   r   r   r   r   )r3   r4   r   r   r   r   r   r   kwargsax_refax_testr"   s   &&&&        r&   test_contourf3d_extendr     s   
 ;;ryyQ-ryyQ/EFDA	1q!tA ==#((*DNN47MM$s)aFD1F  D 1F
OOA!>O>v>""d"3GQ1>V>v>
B
B
C  r(   ztricontour.png{Gz?)rz   r   c                  s   R \         P                  R&   \         P                  ! 4       p \        P                  P                  R4       \        P                  P                  R4      R,
          p\        P                  P                  R4      R,
          pV^,          V^,          ,           ) pV P                  ^^^RR7      pVP                  WV4       V P                  ^^^RR7      pVP                  WV4       R# )Tr   i!N,        ?r*   r+   N)
r;   r   r<   r   randomZseedZrandr=   Z
tricontourZtricontourf)r@   rN   rO   rP   r"   rn   r&   test_tricontourr   3  s    (,CLL$%
**,CIINN8
		ts"A
		ts"A
Q$A+A	AqT	2BMM!	AqT	2BNN1r(   c                  s&   \         P                  ! 4       p V P                  R R7      p^^r2\        P                  ! R^
V4      p\        P                  ! R^
V4      p\        P
                  P                  ^ ^W2.4      pVP                  WEVR.4       R# )r*   r+   r   Nr   )r;   r<   r=   r   linspacer   Zrandintr   )r@   r"   ZnxZnyrN   rO   rP   rX   r&   test_contour3d_1d_inputr   C  st    
**,C	D	)B
CR A
CR A
		!Q)AJJqQr(   zlines3d.pngc                  s   \         P                  ! 4       p V P                  R R7      p\        P                  ! R\        P
                  ,          ^\        P
                  ,          ^d4      p\        P                  ! R^^d4      pV^,          ^,           pV\        P                  ! V4      ,          pV\        P                  ! V4      ,          pVP                  WVV4       R# )r*   r+   Nr   )	r;   r<   r=   r   r   pisincosplot)r@   r"   thetarP   r$   rN   rO   rX   r&   test_lines3dr   N  s    
**,C	D	)BKKRUU
AIs3E
B3A	Q
A	BFF5MA	BFF5MAGGA!r(   c                 s    V P                  R R7      pVP                  ^.^.R4       VP                  R R7      pVP                  ^^R4       R# )r*   r+   oNr=   r   r3   r4   ax1ax2   &&  r&   test_plot_scalarr  Z  sL    


$

/CHHaS1#s




.CHHQ3r(   c                  s@   \         P                  ! \        R R7      ;_uu_ 4        \        P                  ! ^ . . 4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        \        P                  ! . ^ . 4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        \        P                  ! . . ^ 4       RRR4       \        P                  ! . . . 4      p \         P                  ! \        R R7      ;_uu_ 4        V P                  ^ . . 4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        V P                  . ^ . 4       RRR4       \         P                  ! \        RR7      ;_uu_ 4        V P                  . . ^ 4       RRR4       R#   + '       g   i     ELu; i  + '       g   i     ELD; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R# ; i)z	x must bematchNz	y must bez	z must be)pytestraisesZRuntimeErrorr   ZLine3Dset_data_3d)rI       r&   test_invalid_line_datar  b  s=   	|;	7	7QB 
8	|;	7	7RB 
8	|;	7	7RQ 
8 <<B#D	|;	7	7B# 
8	|;	7	7Q# 
8	|;	7	7R# 
8	7 
8	7	7	7	7	7	7	7	7 
8	7	7	7	7	7	7sG   F**F>/GG&G9H*F;	>G	G#	&G6	9H		H	zmixedsubplot.pngc            
      s   R  p \         P                  ! RRR4      p\         P                  ! RRR4      pR\        P                  R&   \        P                  ! \        P
                  ! R4      R7      pVP                  ^^^4      pVP                  W! V4      R	W ! V4      R
RR7       VP                  R4       VP                  ^^^RR7      p\         P                  ! \         P                  ! R^R4      \         P                  ! R^R4      4      w  rV\         P                  ! WV4      p\         P                  ! V4      pVP                  WVV^(^(^ RR7       VP                  R^4       R# )c                 s    \         P                  ! ^\         P                  ,          V ,          4      \         P                  ! V ) 4      ,          # )r   )r   r   r   Zexp)ts   &r&   fZtest_mixedsubplots.<locals>.fu  s,    vvagai 2661":--r(                 @r   r   Tr          @r   Zbozk--r   )markerfacecolorr*   r+   r   F)rcountccount	linewidthantialiasedNra   )r   r   r;   r   r<   r   r=   r   r>   r   hypotr   plot_surface
set_zlim3d)	r  Zt1Zt2r@   r"   r   r   Rr   	            r&   test_mixedsubplotsr  s  s   . 
3S	!B	3T	"B(,CLL$%
**S]]2.
/C	Aq	!BGGB"tR2wGGGGDM	AqT	2B;;ryyQ-ryyQ/EFDA
A
q	AOOA!BrU  4 MM"ar(   c                 s    V P                  R R7      pVP                  RRRRR7       V P                  4        VP                  R R7      pVP                  4        VP                  RRRRR7       R# )r*   r+   r   zsome stringsN)r=   textr   r  r  r&   test_tight_layout_textr"    sj     

$

/CHHRR=H)




.CHHRR=H)r(   zscatter3d.pngc                  s   R \         P                  R&   \         P                  ! 4       p V P                  RR7      pVP	                  \
        P                  ! ^
4      \
        P                  ! ^
4      \
        P                  ! ^
4      RRR7       \
        P                  ! ^
^4      ;p;r4VP	                  W#VRRR7       ^ VR&   VP	                  . . . RR	R7       R
# )Tr   r*   r+   r$   r   )r   markerr   Z^r   Nra   r;   r   r<   r=   scatterr   r   r@   r"   rN   rO   rP   rn   r&   test_scatter3dr'    s    (,CLL$%
**,C	D	)BJJryy}biimRYYr]S  "		"b!!A!JJqQ#cJ*AbEJJr2rSJ-r(   zscatter3d_color.pngc            	      sp   R \         P                  R&   \         P                  ! 4       p V P                  RR7      pVP	                  \
        P                  ! ^
4      \
        P                  ! ^
4      \
        P                  ! ^
4      RRRR7       VP	                  \
        P                  ! ^
4      \
        P                  ! ^
4      \
        P                  ! ^
4      RRRR7       VP	                  \
        P                  ! ^
^4      \
        P                  ! ^
^4      \
        P                  ! ^
^4      RR	R
7       R# )Tr   r*   r+   r$   rT   r   )	facecolor	edgecolorr#  r   r   )r   r#  Nr$  r?   rA   r&   test_scatter3d_colorr*    s    (,CLL$%
**,C	D	)B JJryy}biimRYYr]s  <JJryy}biimRYYr]3s  < JJryyR "))B"3RYYr25F  &r(   zscatter3d_linewidth.pngc            	      s    \         P                  ! 4       p V P                  R R7      pVP                  \        P
                  ! ^
4      \        P
                  ! ^
4      \        P
                  ! ^
4      R\        P
                  ! ^
4      R7       R# )r*   r+   r   )r#  r  N)r;   r<   r=   r%  r   r   r?   rA   r&   test_scatter3d_linewidthr+    s[    
**,C	D	)B JJryy}biimRYYr]RYYr]  4r(   c           	      s   VP                  R R7      pVP                  \        P                  ! ^
4      \        P                  ! ^
4      \        P                  ! ^
4      RR7      pVP	                  \        P                  ! ^
4      4       V P                  R R7      pVP                  \        P                  ! ^
4      \        P                  ! ^
4      \        P                  ! ^
4      R\        P                  ! ^
4      R7       R# )r*   r+   r   r#  )r#  
linewidthsN)r=   r%  r   r   set_linewidthsr4   r3   r   r   r      &&   r&   %test_scatter3d_linewidth_modificationr1    s     ""d"3G		"ryy}biim" 	 	$ARYYr]#  D 1F
NN299R="))B-2s iim  -r(   c                 s   VP                  R R7      pVP                  \        P                  ! ^
4      \        P                  ! ^
4      \        P                  ! ^
4      RR7      pVP	                  R4       VP                  R4       VP                  RR.^,          4       VP                  R4       VP                  \        P                  ! ^
^K4      4       VP                  ^4       V P                  R R7      pVP                  \        P                  ! ^
4      \        P                  ! ^
4      \        P                  ! ^
4      RRRRR.^,          R^K^R	7
       R
# )r*   r+   r   r,  C1C2333333?ffffff?F)r#  r(  r)  r   
depthshader   r-  N)r=   r%  r   r   set_facecolorset_edgecolor	set_alphaset_depthshadeZ	set_sizesfullr.  r/  r0  r&   test_scatter3d_modificationr<    s    ""d"3G		"ryy}biim" 	 	$AOODOODKKc
QUKKB Q  D 1F
NN299R="))B-2s!T#sa#ra  9r(   r6  c                s   \         P                  R,          w  r4\         P                  ! VP                  4      P	                  VP
                  4      p\         P                  ! VP
                  ^4      p^dVR&   ^dVR&   \         P                  ! VP
                  R4      pRVR&   RVR&   RVR&   \         P                  ! VP
                  R4      pRVR&   RVR&   RVR&   \         P                  ! VP
                  ^4      p	^V	R&   ^V	R&   R	 WCWVWxV	3 4       w  rCrVrxp	V P                  R
R7      p
R WgW3 4       p\        P                  ! V!   F  w  rrWl8g  W}8g  ,          W8g  ,          W8g  ,          p\         P                  P                  VV\        R7      p\         P                  ! V\        VP                  ( 4      4      pV
P!                  WCVWW^VR7	       K  	  VP                  R
R7      pVP!                  WCWVWxV	^VR7	       R# )z1Test that marker properties are correctly sorted.C0r2  r3  ZC3ZC4ZC5ZC6ZC7c              3   sB   "   T F  pVP                  4       x  K  	  R # 5iN)rU   Z.0a   & r&   	<genexpr>)test_scatter3d_sorting.<locals>.<genexpr>  s      :EA 	
		Es   r*   r+   c              3   sN   "   T F  p\         P                  ! V4      x  K  	  R # 5ir>  )r   Zuniquer?  rA  r&   rB  rC    s     N"MQBIIaLL"Ms   #%Zdtype)r   fceclwr   r6  N)Nr   NrH  )r    Nr   rI  )rb   Nr   rJ  )Nrc   NrK  )r   NN:Nrg   N)rL  rL  )rb   rc   NrM  )rc   	   NrM  )rN  rN  )r   mgridr   sizereshapeshaper;  r=   r   r   maZmasked_arrayfloatrepeatr   maskr%  )r4   r3   r6  rO   rN   rP   Zsizes
facecolors
edgecolorsr-  r   Zsetsr   rE  rF  rG  Zsubsetr   s   &&&               r&   test_scatter3d_sortingrZ    s    
 88HDA
		!&&!!!''*AGGAGGR EE*E*$'JJvJvJv$'JJxJxJx!$JJzJz:**E:6A!JJ
   D 1FN5j"MND"**D1rZ  	 ##AvU#; YYr3|,-qVqBQ", 	 	. 2$ ""d"3GOOA!!z  Cr(   r   c           
     sd   R	^.p^R	.p^ ^ .pRR.pV P                  RR7      pVP                  W4VRVR7       VP                  ^ V^ R7       VP                  RR7      pVP                  VRRR	1,          VRRR	1,          VRRR	1,          RVRRR	1,          R7       VP                  ^ V^ R7       R# )
z
Test that the draw order does not depend on the data point order.

For the given viewing angle at azim=-50, the yellow marker should be in
front. For azim=130, the blue marker should be in front.
r   rO   r*   r+     r   r   r}   Nra   )r=   r%  r   r3   r4   r   rN   rO   rP   r   r"   s   &&&     r&   $test_marker_draw_order_data_reversedr^    s     
QA	
BA	
AA#JE					.BJJqQ$%J(LLadL+					-BJJq2w$B$4R4DE$B$KJ@LLadL+r(   c           
     sx   ^pR	^.p^R	.p^ ^ .pRR.pV P                  RR7      pVP                  4        VP                  W4VRVR7       VP                  ^ V^ R7       VP                  RR7      pVP                  4        VP                  W4VRVRRR	1,          R7       VP                  ^ V^,
          ^ R7       R# )
z
Test that the draw order changes with the direction.

If we rotate *azim* by 180 degrees and exchange the colors, the plot
plot should look the same again.
r   rO   r*   r+   r[  r\  r}   Nra   )r=   set_axis_offr%  r   r]     &&      r&   #test_marker_draw_order_view_rotatedra  2  s     D	QA	
BA	
AA#JE					.BOOJJqQ$%J(LLadL+					-BOOJJqQ$%"+J.LLadSjqL1r(   zplot_3d_from_2d.pngg~jt?c                  s    \         P                  ! 4       p V P                  R R7      p\        P                  ! ^ ^4      p\        P                  ! ^^
4      pVP                  W#^ RR7       VP                  W#^ RR7       R# )r*   r+   rN   r   r   rO   N)r;   r<   r=   r   r   r   )r@   r"   r   r          r&   test_plot_3d_from_2drd  J  s`    
**,C	D	)B	1aB	1b	BGGBqsG#GGBqsG#r(   zfill_between_quad.pngc                  sv   \         P                  ! 4       p V P                  R R7      p\        P                  ! ^ ^\        P
                  ,          ^24      p\        P                  ! V4      p\        P                  ! V4      pR\        P                  ! ^V,          4      ,          pR\        P                  ! V4      ,          pR\        P                  ! V4      ,          p^pV\        P
                  ^,          8  V^\        P
                  ,          ^,          8  ,          p	VP                  W4WVWxV	RRRR7
       R# )	r*   r+   r   333333?rZ   r   k)wheremoder   r)  N)	r;   r<   r=   r   r   r   r   r   fill_between)
r@   r"   r   x1y1z1x2y2z2rg  
             r&   test_fill_between_quadrq  T  s    
**,C	D	)BKK1RUU7B'E	B	B	rvva%i 	 B	rvve}	B	rvve}	B	
BRUU1W_255!23E OOBBBfC3  Hr(   zfill_between_polygon.pngc                  s   \         P                  ! 4       p V P                  R R7      p\        P                  ! ^ ^\        P
                  ,          ^24      pT;r4^ ;rV\        P                  ! V4      pV^,           pV\        P
                  ^,          8  V^\        P
                  ,          ^,          8  ,          p	VP                  W5WtWhV	RRR7	       R# )r*   r+   rZ   rf  )rg  rh  r)  N)r;   r<   r=   r   r   r   r   ri  )
r@   r"   r   rj  rm  rk  rn  rl  ro  rg  rp  r&   test_fill_between_polygonrr  k  s    
**,C	D	)BKK1RUU7B'EOBKB	B	aBRUU1W_255!23E OOBBBf  =r(   zsurface3d.pngc                  s    R \         P                  R&   \         P                  ! 4       p V P                  RR7      p\        P
                  ! R^R4      p\        P
                  ! R^R4      p\        P                  ! W#4      w  r#\        P                  ! W#4      p\        P                  ! V4      pVP                  W#V^(^(\        P                  ^ R R7      pR\         P                  R&   VP                  RR4       V P                  VR	^R
7       R# )Fzpcolormesh.snapr*   r+   r   )r  r  r   rG  r  Tr   )\(?r   )ZshrinkZaspectNr  )\()r;   r   r<   r=   r   r   r   r  r   r  r	   r   r   colorbar)r@   r"   r   r   r  r   ZsurfrX   r&   test_surface3drv  ~  s     ',CLL"#
**,C	D	)B
		"aA
		"aA;;qDA
A
q	A??12br{{U  4D(,CLL$%KKtLLc!L,r(   z(surface3d_label_offset_tick_position.pngc            	      s|   R \         P                  R&   \         P                  ! 4       P                  RR7      p \        P
                  ^ ^\        P                  ,          R1^ ^\        P                  ,          R13,          w  r\        P                  ! \        P                  ! \        P                  ! V4      \        P                  ! V4      ,           4      4      pV P                  VR,          VR,          VR,          R^^R	7       V P                  R
4       V P                  R4       V P                  R4       R# )Tr   r*   r+   r   g     j@g    .Ag    חAZautumn)r   cstriderstridezX labelzY labelzZ labelN)r;   r   r<   r=   r   rP  r   sqrtr   r   r  ru   rv   rw   )r"   rN   rO   rP   rc  r&   )test_surface3d_label_offset_tick_positionrz    s    (,CLL$%		!	!T	!	2B88Aa"%%i$aBEE	$&667DA
rvvay266!9,-.AOOAGQWa#gHaQROSMM)MM)MM)r(   zsurface3d_shaded.pngc                  s   \         P                  ! 4       p V P                  R R7      p\        P                  ! R	^R4      p\        P                  ! R	^R4      p\        P
                  ! W#4      w  r#\        P                  ! V^,          V^,          ,           4      p\        P                  ! V4      pVP                  W#V^^. R
O^RR7       R\         P                  R&   VP                  RR4       R# )r*   r+   r   F)rx  rw  r   rG  r  Tr   rs  Nr  )r   rb   r   rt  )r;   r<   r=   r   r   r   ry  r   r  r   r   )r@   r"   r   r   r  r   r   r&   test_surface3d_shadedr{    s    
**,C	D	)B
		"aA
		"aA;;qDA
Qa A
q	AOOA!Q)aU  D(,CLL$%KKtr(   zsurface3d_masked.pngc                  s*   \         P                  ! 4       p V P                  R R7      p. ROp. ROp\        P                  ! W#4      w  r#\        P
                  ! . RO. R	O. R
O. RO. RO. RO. RO. RO.4      p\        P                  P                  V^ 4      p\        P                  ! VP                  4       VP                  4       R7      p\        P                  R,          ! V! V4      4      pVP                  W#WWR7       VP                  ^R^ 4       R# )r*   r+   )r   r   ZplasmarX  N)rb   r   rf   rg   rc   r      r   rO  r   rq   )rb   r   rf   rg   rc   r   r}  r   )ra   r    r    r    r    r    r    r    r    r    r    )ra   rb   r   rf   rg   rg   rg   rf   r   rb   rb   )ra         rg   rc   r   r   r   rc   rg   rf   r~  )ra   r~  r}  r   rq      rq   r   r}  r~  r~  )ra   r~  r   rO  r      r   rO  r   r}  r~  )ra   r~  r~  r  r  r   r  r  rq   r~  r~  )ra   r~  r~  r~     i   r  r   i   r~  r~  )ra   r~  r~  r~  r~  i   i   i   r~  r~  r~  r   )r;   r<   r=   r   r   r   rT  masked_lessr   	Normalizer   r   r   r   r  r   )r@   r"   rN   rO   ZmatrixrP   normr
              r&   test_surface3d_maskedr    s    
**,C	D	)B+A A;;qDAXX..276<=?		
F 	&!$A!%%'8D]]8$T!W-FOOA!O/LLS!r(   c                 s   \         P                  ! ^ ^
^d4      p\         P                  ! ^ ^
^d4      p\         P                  ! V4      \         P                  ! V4      ,          pV^ 8  p\         P                  P                  WER7      pV P                  RR7      pVP                  W#V4       VP                  W#V4       \         P                  ;W%&   ;W5&   WE&   VP                  RR7      pVP                  W#V4       VP                  W#V4       R# )r    )rW  r*   r+   N)
r   r   r   r   rT  r   r=   r%  r   nan)	r3   r4   rN   rO   rP   rW  Zz_maskedr   r   	   &&       r&   test_plot_scatter_masksr    s    
Ar3A
Ar3A
q	BFF1IAq5Duu{{1{(H""d"3GOOA(#LLx "$&&(AG(ag  D 1F
NN1
KKar(   c                 s,   \         P                  ! \         P                  ! ^4      \         P                  ! ^4      4      w  r#W#,           pV P                  RR7      pVP	                  W#VRR7       VP                  RR7      pVP	                  W#V4       R# )rc   r*   r+   Nr|  )r   r   r   r=   r  )r3   r4   rN   rO   rP   r   r      &&     r&   test_plot_surface_None_argr    sv    ;;ryy|RYYq\2DA	A""d"3GqT2  D 1F
a r(   zsurface3d_masked_strides.pngc                  s2   \         P                  ! 4       p V P                  R R7      p\        P                  RR^1RR^13,          w  r#\        P
                  P                  W#,          ^4      pVP                  W#V^^R7       VP                  ^<R^ 4       R# )r*   r+   gffffff@rx  rw  Ni)	r;   r<   r=   r   rP  rT  r  r  r   r&  rn   r&   test_surface3d_masked_stridesr    sz    
**,C	D	)B88Bs1HbQh&'DA
!%#AOOA!QO2LLS!r(   z
text3d.pngc                  s.   \         P                  ! 4       p V P                  R R7      pRpRpRpRp\        W#WE4       F$  w  rgrRWxW3,          p
VP	                  WxWV4       K&  	  VP	                  ^^^RRR7       VP                  RRRVP                  R	7       R
\         P                  R&   VP                  ^ ^
4       VP                  ^ ^
4       VP                  ^ ^
4       VP                  R4       VP                  R4       VP                  R4       R# )r*   r+   Nz(%d, %d, %d), dir=%sr   r   ry   gffffff?z2D Text)	transformTr   zX axiszY axiszZ axisNrN   rO   rP   rb   rb   r    rd   r   r   rg   rO  r}  r   r   rg   r   r}  r   r   rg   r   rc   r   rb   r}  )r;   r<   r=   r!   r!  Ztext2DZ	transAxesr   
set_xlim3d
set_ylim3dr  ru   rv   rw   )r@   r"   zdirsr   r   r   r   rN   rO   rP   rt                 r&   test_text3dr    s    
**,C	D	)B7E	B	B	BU/&!8
a% 0 GGAq!U%G(IIdD)r||I<(,CLL$%MM!RMM!RMM!RMM(MM(MM(r(   c                 s:   RpRpR	pR
pVP                  RR7      pVP                  ^ ^
4       VP                  ^ ^
4       VP                  ^ ^
4       \	        W#WE4       F;  w  rxrVP                  ^ ^ ^ RV RV	 RV
 RV 24      pVP                  WV
3VR7       K=  	  V P                  RR7      pVP                  ^ ^
4       VP                  ^ ^
4       VP                  ^ ^
4       \	        W#WE4       F'  w  rxrVP                  WV
RV RV	 RV
 RV 2VR7       K)  	  R # )Nr*   r+   Z(z, z), dir=)r   r  r  r  r  )r=   r  r  r  r!   r!  Zset_position_3d)r4   r3   r  r   r   r   r   r   rN   rO   rP   r  r   s   &&           r&   test_text3d_modificationr  
  s;    8E	B	B	B""d"3Gq"q"q"U/LLAqAaS1#Rs'$"@A	1)$/ 0   D 1F
a
a
aU/A!q2aS1#WTF;$G 0r(   ztrisurf3d.pnggZd;?c                  s    ^$p ^p\         P                  ! RRV4      p\         P                  ! ^ ^\         P                  ,          V RR7      p\         P                  ! VR\         P                  3,          V^R7      pVR;;,          \         P                  V ,          ,          uu&   \         P
                  ! ^ V\         P                  ! V4      ,          P                  4       4      p\         P
                  ! ^ V\         P                  ! V4      ,          P                  4       4      p\         P                  ! V) V,          4      p\        P                  ! 4       pVP                  RR7      pVP                  WEV\        P                  R	R
7       R# )$         ?      ?FZendpoint.rJ   r*   r+   皙?)r   r  NNNNrJ  )r   r   r   rV  newaxisappendr   rU   r   r;   r<   r=   plot_trisurfr	   jet	Zn_anglesZn_radiiZradiiZanglesrN   rO   rP   r@   r"   r  r&   test_trisurf3dr  #  s   HGKKsG,E[[AbeeGX>FYYvc2::o.a@F
7OruuX~%O
		!eBFF6N*3356A
		!eBFF6N*3356A
r!tA
**,C	D	)BOOA!"&&CO8r(   ztrisurf3d_shaded.pngQ?c                  s   ^$p ^p\         P                  ! RRV4      p\         P                  ! ^ ^\         P                  ,          V RR7      p\         P                  ! VR\         P                  3,          V^R7      pVR;;,          \         P                  V ,          ,          uu&   \         P
                  ! ^ V\         P                  ! V4      ,          P                  4       4      p\         P
                  ! ^ V\         P                  ! V4      ,          P                  4       4      p\         P                  ! V) V,          4      p\        P                  ! 4       pVP                  RR7      pVP                  WEV. ROR	R
7       R# )r  r  r  Fr  .r  r*   r+   r  )r   r  Nr  )rb   r   r    )r   r   r   rV  r  r  r   rU   r   r;   r<   r=   r  r  r  r&   test_trisurf3d_shadedr  5  s    HGKKsG,E[[AbeeGX>FYYvc2::o.a@F
7OruuX~%O
		!eBFF6N*3356A
		!eBFF6N*3356A
r!tA
**,C	D	)BOOA!;#O>r(   zwireframe3d.pngc                  s    \         P                  ! 4       p V P                  R R7      p\        P                  ! R4      w  r#pVP                  W#V^^R7       R# r*   r+   ry   )r  r  Nr;   r<   r=   r   r   plot_wireframer   rn   r&   test_wireframe3dr  G  sH    
**,C	D	)B""4(GA!aAb4r(   zwireframe3dzerocstride.pngc                  s    \         P                  ! 4       p V P                  R R7      p\        P                  ! R4      w  r#pVP                  W#V^^ R7       R# r  r  r   rn   r&   test_wireframe3dzerocstrider  O  sH    
**,C	D	)B""4(GA!aAb3r(   zwireframe3dzerorstride.pngc                  s    \         P                  ! 4       p V P                  R R7      p\        P                  ! R4      w  r#pVP                  W#V^ ^
R7       R# r*   r+   ry   r  Nr  r   rn   r&   test_wireframe3dzerorstrider  W  sH    
**,C	D	)B""4(GA!aAq"5r(   c            
      s.   \         P                  ! 4       p V P                  R R7      p\        P                  ! R4      w  r#p\
        P                  ! \        4      ;_uu_ 4        VP                  W#V^ ^ R7       RRR4       R#   + '       g   i     R# ; ir  )	r;   r<   r=   r   r   r	  r
  
ValueErrorr  r   rn   r&    test_wireframe3dzerostrideraisesr  _  sf    
**,C	D	)B""4(GA!	z	"	"
!1a8 
#	"	"	"s   #BB	c            
      s   \         P                  ! 4       p V P                  R R7      p\        P                  ! R4      w  r#p\
        P                  ! \        4      ;_uu_ 4        VP                  W#V^
^2R7       RRR4       \
        P                  ! \        4      ;_uu_ 4        VP                  W#V^2^
R7       RRR4       R#   + '       g   i     LR; i  + '       g   i     R# ; i)r*   r+   ry   )rx  r  N)rw  r  )
r;   r<   r=   r   r   r	  r
  r  r  r  r   rn   r&   test_mixedsamplesraisesr  g  s    
**,C	D	)B""4(GA!	z	"	"
!2b9 
#	z	"	"
aB7 
#	" 
#	"	"	"	"s   #C#CC	C'	zquiver3d.pngg~jth?c                  s   R \         P                  R&   \         P                  ! 4       p V P                  RR7      p. ROp. R	Op\	        \        W#4      4       Fk  w  pw  rV\        P                  ! R
R.R
R.R
R.4      w  rxp	V) p
V) pV	) pV	^V,          ,          p	VP                  WxWW^WVR7	       VP                  WxWR7       Km  	  VP                  R^4       VP                  R^4       VP                  R^4       R# )Tr   r*   r+   r   )r   pivotr   r   N)tipmiddleZtail)ztab:bluez
tab:orangez	tab:green      ira   )r;   r   r<   r=   rh   r!   r   r   quiverr%  r   r   r   )r@   r"   Zpivotsr
   rm   r  r   rN   rO   rP   uvw                r&   test_quiver3dr  r  s    (,CLL$%
**,C	D	)B&F4F&s6':;>E++tSkD#;sDaBBB	QU

		!a1E	G


1
( < KKAKKAKKAr(   c                 s    VP                  R R7       . ;p;p;p;p;rgV P                  R R7      pVP                  W#WEWgRRRR7	       R# )r*   r+   r   r  Tr   r  Z	normalizeN)r=   r  )	r3   r4   rN   rO   rP   r  r  r  r"   r  r&   test_quiver3d_emptyr    sZ    4(AAA					.BIIaA!s%4IHr(   zquiver3d_masked.pngc                  s   \         P                  ! 4       p V P                  R R7      p\        P                  RRR1RRR1RRR13,          w  r#p\        P
                  ! \        P                  V,          4      \        P                  ! \        P                  V,          4      ,          \        P                  ! \        P                  V,          4      ,          p\        P                  ! \        P                  V,          4      ) \        P
                  ! \        P                  V,          4      ,          \        P                  ! \        P                  V,          4      ,          pR\        P                  ! \        P                  V,          4      ,          \        P                  ! \        P                  V,          4      ,          \        P
                  ! \        P                  V,          4      ,          p\        P                  P                  RV8  VR8  ,          VRR7      p\        P                  P                  RV8  VR	8  ,          VRR7      pVP                  W#WEWgRR
RR7	       R# )r*   r+   r   y              $@re  y              @r   F)r   r5  r  Tr  Nra   g>,p ?gٿ)r;   r<   r=   r   rP  r   r   r   rT  Zmasked_wherer  )r@   r"   rN   rO   rP   r  r  r  r  r&   test_quiver3d_maskedr    s   
**,C	D	)B hhr#cz2c#:r#by89GA!
ruuqyBFF25519--ruuqy0AAA			RVVBEEAI..	1BBARVVBEEAI&&	)::RVVBEEAI=NNA
D1HS115AA
C!GC0!%@AIIaA!s%4IHr(   zquiver3d_colorcoded.pngc            
      sl   \         P                  ! 4       p V P                  R R7      p\        P                  ! ^
4      ;p;p;rE\        P
                  ! R4      ;rg\         P                  P                  WwP                  4       ,          4      pVP                  W#WdWuVR7       VP                  ^ ^
4       R# )r*   r+         $@)r
   N)r;   r<   r=   r   zerosr   r	   ZRedsr   r  r   )	r@   r"   rN   rO   r   r   rP   r   r   r  r&   test_quiver3d_colorcodedr    s    
**,C	D	)Bhhrl"A""BYYs^AFFKK668$EIIaA2%I0KK2r(   c                  s   \         P                  ! 4       p V P                  R R7      p\        R4      pVP	                  V4       \
        P                  ! V4       VP                  R4       V P                  P                  4        R# )r*   r+   Nr    r    )r  r  r  rb   )
r;   r<   r=   r   	add_patchr   Zpatch_2d_to_3dr7  r   r   )r@   r"   ZcirclerK   r&   test_patch_modificationr    s_    
**,C	D	)BF^FLL	 
+, JJOOr(   c           	      sV   \        RR4      p\        RR4      p\        P                  ! . RO. RO.4      p\        P                  ! W#.^R7      pV P                  RR7      pVP                  V4       VP                  R4       VP                  V4       VP                  R4       VP                  R4       \        RR4      p\        RR4      p\        P                  ! . RO. RO.4      p\        P                  ! W#.^RVRRR	7      pVP                  RR7      pVP                  V4       R
# )r    ry   r  )r-  r*   r+   r3  r5  F)r-  r)  r(  r   r6  Nr  )r   r   )r  r   r  r  )r   r  r  r   )r   r   r   r   ZPatch3DCollectionr=   add_collection3dr8  r7  r9  r:  )r3   r4   Zpatch1Zpatch2rX  r   r   r   r`  r&   "test_patch_collection_modificationr    s    FD!FJ%F,.@ABJ 0Q?A""d"3GQOODOOJKKU FD!FJ%F,.@ABJ 0Q*.*&)e	=A   D 1F
Ar(   c                  s   . RO. RO. RO. RO.p \         P                  ! \        RR7      ;_uu_ 4        \        P                  ! V 4       RRR4       \
        P                  ! V \        R7      p \         P                  ! \        RR7      ;_uu_ 4        \        P                  ! V 4       RRR4       R#   + '       g   i     Lq; i  + '       g   i     R# ; i)	r    zlist of \(N, 3\) array-liker  NrD  r    r    rb   r    rb   rb   r    rb   r    r   )r	  r
  r  r   Poly3DCollectionr   r   rU  )polyr  r&   &test_poly3dcollection_verts_validationr    s    y)Y7D	z)G	H	Ht$ 
I 88D&D	z)G	H	Ht$ 
I	H	 
I	H 
I	H	Hs   B3C3C	C	zpoly3dcollection_closed.pngc                  s   \         P                  ! 4       p V P                  R R7      p\        P                  ! . RO. R	O. R
O.\
        4      p\        P                  ! . R	O. RO. RO.\
        4      p\        P                  ! V.^RRRR7      p\        P                  ! V.^RRRR7      pVP                  VRR7       VP                  VRR7       R# )r*   r+   rf  Tr-  r)  r(  closedFZautolimNr  r  r   rd   r  )r   r   rb   r   )rb   r   r   r   )	r;   r<   r=   r   r   rU  r   r  r  r@   r"   Zpoly1Zpoly2Zc1Zc2r   r&   test_poly3dcollection_closedr    s    
**,C	D	)BHHiI6>EHHiI6>E			A*<T
KB			A*<U
LBE*E*r(   c                  s   \        . 4      p \        P                  ! V 4       \        P                  ! \        R R7      R7      w  rVP                  V 4       V P                  4       pVP                  P                  4        R# )r*   r+   r-   N)
r   r   Zpoly_collection_2d_to_3dr;   r/   r0   
add_artistZdo_3d_projectionr   r   )r  r@   r"   Zminzrc  r&   #test_poly_collection_2d_to_3d_emptyr    s[    "D	""4( lldd&;<GCMM$  "D JJOOr(   zpoly3dcollection_alpha.pngc                  s$   \         P                  ! 4       p V P                  R R7      p\        P                  ! . R
O. RO. RO.\
        4      p\        P                  ! . RO. RO. RO.\
        4      p\        P                  ! V.^RRRR7      pVP                  R4       \        P                  ! V.^RR7      pVP                  R4       VP                  R4       VP                  R4       VP                  VRR7       VP                  VRR7       R	# )r*   r+   rf  r   Tr  F)r-  r  r  Nr  r  r   rd   r  )r   r   rb   )rb   r   r   )r;   r<   r=   r   r   rU  r   r  r9  r7  r8  r  r  r   r&   test_poly3dcollection_alphar     s    
**,C	D	)BHHiI6>EHHiI6>E			A*7
FBLL			Ae	DB]#SLLE*E*r(   zadd_collection3d_zs_array.pngc                  s   \         P                  ! R\         P                  ,          ^\         P                  ,          ^d4      p \         P                  ! R^^d4      pV^,          ^,           pV\         P                  ! V 4      ,          pV\         P                  ! V 4      ,          p\         P
                  ! W4V.4      P                  R^^4      p\         P                  ! VRR VR,          .^R7      p\        P                  ! 4       pVP                  RR7      p\        P                  ! ^ ^\         P                  ,          4      p	\        VR,          RV	R7      p
V
P                  \         P                  ! V ^\         P                  ,          4      4       VP                  WR,          R7      pR	\        P                   R
&   VP#                  R^4       VP%                  R^4       VP'                  R^4       R# )rg   Nrb   NNr  r*   r+   twilightr   r  r   Tr   r   r   ra   )r  r  :Nr   N)r  r  r   r  )r   r   r   r   r   column_stackrR  concatenater;   r<   r=   r  r   	set_arrayZmodr  r   r   r   r   r   rP   r$   rN   rO   ZpointsZsegmentsr@   r"   r  lcrI   r   r&   test_add_collection3d_zs_arrayr    s_   KKRUU
AIs3E
B3A	1qA	BFF5MA	BFF5MA__aAY'//Aq9F~~vcr{F2J7a@H
**,C	D	)B==AbeeG$D	*$	GBLLqw'(rw&78D )-CLL$%KKAKKAKKAr(   zadd_collection3d_zs_scalar.pngc                  s*   \         P                  ! ^ ^\         P                  ,          ^d4      p ^pV^,          ^,           pV\         P                  ! V 4      ,          pV\         P                  ! V 4      ,          p\         P
                  ! W4.4      P                  R^^4      p\         P                  ! VRR VR,          .^R7      p\        P                  ! 4       pVP                  RR7      p\        P                  ! ^ ^\         P                  ,          4      p	\        VRV	R7      p
V
P                  V 4       VP                  WR7      pR	\        P                  R
&   VP!                  R^4       VP#                  R^4       VP%                  ^ ^4       R# )r    Nr  r  r*   r+   r  r  r  Tr   ra   r  r   )r   r   r   r   r   r  rR  r  r;   r<   r=   r  r   r  r  r   r   r   r   r  r   r&   test_add_collection3d_zs_scalarr  0  s+   KK1ruu9c*E	A	1qA	BFF5MA	BFF5MA__aV$,,RA6F~~vcr{F2J7a@H
**,C	D	)B==AbeeG$D	z	=BLLr(D )-CLL$%KKAKKAKK1r(   c                  s    \         P                  ! 4       p V P                  R R7      pRR.RR.RR..p\        P                  ! V4      pVP                  V4       R# )	r*   r+   Nr   )rb   rg   r   rb   rb   rf   )r   r    r   rb   r    rg   )rb   rg   rc   )r;   r<   r=   r   ZLine3DCollectionr  )r@   r"   linesr  rc  r&   !test_line3dCollection_autoscalingr  K  s\    
**,C	D	)B###%E 
			&Br(   c                  s    \         P                  ! 4       p V P                  R R7      p\        P                  ! . RO. RO. RO.4      p\
        P                  ! V.4      pVP                  V4       R# )r*   r+   Nr   r  r  )r;   r<   r=   r   r   r   r  r  )r@   r"   r  Zcolrc  r&   !test_poly3dCollection_autoscalingr  Z  sR    
**,C	D	)B88Y	956D

 
 $
(Cr(   zaxes3d_labelpad.pngc                  s   \         P                  ! 4       p V P                  \        V 4      4      pVP	                  R ^
R7       VP                  R4       VP                  R^R7       ^VP                  n        RVP                  n        \        VP                  P                  4       4       F9  w  r#VP                  VP                  4       ^,           V^,          ,
          4       K;  	  R# )zX LABEL)labelpadzY LABELzZ LABELNr   )r;   r<   Zadd_axesr   ru   rv   rw   rG   r  rH   rh   get_major_ticksZset_padZget_pad)r@   r"   rm   tickrc  r&   test_axes3d_labelpadr  e  s     **,C	fSk	"B MM)bM)MM)MM)bM) BHHBHH RXX5578T\\^a'!a%/0 9r(   zaxes3d_cla.pngc                  s    \         P                  ! 4       p V P                  ^^^RR7      pVP                  4        VP	                  4        R# rb   r*   r+   N)r;   r<   r=   r_  clar?   rA   r&   test_axes3d_clar  |  s8     **,C	AqT	2BOOFFHr(   zaxes3d_rotated.pngc                  s    \         P                  ! 4       p V P                  ^^^RR7      pVP                  ^Z^-^ 4       R# r  )r;   r<   r=   r   r?   rA   r&   test_axes3d_rotatedr    s5     **,C	AqT	2BLLRr(   c                  s   \         P                  ! R ^
^dR7      p \         P                  ! R ^
^dR7      p\         P                  ! W4      w  r#\         P                  P	                  ^d4      p\
        P                  ! RR7      pVP                  ^^^RR7      p\        P                  ! \        4      ;_uu_ 4        VP                  W#V4       RRR4       R#   + '       g   i     R# ; i)r   )Znumr   r*   r+   N)i   r   )r   r   r   r   randnr;   r<   r=   r	  r
  r  r  )rN   rO   r   r   rP   r@   r"   rX   r&   test_plotsurface_1d_raisesr    s    
C%A
C%A;;qDA
		A
**W
%C	AqT	2B	z	"	"
a  
#	"	"	"s   8CC&	c                  sX   \         P                  ! . RO4      p \         P                  ! . RO4      p\         P                  ! . RO4      p^ p\        P                  ! WW#4      w  rEp\        P                  ! WEW`4      p\        P
                  ! ^dR^4      p\         P                  ! W4      p	V	# )r   )r   ii  )d   r  r  r  r   )r   r   r   
_view_axes_view_transformation_uvwZ_persp_transformationdot)
Er  Vr   r  r  r  viewMZperspMMrp  r&   _test_proj_make_Mr    s    
$%A
!A
ADa.GA!++A!7E))#tQ7F
vAHr(   c                  s4   \        4       p \        P                  P                  V 4      p\        P                  ! . RO4      R,          p\        P                  ! . RO4      R,          p\        P                  ! . RO4      R,          p\
        P                  ! W#W@4      w  rVp\
        P                  ! WVWq4      w  rp
\        P                  P                  W4       \        P                  P                  W4       \        P                  P                  W4       R# )r         r@N
r    rb   rb   r    r    r    rb   rb   r    r    
r    r    rb   rb   r    r    r    rb   rb   r    
r    r    r    r    r    rb   rb   rb   rb   rb   )
r  r   ZlinalgZinvr   r   proj_transformZinv_transformr   Zassert_almost_equal)r  ZinvMr   r   r   txstystzsZixsZiysZizsr  r&   test_proj_transformr    s    A99==D	0	1E	9B	0	1E	9B	0	1E	9B))""8MCc((3=MCcJJ""3+JJ""3+JJ""3+r(   c                 sL   ^ V^ ^ .p^ ^ V^ .p^ ^ ^ V.p\         P                  ! WEW`4      w  rxp	\        Wx4      w  rrW3W3W3.p\        P                  ! V/ VB w  r\        V4      pVP                  V4       \        Wx. RO4       F  w  pppVP                  VVV4       K  	  W3# )r    )r   rN   rO   rP   )r   r  r!   r;   r/   r   Zadd_collectionr!  )r  r   argsr   r   r   r   r   r  r  r   r"   ZayZazr  r@   ZlinecrN   rO   r  s   &&*,                r&   _test_proj_draw_axesr    s    
Q1B
Q1B
Q1B))""8MCcMMA2Wqgw'EllD+F+GC5!Ees!561a
1a 7 7Nr(   zproj3d_axes_cube.pngc                  sP   \        4       p R P                  4       p\        P                  ! . R
O4      R,          p\        P                  ! . RO4      R,          p\        P                  ! . RO4      R,          p\        P
                  ! W#W@4      w  rVp\        V RR7      w  rV	P                  WVVR7       V	P                  WVRR7       \        WVV4       F  w  rpV	P                  WV4       K  	  R\        P                  R&   V	P                  RR4       V	P                  RR4       R	# )0 1 2 3 0 4 5 6 7 4r  i  r  r   r$   Tr   r  Nr  r  r  gɿ)r  splitr   r   r   r  r  r%  r   r!   r!  r;   r   r   r   )r  tsr   r   r   r   r  r  r@   r"   rN   rO   r  r  r&   test_proj_axes_cuber
    s    A		$	$	&B	0	1E	9B	0	1E	9B	0	1E	9B))""8MCc"1,GCJJs3JGGCGs$a
a % )-CLL$%KKcKKcr(   zproj3d_axes_cube_ortho.pngc                  s   \         P                  ! . R	O4      p \         P                  ! . R
O4      p\         P                  ! . RO4      p^ p\        P                  ! WW#4      w  rEp\        P                  ! WEW`4      p\        P
                  ! R^4      p\         P                  ! W4      p	RP                  4       p
\         P                  ! . RO4      ^d,          p\         P                  ! . RO4      ^d,          p\         P                  ! . RO4      ^d,          p\        P                  ! WW4      w  rp\        V	^R7      w  ppVP                  WRV,
          R7       VP                  WRR7       \        WV
4       F  w  pppVP                  VVV4       K  	  R\        P                  R&   VP!                  R^4       VP#                  R^4       R# )   r  r  r   r$   r  Tr   N)r  r  r  r   r  ra   r  r  r  i8)r   r   r   r  r  Z_ortho_transformationr  r  r  r  r%  r   r!   r!  r;   r   r   r   )r  r  r  r   r  r  r  r  ZorthoMr  r	  r   r   r   r   r  r  r@   r"   rN   rO   r  s                         r&   test_proj_axes_cube_orthor    sa   
!A
A
ADa.GA!++A!7E))"a0F
vA		$	$	&B	0	1C	7B	0	1C	7B	0	1C	7B))""8MCc"1,GCJJs3s7J#GGCGs$1a
1a % )-CLL$%KKcKKcr(   c                  s    ^d^xrR^dr2RRrT\         P                  ! WW#WE4      p\        P                  P	                  V. RO. RO. RO. RO.4       R# )	r  r   r  Nr   )ry   r    r    r  )r    g{Gzt?r    r   )r    r    r  ra   r    r    r    rb   )r   Zworld_transformationr   r   assert_allclose)r   r   r   r   r   r   r  rX   r&   
test_worldr    sP    c$s$c$##DDGAJJq 0 2 / , ./r(   c                  sp   \         P                  ! R R/R7      w  r^ Vn        VP                  ^ RRR7       VP	                  ^ ^.^ ^.^ ^.4       VP                  R4       VP                  R4       VP	                  ^ ^.^ ^.^ ^.4       VP                  RR	7       VP	                  ^ ^.^ ^.^ ^.4       R
# )r,   r*   r-   r   r  rN   rO   rP   FTrN   r  N)r;   r/   Z_view_marginmarginsr   Z	autoscaleZset_autoscalez_onr?   rA   r&   test_autoscaler    s    ll|T&:;GCBOJJbBJGGQFQFQF#LLGGQFQFQF#LLcLGGQFQFQF#r(   rJ   rN   rO   rP   rZ   c                 s   \         P                  ! 4       pVP                  R R7      p\        P                  ! ^d4      p\        P
                  ! R
R^d4      pVP                  WE4       \        VRV  R24      p\        VRV  R24      p\        VRV  R24      pVf   V! 4       MTp	V! RVR	7       VP                  P                  4        \        P                  P                  V! 4       R4       R# )r*   r+   r   Zget_autoscaleZ_onZset_ZlimZget_N)rZ   r   )r  r   )r;   r<   r=   r   r   r   r%  getattrr   r   r   assert_array_equal)
rJ   rZ   r@   r"   rN   rO   Zget_autoscale_onZset_limZget_limZ	post_auto
   &&        r&   test_unautoscaler    s     **,C	D	)B
		#A
D#s#AJJqr]4&#<=bDc*+GbDc*+G&*l "IKd#JJOOJJ!!')[9r(   c                 sx   Rp\        W3V4       F  w  r4VP                  RR7      p\        V4      ^,           p\        P                  ! ^ WF4      p\        P
                  ! V4      p\        P                  ! V4      p	VP                  WxV	R4       VP                  RRRR7       VP                  ^^^ 4       K  	  R# )r  r*   r+   rf  xlimylimzlimN)r   )r  rc   )
r!   r=   r   r   r   onesr  r   rV   r   )
r3   r4   Zxminsr@   r   r"   Znr   r   r   r  r&   test_cullingr  .  s    E(,e4	___-IM[[D$WWQZXXa[
C 
G'8
QQ 5r(   c                  s   \         P                  ! 4       p V P                  R R7      p\        P                  ! \
        4      ;_uu_ 4        VP                  R^ R7       RRR4       \        P                  ! \
        4      ;_uu_ 4        VP                  R^R7       RRR4       R#   + '       g   i     LP; i  + '       g   i     R# ; i)r*   r+   perspZfocal_lengthNr|   )r;   r<   r=   r	  r
  r  r   r?   rA   r&   test_axes3d_focal_length_checksr   =  s    
**,C	D	)B	z	"	"
q1 
#	z	"	"
q1 
#	" 
#	"	"	"	"s   
B&B9&B6	9C
	zaxes3d_focal_length.pngc                  s    \         P                  ! ^^RR/R7      w  rV^ ,          P                  R\        P                  R7       V^,          P                  RRR7       R# )rb   r,   r*   r-   r  r  333333?N)r;   r/   r   r   inf)r@   rW   rA   r&   test_axes3d_focal_lengthr#  F  sO     ||AqlD-ABHCFrvv6Ft4r(   zaxes3d_ortho.pngc                  r9   )r*   r+   r|   N)r;   r<   r=   r   r?   rA   r&   test_axes3d_orthor$  N  s+    
**,C	D	)BWr(   zaxes3d_isometric.pngc                  sL   ^ RI Hp Hp \        P                  ! \        RRRR7      R7      w  r#RpV ! \        P                  ! \        V! WDV4      4      4      ^4       F[  w  rV\        WV,
          4      P                  4       V^,          V^ ,          ,
          8X  g   K@  VP                  ! \        WV4      RR/  K]  	  VP                  \        P                  ! \        P                  ! R\        P                   ! ^4      ,          4      4      R^ R	7       VP#                  R
4       R# )r    )r   r   r*   r|   )r,   Z	proj_typeZ
box_aspectr-   r   rf  r  r}   TN)rg   rg   rg   )ra   rb   r  )r   r   r   r;   r/   r0   r   r   r   r   r   r    r!   r   ZdegreesZarctanry  r>   )r   r   r@   r"   r$   r   erX   r&   test_axes3d_isometricr&  U  s    /lld' GC
 	ARXXd71+;&<=qAqu:>>qtad{*IIs1y(C( B LLbjj2
?!;<3QLOGGDMr(   c                 s   V P                  R R7      p\        P                  ! ^ ^^4      p\        P                  ! ^ ^^4      p\        P                  ! W44      w  rVWV,           pVP	                  WVVRR^2^2RR7       VP                  RR.^ ^.RR.R^^RR	7       VP                  VP                  4       VP                  4       VP                  4       ^,           RR
7       VP                  VP                  4       VP                  4       VP                  4       ^,           ^ VP                  4       ,          ^ VP                  4       ,          ^ VP                  4       ,          ^,           ^ RR7       VP                  V^ ,          V^ ,          V^ ,          ^,           RRR7       VP                  RR^RRR
7       VP                  RRRR7       VP                  R R7      pVR8*  pWX,          P                  ^^4      pWh,          P                  ^^4      pWx,          P                  ^^4      pVP	                  WVVRR^2^2RR7       VP                  RR.^ ^.RR.R^^RR	7       VP                  VP                  4       VP                  4       VP                  4       ^,           RR
7       VP                  VP                  4       VP                  4       VP                  4       ^,           ^ VP                  4       ,          ^ VP                  4       ,          ^ VP                  4       ,          ^,           ^ RR7       VP                  V^ ,          V^ ,          V^ ,          ^,           RRR7       VP                  RRRR7       R# )r*   r+   r2  NT)r(  rY  r  r  
axlim_clipr         ?rf  )r   r  zorderr'  )r'  )Zarrow_length_ratior'  r3  )r   r'  g?Ztestr  F)r    r   )r    rb   )r    rc   )r=   r   r   r   r  r   r%  r   r  r!  rV   rR  )	r3   r4   r"   rN   rO   r   r   r   Zidxr  r&   test_axlim_clipr*  e  s    
				.B
Aq"A
Aq"A;;qDA	AOOA!tbT  ; GGS#JAc
1  ?JJqwwy!'')QWWY]tJDIIaggiAGGIM	k1QWWY;!'')a!"t  5 GGAaD!A$!qG>GGCaDG1FFvFF3 
				-B8C	r1A	r1A	r1AOOA!tbU  <GGS#JAc
1  @JJqwwy!'')QWWY]uJEIIaggiAGGIM	k1QWWY;!'')a!"u  6 GGAaD!A$!qG?FFvFF3r(   valuec                 s    W/p\         P                  ! 4       pVP                  R R7      p\        P                  ! \
        4      ;_uu_ 4        \        WP4      ! R/ VB  RRR4       R#   + '       g   i     R# ; i)r*   r+   N )r;   r<   r=   r	  r
  r  r  )settersider+  Zlimitr@   Zobjs   &&&   r&   test_invalid_axes_limitsr/    sT     ME
**,C
//T/
*C	z	"	"%u% 
#	"	"	"s   A))A:	c                   s   a  ] tR tRt o ]! R.RR7      R 4       t]! R.RR7      R 4       t]! R.RR7      R	 4       t]! R
.RR7      R 4       t]! R.RR7      R 4       t	]! R.RRRR7      R 4       t
R tRtV tR# )
TestVoxelsi  zvoxels-simple.pngr7   r8   c                s    \         P                  ! R R/R7      w  r\        P                  ! R4      w  r4pW48H  WE8H  ,          pVP	                  V4       R# )r,   r*   r-   N)rc   rg   rf   )r;   r/   r   indicesvoxels)selfr@   r"   rN   rO   rP   r2  s   &      r&   test_simpleZTestVoxels.test_simple  sC    ,,<*>?**Y'a&QV$
		&r(   zvoxels-edge-style.pngc                sn   \         P                  ! R R/R7      w  r\        P                  ! R4      w  r4pV^,
          ^,          V^,
          ^,          ,           VR,
          ^,          ,           R	8  pVP	                  V^RR7      pV\        VP                  4       4      ,          P                  R4       R# )
r,   r*   r-   r(  r2  )r-  r)  r3  N)rc   rc   rg   g](\@)r;   r/   r   r1  r2  r   Zkeysr8  )r3  r@   r"   rN   rO   rP   r2  r     &       r&   test_edge_styleZTestVoxels.test_edge_style  s    ,,<*>?**Y'aq51*Az)QsUQJ6&@IIfdI; 	
#affh-&&t,r(   zvoxels-named-colors.pngc                sl   \         P                  ! RR/R7      w  r\        P                  ! R
4      w  r4pW48H  WE8H  ,          pWcV,          V,          ^8  ( ,          p\        P                  ! R
R\        P
                  R7      pRWs^8  V^8  ,          &   RWsV,           ^
8  &   VP                  WgR7       R	# )z5Test with colors set to a 3D object array of strings.r,   r*   r-   r=  rD  z0.25Zcyanr|  Nr   r   r   )r;   r/   r   r1  r;  Zobject_r2  r3  r@   r"   rN   rO   rP   r2  r
   r5  r&   test_named_colorsZTestVoxels.test_named_colors  s     ,,<*>?**\*a&QV$EAIM**t2::>$*A!a% !%A|
		&	,r(   zvoxels-rgb-data.pngc                s    \         P                  ! RR/R7      w  r\        P                  ! R4      w  r4pW48H  WE8H  ,          p\        P                  ! R4      pV^	,          VR&   V^	,          VR	&   V^	,          VR
&   VP                  WgR7       R# )z5Test with colors set to a 4d float array of rgb data.r,   r*   r-   r|  Nr7  )r   r   r   rf   .r    .rb   .r   )r;   r/   r   r1  r  r2  r8  r5  r&   test_rgb_dataZTestVoxels.test_rgb_data  s|     ,,<*>?**\*a&QV$/*QvQvQv
		&	,r(   zvoxels-alpha.pngc                s^   \         P                  ! R R/R7      w  r\        P                  ! R4      w  r4pW48H  p\        P                  ! W4,
          4      ^8  pWg,          p\        P
                  ! R4      p	. ROW&   . ROW&   VP                  WR7      p
V
P                  4        F  w  rK  	  R# )	r,   r*   r-   r|  Nr7  )r   r   r   rg   )rb   r    r    r   )r    rb   r    r   )r;   r/   r   r1  r   r  r2  Zitems)r3  r@   r"   rN   rO   rP   Zv1Zv2r2  r
   r  Zcoordr  s   &            r&   
test_alphaZTestVoxels.test_alpha  s    ,,<*>?**\*aVVVAE]Q/*#
#
IIfI0 779KE49r(   zvoxels-xyz.png{Gz?F)rz   r   r   c                s   \         P                  ! R R/R7      w  rR p\        P                  ! R4      R,          w  rEpV! V4      pV! V4      pV! V4      p	VR,
          ^,          VR,
          ^,          ,           V	R,
          ^,          ,           R	8  p
\        P                  ! V
P
                  R
,           4      pW{R&   WR&   WR&   VP                  WEWjV\        P                  ! ^V,          R,
          ^ ^4      RR7       R# )r,   r*   r-   c                 s   Rp\        V P                  4       Fq  pW\        P                  R R ,           ,          W\        P                  R,          ,           ,          ,           R,          p V\        P                  R,          ,          pKs  	  V # )Nr  r  r  r,  ra   )r   Zndimr   Z	index_exp)rN   Zslrm   s   &  r&   	midpointsZ&TestVoxels.test_xyz.<locals>.midpoints  sk    B166]BLL"--.BLL,,-.145bll1o% # Hr(   g      0@r   )rX  rY  r  N)   rA  rA  r   )rf   r:  r;  r<  )r;   r/   r   r1  r  rS  r2  r   )r3  r@   r"   r@  r$   r   r   ZrcZgcZbcspherer
      &           r&   test_xyzZTestVoxels.test_xyz  s     ,,<*>?	 **\*T1aq\q\q\ s(Q"s(Q."s(Q>G &,,-.vvv 			!#WWQvX^Q: 	 	!r(   c           
     sh   \         P                  ! R4      w  rp\         P                  ! R4      p\        P                  ! RR/R7      w  rV\        4       \        RR7      3 FT  pVP                  ! V3/ VB  VP                  ! RRV/VB  VP                  ! WW43/ VB  VP                  ! WV3RV/VB  KV  	  \        P                  ! \        RR7      ;_uu_ 4        VP                  WW4VR	7       R
R
R
4       \        P                  ! \        RR7      ;_uu_ 4        VP                  W4       R
R
R
4       \        P                  ! \        RR7      ;_uu_ 4       pVP                  WAW#R7       R
R
R
4       R
#   + '       g   i     L; i  + '       g   i     Le; i  + '       g   i     R
# ; i)rf   r,   r*   r-   rf  )r)  filledr2  r  )rE  Nzkeyword argument 'x')rE  rN   rO   rP   re   )r   rf   rg   r,  )r   r1  r  r;   r/   r0   r2  r	  r
  	TypeErrorZAttributeError)	r3  rN   rO   rP   rE  r@   r"   ZkwZ	exec_infos	   &        r&   test_calling_conventionsZ#TestVoxels.test_calling_conventions  s:   **Y'a#,,<*>? 64#./BIIf##II*V*r*IIaA,,IIaA3f33	 0 ]]9H55IIaAfI5 6 ]]9H55IIaO 6 ]]>1GHHIIIVAI3 IH 65 65 IHHs$   E:FF :F
	F	 F1	r,  N)Z__name__Z
__module__Z__qualname__Z__firstlineno__mpl3d_image_comparisonr4  r6  r9  r=  r>  rD  rG  Z__static_attributes__Z__classdictcell__)Z__classdict__s   @r&   r0  r0    s     01A B 45WE- F- 67wG
- H
- 237C
- D
- /0@< A<" -. $%wH!H!@+ +r(   r0  c                  s   ^ ^.^^.^^.r!p ^^.^^	.^
^.rTp\         P                  ! 4       pVP                  RR7      pVP                  WV4      pV^ ,          p	\        P
                  P                  WV3V	P                  4       4       V	P                  W4V4       \        P
                  P                  W4V3V	P                  4       4       V	P                  V 4       V	P                  V4       V	P                  VRR7       \        P
                  P                  WV3V	P                  4       4       V	P                  ^ RR7       \        P
                  P                  W\        P                  ! V4      3V	P                  4       4       R# )r    r*   r+   rP   rb  N)r;   r<   r=   r   r   r   r  Zget_data_3dr  Z	set_xdataZ	set_ydataZset_3d_propertiesr   )
rN   rO   rP   rm  rn  ro  r@   r"   r  rI   rp  r&   test_line3d_set_get_data_3drI    s@   !fq!fq!f!AQ!Q"bBB
**,C	D	)BGGA!E8DJJ!!1)T-=-=-?@RR JJ!!22,0@0@0BCNN1NN1ac*JJ!!1)T-=-=-?@ac*JJ!!1q)9":D<L<L<NOr(   c                 s    V P                  R R7      pVP                  . RO. RO. RO4       VP                  4        VP                  R R7      pVP                  4        VP                  . RO. RO. RO4       R# )r*   r+   N)rb   rb   r   r   )rb   r   r   r   )rb   rb   rb   r   )r=   r   Zinvert_yaxisr2   r5   r&   test_invertedrJ  +  s^     
				.BGGNO];OO					-BOOGGNO];r(   c                  s    \         P                  ! R R/R7      w  rVP                  ^^ 4       VP                  ^^ 4       VP	                  ^^ 4       VP                  4        R# )r,   r*   r-   N)r;   r/   r   r   r   r  r?   rA   r&   test_inverted_clarK  7  sP     ll|T&:;GC
 KK1KK1KK1 FFHr(   c                  s   \         P                  ! 4       p \        V 4      pVP                  R RR7       VP                  RRR7       VP                  RRR7       V P                  P                  4        VP                  P                  4        F  pK  	  VP                  P                  4        F  pK  	  VP                  P                  4        F  pK  	  R# )rN   r   )rJ   r
   rO   rP   N)
r;   r<   r   Ztick_paramsr   r   rF   r  rG   rH   )r@   r"   r  rK   r&   test_ax3d_tickcolourrL  K  s    
**,C	BNNEN*NNEN*NNEN*JJOO((**((**((**r(   c                 s2   V P                  ^^RR/R7      pVP                   F  pVP                  RR4       K  	  \        V. RO4       F  w  rEV^ ,          P	                  VRR7       V^,          P	                  VRR7       V^,          P	                  V\
        P                  R,          '       * R	7       V^,          P	                  V\
        P                  R
,          '       * R7       V^,          P	                  V\
        P                  R,          '       * R7       K  	  R pVP                  ^^RR/R7      pVP                   F  pVP                  RR4       K  	  \        VR.R.R.. RO.4       EF  w  rGV! V^ ,          V4       F  pVP                  R4       K  	  V! V^,          V4       F  pVP                  R4       K  	  V! V^,          V4       F.  pVP                  \
        P                  R,          '       * 4       K0  	  V! V^,          V4       F.  pVP                  \
        P                  R
,          '       * 4       K0  	  V! V^,          V4       F.  pVP                  \
        P                  R,          '       * 4       K0  	  EK  	  R# )rg   r,   r*   r-   g    cAZplain)rJ   r   )rJ   Z	scilimitszaxes.formatter.useoffset)rJ   Z	useOffsetzaxes.formatter.use_locale)rJ   Z	useLocalezaxes.formatter.use_mathtext)rJ   ZuseMathTextc                 s^    V Uu. uF  p\        W4      P                  4       NK  	  up# u upi r>  )r  Zget_major_formatter)r"   namesnamer5   r&   get_formattersZ-test_ticklabel_format.<locals>.get_formattersn  s(    DIJED!557EJJJs   "*rF   rG   rH   FNg   @cA)rN   rO   rP   rS   )r   r   )rF   rG   rH   )r/   r   r   r!   Zticklabel_formatr   r   Zset_scientificZset_powerlimitsZset_useOffsetZset_useLocaleZset_useMathText)	r3   r4   rW   r"   ZrowrN  rO  rM  Zfmtr  r&   test_ticklabel_formatrP  \  sG   


AqlD-A

BChh
C" 56	AW 	  	&A 	  	*AS\\2L%M!M 	  	OAS\\2M%N!N 	  	PALL)FGG 	  	I 7K 

1a\4,@

AChh
C" 7)gY	3NO
 "#a&%0Cu% 1!#a&%0C( 1!#a&%0C#,,/I"JJK 1!#a&%0C#,,/J"KKL 1!#a&%0CLL!>??A 1r(   c                 sp   R p\         P                  ! \         P                  ! R^R4      \         P                  ! R^R4      \         P                  ! R^R4      4      w  r4p\         P                  ! V4      ;p;rx\	        W3R4       F,  w  rV	P                  RR7      pVP                  W4WVWxWR7       K.  	  R# )	r  r   r  r*   r+   )r   r  Ng)rb   r  )r   r   r   	ones_liker!   r=   r  )r3   r4   r  rN   rO   rP   r  r  r  r@   r   r"   s   &&          r&   test_quiver3D_smokerR    s    Ekk
		$3
		$3
		$3GA!
 QAG.9___-
		!a6	? :r(   zminor_ticks.pngc                  s@   \         P                  ! 4       P                  R R7      p V P                  R.RR7       V P	                  R.RR7       V P                  R.RR7       V P                  R.RR7       V P                  R.RR7       V P                  R	.RR7       R
# )r*   r+   r   T)ZminorZquartergQ?Zthirdr   ZhalfN)	r;   r<   r=   rC   Zset_xticklabelsrD   Zset_yticklabelsrE   Zset_zticklabels)r"   r  r&   test_minor_ticksrS    s    		!	!T	!	2BMM4&M%	{$/MM4&M%y-MM4&M%xt,r(   zerrorbar3d_errorevery.pngc            
     sR   \         P                  ! ^ ^\         P                  ,          R,           R4      p \         P                  ! V 4      \         P                  ! ^V ,          4      \         P                  ! ^V ,          4      r2p\
        P                  ! 4       pVP                  RR7      p^p\         P                  ! V P                  4      pWv,          ^ 8H  Wv,          ^,          ^ 8H  ,          pWv,          ^ 8H  Wv,          ^,          ^8H  ,          p	VP                  WVRWVR7       R# )z0Tests errorevery functionality for 3D errorbars.r   r?  r*   r+   r  )zuplimszlolimsZ
erroreveryN)
r   r   r   r   r   r;   r<   r=   rQ  errorbar)
r  rN   rO   rP   r@   r"   Zesteprm   rT  rU  rp  r&   test_errorbar3d_erroreveryrW    s     			!QruuWRZ&AffQi!bffQqSk!A
**,C	D	)BE
		!&&AyA~!*q.A"56GyA~!*q.A"56GKKag   "r(   zerrorbar3d.pngc                 s    \         P                  ! 4       p V P                  RR7      p. ROp. R	OpVP                  W"W#W3^. R
O. RORRRR7       VP	                  4        R# )z9Tests limits, color styling, and legend for 3D errorbars.r*   r+   TZpurplezError lines)rN   rO   rP   ZxerrZyerrZzerrZcapsizerT  rU  ZyuplimsZecolorrt   N)rb   r   rf   rg   rc   )r   r   r   r   r   )FTFTT)TFFTF)r;   r<   r=   rV  Zlegend)r@   r"   Zdr%  rc  r&   test_errorbar3drX    s[     **,C	D	)BAAKK!AAq89}	  6
 IIKr(   z
stem3d.pngg;On?c                  s   R \         P                  R&   \         P                  ! ^^RR RR/R7      w  r\        P                  ! ^ ^\        P
                  ,          4      p\        P                  ! V\        P
                  ^,          ,
          4      p\        P                  ! V\        P
                  ^,          ,
          4      pTp\        V^ ,          . RO4       F,  w  rgVP                  W4WWR7       VP                  RV 24       K.  	  \        P                  ! \        P
                  ) ^,          \        P
                  ^,          ^4      p\        P                  ! V4      p\        P                  ! V4      p\        V^,          . RO4       FW  w  rgVP                  W4VRRR	VR
7      w  rp
VP                  RV 24       VP                  R^R7       V
P                  ^4       KY  	  R# )Tr   r,   r*   rp   Zconstrained_layoutr.   )orientationzorientation=zC4-.ZC1Dr3  )ZlinefmtZ	markerfmtZbasefmtrZ  rT   )r  ZmarkeredgewidthN)r   r   r  )r;   r   r/   r   r   r   r   r   r!   Zstemri   rQ  rV   Zset_linewidth)r@   rW   r   rN   rO   rP   r"   r   Z
markerlineZ	stemlinesZbaseliner  r&   test_stem3dr[    sp   (,CLL$%||Aq&/3(4d';=HC KK1RUU7#E
uruuQwA
uruuQwAAA0
a*
|D6*+ 1 	RUUF1HbeeAgr*A
QA
q	AA0*,''!eT +2 +'
x 	|D6*+vqAq! 1r(   zequal_box_aspect.pngc                  s
   ^ RI Hp Hp \        P                  ! 4       pVP                  RR7      p\        P                  ! ^ ^\        P                  ,          ^d4      p\        P                  ! ^ \        P                  ^d4      p\        P                  ! \        P                  ! V4      \        P                  ! V4      4      p\        P                  ! \        P                  ! V4      \        P                  ! V4      4      p\        P                  ! \        P                  ! V4      \        P                  ! V4      4      pVP                  WgV4       R^.p	V! \        P                  ! \        V ! WV	4      4      4      ^4       Fl  w  r\        P                   ! \        P"                  ! W,
          4      4      V	^,          V	^ ,          ,
          8X  g   KQ  VP$                  ! \'        W4      RR/  Kn  	  \        P(                  ! VP+                  4       VP-                  4       VP/                  4       .4      p\1        V^ ,          4      \3        V^,          4      .pVP5                  V4       VP7                  V4       VP9                  V4       VP;                  R4       VP=                  R4       \>        P@                  ! \B        RR7      ;_uu_ 4        VP=                  RRR	7       R
R
R
4       R
#   + '       g   i     R
# ; i)r    )r   r   r*   r+   r   r   offzArgument zoom =r  )zoomNra   rd   )"r   r   r   r;   r<   r=   r   r   r   Zouterr   r   rQ  r  r   r   r   r   r    r!   r  
get_xlim3d
get_ylim3d
get_zlim3dr   r   r  r  r  rJ   rj   r	  r
  r  )r   r   r@   r"   r  r  rN   rO   rP   r$   r   r%  ZxyzlimZXYZlims                 r&   test_equal_box_aspectra    s   /
**,C	D	)B 	Aq255y#&A
Aruuc"A
BFF1I&A
BFF1I&A
a"&&),A OOA! 
QARXXd71+;&<=qA66"&&- AaD1Q4K/IIs1y,, B
 __	"--/2==?;F &)nc&)n-FMM&MM&MM&GGENi 	z):	;	;
)"- 
<	;	;	;s   K11L	c                  s   ^p \         P                  ! ^V RRRR/R7      w  rV Fm  pVP                  \        P                  P                  ^4      \        P                  P                  ^4      \        P                  P                  ^4      4      pKo  	  \         P                  ! XVRR7      pVP                  P                  4        R# )	r   Tr,   r*   rY  Z
horizontal)r"   rZ  N)rg   rc   )	r;   r/   r  r   r   r  ru  r   r   )Z	num_plotsr@   rW   r"   Zp_triZcbarr   r&   test_colorbar_posrb    s    I||Ay&/3(4d';=HC 		 2BIIOOA4F "		 24  <<#<@DJJOOr(   c                  s   \         P                  ! 4       p V P                  R R7      pVP                  ^ ^4       VP	                  R4       VP                  4        VP	                  ^R7       VP	                  ^R7       R# )r*   r+   )rM   )rR   N)r    r   )r;   r<   r=   r   Z
set_zboundZinvert_zaxisr?   rA   r&   test_inverted_zaxisrc    se    
**,C	D	)BKK1 MM& OO MMM MMMr(   c                  s   \         P                  ! 4       p V P                  R R7      pVP                  ^R7       VP                  ^R7       \        P
                  ! \        RR7      ;_uu_ 4        VP                  ^ ^R7       RRR4       \        P
                  ! \        RR7      ;_uu_ 4        VP                  ^ ^R	7       RRR4       R#   + '       g   i     LR; i  + '       g   i     R# ; i)
r*   r+   )r   )r   z"Cannot pass both 'lower' and 'min'r  )bottomr   Nz"Cannot pass both 'upper' and 'max')topr   )r;   r<   r=   r   r	  r
  rF  r?   rA   r&   test_set_zlimrf  8  s    
**,C	D	)BKKQKKKQK 
A
C 
C
11%
C 
A
C 
C
"
C 
C
C 
C
C 
C 
Cs   0C0C!C	!C2	c                 s,   ^^^rCpV P                  ^RR7      pV P                  ^RVR7      pV P                  ^RR7      pVP                  V4       VP                  W#VRR7       R F)  pVP                  VRR7      p	V	P                  W#VR7       K+  	  R# )	rc   r*   r+   )r,   	shareviewT)r~   r   r   Zsharer}   N)i   i   i   )r=   rg  r   )
r3   r4   r~   r   r   r  r  ax3Zsubplot_numr"   r  r&   test_shared_viewri  I  s    "bD


st

4C


sts

CC


st

4CMM#MMtTM>&   >
$5 'r(   c                  s   \         P                  ! 4       p V P                  ^RR7      pV P                  ^RVR7      pVP                  ^ ^.^ ^.^ ^.4       VP                  ^ ^.^ ^.^ ^.4       VP	                  . RO4       R# )i   r*   r+   )r,   ZsharezN)r  r    r         @)r;   r<   r=   r   rE   )r@   r  r  rK   r&   test_shared_axes_retickrk  W  sx    
**,C
//#$/
/C
//#$s/
;CHHaVaVaV$HHaVaVaV$NN$%r(   c            
      sf   \        ^. RO4      p \        ^ . RO4      p\        ^ . RO4      p\        ^ . RO4      pWW#3 F  pK  	  \        ^ . RO4      pWPWV3 F  pK  	  \        ^. RO4      \        ^ . RO4      \        ^ . R	O4      \        ^ . R
O4      \        ^. RO4      3 F  pK  	  WW#3 F  pK  	  . RO. RO\        \        P                  ! R4      ^ ^ \        P                  ! R4      .4      3. RO. RO\        \        P                  ! R4      ^ \        P                  ! R4      ) ^ .4      3. RO. RO\        ^. RO4      33 F  w  rgpK  	  . RO. RO. RO. RO3 F[  p\        P                  ! V4      p\        P
                  ! \        4      ;_uu_ 4        \         P                  ! Wf) 4      pRRR4       K]  	  R F  w  rp
R F  p\         P                  ! \        P                  ! V4      \        P                  ! V	4      \        P                  ! V
4      4      p\        WP                  ,          WP                  ,          4      p\        P                  P                  \        P                  ! \         P                  ! V4      4      WV
3RR7       K  	  K  	  R#   + '       g   i     EKT  ; i)rb   Nư>Zatolr   rb   r    r    r  r  )rf   r    r    )r    rg   r    )r    r    rc   )r}  r   rO  r   rd   )r   )r{   r    r    r   )r    r    r{   )r    r   r   )r   r    r   )r   r   r    )i/   rq   i)rb   r   )
Quaternionr   ry  r   r	  ZwarnsZUserWarningZrotate_from_toZfrom_cardan_anglesZdeg2radZscalarZvectorr   r  Zrad2degZas_cardan_angles)Zq1ZqiZqjZqkZqZq0Zr1Zr2r~   r   r   Zmagr   r&   test_quaternionrp  c  s#   	Ay	!B 
Ay	!B 
Ay	!B 
Ay	!B, b 
Ay	!B bb!! 	1i 1i 1i 1i 1i   b 
Iz"''#,Arwws|8LMN	Iz"''#,RWWS\M18MNO	Iz!Y78	  )Y	:XXb\\\+&&))"c2A '& ;,D C--

4 "**T"2BJJt4DFA 3>3>:AJJ&&rzz*2M2Ma2P'Q(,D'9 ' F 	, '&&s   JJ0r   c                s   V R8X  d   RpM\         P                  R,          ^,          pVR,          p^ \         P                  R&   \         P                  ! RV /4      ;_uu_ 4        . RO. RO. RO. RO^ R\        P                  ! ^4      ^,          .^R\        P                  ! ^4      ^,          .. RO3 EF  w  r#p\
        P                  ! 4       pVP                  ^^^RR7      pVP                  ^ ^ V4       VP                  P                  P                  4        VP                  \        V\        P                  ^ ^ R7      4       VP                  \        V\        P                  W,          VP                   ,          W,          VP"                  ,          R7      4       VP                  P                  P                  4        \        P                  ! ^4      ^,          p/ RRbRRbR^ RV3RbRRbRRbRRbR^RV3RbR R!bR"R#bR	^ RV3R$bR%^ R&\        P$                  ,          ^ 3bR'R(bR)R*bR	^RV3R+bR,R-bR.R/bR
^ RV3R0bR1RR2R3R4R5R
^RV3R6R7R8R9R:R^ RV3R;R<R=R>R?R@RAR^RV3RB/CpWW#V3,          w  rp\        P&                  P)                  VP*                  VP,                  VP.                  3WV3RR7       EK
  	  RRR4       R#   + '       g   i     R# ; i)Cz*Test rotating using the left mouse button.azelr   zaxes3d.trackballsizezaxes3d.trackballborderzaxes3d.mouserotationstyler*   r+   buttonZxdataZydata	trackballrB  arcballrl  rm  Nr  )r   rb   r    r  )r   r    rb   )r    r   r    )rq  r    rb   r    )r    r  r    )rq  r    r    rb   )r  r    r    )^iN|C     6r    )rq  r    r   r    r   )rq  r   rb   r    )g     6@rv  r   )rq  r   r    rb   )rv  rw  r   )rw  rv  r   )rt  r    rb   r    )r    gyܥ<r    )rt  r    r    rb   )rx  r    r    )E~8o.2.gC5%
@)rt  r    r   r    iL)rt  r   rb   r    )gi:+@=!7Q9gX:@)rt  r   r    rb   )ry  rz  g:TS@@)gi:+r{  gT7@@)rB  r    rb   r    )r    r   r    )rB  r    r    rb   )r   r    r    )`#I9v$$0g! _B@)rB  r    r   r    )rB  r   rb   r    )g&s|,@u.:gu.:@)rB  r   r    rb   )r|  r}  g%T@@)g&s|,r~  g6h@@)ru  r    rb   r    )r    r   r    )ru  r    r    rb   )r   r    r    )#KHxqZrDgwJ3@)ru  r    r   r    r   )ru  r   rb   r    )g`#I9@ګ'Lgv$$0@)ru  r   r    rb   )r  r  gK;H@)r|  r  gĮE@)r   r   
rc_contextr   ry  r;   r<   r=   r   r   r   _button_pressr   r   LEFT_on_moveZ	_pseudo_wZ	_pseudo_hr   r   r  r~   r   r   )r   r   r   r   r   r@   r"   r   ZexpectationsZnew_elevZnew_azimZnew_rollrC  r&   test_rotater    sU    LL/014HA-.CLL)*	4e<	=	=CA&S"''!*Q,'LDb **,CAqT:BLLAt$II!!# 2k&6&6aqIKKK2k&6&6!"bll!2!$r||:KMN II!!#
1AN!<N!;N C#%;N ";	N
 #$:N #$;N S!$&=N '(9N '(9N aa(*LN 'DJ(:N ()JN ()LN b#q)+NN" $[#N$ $[%N& 1c1%'I'N( $[$&H$&I2sA&(K$k$kAsA&(K$k%'I%'JBQ')L?NL@ ,8"8M+N(HJJ&&"'''B(0H'ED ' Ro 
>	=	=	=s   %IKK	c            	     sl   R p \         P                  ! 4       pVP                  RR7      pVP                  ^ ^ ^ 4       VP                  P                  4        V ! VP                  4       !  w  r4V ! VP                  4       !  w  rVV ! VP                  4       !  w  rxVP                  \        V\        P                  ^ ^ R7      4       VP                  \        V\        P                  ^^R7      4       V ! VP                  4       !  w  rV ! VP                  4       !  w  rV ! VP                  4       !  w  rR# )z1Test mouse panning using the middle mouse button.c                s6    W,           ^,          pW,
          pW#3# )z+Convert min/max limits to center and range.r,  )ZdminZdmaxZcenterZrange_r  r&   convert_limZtest_pan.<locals>.convert_lim
  s    +"~r(   r*   r+   rr  N)r;   r<   r=   r%  r   r   r^  r_  r`  r  r   r   ZMIDDLEr  )r  r@   r"   Z	x_center0Zx_range0Z	y_center0Zy_range0Z	z_center0Zz_range0Zx_centerZx_rangeZy_centerZy_rangeZz_centerZz_ranges                  r&   test_panr    s     **,C	D	)BJJq!QJJOO%r}}7I%r}}7I%r}}7I 2k00CEKK2k00CE $R]]_5H#R]]_5H#R]]_5Hgr(   ztool,button,key,expectedr]  panc                 s   \         P                  ! 4       pVP                  R R7      pVP                  ^ ^ ^ 4       VP                  P                  4        VP                  4       VP                  4       VP                  4       rpRp	Rp
VP                  P                  V	4      P                  \        4      pVP                  P                  V
4      P                  \        4      p\        RVP                  .VOVN5RV/ p\        RVP                  .VOVN5RV/ p\        VP                  4      pV R8X  dE   VP                  4        VP!                  V4       VP#                  V4       VP%                  V4       MCVP'                  4        VP)                  V4       VP+                  V4       VP-                  V4       Vw  pppVP/                  4        VP1                  4        VP3                  4        R# )	r*   r+   Zbutton_press_eventkeyZbutton_release_eventr]  Nr  rb   rb   )r;   r<   r=   r%  r   r   r^  r_  r`  Z	transDatar  ZastypeZintr   r   r]  Z
press_zoomZ	drag_zoomZrelease_zoomr  Z	press_panZdrag_panZrelease_panZbackZforwardZhome)Ztoolrs  r  Zexpectedr@   r"   Zxlim0Zylim0Zzlim0Zd0Zd1Zs0Zs1Zstart_eventZ
stop_eventZtbr  r  r  s   &&&&               r&   test_toolbar_zoom_panr  .  s   ( **,C	D	)BJJq!QJJOO--/2==?BMMO%E 
B	B 
			#	*	*3	/B				#	*	*3	/B cjj@+-@/5@;>@K

B-/B17B=@BJ 
CJJ	'Bv~
	
k"
Z 

#

[!
J
z"  D$ GGI
 JJL
 GGIr(   c                 s   \         P                  ! \        \        P                  ! \         P
                  ! ^ ^^4      \         P
                  ! ^ ^^4      \         P
                  ! ^ ^^4      .!  4      4      P                  w  r#pW#,           pV P                  ^oRR7      pVP                  W#WE^(RR7      pV P                  P                  4        VP                  4        VP                  ^oRR7      pVP                  W#WE^(RR7      p	R# )r    r*   r+   r   )r   r   r   N)r   r   r   r   r   r   ZTr=   r%  r   r   Zchanged)
r3   r4   rN   rO   rP   r   r   Zsc_testr   Zsc_refr  r&   test_scalarmap_updater  z  s     hhtI--		!Q0B02		!Q0B02		!Q0B0D E F GGHq A! 	
A ""34"8GooaAbyoAGOOOO    6F^^A!BY^?Fr(   c                  s    \         P                  ! 4       p V P                  ^^4      pV^ ,          P                  ^^^RR7      pV^,          P                  ^^^RRR7      pR# )rb   r*   r+   Zother)r,   rt   N)r;   r<   Z
subfiguresr=   )r@   Zsfr"   rK   r&   test_subfigure_simpler    sY    
**,C	1	B	A		1at		4B	A		1at7		CBr(   computed_zorder)baseline_imagesr   r)   r   c                  s   R \         P                  R&   \         P                  ! 4       p V P                  ^RR7      pV P                  ^RR7      pRVn        RpW3 F  p\
        P                  ! V.RR^R7      pVP                  V4       VP                  RRRR^R	7       VP                  RRRR^
R	7       VP                  R4       VP                  R4       VP                  R4       K  	  V P                  ^RR7      pV P                  ^RR7      pRVn        ^
p\        P                  ! V) V3V) V34      w  r\        P                  ! R4      pR
p\        P                  ! V) V3^ V34      w  rW,          p\        P                  ! V) V3V) ^ 34      w  ppVV,          p^pRp\        P                   ! ^ ^\        P"                  ,          V4      pV\        P$                  ! V4      ,          V\        P&                  ! V4      ,          VV,          \        P&                  ! V4      ,          pppWg3 EF=  pVP)                  VVVRR
^ RR7       VP                  VV^ 8  ,          VV^ 8  ,          VV^ 8  ,          ^RR^ R7       VP)                  WVRR
^ ^R7       VP                  V\        P&                  ! V4      ,          V\        P$                  ! V4      ,          \        P                  ! V4      ^RR^R7       VP)                  WVRR
^ ^R7       VP                  VV^ 8  ,          VV^ 8  ,          VV^ 8  ,          ^RR^R7       VP+                  ^R^ R7       VP-                  R4       EK@  	  R# )Tr   r*   r+   FZwhiteZblack)rX  rY  r)  r   )r   r)  r   r   r   )r   r   r  r)  z--r   )rG  Z	linestyler   r)  r}   r\  N)r   )r    rc   r    )rc   rc   r    )rc   r    r    )r   r   )r    rg   )rf   rf   )rb   rf   )r    r  )r    rj  ra   r   )r;   r   r<   r=   r  r   r  r  r   r%  r   r   r   r   r   r  r   r   r   r   r  r   rJ   )r@   r  r  Zcornersr"   Ztrirh  Zax4Zdimr   r   r   angleZX2ZY2ZZ2ZX3ZY3ZZ3r$   r  thrN   rO   rP   s                            r&   test_computed_zorderr    s;    )-CLL$%
**,C
//#$/
/C
//#$/
/CC ;Gj$$gY0707,-/ 	C  	%: 	

666U2
>
H
H
H " //#$/
/C
//#$/
/CC
C;;c{cT3K0DA
AE[[3$q#h/FB	B[[3$tQi0FB	eB	AA	QBEE	1	%B"&&*nq266":~uqy266":/E!qAj
B$!"#!	 	 	#
 	!a%!AE(Aa!eH	 	 	 	a#!"# 	 	 	" 	BFF2JBFF2J	 	 	 	$!"# 	 	 	" 	!a%!AE(Aa!eH 	 	 	"3Q/
G r(   c                  sf   \         P                  ! 4       p V P                  R R7      p\        P                  ! ^
4      pVP                  V\        P                  ! V4      4       RpRpV P                  P                  4        VP                  ^RR7       V P                  P                  4        VP                  4        V P                  P                  4        VP                  R4       V P                  P                  4        VP                  RRR7       V P                  P                  4        R# )	r*   r+   r   rO   )r   vertical_axisr|   r  r  N)r;   r<   r=   r   r   r   r   r   r   r   r   )r@   r"   rN   ZxvZyvrn   r&   test_format_coordr    s    
**,C	D	)B
		"AGGArvvay	B	BJJOO LLbL,JJOO LLNJJOO WJJOO W3/JJOOr(   c                  s    \         P                  ! 4       p V P                  R R7      p\        P                  ! ^
4      pVP                  V\        P                  ! V4      4       V P                  P                  4        R# r*   r+   N)	r;   r<   r=   r   r   r   r   r   r   )r@   r"   rN   rK   r&   test_get_axis_positionr  	  sN    
**,C	D	)B
		"AGGArvvayJJOOr(   c                  s   \         P                  ! 4       p V P                  R R7      pVP                  R4       VP                  RRR4       VP                  ^ R7       VP                  RR7       VP                  ^ R7       R# )	r*   r+   r  r   r4  )rN   )rO   rP   Nr;   r<   r=   r  r?   rA   r&   test_marginsr  	  s`    
**,C	D	)BJJsOJJsCJJJOJJJJJJOr(   c                  sz    \         P                  ! 4       p V P                  R R7      pVP                  RRR4       R# )r*   r+   r   r  r4  Nr  r?   rA   r&   test_margin_gettersr  $	  s-    
**,C	D	)BJJsCr(   zerr, args, kwargs, matchz!margin must be greater than -0\.5z'Cannot pass both positional and keywordz*Must pass a single positional argument forc                 s    \         P                  ! WR 7      ;_uu_ 4        \        P                  ! 4       pVP	                  RR7      pVP
                  ! V/ VB  RRR4       R#   + '       g   i     R# ; i)r  r*   r+   N)r	  r
  r;   r<   r=   r  )Zerrr  r   r  r@   r"   s   &&&&  r&   test_margins_errorsr  -	  sN      
s	(	(jjl___-


D#F# 
)	(	(	(s   :A$$A5	c                 s   VP                  R R7      p\        RRR4      p\        P                  ! V^R7       VP	                  V4       V P                  R R7      p\        P
                  ! RR^R4      pVP	                  V4       R# )r*   r+   r   zFoo bar $\int$r  N)r=   r   r   Ztext_2d_to_3dr  ZText3D)r3   r4   r"   ZtxtZt3dr0  r&   test_text_3dr  C	  sv    					-B
sC*
+C	q!MM# 
				.B
,,sC$5
6CMM#r(   c                  s    \         P                  ! 4       p V P                  R R7      pVP                  ^ .^..^ .^..^ .^..4       R# r  )r;   r<   r=   r   r?   rA   r&   test_draw_single_lines_from_Nx1r  Q	  sE    
**,C	D	)BGGaS1#J!qc
aS1#J/r(   c                 s6   VP                  R R7      p\        P                  ! 4       p\        V4      p\        P
                  ! VRRR7       VP                  V4       V P                  R R7      p\        P                  ! VRRR7      pVP                  V4       R# )r*   r+   rO   rP   r   rb  N)r    r   r5  rb   r    )r=   r   Zunit_rectangler   r   pathpatch_2d_to_3dr  ZPathPatch3D)r3   r4   r"   ZpathZpatchZpp3dr%   r&   test_pathpatch_3dr  X	  s    					-B DdOE	U&9DMM%					.BT&9DDMM$r(   zscatter_spiral.png)r  r   r   c                  s   R \         P                  R&   \         P                  ! 4       p V P                  RR7      p\        P
                  ! ^ ^\        P                  ,          ^,          R4      pVP                  \        P                  ! V4      \        P                  ! V4      V^V^,          ,           V^,          R7      pV P                  P                  4        R# )Tr   r*   r+   i   r\  N)r;   r   r<   r=   r   r   r   r%  r   r   r   r   )r@   r"   r  Zscrc  r&   test_scatter_spiralr  e	  s     )-CLL$%
**,C	D	)B	QBEE	As	+B	BFF2Jr
B1rAv:"'	JB JJOOr(   c                  s    \         P                  ! R R/R7      w  r\        RR4      pVP                  V4       \        P
                  ! V4       VP                  4        R# )r,   r*   r-   r  Nr  )r;   r/   r   r  r   r  Zget_path)r@   r"   ZprK   r&   test_Poly3DCollection_get_pathr  s	  sG     ll|T&:;GCvsALLO	QJJLr(   c                  N   \         P                  R,          w  r\         P                  ! V4      ^,          \         P                  ! V 4      ^,          ,
          p\        P
                  ! 4       pVP                  ^oRR7      pVP                  WVRR7      pVP                  4        R# rb   r   y              Y@r*   r+   Zhotr   N)r  r  )	r   ogridr   r   r;   r<   r=   r  Zget_facecolorrO   rN   ro  r@   r"   r$   r   r&   #test_Poly3DCollection_get_facecolorr  }	  r     88()DA	a"&&)q.	(B
**,C		.B
bu-AOOr(   c                  r  r  )	r   r  r   r   r;   r<   r=   r  Zget_edgecolorr  r   r&   #test_Poly3DCollection_get_edgecolorr  	  r  r(   zDvertical_axis, proj_expected, axis_lines_expected, tickdirs_expectedg˗ì?g2m 3?g溾I?gM?c                s   Rp\         P                  ! ^^^RR7      pVP                  ^ ^ ^ V R7       VP                  4       P                  P                  4        VP                  4       p\        P                  P                  WVR7       \        VP                  4       VP                  4       VP                  4       .4       F  w  rxW',          p	VP                  P                  4       p
\        P                  P                  WVR7       W7,          pVP!                  R4      p\        P                  P#                  W4       K  	  R# )a  
Test the actual projection, axis lines and ticks matches expected values.

Parameters
----------
vertical_axis : str
    Axis to align vertically.
proj_expected : ndarray
    Expected values from ax.get_proj().
axis_lines_expected : tuple of arrays
    Edgepoints of the axis line. Expected values retrieved according
    to ``ax.get_[xyz]axis().line.get_data()``.
tickdirs_expected : list of int
    indexes indicating which axis to create a tick line along.
g>r*   r+   r~   r   r   r  rtolr   N)r;   subplotr   
get_figurer   r   get_projr   r   r  rh   Z	get_xaxisZ	get_yaxisZ	get_zaxisrI   Zget_dataZ_get_tickdirr  )r  Zproj_expectedZaxis_lines_expectedZtickdirs_expectedr  r"   Zproj_actualrm   rJ   Zaxis_line_expectedZaxis_line_actualZtickdir_expectedZtickdir_actuals   &&&&         r&   test_view_init_vertical_axisr  	  s    H D	Q1	.BLLaaa}LEMMO! ++-KJJ}EbllnbllnbllnMN0399--/


""#5(, 	# 	. -/**95


%%&6G Or(   r  c                s(    V ^8  d   QhR\         RR/# )r   r  ZreturnN)Zstr)Zformats   "r&   __annotate__r  	  s      c d r(   c                s&   \         P                  ! ^^^RR7      pVP                  ^ ^ ^ V R7       VP                  4       P                  P                  4        VP                  4       p\        V\        P                  ^ ^R7      pVP                  V4       \        V\        P                  RRR7      pVP                  V4       VP                  4       p\        P                  P                  \        \        P                  P                   W%4       R# )zG
Test vertical axis is respected when rotating the plot interactively.
r*   r+   r  rr  r   r   N)r;   r  r   r  r   r   r  r   r   r  r  r  r   r   Zassert_raisesZAssertionErrorr  )r  r"   Zproj_beforeZevent_clickZ
event_moveZ
proj_afters   &     r&   test_on_move_vertical_axisr  	  s    
 
Q1	.BLLaaa}LEMMO!++-KR(8(8KK[!B{'7'7s#NJKK

 JJJ

22Kr(   zvertical_axis, aspect_expectedc                 s,   \         P                  ! ^^^RR7      pVP                  ^ ^ ^ V R7       VP                  4       P                  P                  4        VP                  R4       \        P                  P                  WP                  RR7       R# )rb   r*   r+   r  Nrl  r  )r;   r  r   r  r   r   rj   r   r   r  Z_box_aspect)r  Zaspect_expectedr"   r5   r&   !test_set_box_aspect_vertical_axisr  
  sm     
Q1	.BLLaaa}LEMMO!dJJTJr(   zarc_pathpatch.pngc            	      s    \         P                  ! ^^^RR7      p \        P                  ! R	RR^^
^R7      pV P	                  V4       \
        P                  ! V^ RR7       R# )
rb   r*   r+   r   g?)r   Zheightr  Ztheta1Ztheta2rP   r  N)r   r   )r;   r  mpatchZArcr  r   r  )r"   r@  rA   r&   test_arc_pathpatchr  
  sP     
Q1	.B

:SBs	4ALLO	Q!#.r(   zpanecolor_rcparams.pngc                  s    \         P                  ! R RRRRR/4      ;_uu_ 4        \         P                  ! R
R7      p V P                  RR7       R	R	R	4       R	#   + '       g   i     R	# ; i)zaxes3d.xaxis.panecolorr$   zaxes3d.yaxis.panecolorr   zaxes3d.zaxis.panecolorr   r   r*   r+   Nr  )r;   r  r<   r=   )r@   r  r&   test_panecolor_rcparamsr  #
  s\     
1313138 
9 
9 jj(4(	
9 
9 
9 
9s   *AA*	c                s    V P                  ^oRR7      p. ROp. ROp. ROpVP                  W4VR4       . ROVR&   . ROVR&   VP                  ^oRR7      p. ROp. ROp. ROpVP                  W4VR4       R# )zn
Test to see if the `z` axis does not get mutated
after a call to `Axes3D.plot`

test cases came from GH#8990
r*   r+   zo-r  N)rb   r   rf   )r  r  r  r  )r3   r4   r  rN   rO   rP   r  r  r&   "test_mutating_input_arrays_y_and_zr  .
  s     

st

4CAAAHHQ1d AaDAaD 

cd

3CAAAHHQ1dr(   c                 s   \         P                  ^^^.p ^ \         P                  ^^.p^ ^\         P                  ) ^.p. RO. RO. RO. RO.p\        P                  ! 4       pVP                  RR7      pVP                  WW#R7      pR# )zI
Test color parameter usage with non-finite coordinate arrays.

GH#26236
r*   r+   r   N)r  r  r  rb   )r   r  r"  r;   r<   r=   r%  )rN   rO   rP   r
   r@   r"   Zpath3drX   r&   test_scatter_masked_colorr  H
  s~     
AA	
BFFAA	
AwA	F **,C	D	)BZZaZ.Fr(   zsurface3d_zsort_inf.pngc                  s   R \         P                  R&   \         P                  ! 4       p V P                  RR7      p\        P
                  R	^R1R	^R13,          w  r#\        P                  ! V4      ^,          \        P                  ! V4      ^,          ,           p\        P                  WBP                  ^ ,          ^,          R1VP                  ^,          ^,          R13&   VP                  W#VRR7       VP                  ^-^R7       R# )
Tr   r*   r+   r   Nr  r  )r~   r   r   )r;   r   r<   r=   r   rP  r   r   r"  rS  r  r   r&  rn   r&   test_surface3d_zsort_infr  b
  s    (,CLL$%
**,C	D	)B88BqHb3h&'DA
q	1rvvay!|#A,.FFAggajAo
a(()OOA!%O(LLbsL#r(   c                  s   \         P                  ! \        R R7      ;_uu_ 4        \        P                  ! . RO. RO. RO.\
        4      p \        P                  ! V .RR7      pRRR4       R#   + '       g   i     R# ; i)zCYou must provide facecolors, edgecolors, or both for shade to work.r  Tr   Nr  r  r   )r	  r
  r  r   r   rU  r   r  )r  r   rA   r&   &test_Poly3DCollection_init_value_errorr  p
  s^     
z5
6 
6 xxIy95A""D66	
6 
6 
6 
6s   >A--A>	c            	      s    \         P                  ! 4       p V P                  ^oRR7      pVP                  ^^ ^ \        P
                  ! . RO4      R7       V P                  P                  4        R# )io   r*   r+   r   Nr  )r;   r<   r=   r%  r   r   r   r   r?   rA   r&   %test_ndarray_color_kwargs_value_errorr  z
  sL     **,C		.BJJq!Qbhh|4J5JJOOr(   )r   rg   r   )r   rg   r   r   )r    r   rg   r   r  )rb   r  )TFN)r-  r.  ))r  Zleft)r  Zright)r  rd  )r  re  )r  rd  )r  re  )rq  rt  rB  ru  ))r  Q?)r?  gQ?)r   {Gz?))g{Gzr   )gQr  gQr  ))Q뱿ry   )g{Gzr  )r  gQ?))g
ףp=
r!  )g{Gzg(\?)r  g
ףp=
?))gffffff(\)gp=
ףgQgRQgffffff))g
ףp=
gzG)r  gq=
ףpݿr  ))r  g{Gz?)gRQg(\ؿr  ra   )ra   )rb   ra   rb   )rb   rb   ra   r  )r  #k$I?r  ._x%I)r  r  (m?@mۿ)r  r  r  g      $)#k$Ir  r  W$%@g溾IgMg2m 3rn  )r  r  r  r  )r  r  r  r  )r  r  r  r  g˗ì)r   r   r    )r  r  r  r  )r  r  r  r  )r  r  r  r  )rb   r   rb   )/0?F&H?r  )r  r  r  )r  r  r  )Z	functoolsr   ZplatformZsysr	  Zmpl_toolkits.mplot3dr   r   r   r   Zmpl_toolkits.mplot3d.axes3dr   ro  Z
matplotlibr   Zmatplotlib.backend_basesr   r   r   r	   r
   r   r   r  Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.testing.widgetsr   Zmatplotlib.collectionsr   r   Zmatplotlib.patchesr   r   Zmatplotlib.pathr   Zmatplotlib.textr   Zmatplotlib.pyplotZpyplotr;   Znumpyr   ZpartialrH  r'   r6   rB   rL   rY   ro   rs   rx   r   r   r   r   r   r   Zmachiner   r   r   r   ZmarkZparametrizer   r   r   r   r  r  r  r"  r'  r*  r+  r1  r<  rZ  r^  ra  rd  rq  rr  rv  rz  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  r  r  r  r  r  r
  r  r  r  r  r  r   r#  r$  r&  r*  r"  r  r/  r0  rI  rJ  rK  rL  rP  rR  rS  rW  rX  r[  ra  rb  rc  rf  ri  rk  rp  r  r  r  ZRIGHTr  r   Zcontextr  r  r  r  r  r  r  r  ZtuplerF  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,  r(   r&   <module>r     s=      
  > > A : :  ; O 1 A 0       #**$i9 H ( )
 (8 9 34GD% E% -.EQ@ R@ U'J( K(  12$):4:4
J 34G$'LLH$<D!EE( W5J 6J	/ +,G< =& ./w?	 @	M6 )!)!1!1!3x!?AULGLG 12'B C )*':
 ;
 ./w? @ )VY,?-2L,A-2L,A,C D ( )D0 )*GD E w7 8 ( )$" +,G< =0 (	* )	* )9
. :
. ./w?& @&  237C4 D4 (
- )
- (9 )9( e}5(3C ) 63Cl #s,(, ) -,& (2 )2. ./U'J$ K$ 01AH BH, 34GD= E=$ )9- :-$ =>gN
 O
 /0@ A /0@ A4 ( )" (! )! 78H I EI J0 (H )H0 )uGD9 E9" /0d'J? K?" *+7;5 <5 56gF4 G4 56gF6 G698 (UC D* (I )I ./w?I @I" 237C	 D	
D ( )6% 67wG+ H+ 56gF+ G+$ 89I J8 9:'J K4SR ./$):1:1* )*WM N -.$)::	!
, " /0@ A, 56gF G:	/9  1!45: 6 2:( (  ) 2 23$):5:5 +,%wO P /0@ A (#4 )#4L 266266"23+ . & 4&y+ y+xP$ (< )<#(." ($A )$AN (@ )@ $%W5- 6- 45W%P" Q"" )*'!)!1!1!3x!?ATKK <.U;" <": )*':". ;".J3 %B#" (
6 )
6	)[F| CEAREARH$0N 3!;#3#3TDF!;#3#3SGI!;#3#3SFH!;#4#4dGI +"2"2DJL +"2"2CIK +"2"2CHJKL:3L:3z 9(@ ) @(D #4"54#WW7O7OdJ>:'# 3	UB DE	Z%IJ	Z%IJ	UWsBi)MN	UWsBi)MN	UWsBi)MN	EC8	2	4	ECCC3	2	4	ECC+	2	4	FB LM6 $$ (
2 )
20 (	 )	 #7"8"!! J //&0	 j)K+EFz*[+,FG{+k:-FG
 	
  //&0	 z*Z,DEj)K+DE{+j*-EF
 	
  //&0	 {+j+-FGj)J
+CDk*Z,DE
 	
?.1d%He1d%HP /: ;0 $	,-	,-	,-KK #6"7"!/!/ #;"<"!)!) ( )2=4 237C
$ D
$7r(   