+
    ,i2                        ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIHtHt ^ RIHt ^ RI	t	^ RI
t
^ RI
Ht ^ RIHt ^ RI
Ht  ^ RIHt ^ RIHt ^ R	IHt ^<t]	P4                  R 4       t]	P,                  P9                  RRR7      R 4       t]	P,                  P=                  RRR.R3R. R3RR.R3RR.R3R. R3RR.R3RR.R3R. R4OR3R . R3R!. R"3R!R.R#3.. R5OR$7      ]	P,                  P=                  R%]	P>                  ! R&]	P,                  P9                  R&RR7      R'7      ]	P>                  ! R]	P,                  P9                  RRR7      R'7      .4      R( 4       4       t ]	P,                  P9                  RRR7      R) 4       t!]	P,                  P9                  RRR7      R* 4       t"]	P,                  P9                  RRR7      R+ 4       t#]	P,                  P9                  RRR7      R, 4       t$]	P,                  P9                  RRR7      R- 4       t%]	P,                  P9                  RRR7      R. 4       t&]	P,                  P9                  RRR7      R/ 4       t']	P,                  P9                  R&RR7      R0 4       t(R1 t)]	P,                  P9                  RRR7      R2 4       t*]	P,                  P9                  RRR7      R3 4       t+R#   ] d     ]	P,                  P/                  R
4      t ELi ; i)6    N)datedatetime)mock)pyplot)Gcf)_c_internal_utils)QtGui)	QtWidgets)_formlayoutzNo usable Qt bindingsc                     ^ RI Hp V# )r   )QtCore)matplotlib.backends.qt_compatr   )requestr   s   & B/usr/lib/python3/dist-packages/matplotlib/tests/test_backend_qt.pyqt_corer      s
    4M    QtAggT)skip_on_importerrorc                     \         P                   ! \        P                  4      p \        P                  ! 4       pVP
                  P                  P                  P                  4        V \        P                  8X  g   Q hR # 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+altu   ctrl+alt+meta+áKey_PlayKey_Backspace	backspacezctrl+backspace)idsbackendQt5Agg)marksc                v  aa
aaa ^ RI HoHo
 \        P                  R8X  d;   Ve7   VP                  RR4      pVP                  RR4      pVP                  RR4      pRoS
P                  P                  P                  oV F*  pS\        S
P                  P                  V4      ,          oK,  	   ! V
VV3R lR	4      pVP                  \        P                  R
V3R l4       V3R lp\        P                  ! 4       P                  p	V	P!                  RV4       V	P#                  V! 4       4       SV8X  g   Q hR# )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.
)_to_intr   darwinNctrlcmdcontrolmetac                   8   <a  ] tR t^zt o R tVVV3R ltRtV tR# ) test_correct_key.<locals>._Eventc                    R # )F )selfs   &r   isAutoRepeat-test_correct_key.<locals>._Event.isAutoRepeat{   s    ur   c                P   < S! \        SP                  P                  S4      4      # r   )getattrQtKey)r?   r   r5   qt_keys   &r   key$test_correct_key.<locals>._Event.key|   s    ggfiimmV&DEEr   r>   N)__name__
__module____qualname____firstlineno__r@   rG   __static_attributes____classdictcell__)__classdict__r   r5   rF   s   @r   _Eventr<   z   s     ,EEr   rP   keyboardModifiersc                    < S# r   r>   )r?   qt_mods   &r   <lambda>"test_correct_key.<locals>.<lambda>   s    Vr   c                     < V P                   oR # r   )rG   )eventresults   &r   on_key_press&test_correct_key.<locals>.on_key_press   s    r   key_press_event)r   r5   r   sysplatformreplacerD   KeyboardModifier
NoModifierrC   setattrr
   QApplicationr   r   r   mpl_connectkeyPressEvent)r1   r   rF   qt_modsanswermonkeypatchmodrP   rY   	qt_canvasr   r5   rS   rX   s   &&f&&&    @@@@r   test_correct_keyrj   4   s    v >
||xF$6.	51/FYY''22F'&))44c:: F F 	..0C+- 

##I+\:FH%Vr   c                N  a a
a Rp\         P                  ! V4      ;_uu_ 4       o
^S
n        \        P                  ! R^xR7      pVP
                  oSP                  4        V
VV 3R lpSP                  P                  4        SP                  4        SP                  4        SP                  4       p. ROpV F  w  rgrVe	   V! V4       VP                  V8X  g   Q hSP                  P                  V8X  g   Q hSP                  P                  V	8X  g   Q hVP                  4       R8X  g   Q hVP                  4       ^8X  g   Q hSP                  4       R8X  g   Q hVP!                  4       R8H  P#                  4       '       d   K  Q h	  RRR4       R#   + '       g   i     R# ; i)	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)figsizedpic                   < V Sn         SP                  4       P                  4       p\        ;QJ d9    . R  SP	                  4       P                  R^4      R,           4       F  NK  	  5M2! R  SP	                  4       P                  R^4      R,           4       4      pVR8  dK   SP                  P                  VSP                  SP                  P                  P                  4      4       M)VP                  4       P                  P                  ^`4       SP                  4        SP                  4        SP                   V 8X  g   Q hR# )c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   )int).0xs   & r   	<genexpr>Qtest_device_pixel_ratio_change.<locals>.set_device_pixel_ratio.<locals>.<genexpr>   s      $F D1A Ds   .:N   NN)   rw   )return_valuer   windowHandletupleqVersionsplitQCoreApplication	sendEventQEventTypeDevicePixelRatioChangescreenlogicalDotsPerInchChangedemitdrawflush_eventsdevice_pixel_ratio)ratior   current_versionpri   r   s   &  r   set_device_pixel_ratio>test_device_pixel_ratio_change.<locals>.set_device_pixel_ratio   s
   "AN%%'446F#e $F ' 0 0 2 8 8a @ D$Fee $F ' 0 0 2 8 8a @ D$F FO&(((22NN7>>#6#6#M#MNP 99>>rBNN""$ //5888r   NX  )   rv   ))Nh      )   r   r   r   )rv      i  i  )g      ?   i  r   )r   r   )r   patchrx   r   r   r   showr   r   r   sizerm   rendererwidthheightget_width_heightget_size_inchesall)r   propr    r   r   optionsr   rm   r   r   r   ri   s   f         @@r   test_device_pixel_ratio_changer      sa    MD	D		QjjS1JJ		9. 	  ~~
 *1%E &u- 77c>!>%%++u444%%,,666 ::<3&&&;;=C'''--/:==='')V388:::: *1S 
			s   EFFF$	c                  
   \         P                  ! 4       w  r\        P                  ! R R 4      ;_uu_ 4        V P                  P
                  P                  P                  4        RRR4       R#   + '       g   i     R# ; i)#matplotlib.backends.qt_compat._execc                     R # r   r>   objs   &r   rT   "test_subplottool.<locals>.<lambda>       tr   N)r   subplotsr   r   r   r   toolbarconfigure_subplotsr    axs     r   test_subplottoolr      sN    llnGC	9;K	L	L

""557 
M	L	L	Ls   /A11B	c                     \         P                  ! 4       w  rVP                  ^^.4       VP                  ^..4       VP	                  \        ^4      \        ^4      \        ^4      R7       \        P                  ! RR 4      ;_uu_ 4        V P                  P                  P                  P                  4        RRR4       R#   + '       g   i     R# ; i)   )cr   c                     R # r   r>   r   s   &r   rT   $test_figureoptions.<locals>.<lambda>   r   r   N)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	L

""224 
M	L	L	Ls   /CC	c                    \         P                  ! 4       w  rVP                  ^..4       V R,          pRp\        P                  ! V\        V4      R3R7      ;_uu_ 4        VP                  P                  P                  P                  4       pV\        V4      8X  g   Q hVP                  4       '       g   Q h RRR4       \        P                  ! VRR7      ;_uu_ 4        VP                  P                  P                  P                  4       pVe   Q h RRR4       R#   + '       g   i     Lp; i  + '       g   i     R# ; i)r   z
foobar.pngzCmatplotlib.backends.qt_compat.QtWidgets.QFileDialog.getSaveFileNameN)rx   )NN)r   r   r   r   r   strr   r   r   save_figureexists)tmp_pathr    r   expectedr   fnames   &     r   test_save_figure_returnr      s    llnGCIIse,&HPD	DHt'<	=	=

""**668H%%%     
> 
D|	4	4

""**668}} 
5	4	 
>	= 
5	4	4s   !AD#8D##5D6#D3	6E	c                  d   \         P                  ! 4       w  r\        R ^^R7      \        R ^^R7      .pVP                  W"4       \        P
                  ! RR 4      ;_uu_ 4        V P                  P                  P                  P                  4        RRR4       R#   + '       g   i     R# ; i)  yearmonthdayr   c                     R # r   r>   r   s   &r   rT   7test_figureoptions_with_datetime_axes.<locals>.<lambda>   r   r   N)
r   r   r   r   r   r   r   r   r   r   )r    r   xydatas      r   %test_figureoptions_with_datetime_axesr      s{    llnGCd!+d!+F GGF	9;K	L	L

""224 
M	L	L	Ls   %/BB/	c                     \         P                  ! 4       w  rV P                  P                  4        V P                  P                  P
                  p^^rCV P                  W44       V P                  P                  4       V\        P                  R,          ,          8X  g   Q hV P                  P                  4       V\        P                  R,          ,          8X  g   Q hVP                  4       pVP                  4       pV P                  W44       VP                  4       V8X  g   Q hVP                  4       V8X  g   Q hR# )r   z
figure.dpiN)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aq::Z%8%8%F!FFFF::!j&9&9,&G"GGGGIJ<<>Y&&&==?j(((r   c                     a ^ RI Hp  RoV3R lp\        P                  ! 4       w  r#Wn        V ! V4      pRVn        S'       g   Q hR# )r   )FigureCanvasQTAggFc                 @   < V P                   P                  4        R oR# )TN)r   	draw_idle)r    stalecalleds   &&r   crashing_callback-test_canvas_reinit.<locals>.crashing_callback  s    

r   TN)!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                     ^ RI Hp  V ! 4        R\        R^^R7      3R\        R^^R7      3.p\        P
                  ! V4      pVP                  4        VP                  4       pV\        R^^R7      \        R^^R7      .8X  g   Q hR# )r   )_create_qAppzDatetime fieldr   r   z
Date fieldN)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            
         . p R Uu. uF  pV.RRRV/3NK  	  up EF@  w  r#RpV Uu. uF,  p\         P                  P                  V4      '       d   K*  VNK.  	  pp\        P                  R8X  d   \
        P                  ! 4       '       g   RpM^V'       d"   RP                  RP                  V4      4      pM5VR,          R	8X  d(   \        P                  P                  R
4      '       d   Rp. pV'       d6   VP                  \        P                  P                  RV RV 2R7      4       V P                  \        P                   ! W7\#        V4      R7      4       EKC  	  V # u upi u upi )PyQt6
MPLBACKENDqtaggQT_APINlinuxz'$DISPLAY and $WAYLAND_DISPLAY are unsetz{} cannot be importedz, macosxTF_BUILDzmacosx backend fails on Azurez	Skipping z	 because )reason)r3   id)r   PySide6PyQt5PySide2)	importlibutil	find_specr\   r]   r   display_is_validformatjoinosenvironr   appendpytestmarkskipparamr   )envsqt_apidepsenvr   depmissingr3   s           r   _get_testable_qt_backendsr	  1  s3   D CB Xgx@AB	 "&L$3inn.F.Fs.K33$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                   a a ^ RI Hp \        P                  ! 4        RoVV 3R lpS P                  P                  ^ V4       \        P                  ! \        P                  4      pR p\        P                  ! \        P                  V4        \        P                  P                  P                  P                  4        SV8w  g   Q h\        P                  ! \        P                  4      V8X  g   Q h\        P                  \        P                  3 F  pS P                  P                  ^ V4       \        P                  ! \        P                  V4       VP                  4        SV8X  g   Q h\        P                  ! \        P                  4      V8X  d   K  Q h	  \        P                  ! \        P                  V4       R#   \        P                  ! \        P                  T4       i ; i)r   )_BackendQT5Nc                     < \         P                  ! \         P                  4      o SP                  P	                  4        R # r   )signal	getsignalSIGINTr}   exit)event_loop_handlerr   s   r   fire_signal_and_quit6test_fig_sigint_override.<locals>.fire_signal_and_quitR  s.     $--fmm< 	  %%'r   c                     R # r   r>   )signumframes   &&r   custom_handler0test_fig_sigint_override.<locals>.custom_handlera  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   f    @r   test_fig_sigint_overrider#  H  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   8G	 	CG	 G	 	'G0c            	      0    ^ RI Hp  V ! RRRRRR	R/4       R# )
r   ipython_in_subprocessqtr   r   r2   N)      )r(     )   r   )matplotlib.testingr&  r%  s    r   test_ipythonr-    s    8$'7GVX VWr   )r&   r+   MetaModifier)shiftlowerr9   unicode_upperunicode_loweralt_controlcontrol_altmodifier_ordernon_unicode_keyr/   backspace_mod),r   r   r   r  r\   r   r   unittestr   r   r   r   r   matplotlib._pylab_helpersr   r   r   r	   r
   matplotlib.backends.qt_editorr   ImportErrorr   r  
pytestmark_test_timeoutfixturer   r1   r!   parametrizer  rj   r   r   r   r   r   r   r   r   r	  r#  r-  r>   r   r   <module>r@     sy     	  
 #    $ ) (;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=; 8=;@ 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[  ;!!"9:J;s   J? ?"K%$K%