o
    li=                     @   s  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d	 Zd
d Zdd Zdd Zejddd Zdd Z ej!dg ddd Z"dd Z#dd Z$d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,d- Z(d.d/ Z)ej!d0d1d2dej*d3ed4gd5d6 Z+ej!d7g d8d9d: Z,d;d< Z-d=d> Z.d?d@ Z/dS )A    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               	      sR  t   dd tddD }  fddtddD }tdd	}d
dg}d
dg}dd }| | |||| | | dd |||| | g |||| | | |dd ||| | | g ||| td|jd D ]}| | ||d|d d f || qk| | ||g | | | |||g  | | ||g g  | | |||dd | d S )Nc                 S   s   g | ]}t j|qS  )r   Pathunit_regular_polygon.0ir   r   a/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/matplotlib/tests/test_backend_bases.py
<listcomp>   s    z&test_uses_per_path.<locals>.<listcomp>      c                    s   g | ]}  |  qS r   )rotate
get_matrixcopyr   idr   r   r      s             )
      redgreenc                 S   s   t  }t|| ||}| }dd ||tt||t| ||g g dgg dD }	|	|||||}
|rMt
j|	t|d}t||
d |
gsOJ d S d S )Nc                 S   s   g | ]	\}}}}}|qS r   r   )r   xoyopath_idgc0rgbFacer   r   r   r   $   s    z5test_uses_per_path.<locals>.check.<locals>.<listcomp>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seenr   r   r   check   s*   
z!test_uses_per_path.<locals>.checkr   )r   Affine2Dr0   r4   arangereshapeshape)r9   tforms_matricesr;   r<   r=   rD   nr   r   r   test_uses_per_path   s(   rK   c                   C   s   t t jts	J d S N)
isinstancer   figurer   r   r   r   r   test_canvas_ctor>   s   rO   c                   C   s   t  j dksJ d S )Nz	image.png)pltrN   canvasget_default_filenamer   r   r   r   test_get_default_filenameB   s   rS   c                  C   s.   t  } t| }t |  t | jrJ d S rL   )rP   rN   r   closefignum_existsnumber)figrQ   r   r   r   test_canvas_changeF   s   
rX   pdfc                 C   s   t   | dd tt}t   t|dksJ dt|d j	v s'J W d    n1 s1w   Y  tt"}t 
   t|dksJJ dt|d j	v sUJ W d    d S 1 s`w   Y  d S )NDISPLAYz:999r   z=Matplotlib is currently using pdf, which is a non-GUI backendr   )rP   subplotssetenvpytestwarnsUserWarningshowr1   strmessagegcf)monkeypatchrecr   r   r   test_non_gui_warningO   s    

"rf   c                  C   sD   t  \} }| j| | jj|ksJ |   | jjd u s J d S rL   )rP   r[   rQ   
grab_mousemouse_grabberclear)rW   axr   r   r   test_grab_clearb   s
   rk   zx, y))*      )Nrl   )NN)   gq=
ף Y@)g     i@g       @c                 C   s  t  \}}t|}td|| |}| d u r|jd u sJ n|jt| ks&J t|jts.J |d u r:|jd u s9J n|jt|ksCJ t|jtsKJ | d ur}|d urt	d
|| |||| |siJ dd  |_|_t	d|| |sJ d S d S d S )N
test_eventz
x={} +y={}c                 S   s   dS )Nfoor   )xr   r   r   <lambda>   s    z.test_location_event_position.<locals>.<lambda>zx=foo +y=foo)rP   r[   r   r   rq   intrM   yrematchformatformat_xdataformat_ydataformat_coord	fmt_xdata	fmt_ydata)rq   rt   rW   rj   rQ   eventr   r   r   test_location_event_positionl   s(   
r~   c                     s   t  } | jddddddd | j  g   fdd}| jd| td	| jd
  td| jg| j	
dtjR    td| jd
  t dksPJ d S )N      ?hellocenterT)havapickerc                    s   | j jdksJ  |  d S )Na)
mouseeventkeyappend)r}   picksr   r   handle_pick   s   ztest_pick.<locals>.handle_pick
pick_eventkey_press_eventr   button_press_eventr   r   key_release_eventr   )rP   rN   textrQ   drawmpl_connectr   _processr   transFigure	transformr   LEFTr1   )rW   r   r   r   r   	test_pick   s   


r   c                  C   s  t  \} }|jdd | d u s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sJ td| jg|tjR  }	| jj|	j|	 td| jg|tjR  }
| jj|
j|
 | tj|dd	d
ksJ | tj|dd	d
ksJ |  | d u sJ | s| rJ d S )Nlogit)xscaleZOOM)gư>皙?)gwJ?皙?r   button_release_eventr   g|=)relabs)rP   r[   r6   get_navigate_moder	   rQ   zoomget_xlimget_ylim	transDatar   astypers   r   r   r   	callbacksprocessnamexdataydataRIGHTr]   approxget_autoscalex_onget_autoscaley_on)rW   rj   tbxlim0ylim0d0d1s0s1start_event
stop_eventr   r   r   test_interactive_zoom   sf   
r   c                  C   sj   t  \} }|ddgddg | j| t| j}|  | d u s'J |  | d u s3J d S )Nr   r   )	rP   r[   plotrQ   
widgetlockr	   r   r   pan)rW   rj   r   r   r   r   test_widgetlock_zoompan   s   
r   	plot_funcimshowcontourforientationvertical
horizontalztool,button,expectedr         )i   r   )   )gQ?gQ@c                 C   s  t  \}}tdd}d\}}	t|| |||	d}
|j|
||d}| dkr1|j r/J d S |j s8J d\}}|df}|df}|d	krV|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r|  || || || n|  || || || |j|jftj|ddksJ d S )N   )r   r   )r   r!   )vminvmax)rj   r   r   r   r   r   r   r   r   g333333?r   )rP   r[   r4   rF   rG   getattrcolorbarrj   get_navigater   r   r   rs   r   rQ   r	   r   
press_zoom	drag_zoomrelease_zoomr   	press_pandrag_panrelease_panr   r   r]   r   )r   r   toolbuttonexpectedrW   rj   datavmin0vmax0collcbr   r   r   r   r   r   r   r   r   r   r   r   test_interactive_colorbar   sT   





"r   c                  C   s   t jttd dtjd< W d    n1 sw   Y  t } |  d u s(J | jj	j
jd |  dks9J | jj	j
jd |  dksJJ d S )Nrv   toolmanagertoolbarr   r   r   PAN)r]   r^   r_   _EXPECTED_WARNING_TOOLMANAGERrP   rcParamsgcar   rN   rQ   managerr   trigger_tool)rj   r   r   r   test_toolbar_zoompan  s   r   backendsvgpspgf)marksc                 C   s  ddl m} ddlm} td|  }|j}|dd}|| |dd}|dd}|| |dd}dd	 | D }	|j	  |j	  d
d	 | D }
dd	 | D }t
|	|
D ]\}}tj||ddrmJ q_t
||
D ]\}}tjj||dd qsd S )Nr   r   )FigureCanvaszmatplotlib.backends.backend_T)constrained_layoutr"   c                 S      g | ]}|  qS r   get_positionr   rj   r   r   r   r   0      ztest_draw.<locals>.<listcomp>c                 S   r   r   r   r   r   r   r   r   5  r   c                 S   r   r   r   r   r   r   r   r   6  r   g{Gzt?)atol)matplotlib.figurer   matplotlib.backends.backend_aggr   r]   importorskipr[   ravelrQ   r   zipr4   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testr   r   r   	test_draw  s,   



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  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=
@)rq   )r  r   r  r  )rt   )r   r  r  r  )controlr  r  r  )r   r  g(\@gq=
ףp'@r!  c                 C   s  t  \}}|t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dksrJ t| tj|ddksJ d S )	Nr!   equalr   r   )r   r   r   g{Gz?r   )rP   r[   r   r4   rF   r   
set_aspectr   r   r   rs   r   rQ   r   r   r	   r   r   r   r   tupler   r]   r   r   )r   mouseendexpectedxlimexpectedylimrW   rj   
mousestartsstartsendr   r   r   r   r   r   test_interactive_pan?  s<   




"r+  c                  C   s   t jttd dtjd< W d    n1 sw   Y  t } t| jj	j
j}d| jj	j
jv s2J | jj	j
d t| jj	j
j|d ksHJ d| jj	j
jvsRJ d S )Nr   r   r   forwardr   )r]   r^   r_   r   rP   r   rc   r1   rQ   r   r   toolsremove_tool)rW   initial_lenr   r   r   test_toolmanager_removeu  s   r0  c                  C   s$  t jttd dtjd< W d    n1 sw   Y  t } | jjj	
d}t|ts/J | jjj	
||u s;J t jtdd | jjj	
dd u sOJ W d    n1 sYw   Y  | jjj	j
dddd u slJ t jtdd | jjj	dd u sJ W d    d S 1 sw   Y  d S )	Nr   r   r   
rubberbandz'ToolManager does not control tool 'foo'rp   F)warn)r]   r^   r_   r   rP   r   rc   rQ   r   r   get_toolrM   r   r   )rW   r1  r   r   r   test_toolmanager_get_tool  s$   "r4  c                  C   s   t jttd dtjd< W d    n1 sw   Y  t } d| jjj	
dv s,J t jtdd | jjj	dd W d    n1 sGw   Y  | jjj	
ddgksYJ t jtdd | jjj	d	d W d    d S 1 suw   Y  d S )
Nr   r   r   vr,  z"Key c changed from back to forwardcz'foo' not in Toolsrp   )r]   r^   r_   r   rP   r   rc   rQ   r   r   get_tool_keymapupdate_keymapraisesKeyError)rW   r   r   r   test_toolmanager_update_keymap  s   "r;  )0ru   
matplotlibr   r   matplotlib.backend_basesr   r   r   r   r   r	   r
   matplotlib.backend_toolsr   r   r   matplotlib.testing._markersr   matplotlib.pyplotpyplotrP   numpyr4   r]   r   rK   rO   rS   rX   markr   rf   rk   parametrizer~   r   r   r   r   r   r   r   paramr  r+  r0  r4  r;  r   r   r   r   <module>   sd    $(
	


0



6
 
!