
    (?eB                     >   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                            d          d             Zd Z ej        !                    dg d          d             Z"d Z#d Z$d Z%ej        !                    dddg          ej        !                    dddg          ej        !                    ddej&        dfdej'        dfdej&        d fdej'        d!fg          d"                                     Z(d# Z)d$ Z*ej        !                    d%d&d'd ej+        d(e)          g          d*             Z,ej        !                    d+g d,          d-             Z-d. Z.d/ Z/d0 Z0dS )1    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                    d t          dd          D             } fdt          dd          D             }t          j        d                              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         |           d S )Nc                 L    g | ]!}t           j                            |          "S  )r   Pathunit_regular_polygon).0is     Clib/python3.11/site-packages/matplotlib/tests/test_backend_bases.py
<listcomp>z&test_uses_per_path.<locals>.<listcomp>   s(    DDD1TY++A..DDD          c                     g | ];}                     |                                                                          <S r   )rotate
get_matrixcopy)r   r   ids     r   r   z&test_uses_per_path.<locals>.<listcomp>   s;    MMMAryy||..005577MMMr            )
      redgreenc                    t                      }t          |                    | ||                    }|                                }d |                    |t          t          |                    |t          j        |           ||g g dgg d          D             }	|	                    |||||          }
|rLt          j        |	t          |                    }t          |                              |
dz
  |
g          sJ d S d S )Nc                     g | ]
\  }}}}}|S r   r   )r   xoyopath_idgc0rgbFaces         r   r   z5test_uses_per_path.<locals>.check.<locals>.<listcomp>$   s/     " " "82r7Cw " " "r   F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idsusesseens               r   checkz!test_uses_per_path.<locals>.check   s#   ^^66e^5 5 6 6	YY[[" """uS^^,,g23CDDz2rE7x	! !" " " 00>7J
D D 	8;sc)nn===Dt99%%tax&677777	8 	877r   r   )r   Affine2Dr5   r9   arangereshapeshape)r>   tforms_matricesr@   rA   rB   rI   nr    s          @r   test_uses_per_pathrP      s   				BDDaDDDEMMMMq!MMMOimm##G,,G!J!J8 8 8$ 
E"e_gz:FFF	E"eAaCj/7J
KKK	E"b/7J
CCC	E"e_QqS)7J
KKK	E"eR*j9991gmA&'' & &b%'!A#qqq&/*	& 	& 	& 	&	E"e_gr:>>>	E"e_gz2>>>	E"e_gr2666	E"e_gz!A#
KKKKKr   c                  V    t          t                      j        t                    sJ d S N)
isinstancer   figurer   r   r   r   test_canvas_ctorrU   >   s(    &((/8888888r   c                  f    t          j                    j                                        dk    sJ d S )Nz	image.png)pltrT   canvasget_default_filenamer   r   r   test_get_default_filenamerZ   B   s.    :<<3355DDDDDDr   c                      t          j                    } t          |           }t          j        |            t          j        | j                  rJ d S rR   )rW   rT   r   closefignum_existsnumber)figrX   s     r   test_canvas_changer`   F   sF    
*,,Cc""FIcNNN ,,,,,,,r   pdfc                 ^   t          j                     |                     dd           t          j        t
                    5 }t          j                     t          |          dk    sJ dt          |d         j	                  v sJ 	 d d d            n# 1 swxY w Y   t          j        t
                    5 }t          j
                                                     t          |          dk    sJ dt          |d         j	                  v sJ 	 d d d            d S # 1 swxY w Y   d S )NDISPLAYz:999r!   z<FigureCanvasPdf is non-interactive, and thus cannot be shownr   )rW   subplotssetenvpytestwarnsUserWarningshowr6   strmessagegcf)monkeypatchrecs     r   test_non_gui_warningro   O   s   LNNNy&)))	k	"	" (c


3xx1}}}}Ns1v~&&' ' ' ' '( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 
k	"	" (c		3xx1}}}}Ns1v~&&' ' ' ' '( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s&   ABBB;AD""D&)D&c                      t          j                    \  } }| j                            |           | j        j        |k    sJ |                                  | j        j        J d S rR   )rW   rd   rX   
grab_mousemouse_grabberclear)r_   axs     r   test_grab_clearru   b   sa    lnnGCJ":#r))))IIKKK:#+++++r   zx, y))*      )Nrv   )NN)   gq=
ף Y@)g     i@g       @c                    t          j                    \  }}t          |          }t          d|| |          }| 
|j        J n6|j        t          |           k    sJ t          |j        t
                    sJ |
|j        J n6|j        t          |          k    sJ t          |j        t
                    sJ | |t          j	        d|
                    |            d|                    |           |                    | |                    sJ d x|_        |_        t          j	        d|                    | |                    sJ d S d S d S )N
test_eventzx=z +y=c                     dS )Nfoor   )xs    r   <lambda>z.test_location_event_position.<locals>.<lambda>   s     r   zx=foo +y=foo)rW   rd   r   r   r}   intrS   yrematchformat_xdataformat_ydataformat_coord	fmt_xdata	fmt_ydata)r}   r   r_   rt   rX   events         r   test_location_event_positionr   l   sg    lnnGCc""F,155Eyww#a&&    %'3'''''yww#a&&    %'3'''''}x=##==););==OOAq!!# # 	# 	# 	# '6o5r|x1(=(=>>>>> }
 	?>r   c                  6   t          j                    } |                     dddddd           | j                                         g fd}| j                            d|           t          d| j        d	                                           t          d
| j        g| j	        
                    d          t          j        R                                   t          d| j        d	                                           t                    dk    sJ d S )N      ?hellocenterT)havapickerc                 V    | j         j        dk    sJ                     |            d S )Na)
mouseeventkeyappend)r   pickss    r   handle_pickztest_pick.<locals>.handle_pick   s2    #s****Ur   
pick_eventkey_press_eventr   button_press_eventr   r   key_release_eventr!   )rW   rT   textrX   drawmpl_connectr   _processr	   transFigure	transformr   LEFTr6   )r_   r   r   s     @r   	test_pickr      s   
*,,CHHRWhtHDDDJOOE     J<555
C0099;;;#SZ !))(33!! ! !!) #*c22;;===u::??????r   c                  J   t          j                    \  } }|                    d           |                                J t	          | j                  }|                                 |                                dk    sJ |                                }|                                }d}d}|j	        
                    |                              t                    }|j	        
                    |                              t                    }t          d| j        g|t          j        R  }	| j        j                            |	j        |	           t          d| j        g|t          j        R  }
| j        j                            |
j        |
           |                                |	j        |
j        fk    sJ |                                |	j        |
j        fk    sJ t          d| j        g|t          j        R  }	| j        j                            |	j        |	           t          d| j        g|t          j        R  }
| j        j                            |
j        |
           |                                t-          j        |dd	
          k    sJ |                                t-          j        |dd	
          k    sJ |                                 |                                J |                                s|                                rJ d S )Nlogit)xscaleZOOM)gư>皙?)gwJ?皙?r   button_release_eventr   g|=)relabs)rW   rd   r;   get_navigate_moder
   rX   zoomget_xlimget_ylim	transDatar   astyper   r	   r   r   	callbacksprocessnamexdataydataRIGHTrf   approxget_autoscalex_onget_autoscaley_on)r_   rt   tbxlim0ylim0d0d1s0s1start_event
stop_events              r   test_interactive_zoomr      s   lnnGCFF'F!!)))	CJ	'	'BGGIII!!V++++KKMMEKKMME 
B	B 
			#	#	*	*3	/	/B				#	#	*	*3	/	/B cjA+-A/:/?A A AKJ  !1;???
C-/C1<1AC C CJJ  *===;;==[.
0@AAAAA;;==[.
0@AAAAA cjB+-B/:/@B B BKJ  !1;???
D-/D1<1BD D DJJ  *===;;==FM%QEBBBBBBB;;==FM%QEBBBBBBBGGIII!!)))##%%Db.B.B.D.DDDDDDr   c                  j   t          j                    \  } }|                    ddgddg           | j                            |           t          | j                  }|                                 |                                J |                                 |                                J d S )Nr   r!   )	rW   rd   plotrX   
widgetlockr
   r   r   pan)r_   rt   r   s      r   test_widgetlock_zoompanr      s    lnnGCGGQFQFJ"	CJ	'	'BGGIII!!)))FFHHH!!)))))r   	plot_funcimshowcontourforientationvertical
horizontalztool,button,expectedr         )i   r   )   )gQ?gQ@c                    t          j                    \  }}t          j        d                              d          }d\  }}	 t          ||           |||	          }
|                    |
||          }| dk    r|j                                        rJ d S |j                                        sJ d\  }}|df}|df}|d	k    r|d d d
         }|d d d
         }|j        j	        
                    |                              t                    }|j        j	        
                    |                              t                    }t          d|j        g||R  }t          d|j        g||R  }t          |j                  }|dk    rT|                                 |                    |           |                    |           |                    |           nS|                                 |                    |           |                    |           |                    |           |j        |j        ft5          j        |d          k    sJ d S )N   )r   r   r   r$   )vminvmax)rt   r   r   r   r   r   r   r   r   g333333?r   )rW   rd   r9   rK   rL   getattrcolorbarrt   get_navigater   r   r   r   r	   rX   r
   r   
press_zoom	drag_zoomrelease_zoomr   	press_pandrag_panrelease_panr   r   rf   r   )r   r   toolbuttonexpectedr_   rt   datavmin0vmax0collcbr   r   r   r   r   r   r   r   r   s                        r   test_interactive_colorbarr      sr    lnnGC9R==  ((DLE5!72y!!$U???D	dr{	;	;BJ5%%'''''5 JD$
 B
Bj  "X"X 
	"	"2	&	&	-	-c	2	2B		"	"2	&	&	-	-c	2	2B cj7+-7/57 7 7K
9-/9179 9 9J 
CJ	'	'Bv~~
			
k"""
Z   

####

[!!!
J
z""" GRWxT!B!B!BBBBBBBr   c                     t          j        t          t                    5  dt          j        d<   d d d            n# 1 swxY w Y   t	          j                    } |                                 J | j        j	        j
        j                            d           |                                 dk    sJ | j        j	        j
        j                            d           |                                 dk    sJ d S )Nr   toolmanagertoolbarr   r   r   PAN)rf   rg   rh   _EXPECTED_WARNING_TOOLMANAGERrW   rcParamsgcar   rT   rX   managerr   trigger_tool)rt   s    r   test_toolbar_zoompanr     s   	k)F	G	G	G 0 0"/Y0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	B!!)))I(55f===!!V++++I(55e<<<!!U******   =AAc                     t          j                    \  } }|                    t          d          t          d                     t	          | j                  }|                                 t          d| j        ddd                                           t          d| j        ddd                                           |	                                |
                                cxk    rdk    sn J t          d| j        ddd                                           t          d| j        ddd                                           |	                                |
                                cxk    rdk    sn J |j                            dd	g          \  }}t          d
| j        g|t          j        R                                   t          d| j        g|t          j        R                                   t          d| j        d                                           |	                                |
                                cxk    rdk    sn J t          d| j        ddd                                           t          d| j        ddd                                           |	                                |
                                cxk    rdk    sn J d S )N   r   kd   l)r!   r$   r   )r%   r%   )r"   r"   r   r   h)rW   rd   r   r5   r
   rX   r   r   r   r   r   r   r   r	   r   r   )r_   rt   r   startstops        r   $test_toolbar_home_restores_autoscaler    s   lnnGCGGE"IIuRyy!!!	CJ	'	'BGGIII 
Cc::CCEEE
Cc::CCEEE;;==BKKMM4444W444444
Cc::CCEEE
Cc::CCEEE;;==BKKMM4444W444444 ,((&&)9::KE4#SZJ%J9IJJJSSUUU%szKDK+:JKKKTTVVV
C0099;;;;;==BKKMM4444W444444
Cc::CCEEE
Cc::CCEEE;;==BKKMM4444W44444444r   backendsvgpspgf)marksc                    ddl m} ddlm} t	          j        d|            }|j        } |d          } ||           |                    dd          } |d          } ||           |                    dd          }d |                                D             }	|j        	                                 |j        	                                 d	 |                                D             }
d
 |                                D             }t          |	|
          D ]\  }}t          j        ||d          rJ t          ||
          D ]'\  }}t          j                            ||d           (d S )Nr   r   )FigureCanvaszmatplotlib.backends.backend_T)constrained_layoutr%   c                 6    g | ]}|                                 S r   get_positionr   rt   s     r   r   ztest_draw.<locals>.<listcomp>N  s"    >>>b!!>>>r   c                 6    g | ]}|                                 S r   r  r  s     r   r   ztest_draw.<locals>.<listcomp>S  s"    HHH"//++HHHr   c                 6    g | ]}|                                 S r   r  r  s     r   r   ztest_draw.<locals>.<listcomp>T  s"    FFFr**FFFr   g{Gzt?)atol)matplotlib.figurer   matplotlib.backends.backend_aggr  rf   importorskiprd   ravelrX   r   zipr9   allclosetestingassert_allclose)r  r   r  test_backend
TestCanvasfig_test	axes_testfig_aggaxes_agginit_poslayed_out_pos_testlayed_out_pos_agginitplacedreftests                   r   	test_drawr*  9  s   
 )(((((<<<<<<&0w00 L *Jv...HJx!!!Q''I f---GL1%%H>>IOO,=,=>>>HONHHioo6G6GHHHFFX^^5E5EFFFH&899 9 9f;tV%8888888*,>?? : :	T

""35"9999: :r   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,  r2  r-  r4  )N)r   333333?r3  gQ	gq=
ףp@)Nr,  r6  r-  r7  )shift)r,  皙?r-  r/  )r9  r:  r,  r/  r.  )r9  r5  r-  r-  )r9  r1  r3  )g(\@gq=
ף(@)r9  )r   g?gp=
ףgp=
ף@r<  )r9  r8  r-  )gQg
ףp=
@)r}   )r,  r   r-  r/  )r   )r   r,  r/  r.  )controlr+  r-  r-  )r=  r;  g(\@gq=
ףp'@r>  c                    t          j                    \  }}|                    t          j        d                     |                                sJ |                    d           d}|j                            |          	                    t                    }|j                            |          	                    t                    }t          d|j        g|R t          j        | d}	t          d|j        g|R t          j        | d}
t          |j                  }|                                 |                    |	           |                    |
           |                    |
           t)          |                                          t-          j        |d          k    sJ t)          |                                          t-          j        |d          k    sJ d S )	Nr$   equalr   r   )r   r   r   g{Gz?r   )rW   rd   r   r9   rK   r   
set_aspectr   r   r   r   r	   rX   r   r   r
   r   r   r   r   tupler   rf   r   r   )r   mouseendexpectedxlimexpectedylimr_   rt   
mousestartsstartsendr   r   r   s               r   test_interactive_panrI  ]  s   , lnnGCGGBIbMM??MM' J \##J//66s;;F<!!(++22377D cj+1 :E:J  K 
-1 :E:J  J 
CJ	'	'BFFHHHLLKK
NN:6=4#H#H#HHHHH6=4#H#H#HHHHHHHr   c                     t          j        t          t                    5  dt          j        d<   d d d            n# 1 swxY w Y   t	          j                    } t          | j        j	        j
        j                  }d| j        j	        j
        j        v sJ | j        j	        j
                            d           t          | j        j	        j
        j                  |dz
  k    sJ d| j        j	        j
        j        vsJ d S )Nr   r   r   forwardr!   )rf   rg   rh   r   rW   r   rl   r6   rX   r   r   toolsremove_tool)r_   initial_lens     r   test_toolmanager_removerO    s   	k)F	G	G	G 0 0"/Y0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'))Ccj(4:;;K
*6<<<<<J"..y999sz!-344aGGGGCJ.:@@@@@@@r   c                  :   t          j        t          t                    5  dt          j        d<   d d d            n# 1 swxY w Y   t	          j                    } | j        j        j	        
                    d          }t          |t                    sJ | j        j        j	        
                    |          |u sJ t          j        t          d          5  | j        j        j	        
                    d          J 	 d d d            n# 1 swxY w Y   | j        j        j	        
                    dd          J t          j        t          d          5  | j        j        j	                            d          J 	 d d d            d S # 1 swxY w Y   d S )	Nr   r   r   
rubberbandz'ToolManager does not control tool 'foo'r|   F)warn)rf   rg   rh   r   rW   r   rl   rX   r   r   get_toolrS   r   r   )r_   rQ  s     r   test_toolmanager_get_toolrT    sk   	k)F	G	G	G 0 0"/Y0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'))C#/88FFJj.11111:)22:>>*LLLL	kE
G 
G 
G F Fz!-66u==EEEEF F F F F F F F F F F F F F F :)225u2EEMMM	kE
G 
G 
G J Jz!-::5AAIIIIJ J J J J J J J J J J J J J J J J Js3   =AA'DDD'FFFc                     t          j        t          t                    5  dt          j        d<   d d d            n# 1 swxY w Y   t	          j                    } d| j        j        j	        
                    d          v sJ t          j        t          d          5  | j        j        j	                            dd           d d d            n# 1 swxY w Y   | j        j        j	        
                    d          dgk    sJ t          j        t          d          5  | j        j        j	                            d	d           d d d            d S # 1 swxY w Y   d S )
Nr   r   r   vrK  z"Key c changed from back to forwardcz'foo' not in Toolsr|   )rf   rg   rh   r   rW   r   rl   rX   r   r   get_tool_keymapupdate_keymapraisesKeyError)r_   s    r   test_toolmanager_update_keymapr\    s%   	k)F	G	G	G 0 0"/Y0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'))C#*$0@@KKKKKK	k@
B 
B 
B E E
&44YDDDE E E E E E E E E E E E E E E :)99)DDMMMM	x';	<	<	< A A
&44UC@@@A A A A A A A A A A A A A A A A A As3   =AA&CCC!&EEE)1r   
matplotlibr   r   matplotlib.backend_basesr   r   r   r   r	   r
   r   matplotlib.backend_toolsr   r  r   matplotlib.testing._markersr   matplotlib.pyplotpyplotrW   numpyr9   rf   r   rP   rU   rZ   r`   markr  ro   ru   parametrizer   r   r   r   r   r   r   r   r  paramr*  rI  rO  rT  r\  r   r   r   <module>rg     s   				 ' ' ' ' ' ' ' '& & & & & & & & & & & & & & & & & & 4 3 3 3 3 3 $ $ $ $ $ $ 9 9 9 9 9 9           9 %L %L %LP9 9 9E E E- - - U( ( ($, , , 
NNNP P? ?P P?.  &-E -E -E`* * * x&<==\(BCC/!;#3V<!;#4i@ +"2G< +"3\BDE E
3C 3CE E DC >=3Cl+ + +5 5 5< tUU*;<<<> : :	 :@ ,   *I I+ *IBA A AJ J J"
A 
A 
A 
A 
Ar   