ó
    [hÈ2  ã                   ó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     Úo/home/gothic/public_html/Fooocus/fooocus_env/lib64/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ð ‡J�J×Ñ×Ñ×#Ñ#Ô%ð œŸ™Ó Ð Ñ 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>._Eventéz   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   ø€ ™g¤g¨f¯i©i¯m©m¸VÓ&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Ø�Y‰Y×'Ñ'×2Ñ2€FÛˆØ”'˜&Ÿ)™)×4Ñ4°cÓ:Ñ:Šñ ÷Fö Fð ×Ñœ	×.Ñ.Ð0CÜ+ô-õô —
’
“×#Ñ#€IØ×ÑÐ+¨\Ô:Ø×Ñ™F›HÔ%Ø�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   ø€ Ø"ˆAŒNð ×,Ñ,×1Ñ1°"Ô5à�N‰NÔØ×"Ñ"Ô$ð ×/Ñ/°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ØˆŒä�jŠj ¨SÑ1ˆØ—J‘Jˆ	Ø�‰Ô÷	9ð 	×Ñ×ÑÔ Ø�~‰~ÓˆØ×!Ñ!Ó#×0Ñ0Ó2×9Ñ9Ó;ˆÙ˜qÔ!ð �w‰w˜#‹~Ðˆ~Ø×!Ñ!×'Ñ'¨4Ó/Ð/Ð/Ø×!Ñ!×(Ñ(¨CÓ/Ð/Ð/ð �z‰z‹|˜sÓ"Ð"Ð"Ø�{‰{‹} Ó#Ð#Ð#Ø×)Ñ)Ó+¨zÓ9Ð9Ð9Ø×#Ñ#Ó%¨Ñ/×4Ñ4×6Ñ6Ð6Ð6á˜qÔ!ð �w‰w˜#‹~Ðˆ~Ø×!Ñ!×'Ñ'¨4Ó/Ð/Ð/Ø×!Ñ!×(Ñ(¨CÓ/Ð/Ð/ð �z‰z‹|˜sÓ"Ð"Ð"Ø�{‰{‹} Ó#Ð#Ð#Ø×)Ñ)Ó+¨zÓ9Ð9Ð9Ø×#Ñ#Ó%¨Ñ/×4Ñ4×6Ñ6Ð6Ð6á˜sÔ#ð �w‰w˜#‹~Ðˆ~Ø×!Ñ!×'Ñ'¨3Ó.Ð.Ð.Ø×!Ñ!×(Ñ(¨CÓ/Ð/Ð/ð �z‰z‹|˜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   € ä�lŠl‹n�G€CÜ	�ŠÐ9Ñ;KÕ	LØ�
‰
×Ñ×"Ñ"×5Ñ5Ô7÷ 
M×	LÖ	Lús   °/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…   € ä�lŠl‹n�G€CØ‡G�GˆQ�ˆF„OØ‡I�I�ˆsˆeÔØ‡J�JŒu�Q‹xœ˜q›¤U¨1£X€JÑ.Ü	�ŠÐ9Ñ;KÕ	LØ�
‰
×Ñ×"Ñ"×2Ñ2Ô4÷ 
M×	LÖ	Lús   Â/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Â   € ä�lŠl‹n�G€CØ‡I�I�ˆsˆeÔØP€DÜ	�Š�DÐ';Ó	<Ø—
‘
×"Ñ"×*Ñ*×6Ñ6Ó8ˆÜ
�	Š	�,ÔØ˜Ó$Ð$Ñ$÷ 
=ô 
�Š�D |Ó	4Ø—
‘
×"Ñ"×*Ñ*×6Ñ6Ó8ˆØ‰}Ð‰}÷ 
5Ð	4÷	 
=Õ	<ú÷ 
5Õ	4ús   Á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   € ä�lŠl‹n�G€Cä�d !¨Ñ+Ü�d !¨Ñ+ð€Fð ‡G�GˆFÔÜ	�ŠÐ9Ñ;KÕ	LØ�
‰
×Ñ×"Ñ"×2Ñ2Ô4÷ 
M×	LÖ	Lús   Á/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ë   € ô �lŠl‹n�G€CØ‡J�J‡O�OÔØ�Z‰Z×Ñ×&Ñ&€Fà�D€AØ×Ñ˜ÔØ�:‰:×ÑÓ ¤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õô
 �lŠl‹n�G€CØ*Ôá˜sÓ#€FØ€C„IÞ€M‰6r   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¨°Q¸BÑ?Ð@Ø	”t ¨Q°BÑ7Ð8ð€Dô ×#Ò# DÓ)€FØ
‡L�L„NØ�Z‰Z‹\€FØÜ�d !¨Ñ,Ü�$˜a RÑ(ðó ð ñ 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�ð ˆX g¸Ñ@ÓAÙBõ‰	ˆð ˆÙ"&ÓL¢$˜3¬i¯n©n×.FÑ.FÀs×.K—3¡$ˆÐLÜ�L‰L˜GÓ#Ü%×6Ò6×8Ñ8Ø>‰FÞØ,×3Ñ3°D·I±I¸gÓ4FÓG‰FØ�Ñ (Ó*¬r¯z©z¯~©~¸j×/IÑ/IØ4ˆFØˆÞØ�L‰LœŸ™×)Ñ)Ø" 3 % y°°Ð9ð *ð ;ô <à�‰”F—L’L ´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_quitÚ6test_fig_sigint_override.<locals>.fire_signal_and_quitY  s.   ø€ ô $×-Ò-¬f¯m©mÓ<Ðð 	× Ñ ×%Ñ%Õ'r   c                 ó   • g r   rJ   )ÚsignumÚframes     r   Úcustom_handlerÚ0test_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  ù€ å;ä‡J‚J„Lð Ðö(ð ‡N�N×Ñ˜aÐ!5Ô6ô ×'Ò'¬¯©Ó6Ðòô ‡M‚M”&—-‘- Ô0ð7ô 	×Ñ×&Ñ&×1Ñ1×:Ñ:Ô<ð " ^Ó3Ð3Ð3ô ×Ò¤§¡Ó.°.Ó@Ð@Ð@ô  &Ÿ~™~¬v¯~©~Ó>ˆNØ�N‰N×%Ñ% aÐ)=Ô>Ü�MŠMœ&Ÿ-™-¨Ô8à× Ñ Ô"à%¨Ó7Ð7Ð7Ü×#Ò#¤F§M¡MÓ2°nÕDÐDÐDñ ?ô 	�Š”f—m‘mÐ%5Õ6øŒ�Š”f—m‘mÐ%5Õ6ús   Â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Ù˜$¨'¸GÈXÑ 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 ‡�×Ñ˜à
‡L‚LØØ�k‰k×!Ñ! (ÀÐ!ÐEñGð ‡L‚LØØ�k‰k×!Ñ! '¸tÐ!ÐDñFð%ó ñ óóW*ðh ðF ‡�×Ñ�W°$ÐÐ7ñE7ó 8ðE7ðP ‡�×Ñ�W°$ÐÐ7ñ8ó 8ð8ð ‡�×Ñ�W°$ÐÐ7ñ5ó 8ð5ð ‡�×Ñ�W°$ÐÐ7ñ
ó 8ð
ð ‡�×Ñ�W°$ÐÐ7ñ5ó 8ð5ð ‡�×Ñ�W°$ÐÐ7ñ)ó 8ð)ð& ‡�×Ñ�W°$ÐÐ7ñó 8ðð$ ‡�×Ñ�X°4ÐÐ8ñó 9ðò"ð. ‡�×Ñ�W°$ÐÐ7ñ57ó 8ð57ðp ‡�×Ñ�W°$ÐÐ7ñXó 8ñXøði ó ;Ø—‘×!Ñ!Ð"9Ó:ƒJð;ús   ¾J Ê!J3Ê2J3