
    h%                        S SK r S SKrS SKJr  S SKrS SKrS SKrS SKrS SK	r	S SK
rS SKr
S SKr
S SKr
S SKJr  S SKrS SKJrJr  S SKrS SKJrJrJrJr  S SKJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*  S SK+J,r,   SS	K-J.r.  SS
K.J/r/J0r0  \Rz                  " \>5      r?\#R                  S\#R                  S\#R                  S\#R                  S\#R                  S\#R                  S\#R                  S0rG\S 5       rH0 rIS\ R                  " 5       R                  -   rLS rMS0S jrN " S S\!5      rO " S S\5      rP " S S \5      rQ " S! S"\ \R                  5      rSS# rT\R                  " \P5       " S$ S%\R                  5      5       rW " S& S'\"\R                  5      rX\R                  " \P5       " S( S)\R                  5      5       rZ\R                  " \P5       " S* S+\R                  5      5       r\\R                  " \P5       " S, S-\R                  5      5       r^\Xr_\S\Ql`        \X\Qla        \R                   " S. S/\5      5       rcg! \1 a  r2\3" \2SS5      r4\3" \4SS5      r5\6" \4\15      (       a[  \6" \5\75      (       aM  S\8" \55      ;   aA  S\Rr                  Ru                  \	Rv                  5      ;   r<\<(       a	  \1" S5      \2e\1" S5      \2ee Sr2C2ff = f)1    N)contextmanager)SimpleDialog)ImageImageTk)_apibackend_toolscbook_c_internal_utils)_BackendFigureCanvasBaseFigureManagerBaseNavigationToolbar2	TimerBaseToolContainerBasecursors_ModeMouseButton
CloseEventKeyEventLocationEvent
MouseEventResizeEvent)Gcf   )_tkagg)TK_PHOTO_COMPOSITE_OVERLAYTK_PHOTO_COMPOSITE_SET	__cause__z&'_tkinter' has no attribute '__file__'z
/uv/pythonzFailed to import tkagg backend. You appear to be using an outdated version of uv's managed Python distribution which is not compatible with Tk. Please upgrade to the latest uv version, then update Python with: `uv python upgrade --reinstall`a  Failed to import tkagg backend. This is likely caused by using a Python executable based on python-build-standalone, which is not compatible with Tk. Recent versions of python-build-standalone should be compatible with Tk. Please update your python version or select another backend.fleurhand2arrow	crosshairwatchsb_h_double_arrowsb_v_double_arrowc               #   &  #    [         R                  " 5       n  S v   U (       a0  [        R                  S   (       a  [         R                  " U 5        g g g ! U (       a0  [        R                  S   (       a  [         R                  " U 5        f f f = f7f)Nztk.window_focus)r
   Win32_GetForegroundWindowmplrcParamsWin32_SetForegroundWindow)
foregrounds    Y/var/www/fran/franai/venv/lib/python3.13/site-packages/matplotlib/backends/_backend_tk.py!_restore_foreground_window_at_endr-   E   sd     "<<>JD#,,'8977
C :::#,,'8977
C ::s   BA 8B9BB	mpl_blit_c                     [         R                  U 5      u  pp4nUR                  R                  SSU5      (       d  g[        R
                  " UR                  R                  5       [        U5      X%UU5        g)z
Thin wrapper to blit called via tkapp.call.

*argsid* is a unique string identifier to fetch the correct arguments from
the ``_blit_args`` dict, since arguments cannot be passed directly.
infocommandsN)
_blit_argspoptkcallr   blit
interpaddrstr)argsid
photoimagedataoffsetsbbox	comp_rules         r,   _blitr?   T   s]     2<1G.JgY==fj*==
KK
((*C
OTg    c                 :   [         R                  " U5      nUR                  SS u  pVUb  UR                  5       u  u  pxu  p[	        [
        R                  " U5      S5      n[        [
        R                  " U	5      U5      n	[	        [
        R                  " U5      S5      n[        [
        R                  " U
5      U5      n
Xy:  d  X:  a  gXyX4n[        nOSUSU4n[        nXX+U4n[        [        U5      5      nU[        U'    U R                  R                  [         U5        g! [        R"                   a^  nS[        U5      ;  a  e U R                  R%                  [         [&        5        U R                  R                  [         U5         SnAgSnAff = f)a  
Blit *aggimage* to *photoimage*.

*offsets* is a tuple describing how to fill the ``offset`` field of the
``Tk_PhotoImageBlock`` struct: it should be (0, 1, 2, 3) for RGBA8888 data,
(2, 1, 0, 3) for little-endian ARBG32 (i.e. GBRA8888) data and (1, 2, 3, 0)
for big-endian ARGB32 (i.e. ARGB8888) data.

If *bbox* is passed, it defines the region that gets blitted. That region
will be composed with the previous data according to the alpha channel.
Blitting will be clipped to pixels inside the canvas, including silently
doing nothing if the *bbox* region is entirely outside the canvas.

Tcl events must be dispatched to trigger a blit from a non-Tcl thread.
N   r   zinvalid command name)npasarrayshape	__array__maxmathfloorminceilr   r   r8   idr2   r4   r5   _blit_tcl_nameTclErrorcreatecommandr?   )r:   aggimager<   r=   r;   heightwidthx1y1x2y2bboxptrr>   argsr9   es                   r,   r6   r6   b   sJ     ::hDJJrNMF!^^-(2B#2&B#2'G2".	eQ'*	 Wy8D D]FJv3>62;; 3!Q/##NE:>622	3s    D( (F<AFFc                   D   ^  \ rS rSrSrU 4S jrS rS rU 4S jrSr	U =r
$ )TimerTk   z<Subclass of `backend_bases.TimerBase` using Tk timer events.c                 @   > S U l         [        TU ]  " U0 UD6  Xl        g N)_timersuper__init__parent)selfrb   rX   kwargs	__class__s       r,   ra   TimerTk.__init__   s!    $)&)r@   c                     U R                  5         U R                  R                  U R                  U R                  5      U l        g r^   )_timer_stoprb   after	_interval	_on_timerr_   rc   s    r,   _timer_startTimerTk._timer_start   s.    kk''Gr@   c                 v    U R                   b%  U R                  R                  U R                   5        S U l         g r^   )r_   rb   after_cancelrl   s    r,   rh   TimerTk._timer_stop   s)    ;;"KK$$T[[1r@   c                 L  >^  [         TT ]  5         T R                  (       d|  T R                  (       ak  T R                  S:  a6  T R
                  R                  T R                  T R                  5      T l        g T R
                  R                  U 4S j5      T l        g S T l        g )Nr   c                  d   > T R                   R                  T R                  T R                  5      $ r^   )rb   ri   rj   rk   rl   s   r,   <lambda>#TimerTk._on_timer.<locals>.<lambda>   s    DKK--dnndnnMr@   )r`   rk   _singler_   rj   rb   ri   
after_idle)rc   re   s   `r,   rk   TimerTk._on_timer   sm    
 ||~~!"kk//O #kk44M DKr@   )r_   rb   )__name__
__module____qualname____firstlineno____doc__ra   rm   rh   rk   __static_attributes____classcell__re   s   @r,   r[   r[      s     F
H
 r@   r[   c                     ^  \ rS rSrSr\R                  " S 5      rSU 4S jjrS S jr	S r
S rS	 rS
 rS rS rS rS!S jrS rS rS rS r\S 5       r\SS.S j5       rS rS rS rS rS rS"S jrS rS r Sr!U =r"$ )#FigureCanvasTk   r4   c                     [         $ r^   )FigureManagerTk)clss    r,   rt   FigureCanvasTk.<lambda>   s    ?r@   Nc           	        >^	^
^^ [         TU ]  U5        S U l        S U l        U R	                  SS9u  p4[
        R                  " USX4SSS9U l        [
        R                  " U R                  X4S9U l	        U R                  R                  US-  US-  U R                  S9U l        U R                  R                  S	U R                  5        U R                  R                  S
U R                  5        U R                  R                  SU R                  5        U R                  R                  SU R                   5        U R                  R                  SU R"                  5        U R                  R                  SU R$                  5        U R                  R                  SU R&                  5        S H(  nU R                  R                  XPR(                  5        M*     S H(  nU R                  R                  XPR*                  5        M*     S H(  nU R                  R                  XPR,                  5        M*     S H(  nU R                  R                  XPR.                  5        M*     U R                  R1                  5       n[2        R4                  " U 5      m[2        R4                  " U5      mU
UU4S jnUR                  SUS5      m
U	UU4S jnUR                  SUS5      m	U R                  R7                  5         S U l        S U l        g )NTphysicalwhiter   )master
backgroundrR   rQ   borderwidthhighlightthickness)r   rR   rQ   rB   imagez<Configure>z<Map>z<Key>z<Motion><Enter><Leave>z<KeyRelease>)z
<Button-1>z
<Button-2>z
<Button-3>)z<Double-Button-1>z<Double-Button-2>z<Double-Button-3>)z<ButtonRelease-1>z<ButtonRelease-2>z<ButtonRelease-3>)z
<Button-4>z
<Button-5>c                 t   > T" 5       nUc  T" 5       nUb  UR                  ST5        g UR                  U 5      $ )N<MouseWheel>)unbindscroll_event_windows)eventrc   rootscroll_event_windows_idweakrootweakselfs      r,   r   5FigureCanvasTk.__init__.<locals>.scroll_event_windows   s?    :D|z#KK0GH,,U33r@   r   +c                    > T" 5       nUc  T" 5       nUb  UR                  ST5        g U R                  UR                  L a  [        SU5      R	                  5         g g )N	<Destroy>close_event)r   widget	_tkcanvasr   _process)r   rc   r   filter_destroy_idr   r   s      r,   filter_destroy/FigureCanvasTk.__init__.<locals>.filter_destroy   sV    :D|z#KK->?||t~~-=$/88: .r@   r   )r`   ra   _idle_draw_id_event_loop_idget_width_heightr4   Canvasr   
PhotoImage_tkphotocreate_image_tkcanvas_image_regionbindresize_update_device_pixel_ratio	key_pressmotion_notify_evententer_notify_eventleave_notify_eventkey_releasebutton_press_eventbutton_dblclick_eventbutton_release_eventscroll_eventwinfo_toplevelweakrefref	focus_set_rubberband_rect_black_rubberband_rect_white)rc   figurer   whnamer   r   r   r   r   r   r   re   s            @@@@r,   ra   FigureCanvasTk.__init__   si    !"$$d$3g1D >>6&*nn&A&AqD!Q$dmm 'B '-#M4;;7GT%D%DEGT^^4J(@(@AIt'>'>?It'>'>?ND,<,<=>DNN&=&=> ?ODNN&@&@AOODNN&?&?@O
 /DNN&7&78 / ~~,,. ;;t$;;t$	4 #'))N<PRU"V	; !IIk>3G  "&*#&*#r@   c                    S n[         R                  S:X  a4  [        U R                  R                  R                  SS5      S-  S5      nO2[         R                  S:X  a  U R                  R                  S5      S-  nUbB  U R                  U5      (       a+  U R                  S	S
9u  p4U R                  R                  X4S9  g g g )Nwin32r4   scalinggUUUUUU?rB   linux1i`   Tr   rR   rQ   )
sysplatformroundr   r4   r5   winfo_fpixels_set_device_pixel_ratior   	configure)rc   r   ratior   r   s        r,   r   )FigureCanvasTk._update_device_pixel_ratio  s    <<7" $..++00yAWMqQE\\W$NN006;E!=!=e!D!D (($(7DANN$$1$7 "Er@   c                    UR                   UR                  p2U R                  R                  nX$-  nX4-  nU R                  R	                  XVSS9  U R
                  R                  U R                  5        U R                  R                  [        U5      [        U5      S9  U R
                  R                  [        US-  5      [        US-  5      U R                  S9U l        [        SU 5      R                  5         U R                  5         g )NF)forwardr   rB   r   resize_event)rR   rQ   r   dpiset_size_inchesr   deleter   r   r   intr   r   r   	draw_idle)rc   r   rR   rQ   dpivalwinchhinchs          r,   r   FigureCanvasTk.resize  s    U\\v ##E%#@d99:c%jVE&*nn&A&A	NC
O4== 'B 'B#ND)224r@   c                 v   ^  T R                   (       a  g U 4S jnT R                  R                  U5      T l         g )Nc                  N   >  TR                  5         S Tl        g ! S Tl        f = fr^   )drawr   rX   rc   s    r,   	idle_draw+FigureCanvasTk.draw_idle.<locals>.idle_draw,  s"    *		%)"T"s    	$)r   r   rw   )rc   r   s   ` r,   r   FigureCanvasTk.draw_idle'  s-    	* "^^66yAr@   c                     U R                   $ )z
Return the Tk widget used to implement FigureCanvasTkAgg.

Although the initial implementation uses a Tk canvas,  this routine
is intended to hide that fact.
)r   rl   s    r,   get_tk_widgetFigureCanvasTk.get_tk_widget4  s     ~~r@   c                     U R                   R                  UR                  5      U R                  R                  R
                  U R                   R                  UR                  5      -
  4$ r^   )r   canvasxxr   r=   rQ   canvasyyrc   r   s     r,   _event_mpl_coords FigureCanvasTk._event_mpl_coords=  sQ     &&uww/  ''$..*@*@*IIK 	Kr@   c                     [        SU /U R                  U5      Q7U R                  U5      U R                  U5      US.6R	                  5         g )Nr   )buttons	modifiersguiEvent)r   r   _mpl_buttons_mpl_modifiersr   r   s     r,   r   "FigureCanvasTk.motion_notify_eventD  sO    ($ 	#**51	#,,U3!007!		# $,8:r@   c                 ~    [        SU /U R                  U5      Q7U R                  U5      US.6R                  5         g )Nfigure_enter_eventr   r   r   r   r   r   r   s     r,   r   !FigureCanvasTk.enter_notify_eventK  A    *D 	&--e4	& $ 3 3E :$	& '/hjr@   c                 ~    [        SU /U R                  U5      Q7U R                  U5      US.6R                  5         g )Nfigure_leave_eventr   r   r   s     r,   r   !FigureCanvasTk.leave_notify_eventQ  r   r@   c                 "   U R                   R                  5         [        USS 5      n[        R                  S:X  a  SSS.R                  X35      n[        SU /U R                  U5      QUP7UU R                  U5      US.6R                  5         g )Nnumdarwin   rB   rB   r  r   )dblclickr   r   )
r   r   getattrr   r   getr   r   r   r   )rc   r   r	  r  s       r,   r   !FigureCanvasTk.button_press_eventW  s      "eUD)<<8#A,""3,C' 	#**51	#36	#AI!007!	# $,8:r@   c                 $    U R                  USS9  g )NT)r	  )r   r   s     r,   r   $FigureCanvasTk.button_dblclick_eventc  s    5r@   c                     [        USS 5      n[        R                  S:X  a  SSS.R                  X"5      n[	        SU /U R                  U5      QUP7U R                  U5      US.6R                  5         g )Nr  r  r  rB   r  r   r   )r
  r   r   r  r   r   r   r   )rc   r   r  s      r,   r   #FigureCanvasTk.button_release_eventf  sw    eUD)<<8#A,""3,C)4 	#**51	#36	#!007!	# $,8:r@   c                     [        USS 5      nUS:X  a  SO	US:X  a  SOSn[        SU /U R                  U5      Q7UU R                  U5      US.6R	                  5         g )	Nr     r      r   r   stepr   r   )r
  r   r   r   r   )rc   r   r  r  s       r,   r   FigureCanvasTk.scroll_evento  sf    eUD)1Hqq"a>4 	#**51	#8<!007!	# $,8:r@   c           
         UR                   R                  UR                  UR                  5      nX R                  :w  a  gU R                  R                  UR                  UR                  5       -
  5      nU R                  R                  R                  U R                  R                  UR                  UR                  5       -
  5      -
  nUR                  S-  n[        SU X4XPR                  U5      US9R                  5         g)zMouseWheel event processorNx   r   r  )r   winfo_containingx_rooty_rootr   r   winfo_rootxr   r=   rQ   r   winfo_rootydeltar   r   r   )rc   r   r   r   r   r  s         r,   r   #FigureCanvasTk.scroll_event_windowsw  s     LL))%,,ENN""5<<!--/#AB[[$$~~%%ellQ]]_&DEF{{S >4d.A.A%.H!	##+8:r@   c                    [         R                  S:X  aW  [        R                  S4[        R                  S4[        R
                  S4[        R                  S4[        R                  S4/OV[        R                  S4[        R
                  S4[        R                  S4[        R                  S4[        R                  S4/nU VVs/ s H  u  p#U R                  U-  (       d  M  UPM     snn$ s  snnf )Nr     i   i   i   i   )	r   r   r   LEFTRIGHTMIDDLEBACKFORWARDstate)r   r   r   masks       r,   r   FigureCanvasTk._mpl_buttons  s     \\X% v&')w'  '*
 v&((w'  '*,
 	  (1GyEKK$4FyGGGs   C0&C0excludec                    [         R                  S:X  a  / SQO[         R                  S:X  a  / SQO/ SQnU VVVs/ s H%  u  p4nU R                  U-  (       d  M  X:w  d  M#  UPM'     snnn$ s  snnnf )Nr   )ctrlr  control)alti   r1  shiftr   r3  r  )r.  )r1     r1  r2  )cmd   r5  )r.  )r1  r6  r1  r2  )r`   @   r`   )r   r   r(  )r   r,  r   r   r)  keys         r,   r   FigureCanvasTk._mpl_modifiers  sq     \\W$	
 \\X%+

,
 	 -6 :IS;;% *1. I : 	: :s   A,A,!A,c                     UR                   n[        R                  " X!R                  5      nUbB  U R	                  XS9nSU;   a  U(       a  UR                  S5        SR                  / UQUP5      $ g )Nr+  r3  r   )charr	   _unikey_or_keysym_to_mplkeykeysymr   removejoin)rc   r   unikeyr8  modss        r,   _get_keyFigureCanvasTk._get_key  sh    //E?&&u&:D$6G$88LdLCL)) r@   c                 ~    [        SU U R                  U5      /U R                  U5      Q7SU06R                  5         g )Nkey_press_eventr   r   rB  r   r   r   s     r,   r   FigureCanvasTk.key_press  s=    "Du%	!(,(>(>u(E	!	!!)r@   c                 ~    [        SU U R                  U5      /U R                  U5      Q7SU06R                  5         g )Nkey_release_eventr   rF  r   s     r,   r   FigureCanvasTk.key_release  s=    $du%	!(,(>(>u(E	!	!!)r@   c                 4    [        U R                  /UQ70 UD6$ r^   )r[   r   )rc   rX   rd   s      r,   	new_timerFigureCanvasTk.new_timer  s    t~~7777r@   c                 8    U R                   R                  5         g r^   )r   updaterl   s    r,   flush_eventsFigureCanvasTk.flush_events  s    r@   c                    US:  ai  [        SU-  5      nUS:  a+  U R                  R                  X R                  5      U l        O*U R                  R                  U R                  5      U l        U R                  R                  5         g )Nr   i  )r   r   ri   stop_event_loopr   rw   mainloop)rc   timeoutmillisecondss      r,   start_event_loopFigureCanvasTk.start_event_loop  sq    Q;tg~.La&*nn&:&: "6"6'8# '+nn&?&?(('*#!r@   c                     U R                   (       a,  U R                  R                  U R                   5        S U l         U R                  R                  5         g r^   )r   r   rp   quitrl   s    r,   rS  FigureCanvasTk.stop_event_loop  s;    NN''(;(;<"&Dr@   c                 z     U R                   R                  [        U   S9  g ! [        R                   a     g f = f)N)cursor)r   r   cursordtkinterrN   )rc   r]  s     r,   
set_cursorFigureCanvasTk.set_cursor  s8    	NN$$GFO$< 		s    # ::)r   r   r   r   r   r   r   )NNr^   )F)r   )#ry   rz   r{   r|   required_interactive_frameworkr   classpropertymanager_classra   r   r   r   r   r   r   r   r   r   r   r   r   r   staticmethodr   r   rB  r   r   rL  rP  rW  rS  r`  r~   r   r   s   @r,   r   r      s    %)"&&'BCMC+J8  BK.11
.6... H H* )- : :2*,
,
8 
" r@   r   c                   z   ^  \ rS rSrSrSrU 4S jr\S 5       r\S 5       r	S r
S rS	 rS
 rS rS rS rSrU =r$ )r   i  z
Attributes
----------
canvas : `FigureCanvas`
    The FigureCanvas instance
num : int or str
    The Figure number
toolbar : tk.Toolbar
    The tk.Toolbar
window : tk.Window
    The tk.Window
Fc                 .  > X0l         [        TU ]	  X5        U R                   R                  5         U R                  R
                  R                  [        R                  [        R                  SS9  [        UR                  5       S5      n[        R                  " USSU 3S9U l        SU l        [        R                   " XCR                  R#                  5       5      (       a+  U R                  R%                  SU R&                  5      U l        S	U l        g )
Nr   )sidefillexpandr4  r   
window_dpi)r   valuer    writeF)windowr`   ra   withdrawcanvasr   packr4   TOPBOTHr   wm_frameIntVar_window_dpi_window_dpi_cbnamer   enable_dpi_awarenessr7   	trace_add_update_window_dpi_shown)rc   rq  r  ro  window_framere   s        r,   ra   FigureManagerTk.__init__  s    % 	""RWWQ"G
 6??,b199F",6|n*EG"$&&|YY5I5I5KLL&*&6&6&@&@00'2D# r@   c                    [        5          [        R                  " 5       c*  [        R                  " 5         [        R
                  " 5         [        R                  " SS9nUR                  5         [        [        R                  " S5      5      n[        R                  " XTS9n[        [        R                  " S5      5      n[        R                  " XtS9nUR                  SX5        U" X$S9n	U " XU5      n
[        R                  " 5       (       a   U
R!                  5         U	R#                  5         U
sS S S 5        $ ! , (       d  f       g = f)N
matplotlib)	classNamezimages/matplotlib.png)filer   zimages/matplotlib_large.pngFr   )r-   r	   "_get_running_interactive_framework_setup_new_guiappr
    Win32_SetProcessDpiAwareness_maxr4   Tkrp  r8   _get_data_pathr   r   	iconphotor(   is_interactiveshowr   )r   canvas_classr   r  ro  
icon_fnameicon_imgicon_fname_largeicon_img_largerq  managers              r,   create_with_canvas"FigureManagerTk.create_with_canvas  s     /0779A'')!BBDUU\2FOO U11') *J))zIH"5#7#7-$/  0$//%6N UN=!&8F&v.G!!##  "; 100s   D'D<<
E
c                     [         R                  " 5       nU(       aL  US   n[        U5      nUR                  (       a  g SUl         UR                  R                  5         SUl        g g ! SUl        f = f)Nr   TF)r   get_all_fig_managerstype_owns_mainloopro  rT  )r   managersfirst_managerrd  s       r,   start_main_loopFigureManagerTk.start_main_loop2  sj    ++-$QKM /M+++/M(5$$--//4,  05,s   A* *	A3c                 8   U R                   R                  5       nU R                  R                  SSUS-  5        U R                  (       a5  [        U R                  S5      (       a  U R                  R                  5         U R                  R                  5         g )Nr4   r   H   _rescale)	rw  r  ro  r5   toolbarhasattrr  rq  r   )rc   rX   newdpis      r,   r{  "FigureManagerTk._update_window_dpi@  sg    !!%%'y&2+6<<GDLL*==LL!!#..0r@   c           	          SnX:  d  X#:  a)  [         R                  S:X  a  [        SU SU SU S35      eU R                  R                  R                  XS9  g )Ni\ r   z/You have requested to resize the Tk window to (z, z), one of which is bigger than z.  At larger sizes xorg will either exit with an error on newer versions (~1.20) or cause corruption on older version (~1.19).  We do not expect a window over a million pixel wide or tall to be intended behavior.r   )r   r   
ValueErrorrq  r   r   )rc   rR   rQ   max_sizes       r,   r   FigureManagerTk.resizeG  sk     1s||w7N!!&r& 2""* ,++, , 	''e'Cr@   c                 d  ^  [        5          T R                  (       da  U 4S jnT R                  R                  SU5        T R                  R	                  5         T R
                  R                  R                  5         OT R
                  R                  5         [        R                  S   (       a`  T R
                  R                  R                  R                  SS5        T R
                  R                  R                  R                  SS5        ST l        S S S 5        g ! , (       d  f       g = f)Nc                  2   > [         R                  " T5        g r^   )r   destroyr   s    r,   r  %FigureManagerTk.show.<locals>.destroyX  s    KK%r@   WM_DELETE_WINDOWzfigure.raise_windowz-topmostr   r   T)r-   r|  ro  protocol	deiconifyrq  r   r   r   r(   r)   r  
attributes)rc   r  s   ` r,   r  FigureManagerTk.showU  s    .0;;&$$%7A%%'%%//1%%'||12##**55j!D##**55j!DDK 100s   DD!!
D/c                   ^  T R                   R                  (       a9  T R                   R                  R                  T R                   R                  5        T R                   R                  (       a9  T R                   R                  R                  T R                   R                  5        T R
                  (       a&  T R                  R                  ST R
                  5        U 4S jn[        R                  " 5       S:X  a2  T R                  R                  T R                  R                  SU5        g T R                  R                  5         U" 5         g )Nrn  c                     > T R                   R                  5         T R                  (       a6  [        R                  " 5       (       d  T R                   R                  5         g g g r^   )ro  r  r  r   get_num_fig_managersrZ  rl   s   r,   delayed_destroy0FigureManagerTk.destroy.<locals>.delayed_destroyq  sC    KK!""3+C+C+E+E  " ,F"r@   r4   r   )rq  r   r   rp   r   rx  rw  trace_remover	   r  ro  rw   ri   rO  )rc   rX   r  s   `  r,   r  FigureManagerTk.destroyd  s    ;;$$KK!!..t{{/H/HI;;%%KK!!..t{{/I/IJ""))'43J3JK	# 335=KK""4;;#4#4aIKK r@   c                 6    U R                   R                  5       $ r^   ro  wm_titlerl   s    r,   get_window_title FigureManagerTk.get_window_title~  s    {{##%%r@   c                 :    U R                   R                  U5        g r^   r  )rc   titles     r,   set_window_title FigureManagerTk.set_window_title  s    U#r@   c                     [        U R                  R                  S5      5      nU R                  R                  SU(       + 5        g )Nz-fullscreen)boolro  r  )rc   is_fullscreens     r,   full_screen_toggle"FigureManagerTk.full_screen_toggle  s2    T[[33MBC}-.?@r@   )r|  rw  rx  ro  )ry   rz   r{   r|   r}   r  ra   classmethodr  r  r{  r   r  r  r  r  r  r~   r   r   s   @r,   r   r     sh     N*  B 5 51D4&$A Ar@   r   c                      ^  \ rS rSrSSS.S jjrS rS rU 4S jrU 4S jrS	 r	S
 r
S rS rS rS rS rS rSrU =r$ )NavigationToolbar2Tki  T)pack_toolbarc                8   Uc  UR                  5       R                  n[        R                  R	                  XS[        UR                  R                  R                  5      SS9  0 U l	        U R                   Hy  u  pEpgUc  U R                  5         M  U R                  U[        [        R                  " SU S35      5      US;   [!        X5      S9=U R                  U'   nUc  Mn  [#        X5        M{     [$        R&                  R)                  US	S
9U l        [        R,                  " X R*                  SS9n	U	R/                  [        R0                  S9  [        R2                  " U S9U l        [        R,                  " X R*                  U R4                  [        R0                  S9U l        U R6                  R/                  [        R0                  S9  [8        R                  " X5        U(       a-  U R/                  [        R:                  [        R<                  S9  gg)a  
Parameters
----------
canvas : `FigureCanvas`
    The figure canvas on which to operate.
window : tk.Window
    The tk.Window which owns this toolbar.
pack_toolbar : bool, default: True
    If True, add the toolbar to the parent's pack manager's packing
    list during initialization with ``side="bottom"`` and ``fill="x"``.
    If you want to use the toolbar with a different layout manager, use
    ``pack_toolbar=False``.
NrB   2   )r   r   rR   rQ   zimages/.png)zoompan)togglecommand
   )r   size    
 r   fonttextrh  r  )r   r  textvariablejustifyrh  ri  )r   r   r4   Framera   r   r   r=   rR   _buttons	toolitems_Spacer_Buttonr8   r	   r  r
  add_tooltipr_  r  Font_label_fontLabelrr  r$  	StringVarmessage_message_labelr   BOTTOMX)
rc   rq  ro  r  r  tooltip_text
image_filecallbackbuttonlabels
             r,   ra   NavigationToolbar2Tk.__init__  s    >))+22F
$1 #FMM$6$6$<$< =b 	 	J 8<4D
|/3||,,wzl$-GHI#6#D3	 0< 0 d#f  +5 9G #<<,,&r,B +;+;FH


!||40 hhd9I9I48LL/1xx9 	  bhh /##D1II299244I0 r@   c                    U R                  5        H  n[        U[        R                  [        R                  45      (       a*  [        US5      (       a  [        R                  X5        MZ  M\  [        U[        R                  5      (       a   UR                  SS9  UR                  SS9  M  [        U[        R                  5      (       a  M  [        R                  SUR                  5        M     U R                  R                  SS9  g	)
at  
Scale all children of the toolbar to current DPI setting.

Before this is called, the Tk scaling setting will have been updated to
match the new DPI. Tk widgets do not update for changes to scaling, but
all measurements made after the change will match the new scaling. Thus
this function re-applies all the same sizes in points, which Tk will
scale correctly to pixels.
_image_file18p)rQ   3p)padxzUnknown child class %sr  r  N)winfo_children
isinstancer4   ButtonCheckbuttonr  r  _set_image_for_buttonr  r   pack_configurer  _logwarningwinfo_classr  )rc   r   s     r,   r  NavigationToolbar2Tk._rescale  s     ))+F&299bnn"=>>6=11(>>tL FBHH--   .%%4%0FBHH--5v7I7IJ , 	"""+r@   c                    S[         R                  4S[         R                  44 Hb  u  pXR                  ;   d  M  U R                  U:X  a  U R                  U   R                  5         ME  U R                  U   R                  5         Md     g )NZoomPan)r   ZOOMPANr  modeselectdeselect)rc   r  r  s      r,   _update_buttons_checked,NavigationToolbar2Tk._update_buttons_checked  sf    "EJJ/%1CDJD}}$99$MM$'..0MM$'002 Er@   c                 @   > [         TU ]  " U6   U R                  5         g r^   )r`   r  r  rc   rX   re   s     r,   r  NavigationToolbar2Tk.pan  s    T$$&r@   c                 @   > [         TU ]  " U6   U R                  5         g r^   )r`   r  r  r	  s     r,   r  NavigationToolbar2Tk.zoom  s    d$$&r@   c                 :    U R                   R                  U5        g r^   )r  setrc   ss     r,   set_message NavigationToolbar2Tk.set_message  s    r@   c           	         U R                   R                  (       a9  U R                   R                  R                  U R                   R                  5        U R                   R                  (       a9  U R                   R                  R                  U R                   R                  5        U R                   R
                  R                  R                  nXc-
  nXe-
  nU R                   R                  R                  X#XE5      U R                   l        U R                   R                  R                  X#XESSS9U R                   l        g )Nr   )r  r  )outlinedash)	rq  r   r   r   r   r   r=   rQ   create_rectangle)rc   r   x0y0rS   rT   rQ   s          r,   draw_rubberband$NavigationToolbar2Tk.draw_rubberband  s    ;;--KK!!(()K)KL;;--KK!!(()K)KL##((//[[KK!!22  	* KK!!22f 3 > 	*r@   c                    U R                   R                  (       aJ  U R                   R                  R                  U R                   R                  5        S U R                   l        U R                   R                  (       aK  U R                   R                  R                  U R                   R                  5        S U R                   l        g g r^   )rq  r   r   r   r   rl   s    r,   remove_rubberband&NavigationToolbar2Tk.remove_rubberband   s}    ;;--KK!!(()K)KL15DKK.;;--KK!!(()K)KL15DKK. .r@   c           	      Z  ^^ TR                   c  g[        R                  " STR                   5      nUR                  UR                  R                  SS5      5      nTR                  S5      nU4S jmU4S jnS n[        R                  " US	:  a  UR                  5       (       a  UOU5       nUR                  S
5      n[        R                  " UR                  XD45      U S9nUTl        S[        R                   " TR#                  TR%                  S5      5      5      -  n	U" Xy5      n
[        R                  " U
R                  XD45      U S9nUTl        SSS5        U" S5      (       a  SW0nOSW0n[)        T[*        R,                  5      (       an  TR%                  S5      S:w  aY  U R.                  S:w  a  SnO.T" S5      u  pnT" S5      u  nnnUU-   S-  UU-   S-  UU-   S-  4nU" U5      (       a  WUS'   OWUS'   TR0                  " S0 UDSSS.D6  g! , (       d  f       N= f)zu
Set the image for a button based on its pixel size.

The pixel size is determined by the DPI scaling of the window.
Nimagesr  z
_large.pngr  c                 D   > TR                  TR                  U 5      5      $ r^   )	winfo_rgbcget)
color_namer  s    r,   
_get_color>NavigationToolbar2Tk._set_image_for_button.<locals>._get_color  s    ##FKK
$;<<r@   c                 Z   > [        U [        5      (       a  T" U 5      n [        U 5      S:  $ )Ng    @)r  r8   rG   )colorr$  s    r,   _is_dark<NavigationToolbar2Tk._set_image_for_button.<locals>._is_dark  s)    %%%"5)u:	))r@   c                     [         R                  " U 5      R                  5       nUSS S24   S:H  R                  SS9nXUS S24'   [        R
                  " U5      $ )N.r  r   r  )axis)rC   rD   copyallr   	fromarray)r   r'  
image_data
black_masks       r,   _recolor_iconANavigationToolbar2Tk._set_image_for_button.<locals>._recolor_icon"  s]    E*//1J$S"1"W-277R7@J).z2A2~&??:..r@      RGBAr  g o?r+   r   r   selectcolorrm  x11activebackgroundrB   selectimage)rQ   rR    )r  r	   r  	with_namer   replacewinfo_pixelsr   openexistsconvertr   r   r   _ntimagerC   arrayr!  r"  _ntimage_altr  r4   r  _windowingsystemr   )rc   r  path_regular
path_larger  r(  r1  imr   r+   im_alt	image_altimage_kwargsr5  r1g1b1r2g2b2r$  s    `                  @r,   r  *NavigationToolbar2Tk._set_image_for_button  s    % ++Hf6H6HI!++%%fl;=
""5)	=	*
	/ ZZtbyZ5F5F5H5H
)+.0F#B&&ryy$'>tLE#FO &  \!:;*= =J"22F**tl+D:I"+F+ L!!
 $Y/L#U+L
 vr~~..M*b0$$-+
 (6
'(:;
B "2qy2b5!)beQY?$$.7]+.3]+C<CUCY+ +s   0B)H
H*c                 X   U(       d  [         R                  " XUSSSS9nO4[         R                  " U S9n[         R                  " XUSUSSSS9nXel        X%l        Ub  [        R                  X5        OUR                  U R                  S9  UR                  [         R                  S	9  U$ )
Nflatgroover   )r   r  r  relief
overreliefr   r  F)r   r  r  indicatoronvariable	offreliefrU  r   )r  r  )r4   r  rv  r  varr  r  r  r   r  rr  r#  )rc   r  r  r  r  brY  s          r,   r  NavigationToolbar2Tk._ButtonW  s    		(A ))4(CU8A
 E"! 66t?KKT--K.	BGGr@   c                     [         R                  " U S[         R                  SS9nUR                  [         R                  SS9  U$ )Nr  DarkGray)r   rQ   rT  bgr  )rh  r  )r4   r  RIDGErr  r#  r  s     r,   r  NavigationToolbar2Tk._Spacers  s3    HHDrxxJO	BGG$'r@   c           
         U R                   R                  5       n[        UR                  5       5       VVs/ s H  u  p4USR	                  S U 5       5      4PM!     nnnU R                   R                  5       nU R                   R                  5       U   n[        R                  " U R                   R                  5       U5      nSn	[        R                  R                  [        R                  S   5      n
[        R                   " U R                   R#                  5       5      R$                  n[&        R(                  R+                  U R                   R                  5       R,                  SUU	U
UUS9nUS;   a  g U
S:w  a9  [        R                  R/                  [1        U5      5      [        R                  S'   [        R                   " U5      R2                  SS  S:w  a  S nOX(R5                  5          S	   n U R                   R6                  R9                  XS
9  U$ s  snnf ! [:         a3  n[&        R<                  R?                  S[1        U5      5         S nAg S nAff = f)N c              3   ,   #    U  H
  nS U 3v   M     g7f)z*.Nr9  ).0exts     r,   	<genexpr>3NavigationToolbar2Tk.save_figure.<locals>.<genexpr>|  s     7$3bJ$s   rm  zsavefig.directoryzSave the figure)r   r  	filetypesdefaultextension
initialdirinitialfiletypevariable)rm  r9  r   r   )formatzError saving file) rq  get_supported_filetypes_groupedsorteditemsr?  get_default_filetypeget_supported_filetypesr4   r  r   ospath
expanduserr(   r)   pathlibPathget_default_filenamestemr_  
filedialogasksaveasfilenamer   dirnamer8   suffixr  r   savefig	Exception
messagebox	showerror)rc   rX   rh  r   extstk_filetypesdefault_extensiondefault_filetypefiletype_variableri  rj  rk  fname	extensionrY   s                  r,   save_figure NavigationToolbar2Tk.save_figurey  s   KK??A	 %Y__%67
7
 3887$7787 	 

 !KK<<>;;>>@ARSLL)B)B)DFVW WW''5H(IJ
 ll4;;#C#C#EFKK""44;;,,.55#"-!#* 5  HE
+ LL,-
 <<%%ab)R/I!"7"7"9:1=I	FKK&&u&?L]
^  	F(()<c!fEE	Fs   &H ;$H& &
I#0)II#c                 h   [         R                  [         R                  S.nU R                  R                  S:  nU R                  R                  [        U R                  5      S-
  :  nSU R                  ;   a  X   U R                  S   S'   SU R                  ;   a  X   U R                  S   S'   g g )N)TFr   r   Backr(  Forward)r4   NORMALDISABLED
_nav_stack_poslenr  )rc   	state_mapcan_backcan_forwards       r,   set_history_buttons(NavigationToolbar2Tk.set_history_buttons  s    99R[[9	??''!+oo**S-AA-EET]]"-6-@DMM&!'*%090FDMM)$W- &r@   )r  r  r  r  r^   )ry   rz   r{   r|   ra   r  r  r  r  r  r  r  r  r  r  r  r  r~   r   r   s   @r,   r  r    sX    51D 51n,63''? 6MD^82FhG Gr@   r  c                 r   ^ ^^ S mUUU 4S jnU4S jnT R                  SU5        T R                  SU5        g )Nc                 F  > T(       d  T(       d  gTR                  S5      u  p  nUTR                  5       -   TR                  5       -   nUTR                  5       -   n[        R
                  " T5      mTR                  S5        TR                  SU SU 35         TR                  R                  SSTR                  SS5        [        R                  " TT[        R                  [        R                  SS	9nUR                  SS
9  g! [        R                   a     NZf = f)zDisplay text in tooltip window.Ninsertr   r   z!::tk::unsupported::MacWindowStylestylehelpnoActivates)r  r  rT  r   )ipadx)r=   r  winfo_widthr  r4   Topleveloverrideredirectgeometryr5   _wrN   r  r#  SOLIDrr  )r   r   r   _r  r  	tipwindowr   s        r,   showtipadd_tooltip.<locals>.showtip  s     D[[*
a""$$v'9'9';;""$$KK'	""1%Qqc1#;'	LLA%y||$m5
 rww "a9


	 {{ 		s   )D	 	D D c                 8   > T(       a  TR                  5         S mg r^   )r  )r   r  s    r,   hidetipadd_tooltip.<locals>.hidetip  s    	r@   r   r   )r   )r   r  r  r  r  s   ``  @r,   r  r    s0    I* KK	7#
KK	7#r@   c                        \ rS rSrS rS rSrg)RubberbandTki  c                 P    [         R                  U R                  5       S XX45        g r^   )r  r  "_make_classic_style_pseudo_toolbar)rc   r  r  rS   rT   s        r,   r  RubberbandTk.draw_rubberband  s#    ,,335tRR	Mr@   c                 J    [         R                  U R                  5       5        g r^   )r  r  r  rl   s    r,   r  RubberbandTk.remove_rubberband  s    ..335	7r@   r9  N)ry   rz   r{   r|   r  r  r~   r9  r@   r,   r  r    s    M7r@   r  c                   N    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rSrg)	ToolbarTki  Nc                 x   [         R                  " X5        Uc.  U R                  R                  R	                  5       R
                  nU R                  R                  R                  R                  R                  u  p4SXC-
  pe[        R                  R                  X[        U5      [        U5      SS9  [        R                  R                  SS9U l        [        R                   " X R                  SS9nUR#                  [        R$                  S9  [        R&                  " U S	9U l        [        R                   " X R                  U R(                  S
9U l        U R*                  R#                  [        R$                  S9  0 U l        U R#                  [        R.                  [        R0                  S9  0 U l        g )Nr  rB   )r   rR   rQ   r   r  r  r  r  r  r  )r   r  r  r  )r   ra   toolmanagerrq  r   r   r   r=   	intervalxr4   r  r   r_  r  r  r  r  rr  r$  r  _messager  
_toolitemsrs  r  _groups)rc   r  ro  xminxmaxrQ   rR   r  s           r,   ra   ToolbarTk.__init__  sH   ""45>%%,,::<CCF%%,,3388BB
DK
$ #E
3v;&' 	 	) #<<,,",5
 +;+;FH


!D1 hhd9I9I48MMC  bhh /		rvvBDD	)r@   c                 ,    [         R                  U 5      $ r^   )r  r  rl   s    r,   r  ToolbarTk._rescale  s    #,,T22r@   c                 j  ^ ^ T R                  U5      nUR                  5       nU[        U5      :  d  US:  a  S n	OX   n	[        R	                  UTXFUU 4S j5      n
U
R                  U	S9  Ub  [        X5        T R                  R                  T/ 5        T R                  T   R                  U
5        g )Nr   c                  &   > TR                  T 5      $ r^   )_button_click)r   rc   s   r,   rt   (ToolbarTk.add_toolitem.<locals>.<lambda>
  s    d6H6H6Nr@   )before)
_get_groupframepack_slavesr  r  r  r  r  r  
setdefaultappend)rc   r   grouppositionr  descriptionr  framer   r  r  s   ``         r,   add_toolitemToolbarTk.add_toolitem  s    $$U+##%s7|#x!|F&F%--eT:.NPV,",""4,$$V,r@   c                 @   XR                   ;  a  U R                   (       a  U R                  5         [        R                  " U SS9nUR	                  [        R
                  [        R                  S9  U R                  Ul        X R                   U'   U R                   U   $ )Nr   )r   r   r  )r  _add_separatorr4   r  rr  r#  Yr  )rc   r  r  s      r,   r  ToolbarTk._get_groupframe  sp    $||##%HHDa8EJJBGG"$$J/ $ 0 0E"'LL||E""r@   c                 ,    [         R                  U 5      $ r^   )r  r  rl   s    r,   r  ToolbarTk._add_separator  s    #++D11r@   c                 &    U R                  U5        g r^   )trigger_tool)rc   r   s     r,   r  ToolbarTk._button_click  s    $r@   c                     XR                   ;  a  g U R                   U    H,  nU(       a  UR                  5         M  UR                  5         M.     g r^   )r  r  r  )rc   r   toggledtoolitems       r,   toggle_toolitemToolbarTk.toggle_toolitem!  s;    &-H!!!#	 .r@   c                 j    U R                   R                  U/ 5       H  nUR                  5         M     g r^   )r  r3   pack_forget)rc   r   r  s      r,   remove_toolitemToolbarTk.remove_toolitem*  s)    ++D"5H  " 6r@   c                 :    U R                   R                  U5        g r^   )r  r  r  s     r,   r  ToolbarTk.set_message.  s    !r@   )r  r  r  r  r  r^   )ry   rz   r{   r|   ra   r  r  r  r  r  r  r  r  r~   r9  r@   r,   r  r    s/    23- #2 $#r@   r  c                       \ rS rSrS rSrg)SaveFigureTki2  c                 J    [         R                  U R                  5       5        g r^   )r  r  r  rc   rX   s     r,   triggerSaveFigureTk.trigger4  s    ((335	7r@   r9  Nry   rz   r{   r|   r  r~   r9  r@   r,   r  r  2  s    7r@   r  c                       \ rS rSrS rSrg)ConfigureSubplotsTki9  c                 .    [         R                  U 5        g r^   )r  configure_subplotsr  s     r,   r  ConfigureSubplotsTk.trigger;  s    //5r@   r9  Nr  r9  r@   r,   r  r  9  s    6r@   r  c                       \ rS rSrS rSrg)HelpTki?  c                    ^ [        U R                  R                  R                  U R	                  5       S/5      mU4S jTl        g )NOKc                 L   > TR                   R                  R                  5       $ r^   )r  r   rp  )r  dialogs    r,   rt    HelpTk.trigger.<locals>.<lambda>D  s    &,,"5"5">">"@r@   )r   r   rq  r   _get_help_textdone)rc   rX   r  s     @r,   r  HelpTk.triggerA  s7    KK(($*=*=*?$I@r@   r9  Nr  r9  r@   r,   r  r  ?  s    Ar@   r  c                   L    \ rS rSr\R
                  r\r\	r
\	R                  rSrg)
_BackendTkiL  r9  N)ry   rz   r{   r|   r4   	TkVersionbackend_versionr   FigureCanvasr   FigureManagerr  rT  r~   r9  r@   r,   r  r  L  s     llO!L#M..Hr@   r  r^   )duuidr   
contextlibr   loggingrH   os.pathrs  rv  r   r_  r4   tkinter.filedialogtkinter.fonttkinter.messageboxtkinter.simpledialogr   numpyrC   PILr   r   r  r(   r   r   r	   r
   matplotlib.backend_basesr   r   r   r   r   r   r   r   r   r   r   r   r   r   matplotlib._pylab_helpersr   rm  r   r   r   ImportErrorrY   r
  cause1cause2r  AttributeErrorr8   rt  realpath
executableis_uv_python	getLoggerry   r  MOVEHANDPOINTERSELECT_REGIONWAITRESIZE_HORIZONTALRESIZE_VERTICALr^  r-   r2   uuid4hexrM   r?   r6   r[   r   r   r  r  r  _register_tool_classRubberbandBaser  r  SaveFigureBaser  ConfigureSubplotsBaser  ToolHelpBaser  Toolbar_toolbar2_class_toolmanager_toolbar_classexportr  r9  r@   r,   <module>r%     s     %     
     -    D DB B B B *J: "LL'LL'OOW;LL'20 D D 
tzz|///33l#i #Lj% jZ	[A' [A|kG-rxx kG\	$D ##N37=// 7 47K!288 K\ ##N37=// 7 47 ##N36-== 6 46
 ##N3A]'' A 4A "6 -6 * 
/ / /a!  QT*FV[$/F6;''v~..4FC#(8(8(HI?
  -  	3s   <I KA>K		K