
    guX                        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d Z ej:                  jC                  dg d      d        Z"d Z#d Z$d Z%d Z&ej:                  jC                  dddg      ej:                  jC                  dddg      ej:                  jC                  ddejN                  dfdejP                  dfd ejN                  d!fd ejP                  d"fg      d#                      Z)d$ Z*d% Z+ej:                  jC                  d&d'd(d ejX                  d)e*      g      d+        Z-ej:                  jC                  d,g d-      d.        Z.d/ Z/d0 Z0d1 Z1ej:                  jC                  d2dd g      ej:                  jC                  d3ejN                  ejP                  g      ej:                  jC                  d4d5d6g      ej:                  jC                  d7g d8      ej:                  jC                  d9d:d;g      d<                                    Z2y)=    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                    `/var/www/dash_apps/app1/venv/lib/python3.12/site-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<FigureCanvasPdf is non-interactive, and thus cannot be shownr   )rR   subplotssetenvpytestwarnsUserWarningshowr"   strmessagegcf)monkeypatchrecs     r:   test_non_gui_warningrj   O   s    LLNy&)	k	" (c
3x1}}Ns1v~~&' 	( '( 
k	" (c	3x1}}Ns1v~~&' 	( '( (( (( (s    AC<#AD<DDc                      t        j                         \  } }| j                  j                  |       | j                  j                  |k(  sJ | j                          | j                  j                  J y rK   )rR   r_   rS   
grab_mousemouse_grabberclearrZ   axs     r:   test_grab_clearrq   b   sZ    llnGCJJ"::##r)))IIK::##+++rO   zx, y))*      )Nrr   )NN)   gq=
ף Y@)g     i@g       @c                 L   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 | f|c|j                  | |      d|j                  |        d|j                  |       dk(  sJ d x|_        |_        |j                  | |      dk(  sJ y y y )N
test_eventz
(x, y) = (z, )c                      y)NfoorN   )xs    r:   <lambda>z.test_location_event_position.<locals>.<lambda>   s    rO   z(x, y) = (foo, foo))rR   r_   r   r   rz   intrL   yformat_coordformat_xdataformat_ydata	fmt_xdata	fmt_ydata)rz   r}   rZ   rp   rS   events         r:   test_location_event_positionr   l   s%    llnGCc"F,15Eywwww#a&   %''3'''ywwww#a&   %''3'''}1% 232booa6H5IKL 	M L&55r|q!$(====	 '}rO   c                  b   t        j                         \  } }|j                  dd       |j                  dd      dk(  sJ |j	                         j                  d       |j                  dd      dk(  sJ |j                         j                  d	
       |j                  dd      dk(  sJ y )Nr   r   )r   r   )xlimylimg      @z(x, y) = (5.00, 5.00))r   (   )r   z$(x, y) = (5.00, 5.00) | (5.00, 10.0))r   r   )r   z3(x, y) = (5.00, 5.00) | (5.00, 10.0) | (2.50, 5.00))rR   r_   r'   r~   twinxtwinyro   s     r:   !test_location_event_position_twinr      s    llnGCFFgF&??2r"&====HHJNNN ??2r"&LLLLHHJNNNOOB#DE F E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   astyper|   r	   r   r   	callbacksprocessnamexdataydataRIGHTra   approxget_autoscalex_onget_autoscaley_on)rZ   rp   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   rp   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   )vminvmax)rp   r   r   r   r   r   r   r   r   333333?r   )rR   r_   r%   rB   rC   getattrcolorbarrp   get_navigater   r   r   r|   r	   rS   r
   r   
press_zoom	drag_zoomrelease_zoomr   	press_pandrag_panrelease_panr   r   ra   r   )r   r   toolbuttonexpectedrZ   rp   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                  d       | j                         dk(  sJ y # 1 sw Y   xY w)Nmatchtoolmanagertoolbarr   r   r   PAN)ra   rb   rc   _EXPECTED_WARNING_TOOLMANAGERrR   rcParamsgca
get_figurer   rS   managerr   trigger_tool)rp   rZ   s     r:   test_toolbar_zoompanr     s    	k)F	G 0"/Y0	B
--/C!)))JJ""//7!V+++JJ""//6!U***0 0s   C;;Dc                  V   t        j                         \  } }|j                  t        d      t        d             t	        | j
                        }|j                          t        d| j
                  ddd      j                          t        d| j
                  ddd      j                          |j                         |j                         cxk(  rdk(  sJ  J t        d| j
                  ddd      j                          t        d| j
                  ddd      j                          |j                         |j                         cxk(  rdk(  sJ  J |j                  j                  dd	g      \  }}t        d
| j
                  g|t        j                   j                          t        d| j
                  g|t        j                   j                          t        d| j
                  d      j                          |j                         |j                         cxk(  rdk(  sJ  J t        d| j
                  ddd      j                          t        d| j
                  ddd      j                          |j                         |j                         cxk(  rdk(  sJ  J y )N   r   kd   l)r   r   r   )r   r   )r   r   r   r   h)rR   r_   r   r!   r
   rS   r   r   r   r   r   r   r   r	   r   r   )rZ   rp   r   startstops        r:   $test_toolbar_home_restores_autoscaler	  &  s   llnGCGGE"IuRy!	CJJ	'BGGI 

Cc:CCE

Cc:CCE;;=BKKM4W44444

Cc:CCE

Cc:CCE;;=BKKM4W44444 ,,((&&)9:KE4#SZZJ%J9I9IJSSU%szzKDK+:J:JKTTV

C099;;;=BKKM4W44444

Cc:CCE

Cc:CCE;;=BKKM4W44444rO   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  	importlibimport_moduler_   ravelget_positionrS   r   zipr%   allclosetestingassert_allclose)r
  r   r  test_backend
TestCanvasfig_test	axes_testfig_aggaxes_aggrp   init_poslayed_out_pos_testlayed_out_pos_agginitplacedreftests                    r:   	test_drawr*  D  sr   
 )<**-I'+STL**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,  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=
@)rz   )r,  r   r-  r/  )r}   )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   r|   r	   rS   r   r   r
   r   r   r   r   tupler   ra   r   r   )r   mouseendexpectedxlimexpectedylimrZ   rp   
mousestartsstartsendr   r   r   s               r:   test_interactive_panrI  f  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_removerO    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'ry   F)warn)ra   rb   rc   r   rR   r   rg   rS   r   r   get_toolrL   r   r   )rZ   rQ  s     r:   test_toolmanager_get_toolrT    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   vrK  z"Key c changed from back to forwardcz'foo' not in Toolsry   )ra   rb   rc   r   rR   r   rg   rS   r   r   get_tool_keymapupdate_keymapraisesKeyError)rZ   s    r:   test_toolmanager_update_keymapr\    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r   r   	patch_visTFforward_nav)TFautot_stwinsharec                    t        j                         \  }}|j                  dd      }|j                  |       |j                  j                  |       |dk(  rg|j                  d      }|j                  |       |j                  |       |j                  d      }	|	j                  |       |	j                  |       n%|dk(  r |j                         }|j                         }	|j                  d       |j                  j                  d	       j                  d
       |j                  j                  d       |j                  d       |j                  j                  d       	j                  d       |	j                  j                  d       d\  }
}||fD ]   } |j                  |
   |j                  |  " d\  }}}}|j                  j                  ||f      j                  t               }|j                  j                  ||f      j                  t               }|j                  j#                         j                  |      \  }}|j                  j#                         j                  |      \  }}t%        d|j&                  g|| }t%        d|j&                  g|| }t)        |j&                        }| dk(  r|dk(  rdnd}|j+                  g |||      \  }}|j-                         du r|j+                  g |||      \  }}nO|j-                         du r|
}|}n8|j                  j/                         s|j+                  g |||      \  }}n|
}|}|j1                          |j3                  |       |j5                  |       |j7                  |       |j9                         t;        j<                  |d      k(  sJ |j?                         t;        j<                  |d      k(  sJ |j9                         t;        j<                  |d      k(  sJ |j?                         t;        j<                  |d      k(  sJ |j9                         t;        j<                  |j9                         d      k(  sJ |j9                         t;        j<                  |	j9                         d      k(  sJ y  |j@                  g ||   |jB                  |d g| jD                  j                  tF              \  }}|jI                          |j-                         du rY |j@                  g ||   |jB                  |d g| jD                  j                  tF              \  }}|jI                          n|j-                         du r|
}|}nw|j                  j/                         sY |j@                  g ||   |jB                  |d g| jD                  j                  tF              \  }}|jI                          n|
}|}|jK                          |jM                  |       |jO                  |       |jQ                  |       |j9                         t;        j<                  |d      k(  sJ |j?                         t;        j<                  |d      k(  sJ |j9                         t;        j<                  |d      k(  sJ |j?                         t;        j<                  |d      k(  sJ |j9                         t;        j<                  |j9                         d      k(  sJ |j9                         t;        j<                  |	j9                         d      k(  sJ y )N   c   )zorderrb        ra  ax_t)r   r   r   r   	ax_t_twinrax_b)r   r   r   r   	ax_b_twinb)r   r   )r   r   r   r   r   r   r   r   inoutTFr   r   ))rR   r_   add_subplotset_forward_navigation_eventspatchset_visiblesharexshareyr   	set_labelset_facecolorset_xlimset_ylimr   r   r   r|   invertedr	   rS   r
   _prepare_view_from_bboxget_forward_navigation_eventsget_visibler   r   r   r   r   ra   r   r   	start_pan_get_pan_pointsTfloatend_panr   r   r   r   )r   r   r]  r^  r`  rZ   rl  ri  rj  rm  	init_xlim	init_ylimrp   xstart_txstop_tystart_tystop_tr   r   xstart_bystart_bxstop_bystop_br   r   r   	directionxlim_tylim_txlim_bylim_bs                                  r:    test_interactive_pan_zoom_eventsr    s8    IC??3r?*D&&{3JJ9% g~OOC(	OOC(		JJL	JJL	 	NN6JJ^,$OO!!#&NN6JJ^,$OO!!#&
 ,IyTl  YY 
 ,6(Hgx 
	!	!8X"6	7	>	>s	CB		!	!7G"4	5	<	<S	AB 002<<R@Hh~~..0::2>GW 13::KKFKK2CJJLLVLJ	CJJ	'Bv~#q[Te	55jjRj)L--/47!99*B**iPNFF//1U:FF::))+!%!=!=jjRj)!T""
	
k"
Z 

#}}&--D"AAAA}}&--D"AAAA}}&--D"AAAA}}&--D"AAAA }}&--	0B0B0D$"OOOO}}&--	0B0B0D$"OOOO 	##F#---fd@R@BBII%P--/47DNN'B''1T11&$DDFFMMeTNFFLLN//1U:FF::))+++F+!5!5!5fd!HR!H!J!J!Q!QRW!X""

[!
J
z"}}&--D"AAAA}}&--D"AAAA}}&--D"AAAA}}&--D"AAAA }}&--	0B0B0D$"OOOO}}&--	0B0B0D$"OOOOrO   )3r  
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   rq   parametrizer   r   r   r   r   r   r   r   r   r	  paramr*  rI  rO  rT  r\  r  rN   rO   r:   <module>r     s    '& & & 4 $ 9   9 %LP9E- U( ($, 
NP>P>,F&-E`* x&<=\(BC/!;#3#3V<!;#4#4i@ +"2"2G< +"3"3\BDE
3CE D >3Cl	+5< tUU*;<>:	:< ,*I+*IBAJ"
A &%1K$4$4k6G6G#HItUm4(=> 12}P 3 ? 5 J 2
}PrO   