rL i2ddlZddlZddlZddlZddlZddlmZmZddlmZddl Z ddl Z ddl m Z ddl mZddl mZ ddlmZddlmZdd lmZd Ze j4d Ze j,j9d ddZe j,j=dddgdfdgdfddgdfddgdfdgdfddgdfddgdfdgd d!fd"gdfd#gd$fd#dgd%fg gd&'e j,j=d(e j>d)e j,j9d)d*e j>d e j,j9d d*gd+Z e j,j9d dd,Z!e j,j9d dd-Z"e j,j9d dd.Z#e j,j9d dd/Z$e j,j9d dd0Z%e j,j9d dd1Z&e j,j9d dd2Z'e j,j9d)dd3Z(d4Z)e j,j9d dd5Z*e j,j9d dd6Z+y#e$re j,j/d ZYwxYw)7N)datedatetime)mock)pyplot)Gcf)_c_internal_utils)QtGui) QtWidgets) _formlayoutzNo usable Qt bindings<cddlm}|S)Nr)QtCore)matplotlib.backends.qt_compatr)requestrs f/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_backend_qt.pyqt_corers 4 MQtAggT)skip_on_importerrorctjtj}tj}|j j jj|tjk(sJyN) copyrfigspltfigurecanvasmanagerwindowclose) init_figsfigs rtest_fig_closer""sU #((#I **,CJJ##%   rzqt_key, qt_mods, answerKey_A ShiftModifierAaControlModifierzctrl+a Key_AacuteÁá Key_Control AltModifierz alt+controlKey_Altzctrl+alt)r'r, MetaModifieructrl+alt+meta+áKey_Play Key_Backspace backspacezctrl+backspace) shiftlowercontrol unicode_upper unicode_lower alt_control control_altmodifier_ordernon_unicode_keyr1 backspace_mod)idsbackendQt5Agg)markscT ddlm m tjdk(r8|6|j dd}|j dd}|j dd}d j jj |D]%} t j j|z 'G fd d }|jtjd fd  fd }tjj} | j!d|| j#| |k(sJy)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_intrdarwinNctrlcmdr4metac"eZdZdZfdZy) test_correct_key.._Eventcy)NF)selfs r isAutoRepeatz-test_correct_key.._Event.isAutoRepeat{surcPtjjSr)getattrQtKey)rJrrAqt_keys rkeyz$test_correct_key.._Event.key|sggfiimmV&DEErN)__name__ __module__ __qualname__rKrQ)rrArPsr_EventrGzs ,ErrUkeyboardModifierscSrrI)rJqt_mods rz"test_correct_key..sVrc|jyr)rQ)eventresults r on_key_pressz&test_correct_key..on_key_presss rkey_press_event)rrArsysplatformreplacerNKeyboardModifier NoModifierrMsetattrr QApplicationrrr mpl_connect keyPressEvent)r=rrPqt_modsanswer monkeypatchmodrUr] qt_canvasrrArXr\s ` @@@@rtest_correct_keyrm4sv> ||xF$6. 51/ F YY ' ' 2 2F;'&))44c::;FF ..0C+- ##I +\: FH% V  rc d}tj|5 d _tjdd}|j j  fd} jj  j j j}gd}|D]\}}}} ||||j|k(sJ jj|k(sJ jj| k(sJ|jd k(sJ|jd k(sJ jd k(sJ|j!dk(j#rJ dddy#1swYyxYw) z} 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)figsizedpic|_jj}tdj j ddddD}|dk\rJj j|jjjjn)|jjjdjjj |k(sJy)Nc32K|]}t|ywr)int).0xs r zQtest_device_pixel_ratio_change..set_device_pixel_ratio..s$FA$Fs.rq)r|`) return_valuer windowHandletupleqVersionsplitQCoreApplication sendEventQEventTypeDevicePixelRatioChangescreenlogicalDotsPerInchChangedemitdraw flush_eventsdevice_pixel_ratio)ratiorcurrent_versionprlrs rset_device_pixel_ratioz>test_device_pixel_ratio_change..set_device_pixel_ratios"AN%%'446F#$F ' 0 0 2 8 8a @! D$FFO&(((22NN7>>#6#6#M#MNP 99>>rB NN   " " $//58 88r))Nh)rorrr)rqii)g?irNXr)rr)rpatchr~rrrshowrrrsizertrendererwidthheightget_width_heightget_size_inchesall) rpropr!rroptionsrrtrrrrls ` @@rtest_device_pixel_ratio_changersj MD D 6;QjjS1JJ  9.   ~~  *1 ; %E3v &u-77c> !>%%++u4 44%%,,6 66::<3& &&;;=C' ''--/:= =='')V388: :: ;S6;6;6;sE E4'E44E=ctj\}}tjdd5|jj j jdddy#1swYyxYw)N#matplotlib.backends.qt_compat._execcyrrIobjs rrYz"test_subplottool..r)rsubplotsrrrrtoolbarconfigure_subplotsr!axs rtest_subplottoolrsRllnGC 9;K L8 ""557888s /A''A0ctj\}}|jddg|jdgg|j t dt dt dt jdd5|jjjjdddy#1swYyxYw)Nrqro)crcyrrIrs rrYz$test_figureoptions..rr) rrplotimshowscatterrangerrrrredit_parametersrs rtest_figureoptionsrsllnGCGGQFOIIseJJuQxqU1XJ. 9;K L5 ""224555s /B<<Cc4tj\}}|jdgg|dz }d}tj|t |df5|j jjj}|t |k(sJ|jsJ dddtj|d5|j jjj}|J dddy#1swY]xYw#1swYyxYw)Nrz foobar.pngzCmatplotlib.backends.qt_compat.QtWidgets.QFileDialog.getSaveFileName)r~)NN) rrrrrstrrrr save_figureexists)tmp_pathr!rexpectedrfnames rtest_save_figure_returnrsllnGCIIse,&H PD DH t'< =! ""**668H %%%   ! D| 4 ""**668}} !!sAD3DD DcBtj\}}tdddtdddg}|j||t j dd5|j jjjdddy#1swYyxYw)NryearmonthdayrqrcyrrIrs rrYz7test_figureoptions_with_datetime_axes..rr) rrrrrrrrrr)r!rxydatas r%test_figureoptions_with_datetime_axesrsllnGCd!+d!+FGGFF 9;K L5 ""224555s /BBcXtj\}}|jj|jjj }d\}}|j |||jj|tjdzk(sJ|jj|tjdzk(sJ|j}|j}|j |||j|k(sJ|j|k(sJy)N)rorqz figure.dpi) rrrrrrset_size_inchesr matplotlibrcParamsr)r!rrwh old_width old_heights rtest_double_resizersllnGCJJOO ZZ   & &F DAq1 ::   Z%8%8%F!F FF F ::   !j&9&9,&G"G GG G IJ1 <<>Y && & ==?j (( (rcddlm}dfd}tj\}}||_||}d|_sJy)Nr)FigureCanvasQTAggFc>|jjdy)NT)r draw_idle)r!stalecalleds rcrashing_callbackz-test_canvas_reinit..crashing_callbacks rT)!matplotlib.backends.backend_qtaggrrrstale_callbackr)rrr!rrrs @rtest_canvas_reinitr sAC F llnGC*C s #FCI M6rc ddlm}|dtdddfdtdddfg}t j |}|j |j}|tdddtdddgk(sJy) Nr) _create_qAppzDatetime fieldrro rz Date field)matplotlib.backends.backend_qtrrrr FormWidgetsetupget)rformwidgetvaluess r2test_form_widget_get_with_datetime_and_date_fieldsrs;N 8QB?@ tQB78 D # #D )F LLN ZZ\F d!, $aR(  rc ~g}dDcgc] }|gd|df c}D]\}}d}|Dcgc]$}tjj|r#|&}}tjdk(rt j sd}nL|r!djdj|}n)|dd k(r!tjjd rd }g}|r5|jtjjd |d ||jtj ||t#||Scc}wcc}w)N)PyQt6PySide6PyQt5PySide2qtagg) MPLBACKENDQT_APIlinuxz'$DISPLAY and $WAYLAND_DISPLAY are unsetz{} cannot be importedz, rmacosxTF_BUILDzmacosx backend fails on Azurez Skipping z because )reason)r?id) importlibutil find_specr_r`rdisplay_is_validformatjoinosenvironrappendpytestmarkskipparamr)envsqt_apidepsenvrdepmissingr?s r_get_testable_qt_backendsr 1s, DCXg@ AA c"&L3inn.F.Fs.K3LL LLG #%668>F ,33DIIg4FGF  ( *rzz~~j/I4F  LL))"3%y9*; < FLLEc#h?@#A$ K% MsD5$D: D:cddlm}tjdfd}jj d|t jt j}d}t j t j| tjjjj|k7sJt jt j|k(sJt jt jfD]}jj d|t j t j||j|k(sJt jt j|k(rJ t j t j|y#t j t j|wxYw)Nr) _BackendQT5ctjtjjj yr)signal getsignalSIGINTrexit)event_loop_handlerrsrfire_signal_and_quitz6test_fig_sigint_override..fire_signal_and_quitRs.$--fmm<   %%'rcyrrI)signumframes rcustom_handlerz0test_fig_sigint_override..custom_handleras r)matplotlib.backends.backend_qt5r rrQTimer singleShotr rrrbackends backend_qt _BackendQTmainloopSIG_DFLSIG_IGN)rr roriginal_handlerrrs` @rtest_fig_sigint_overrider!Hs^;JJL( NNa!56'' 6  MM&--07 &&11::<"^333 ..@@@ &~~v~~> EN NN % %a)= > MM&-- 8  "%7 77##FMM2nD DD E  fmm%56 fmm%56s DF7F77&Gc*ddlm}|dddddy)Nripython_in_subprocessqtrrr>)))r&)r)matplotlib.testingr$r#s r test_ipythonr+s8$'GX VWr),rrrr r_rrunittestrrrrrmatplotlib._pylab_helpersrrrr r matplotlib.backends.qt_editorr ImportErrorrr pytestmark _test_timeoutfixturerr=r" parametrizerrmrrrrrrrrr r!r+rIrrr4s}  # $)(;379   W$7!8!" ?#S) "c $%2    3 r@A -9 &'4  > @  R "k*     +6 ;*VFLLkk!!(!EGFLLkk!!'t!DF % W*h FW$7=;8=;@W$7888 W$7585W$7 8 W$7585W$7)8)&W$78$X489".W$757857pW$7X8X[ ;!!"9:J;sJ>> K"!K"