o
    g#                  
   @   s8  d dl Z d dlmZ d dlmZmZmZmZmZm	Z	 d dl
mZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dlZejjed ddZd	d
 Zdd Z dd Z!dd Z"ej#d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 dej*d!ed"gd#d$ Z+dS )%    N)_check_for_pgf)FigureCanvasBaseLocationEventMouseButton
MouseEventNavigationToolbar2RendererBase)ToolZoomToolPanRubberbandBaseToolViewsPositions_views_positionsFigurexelatexzxelatex + pgf is required)reasonc               	      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  )pathPathunit_regular_polygon.0ir   r   a/home/ubuntu/cloudmapper/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 }	|	|||||}
|rOt
j|	t|d}t||
d |
gsQJ 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len
transforms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   )r6   Affine2Dr4   r9   arangereshapeshape)r>   tforms_matricesr@   rA   rB   rI   nr   r    r   test_uses_per_path   s(   rP   c                   C   s   t t jts	J d S N)
isinstancer   figurer   r   r   r   r   test_canvas_ctor>   s   rT   c                   C   s   t  j dksJ d S )Nz	image.png)pltrS   canvasget_default_filenamer   r   r   r   test_get_default_filenameB   s   rX   c                  C   s.   t  } t| }t |  t | jrJ d S rQ   )rU   rS   r   closefignum_existsnumber)figrV   r   r   r   test_canvas_changeF   s   
r]   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   )rU   subplotssetenvpytestwarnsUserWarningshowr5   strmessagegcf)monkeypatchrecr   r   r   test_non_gui_warningO   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>w   s    z.test_location_event_position.<locals>.<lambda>zx=foo +y=foo)rU   r`   r   r   rq   intrR   yrematchformatformat_xdataformat_ydataformat_coord	fmt_xdata	fmt_ydata)rq   rt   r\   axrV   eventr   r   r   test_location_event_positionb   s(   
r   c                     s   t  } | jddddddd | j  g  | jd fdd td	| jg| jd
t	j
R  }| jj|j| t dksCJ d S )N      ?hellocenterT)havapicker
pick_eventc                    s
     | S rQ   )append)r~   picksr   r   rr      s   
 ztest_pick.<locals>.<lambda>button_press_event)r   r   r"   )rU   rS   textrV   drawmpl_connectr   transFigure	transformr   LEFT	callbacksprocessnamer5   )r\   start_eventr   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?)gwJ?g?r   button_release_eventr   g|=)relabs)rU   r`   r;   get_navigate_moder   rV   zoomget_xlimget_ylim	transDatar   astypers   r   r   r   r   r   r   xdataydataRIGHTrb   approxget_autoscalex_onget_autoscaley_on)r\   r}   tbxlim0ylim0d0d1s0s1r   
stop_eventr   r   r   test_interactive_zoom   sf   
r   c                  C   s   d} t jt| d dtjd< W d    n1 sw   Y  t }| d u s*J |jjj	j
jdtd |jjj	j
jdtd |jjj	j
jttd |jjj	j
jdtd |jjj	j
d | d	ksgJ |jjj	j
d | d
ksxJ d S )NzTreat the new Tool classes introduced in v[0-9]*.[0-9]* as experimental for now; the API and rcParam may change in future versions.)rv   toolmanagertoolbarr   )r   toolpan
rubberbandr   PAN)rb   rc   rd   rU   rcParamsgcar   rS   rV   managerr   add_toolr	   r
   r   r   r   trigger_tool)expected_warning_regexr}   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   r}   r   r   r   r          ztest_draw.<locals>.<listcomp>c                 S   r   r   r   r   r   r   r   r      r   c                 S   r   r   r   r   r   r   r   r      r   g{Gzt?)atol)matplotlib.figurer   matplotlib.backends.backend_aggr   rb   importorskipr`   ravelrV   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testr   r   r   	test_draw   s,   



r   ),ru   matplotlib.testingr   matplotlib.backend_basesr   r   r   r   r   r   matplotlib.backend_toolsr	   r
   r   r   r   r   r   matplotlib.pyplotpyplotrU   matplotlib.transformsr6   matplotlib.pathr   numpyr9   rb   markskipifneeds_xelatexrP   rT   rX   r]   r   rk   parametrizer   r   r   r   paramr   r   r   r   r   <module>   s<     )
	

0