
    h2                     l   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Jr  S SKJr  S SK	r	S SK
r
S SK
Jr  S SKJr  S SK
Jr   S SKJr  S SKJr  S S	KJr  Sr\	R4                  S 5       r\	R,                  R9                  SSS9S 5       r\	R,                  R=                  SSS/S4S/ S4SS/S4SS/S4S/ S4SS/S4SS/S4S/ S QS!4S"/ S4S#/ S$4S#S/S%4// S&QS'9\	R,                  R=                  S(\	R>                  " S)\	R,                  R9                  S)SS9S*9\	R>                  " S\	R,                  R9                  SSS9S*9/5      S+ 5       5       r \	R,                  R9                  SSS9S, 5       r!\	R,                  R9                  SSS9S- 5       r"\	R,                  R9                  SSS9S. 5       r#\	R,                  R9                  SSS9S/ 5       r$\	R,                  R9                  SSS9S0 5       r%\	R,                  R9                  SSS9S1 5       r&\	R,                  R9                  SSS9S2 5       r'\	R,                  R9                  S)SS9S3 5       r(S4 r)\	R,                  R9                  SSS9S5 5       r*\	R,                  R9                  SSS9S6 5       r+g! \ a    \	R,                  R/                  S
5      r GNbf = f)7    N)datedatetime)mock)pyplot)Gcf)_c_internal_utils)QtGui)	QtWidgets)_formlayoutzNo usable Qt bindings<   c                     SSK Jn  U$ )Nr   )QtCore)matplotlib.backends.qt_compatr   )requestr   s     R/var/www/html/env/lib/python3.13/site-packages/matplotlib/tests/test_backend_qt.pyqt_corer      s
    4M    QtAggT)skip_on_importerrorc                      [         R                   " [        R                  5      n [        R                  " 5       nUR
                  R                  R                  R                  5         U [        R                  :X  d   eg N)	copyr   figspltfigurecanvasmanagerwindowclose)	init_figsfigs     r   test_fig_closer"   "   sU     		#((#I **,C JJ##%    r   zqt_key, qt_mods, answerKey_AShiftModifierAaControlModifierzctrl+a
Key_Aacute   Á   áKey_ControlAltModifierzalt+controlKey_Altzctrl+alt)r'   r,   MetaModifieru   ctrl+alt+meta+áKey_PlayKey_Backspace	backspacezctrl+backspace)shiftlowercontrolunicode_upperunicode_loweralt_controlcontrol_altmodifier_ordernon_unicode_keyr1   backspace_mod)idsbackendQt5Agg)marksc                 f  ^^
^^^ SSK JmJm
  [        R                  S:X  a9  Ub6  UR                  SS5      nUR                  SS5      nUR                  SS5      nSmT
R                  R                  R                  mU H&  nT[        T
R                  R                  U5      -  mM(      " U
UU4S	 jS
5      nUR                  [        R                  SU4S j5        U4S jn[        R                  " 5       R                  n	U	R!                  SU5        U	R#                  U" 5       5        TU:X  d   eg)z
Make a figure.
Send a key_press_event event (using non-public, qtX backend specific api).
Catch the event.
Assert sent and caught keys are the same.
r   )_to_intr   darwinNctrlcmdr4   metac                   ,   > \ rS rSrS rU UU4S jrSrg) test_correct_key.<locals>._Eventz   c                     g)NF )selfs    r   isAutoRepeat-test_correct_key.<locals>._Event.isAutoRepeat{   s    ur   c                 P   > T" [        TR                  R                  T5      5      $ r   )getattrQtKey)rK   r   rA   qt_keys    r   key$test_correct_key.<locals>._Event.key|   s    ggfiimmV&DEEr   rJ   N)__name__
__module____qualname____firstlineno__rL   rS   __static_attributes__)r   rA   rR   s   r   _EventrG   z   s    ,EEr   rZ   keyboardModifiersc                    > T$ r   rJ   )rK   qt_mods    r   <lambda>"test_correct_key.<locals>.<lambda>   s    Vr   c                    > U R                   mg r   )rS   )eventresults    r   on_key_press&test_correct_key.<locals>.on_key_press   s    r   key_press_event)r   rA   r   sysplatformreplacerP   KeyboardModifier
NoModifierrO   setattrr
   QApplicationr   r   r   mpl_connectkeyPressEvent)r=   r   rR   qt_modsanswermonkeypatchmodrZ   rc   	qt_canvasr   rA   r]   rb   s     `       @@@@r   test_correct_keyrt   4   s    v >
||xF$6.	51/FYY''22F'&))44c:: F F 	..0C+- 

##I+\:FH%Vr   c                    ^^^ Sn [         R                  " U 5       mSTl        [        R                  " SSS9nUR
                  mTR                  5         UUU4S jnTR                  R                  5         TR                  5       nTR                  5       R                  5       R                  5       mU" S5        UR                  S:X  d   eTR                  R                  S:X  d   eTR                  R                  S	:X  d   eUR                  5       S
:X  d   eUR                  5       S:X  d   eTR!                  5       S:X  d   eUR#                  5       S:H  R%                  5       (       d   eU" S5        UR                  S:X  d   eTR                  R                  S:X  d   eTR                  R                  S:X  d   eUR                  5       S
:X  d   eUR                  5       S:X  d   eTR!                  5       S:X  d   eUR#                  5       S:H  R%                  5       (       d   eU" S5        UR                  S:X  d   eTR                  R                  S:X  d   eTR                  R                  S:X  d   eUR                  5       S
:X  d   eUR                  5       S:X  d   eTR!                  5       S:X  d   eUR#                  5       S:H  R%                  5       (       d   e SSS5        g! , (       d  f       g= f)zq
Make sure that if the pixel ratio changes, the figure dpi changes but the
widget remains the same logical size.
z?matplotlib.backends.backend_qt.FigureCanvasQT.devicePixelRatioF   )      x   )figsizedpic                    > U Tl         TR                  R                  S5        TR                  5         TR	                  5         TR
                  U :X  d   eg )N`   )return_valuelogicalDotsPerInchChangedemitdrawflush_eventsdevice_pixel_ratio)ratioprs   screens    r   set_device_pixel_ratio>test_device_pixel_ratio_change.<locals>.set_device_pixel_ratio   sL    "AN ,,11"5NN""$ //5888r   ih  i  i  X     )r   r   rx   i  i  g      ?   i  N)r   patchr~   r   r   r   showr   sizer   windowHandler   r{   rendererwidthheightget_width_heightget_size_inchesall)propr!   r   r   r   rs   r   s       @@@r   test_device_pixel_ratio_changer      s    MD	D	QjjS1JJ		9 	 ~~!!#00299;q! ww#~~!!''4///!!((C/// zz|s"""{{}###))+z999##%/446666q! ww#~~!!''4///!!((C/// zz|s"""{{}###))+z999##%/446666s# ww#~~!!''3...!!((C/// zz|s"""{{}###))+z999##%/446666} 
		s   KK11
K?c                      [         R                  " 5       u  p[        R                  " SS 5         U R                  R
                  R                  R                  5         S S S 5        g ! , (       d  f       g = f)N#matplotlib.backends.qt_compat._execc                     g r   rJ   objs    r   r^   "test_subplottool.<locals>.<lambda>       tr   )r   subplotsr   r   r   r   toolbarconfigure_subplotsr!   axs     r   test_subplottoolr      sH    llnGC	9;K	L

""557 
M	L	Ls   /A((
A6c                     [         R                  " 5       u  pUR                  SS/5        UR                  S//5        UR	                  [        S5      [        S5      [        S5      S9  [        R                  " SS 5         U R                  R                  R                  R                  5         S S S 5        g ! , (       d  f       g = f)N   rx   rv   )cr   c                     g r   rJ   r   s    r   r^   $test_figureoptions.<locals>.<lambda>   r   r   )r   r   plotimshowscatterranger   r   r   r   r   edit_parametersr   s     r   test_figureoptionsr      s    llnGCGGQFOIIseJJuQxqU1XJ.	9;K	L

""224 
M	L	Ls   /B::
Cc                     [         R                  " 5       u  pUR                  S//5        Sn[        R                  " USS9   U R
                  R                  R                  R                  5       n[        R                  " S5        US:X  d   e S S S 5        [        R                  " USS9   U R
                  R                  R                  R                  5       nUb   e S S S 5        g ! , (       d  f       Na= f! , (       d  f       g = f)Nr   zCmatplotlib.backends.qt_compat.QtWidgets.QFileDialog.getSaveFileName)
foobar.pngN)r~   r   )NN)r   r   r   r   r   r   r   r   save_figureosremove)r!   r   r   fnames       r   test_save_figure_returnr      s    llnGCIIsePD	D';	<

""**668
		,$$$ 
= 
D|	4

""**668}} 
5	4	 
=	< 
5	4s   AC+-4C<+
C9<
D
c                  @   [         R                  " 5       u  p[        SSSS9[        SSSS9/nUR                  X"5        [        R
                  " SS 5         U R                  R                  R                  R                  5         S S S 5        g ! , (       d  f       g = f)N  r   yearmonthdayrx   r   c                     g r   rJ   r   s    r   r^   7test_figureoptions_with_datetime_axes.<locals>.<lambda>   r   r   )
r   r   r   r   r   r   r   r   r   r   )r!   r   xydatas      r   %test_figureoptions_with_datetime_axesr      su    llnGCd!+d!+F GGF	9;K	L

""224 
M	L	Ls   /B
Bc                  Z   [         R                  " 5       u  pU R                  R                  5         U R                  R                  R
                  nSu  p4U R                  X45        U R                  R                  5       U[        R                  S   -  :X  d   eU R                  R                  5       U[        R                  S   -  :X  d   eUR                  5       nUR                  5       nU R                  X45        UR                  5       U:X  d   eUR                  5       U:X  d   eg )N)rv   rx   z
figure.dpi)r   r   r   r   r   r   set_size_inchesr   
matplotlibrcParamsr   )r!   r   r   wh	old_width
old_heights          r   test_double_resizer      s     llnGCJJOOZZ&&FDA::Z%8%8%F!FFFF::!j&9&9,&G"GGGGIJ<<>Y&&&==?j(((r   c                     ^ SSK Jn   SmU4S jn[        R                  " 5       u  p#Xl        U " U5      nSUl        T(       d   eg )Nr   )FigureCanvasQTAggFc                 >   > U R                   R                  5         Smg )NT)r   	draw_idle)r!   stalecalleds     r   crashing_callback-test_canvas_reinit.<locals>.crashing_callback  s    

r   T)!matplotlib.backends.backend_qtaggr   r   r   stale_callbackr   )r   r   r!   r   r   r   s        @r   test_canvas_reinitr     s=    CF
 llnGC*s#FCIM6r   c                      SSK Jn   U " 5         S[        SSSS94S[        SSSS94/n[        R
                  " U5      nUR                  5         UR                  5       nU[        SSSS9[        SSSS9/:X  d   eg )	Nr   )_create_qAppzDatetime fieldr   rv      r   z
Date field)matplotlib.backends.backend_qtr   r   r   r   
FormWidgetsetupget)r   formwidgetvaluess       r   2test_form_widget_get_with_datetime_and_date_fieldsr   &  s    ;N 
8QB?@	tQB78D ##D)F
LLNZZ\Fd!,$aR(   r   c            
         / n S Vs/ s H  nU/SUS.4PM     sn GH0  u  p#S nU Vs/ s H+  n[         R                  R                  U5      (       a  M)  UPM-     nn[        R                  S:X  a  [
        R                  " 5       (       d  SnOWU(       a!  SR                  SR                  U5      5      nO/US   S	:X  a&  [        R                  R                  S
5      (       a  Sn/ nU(       a2  UR                  [        R                  R                  SU SU 3S95        U R                  [        R                   " X7[#        U5      S95        GM3     U $ s  snf s  snf )N)PyQt6PySide6PyQt5PySide2qtagg)
MPLBACKENDQT_APIlinuxz'$DISPLAY and $WAYLAND_DISPLAY are unsetz{} cannot be importedz, r   macosxTF_BUILDzmacosx backend fails on Azurez	Skipping z	 because )reason)r?   id)	importlibutil	find_specrf   rg   r   display_is_validformatjoinr   environr   appendpytestmarkskipparamstr)envsqt_apidepsenvr   depmissingr?   s           r   _get_testable_qt_backendsr   8  s-   D CB Xg@AB	 "&L$3inn.F.Fs.K3$LLLG#%6688>F,33DIIg4FGF(*rzz~~j/I/I4FLL))"3%y9 * ; <FLLc#h?@#$ K%
 Ms   E(EEc                   ^ ^ SSK Jn  [        R                  " 5         S mUU 4S jnT R                  R                  SU5        [        R                  " [        R                  5      nS n[        R                  " [        R                  U5         [        R                  R                  R                  R                  5         TU:w  d   e[        R                  " [        R                  5      U:X  d   e[        R                  [        R                  4 H  nT R                  R                  SU5        [        R                  " [        R                  U5        UR                  5         TU:X  d   e[        R                  " [        R                  5      U:X  a  M   e   [        R                  " [        R                  U5        g ! [        R                  " [        R                  U5        f = f)Nr   )_BackendQT5c                     > [         R                  " [         R                  5      m TR                  R	                  5         g r   )signal	getsignalSIGINTQCoreApplicationexit)event_loop_handlerr   s   r   fire_signal_and_quit6test_fig_sigint_override.<locals>.fire_signal_and_quitY  s.     $--fmm< 	  %%'r   c                     g r   rJ   )signumframes     r   custom_handler0test_fig_sigint_override.<locals>.custom_handlerh  s    r   )matplotlib.backends.backend_qt5r  r   r   QTimer
singleShotr  r  r  r   backends
backend_qt
_BackendQTmainloopSIG_DFLSIG_IGN)r   r  r
  original_handlerr  r	  s   `    @r   test_fig_sigint_overrider  O  sW   ;JJL ( NNa!56 ''6 MM&--07 	&&11::< "^333 ..@@@  &~~v~~>NNN%%a)=>MM&--8  "%777##FMM2nDDD ? 	fmm%56fmm%56s   DG G 'G+c                  *    SSK Jn   U " SSSSS.5        g )Nr   ipython_in_subprocessqtr   r   r>   ))      )r      )   r   )matplotlib.testingr  r  s    r   test_ipythonr%    s    8$'GX VWr   ),r   r   r   r  rf   r   r   unittestr   r   r   r   r   matplotlib._pylab_helpersr   r   r   r	   r
   matplotlib.backends.qt_editorr   ImportErrorr   r   
pytestmark_test_timeoutfixturer   r=   r"   parametrizer   rt   r   r   r   r   r   r   r   r   r   r  r%  rJ   r   r   <module>r.     s{     	  
 #    $ ) (;379
   
 W$7! 8!" 	?#S)	"c	$%23	

 
r@A	-9	&'4>@	
 
R	"k*	
+6	;  *V 
LLkk!!(!EG LLkk!!'t!DF%  W*h F W$7E7 8E7P W$78 88 W$75 85 W$7
 8
 W$75 85 W$7) 8)& W$7 8$ X48 9". W$757 857p W$7X 8Xi  ;!!"9:J;s   J !J32J3