
    G8c<                     @   d dl Z d dlmZmZ d dlmZmZmZmZm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dlZdZd Zd	 Zd
 Zd Zej:                  j=                  d      d        Zej:                  jA                  dg d      d        Z!d Z"d Z#d Z$ej:                  jA                  dddg      ej:                  jA                  dddg      ej:                  jA                  ddejJ                  dfdejL                  dfdejJ                  dfdejL                  d fg      d!                      Z'd" Z(ej:                  jA                  d#d$d%d ejR                  d&e'      g      d(        Z*ej:                  jA                  d)g d*      d+        Z+d, Z,d- Z-d. Z.y)/    N)path
transforms)FigureCanvasBaseKeyEventLocationEventMouseButton
MouseEventNavigationToolbar2RendererBase)RubberbandBaseFigure)needs_pgf_xelatexzTreat the new Tool classes introduced in v[0-9]*.[0-9]* as experimental for now; the API and rcParam may change in future versions.c            
         t        j                         } t        dd      D cg c]!  }t        j                  j                  |      # }}t        dd      D cg c]/  }| j                  |      j                         j                         1 }}t        j                  d      j                  d      }ddg}ddg}d	 } || |||||        || |d
d ||||        || g ||||        || ||d
d |||        || |g |||       t        d
|j                  d
         D ]  } || |||d
|d d f   ||         || |||g |        || ||||g         || |||g g         || ||||d
d |       y c c}w c c}w )N               )
      redgreenc                    t               }t        |j                  | ||            }|j                         }|j	                  |t        t        |            |t        j                  |       ||g g dgg d      D 	
cg c]
  \  }	}
}}}| }}}}
}	}|j                  |||||      }|rBt        j                  |t        |            }t        |      j                  |dz
  |g      sJ y y c c}}}}
}	w )NFscreen)	minlengthr   )r   list_iter_collection_raw_pathsnew_gc_iter_collectionrangelenr   AffineDeltaTransform_iter_collection_uses_per_pathnpbincountsetissubset)master_transformpathsall_transformsoffsets
facecolors
edgecolorsrb	raw_pathsgcxoyopath_idgc0rgbFaceidsusesseens                    E/usr/lib/python3/dist-packages/matplotlib/tests/test_backend_bases.pycheckz!test_uses_per_path.<locals>.check   s    ^66e^5 6	YY[""uS^,g223CDz2rE7x	!" "82r7Cw " " 00>7J
D;;sc)n=Dt9%%tax&6777 "s   >C-r   )r   Affine2Dr!   r   Pathunit_regular_polygonrotate
get_matrixcopyr%   arangereshapeshape)	idir*   tforms_matricesr,   r-   r.   r;   ns	            r:   test_uses_per_pathrI      s   				B8=aD1TYY++A.DEDAFq!MAryy|..0557MOMiim##G,G!J!J8$ 
"e_gz:F	"eAaj/7J
K	"b/7J
C	"e_Qq)7J
K	"eR*j91gmmA&' &b%'!A#q&/*	&& 
"e_gr:>	"e_gz2>	"e_gr26	"e_gz!A
KG EMs   &E14E6c                  L    t        t               j                  t              sJ y N)
isinstancer   figurer        r:   test_canvas_ctorrP   >   s    &(//888rO   c                  f    t        j                         j                  j                         dk(  sJ y )Nz	image.png)pltrM   canvasget_default_filenamerN   rO   r:   test_get_default_filenamerU   B   s%    ::<335DDDrO   c                      t        j                         } t        |       }t        j                  |        t        j                  | j
                        rJ y rK   )rR   rM   r   closefignum_existsnumber)figrS   s     r:   test_canvas_changer[   F   s=    
**,Cc"FIIcN  ,,,,rO   pdfc                 (   t        j                          | j                  dd       t        j                  t
              5 }t        j                          t        |      dk(  sJ dt        |d   j                        v sJ 	 d d d        t        j                  t
              5 }t        j                         j                          t        |      dk(  sJ dt        |d   j                        v sJ 	 d d d        y # 1 sw Y   {xY w# 1 sw Y   y xY w)NDISPLAYz:999r   z=Matplotlib is currently using pdf, which is a non-GUI backendr   )rR   subplotssetenvpytestwarnsUserWarningshowr"   strmessagegcf)monkeypatchrecs     r:   test_non_gui_warningrj   O   s    LLNy&)	k	" (c
3x1}}Os1v~~&' 	( '( 
k	" (c	3x1}}Os1v~~&' 	( '( (( (( (s    AC<#AD<DDzx, y))*      )Nrk   )NN)   gq=
ף Y@)g     i@g       @c                    t        j                         \  }}t        |      }t        d|| |      }| |j                  8J |j                  t        |       k(  sJ t        |j                  t
              sJ ||j                  8J |j                  t        |      k(  sJ t        |j                  t
              sJ | |t        j                  dj                  |j                  |       |j                  |            |j                  | |            sJ d x|_        |_        t        j                  d|j                  | |            sJ y y y )N
test_eventz
x={} +y={}c                      y)NfoorN   )xs    r:   <lambda>z.test_location_event_position.<locals>.<lambda>w   s    rO   zx=foo +y=foo)rR   r_   r   r   rr   intrL   yrematchformatformat_xdataformat_ydataformat_coord	fmt_xdata	fmt_ydata)rr   ru   rZ   axrS   events         r:   test_location_event_positionr   b   s,    llnGCc"F,15Eywwww#a&   %''3'''ywwww#a&   %''3'''}xx 2BOOA4FGOOAq!# 	# # '65r|xx1(=>>> '}rO   c                  &   t        j                         } | j                  dddddd       | j                  j	                          g fd}| j                  j                  d|       t        d| j                  d	      j                          t        d
| j                  g| j                  j                  d      t        j                   j                          t        d| j                  d	      j                          t              dk(  sJ y )N      ?hellocenterT)havapickerc                 ^    | j                   j                  dk(  sJ j                  |        y )Na)
mouseeventkeyappend)r   pickss    r:   handle_pickztest_pick.<locals>.handle_pick   s)    ##s***UrO   
pick_eventkey_press_eventr   button_press_eventr   r   key_release_eventr   )rR   rM   textrS   drawmpl_connectr   _processr	   transFigure	transformr   LEFTr"   )rZ   r   r   s     @r:   	test_pickr   {   s    
**,CHHRWhtHDJJOOE JJ<5

C099;#SZZ !))(3!!!) #**c2;;=u:??rO   c                     t        j                         \  } }|j                  d       |j                         J t	        | j
                        }|j                          |j                         dk(  sJ |j                         }|j                         }d}d}|j                  j                  |      j                  t              }|j                  j                  |      j                  t              }t        d| j
                  g|t        j                   }	| j
                  j                   j#                  |	j$                  |	       t        d| j
                  g|t        j                   }
| j
                  j                   j#                  |
j$                  |
       |j                         |	j&                  |
j&                  fk(  sJ |j                         |	j(                  |
j(                  fk(  sJ t        d| j
                  g|t        j*                   }	| j
                  j                   j#                  |	j$                  |	       t        d| j
                  g|t        j*                   }
| j
                  j                   j#                  |
j$                  |
       |j                         t-        j.                  |dd	
      k(  sJ |j                         t-        j.                  |dd	
      k(  sJ |j                          |j                         J |j1                         s|j3                         rJ y )Nlogit)xscaleZOOM)gư>皙?)gwJ?皙?r   button_release_eventr   g|=)relabs)rR   r_   r'   get_navigate_moder
   rS   zoomget_xlimget_ylim	transDatar   astypert   r	   r   r   	callbacksprocessnamexdataydataRIGHTra   approxget_autoscalex_onget_autoscaley_on)rZ   r~   tbxlim0ylim0d0d1s0s1start_event
stop_events              r:   test_interactive_zoomr      s   llnGCFF'F!)))	CJJ	'BGGI!V+++KKMEKKME 
B	B 
			#	*	*3	/B				#	*	*3	/B cjjA+-A/:/?/?AKJJ  !1!1;?

C-/C1<1A1ACJJJ  *=;;=[..
0@0@AAAA;;=[..
0@0@AAAA cjjB+-B/:/@/@BKJJ  !1!1;?

D-/D1<1B1BDJJJ  *=;;=FMM%QEBBBB;;=FMM%QEBBBBGGI!)))##%b.B.B.DDD.DrO   c                  F   t        j                         \  } }|j                  ddgddg       | j                  j	                  |       t        | j                        }|j                          |j                         J |j                          |j                         J y )Nr   r   )	rR   r_   plotrS   
widgetlockr
   r   r   pan)rZ   r~   r   s      r:   test_widgetlock_zoompanr      s    llnGCGGQFQFJJ"	CJJ	'BGGI!)))FFH!)))rO   	plot_funcimshowcontourforientationvertical
horizontalztool,button,expectedr         )i   r   )   )gQ?gQ@c                    t        j                         \  }}t        j                  d      j	                  d      }d\  }}	 t        ||       |||	      }
|j                  |
||      }| dk(  r|j                  j                         rJ y |j                  j                         sJ d\  }}|df}|df}|d	k(  r|d d d
   }|d d d
   }|j                  j                  j                  |      j                  t              }|j                  j                  j                  |      j                  t              }t        d|j                  g|| }t        d|j                  g|| }t        |j                        }|dk(  rD|j!                          |j#                  |       |j%                  |       |j'                  |       nC|j)                          |j+                  |       |j-                  |       |j/                  |       |j0                  |j2                  ft5        j6                  |d      k(  sJ y )N   )r   r   )r   r   )vminvmax)r~   r   r   r   r   r   r   r   r   g333333?r   )rR   r_   r%   rB   rC   getattrcolorbarr~   get_navigater   r   r   rt   r	   rS   r
   r   
press_zoom	drag_zoomrelease_zoomr   	press_pandrag_panrelease_panr   r   ra   r   )r   r   toolbuttonexpectedrZ   r~   datavmin0vmax0collcbr   r   r   r   r   r   r   r   r   s                        r:   test_interactive_colorbarr      s     llnGC99R=  (DLE5!72y!$U?D	dr{	;BJ55%%'''55 JD$
 B
Bj "X"X 
	"	"2	&	-	-c	2B		"	"2	&	-	-c	2B cjj7+-7/57K

9-/9179J 
CJJ	'Bv~
	
k"
Z 

#

[!
J
z" GGRWWxT!BBBBrO   c                     t        j                  t        t              5  dt        j
                  d<   d d d        t	        j                         } | j                         J | j                  j                  j                  j                  j                  d       | j                         dk(  sJ | j                  j                  j                  j                  j                  d       | j                         dk(  sJ y # 1 sw Y   xY w)Nrw   toolmanagertoolbarr   r   r   PAN)ra   rb   rc   _EXPECTED_WARNING_TOOLMANAGERrR   rcParamsgcar   rM   rS   managerr   trigger_tool)r~   s    r:   test_toolbar_zoompanr     s    	k)F	G 0"/Y0	B!)))II((55f=!V+++II((55e<!U***0 0s   C??Dbackendsvgpspgf)marksc                 @   ddl m} ddlm} t	        j
                  d|        }|j                  } |d      } ||       |j                  dd      } |d      } ||       |j                  dd      }|j                         D 	cg c]  }	|	j                          }
}	|j                  j                          |j                  j                          |j                         D 	cg c]  }	|	j                          }}	|j                         D 	cg c]  }	|	j                          }}	t        |
|      D ]  \  }}t        j                  ||d	      sJ  t        ||      D ]'  \  }}t        j                  j                  ||d	       ) y c c}	w c c}	w c c}	w )
Nr   r   )FigureCanvaszmatplotlib.backends.backend_T)constrained_layoutr   g{Gzt?)atol)matplotlib.figurer   matplotlib.backends.backend_aggr   ra   importorskipr_   ravelget_positionrS   r   zipr%   allclosetestingassert_allclose)r   r   r   test_backend
TestCanvasfig_test	axes_testfig_aggaxes_aggr~   init_poslayed_out_pos_testlayed_out_pos_agginitplacedreftests                    r:   	test_drawr    sv   
 )<&&
&wi0L **J.Hx!!!Q'I -G1%H,5OO,=>b!>H>OONN6?oo6GH"//+HH5=^^5EFr*FFH&89 9f;;tV%8889 *,>? :	T


""35"9: ?
 IFs   	F(FFz&key,mouseend,expectedxlim,expectedylim))N皙?r  gQ@g{G(@g@gffffff'@)N)r  r   r  r   	   )N)r   r  r  r  )Nr   r  r  )Nr         ?g(\gQ@g      @g     &@)Nr  r  r  r  )N)r   333333?r  gQ	gq=
ףp@)Nr  r  r  r  )shift)r  皙?r  r  )r   r!  r  r  r  )r   r  r  r  )r   r  r  )g(\@gq=
ף(@)r   )r   g?gp=
ףgp=
ף@r#  )r   r  r  )gQg
ףp=
@)rr   )r  r   r  r  )ru   )r   r  r  r  )controlr  r  r  )r$  r"  g(\@gq=
ףp'@r%  c                    t        j                         \  }}|j                  t        j                  d             |j                         sJ |j                  d       d}|j                  j                  |      j                  t              }|j                  j                  |      j                  t              }t        d|j                  g|t        j                  | d}	t        d|j                  g|t        j                  | d}
t        |j                        }|j!                          |j#                  |	       |j%                  |
       |j'                  |
       t)        |j+                               t-        j.                  |d      k(  sJ t)        |j1                               t-        j.                  |d      k(  sJ y )	Nr   equalr   r   )r   r   r   g{Gz?r   )rR   r_   r   r%   rB   r   
set_aspectr   r   r   rt   r	   rS   r   r   r
   r   r   r   r   tupler   ra   r   r   )r   mouseendexpectedxlimexpectedylimrZ   r~   
mousestartsstartsendr   r   r   s               r:   test_interactive_panr0  5  sk   , llnGCGGBIIbM??MM' J \\##J/66s;F<<!!(+2237D cjj+1:E:J:JK 

-1:E:J:JJ 
CJJ	'BFFHLLKK
NN:6==4#HHHH6==4#HHHHrO   c                     t        j                  t        t              5  dt        j
                  d<   d d d        t	        j                         } t        | j                  j                  j                  j                        }d| j                  j                  j                  j                  v sJ | j                  j                  j                  j                  d       t        | j                  j                  j                  j                        |dz
  k(  sJ d| j                  j                  j                  j                  vsJ y # 1 sw Y   xY w)Nr   r   r   forwardr   )ra   rb   rc   r   rR   r   rg   r"   rS   r   r   toolsremove_tool)rZ   initial_lens     r:   test_toolmanager_remover6  k  s    	k)F	G 0"/Y0
'')Ccjj((44::;K

**66<<<<<JJ""..y9szz!!--334aGGGCJJ..::@@@@@0 0s   E

Ec                     t        j                  t        t              5  dt        j
                  d<   d d d        t	        j                         } | j                  j                  j                  j                  d      }t        |t              sJ | j                  j                  j                  j                  |      |u sJ t        j                  t        d      5  | j                  j                  j                  j                  d      J 	 d d d        | j                  j                  j                  j                  dd      J t        j                  t        d      5  | j                  j                  j                  j                  d      J 	 d d d        y # 1 sw Y   rxY w# 1 sw Y   xY w# 1 sw Y   y xY w)	Nr   r   r   
rubberbandz'ToolManager does not control tool 'foo'rq   F)warn)ra   rb   rc   r   rR   r   rg   rS   r   r   get_toolrL   r   r   )rZ   r8  s     r:   test_toolmanager_get_toolr;  v  sp   	k)F	G 0"/Y0
'')C##//88FJj.111::))22:>*LLL	kE
G Fzz!!--66u=EEEF ::))225u2EMMM	kE
G Jzz!!--::5AIIIJ J0 0F F
J Js#   F$2F1(2F=$F.1F:=Gc                     t        j                  t        t              5  dt        j
                  d<   d d d        t	        j                         } d| j                  j                  j                  j                  d      v sJ t        j                  t        d      5  | j                  j                  j                  j                  dd       d d d        | j                  j                  j                  j                  d      dgk(  sJ t        j                  t        d      5  | j                  j                  j                  j                  d	d       d d d        y # 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nr   r   r   vr2  z"Key c changed from back to forwardcz'foo' not in Toolsrq   )ra   rb   rc   r   rR   r   rg   rS   r   r   get_tool_keymapupdate_keymapraisesKeyError)rZ   s    r:   test_toolmanager_update_keymaprC    s.   	k)F	G 0"/Y0
'')C#**$$00@@KKKK	k@
B E

&&44YDE ::))99)DMMM	x';	< A

&&44UC@A A0 0E EA As#   E!1E.'1E:!E+.E7:F)/rv   
matplotlibr   r   matplotlib.backend_basesr   r   r   r   r	   r
   r   matplotlib.backend_toolsr   r   r   matplotlib.testing._markersr   matplotlib.pyplotpyplotrR   numpyr%   ra   r   rI   rP   rU   r[   markr   rj   parametrizer   r   r   r   r   r   r   r   paramr  r0  r6  r;  rC  rN   rO   r:   <module>rN     s   	 '& & & 4 $ 9   9 %LP9E- U( ($ 
NP?P?.&-E`* x&<=\(BC/!;#3#3V<!;#4#4i@ +"2"2G< +"3"3\BDE
3CE D >3Cl+ tUU*;<>:	:@ ,*I+*IBAJ"
ArO   