Ë
    µ2Úi�/  ã                   ó6  — d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlmZ d dl	Z	d dl
Z
d dl
mZ d dlmZ d dl
mZ 	 d dlmZmZ d dlmZ d
Ze	j4                  d„ «       Ze	j,                  j9                  dd¬«      d„ «       Ze	j,                  j=                  dddgdfdg dfddgdfddgdfdg dfddgdfddgdfdg d¢d fd!g dfd"g d#fd"dgd$fgg d%¢¬&«      e	j,                  j=                  d' e	j>                  d(e	j,                  j9                  d(d¬«      ¬)«       e	j>                  de	j,                  j9                  dd¬«      ¬)«      g«      d*„ «       «       Z e	j,                  j9                  dd¬«      d+„ «       Z!e	j,                  j9                  dd¬«      d,„ «       Z"e	j,                  j9                  dd¬«      d-„ «       Z#e	j,                  j9                  dd¬«      d.„ «       Z$e	j,                  j9                  dd¬«      d/„ «       Z%e	j,                  j9                  dd¬«      d0„ «       Z&e	j,                  j9                  d(d¬«      d1„ «       Z'd2„ Z(e	j,                  j9                  dd¬«      d3„ «       Z)y# e$ r e	j,                  j/                  d	«      ZY �ŒKw xY w)4é    N)ÚdateÚdatetime)Úmock)Úpyplot)ÚGcf)Ú_c_internal_utils)ÚQtGuiÚ	QtWidgets)Ú_formlayoutzNo usable Qt bindingsé<   c                 óH   — t        j                  d«      }|j                  }|S )Nzmatplotlib.backends.qt_compat)ÚpytestÚimportorskipÚQtCore)ÚrequestÚ	qt_compatr   s      úW/var/www/html/acx/venv/lib/python3.12/site-packages/matplotlib/tests/test_backend_qt.pyÚqt_corer      s#   € ä×#Ñ#Ð$CÓD€IØ×Ñ€Fà€Mó    ÚQtAggT)Úskip_on_importerrorc                  óø   — t        j                   t        j                  «      } t        j                  «       }|j
                  j                  j                  j                  «        | t        j                  k(  sJ ‚y ©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_keyr3   Úbackspace_mod)ÚidsÚbackendÚQt5Agg)Úmarksc                 óT  ‡‡
‡‡‡— ddl mŠmŠ
 t        j                  dk(  r8|�6|j                  dd«      }|j                  dd«      }|j                  dd«      }dŠ‰
j                  j                  j                  Š|D ]%  }‰t        ‰
j                  j                  |«      z  ŠŒ'  G ˆ
ˆˆfd	„d
«      }|j                  t        j                  dˆfd„«       ˆfd„}t        j                  «       j                  }	|	j!                  d|«       |	j#                   |«       «       ‰|k(  sJ ‚y)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Úcmdr6   Úmetac                   ó"   •— e Zd Zd„ Zˆ ˆˆfd„Zy)ú test_correct_key.<locals>._Eventc                  ó   — y)NF© )Úselfs    r   ÚisAutoRepeatz-test_correct_key.<locals>._Event.isAutoRepeat}   s   €  ur   c                 óP   •—  ‰t        ‰j                  j                  ‰«      «      S r   )ÚgetattrÚQtÚKey)rL   r   rC   Úqt_keys    €€€r   Úkeyz$test_correct_key.<locals>._Event.key~   s   ø€ ™g¤g¨f¯i©i¯m©m¸VÓ&DÓEÐEr   N)Ú__name__Ú
__module__Ú__qualname__rM   rS   )r   rC   rR   s   €€€r   Ú_EventrI   |   s	   ø„ Ú,ßEr   rW   ÚkeyboardModifiersc                 ó   •— ‰S r   rK   )rL   Úqt_mods    €r   ú<lambda>z"test_correct_key.<locals>.<lambda>�   s   ø€  V€ r   c                 ó   •— | j                   Šy r   )rS   )ÚeventÚresults    €r   Úon_key_pressz&test_correct_key.<locals>.on_key_pressƒ   s   ø€ à—‘‰r   Úkey_press_event)Úmatplotlib.backends.qt_compatrC   r   ÚsysÚplatformÚreplacerP   ÚKeyboardModifierÚ
NoModifierrO   Úsetattrr
   ÚQApplicationr   r   r   Úmpl_connectÚkeyPressEvent)r?   r   rR   Úqt_modsÚanswerÚmonkeypatchÚmodrW   r_   Ú	qt_canvasr   rC   rZ   r^   s     `       @@@@r   Útest_correct_keyrp   6   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                  ó¸  ‡‡‡— d} t        j                  | «      5 Šd‰_        t        j                  dd¬«      }|j
                  Š‰j                  «        ˆˆˆfd„}‰j                  j                  «        ‰j                  «       }‰j                  «       j                  «       j                  «       Š |d«       |j                  dk(  sJ ‚‰j                  j                  dk(  sJ ‚‰j                  j                  d	k(  sJ ‚|j                  «       d
k(  sJ ‚|j                  «       dk(  sJ ‚‰j!                  «       dk(  sJ ‚|j#                  «       dk(  j%                  «       sJ ‚ |d«       |j                  dk(  sJ ‚‰j                  j                  dk(  sJ ‚‰j                  j                  dk(  sJ ‚|j                  «       d
k(  sJ ‚|j                  «       dk(  sJ ‚‰j!                  «       dk(  sJ ‚|j#                  «       dk(  j%                  «       sJ ‚ |d«       |j                  dk(  sJ ‚‰j                  j                  dk(  sJ ‚‰j                  j                  dk(  sJ ‚|j                  «       d
k(  sJ ‚|j                  «       dk(  sJ ‚‰j!                  «       dk(  sJ ‚|j#                  «       dk(  j%                  «       sJ ‚	 ddd«       y# 1 sw Y   yxY w)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   )ÚfigsizeÚdpic                 ó¬   •— | ‰_         ‰j                  j                  d«       ‰j                  «        ‰j	                  «        ‰j
                  | k(  sJ ‚y )Né`   )Úreturn_valueÚlogicalDotsPerInchChangedÚemitÚdrawÚflush_eventsÚdevice_pixel_ratio)ÚratioÚpro   Úscreens    €€€r   Úset_device_pixel_ratioz>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…   rt   i°  ià  g      ø?é´   i„  N)r   Úpatchrz   r   r   r   Úshowr   Úsizer    ÚwindowHandler‚   rw   ÚrendererÚwidthÚheightÚget_width_heightÚget_size_inchesÚall)Úpropr#   rƒ   r‰   r�   ro   r‚   s       @@@r   Útest_device_pixel_ratio_changer’   �   s«  ú€ ð M€DÜ	�‰�DÓ	ð >7˜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á˜qÔ!ð �w‰w˜#Š~Ðˆ~Ø×!Ñ!×'Ñ'¨4Ò/Ð/Ð/Ø×!Ñ!×(Ñ(¨CÒ/Ð/Ð/ð �z‰z‹|˜sÒ"Ð"Ð"Ø�{‰{‹} Ò#Ð#Ð#Ø×)Ñ)Ó+¨zÒ9Ð9Ð9Ø×#Ñ#Ó%¨Ñ/×4Ñ4Ô6Ð6Ð6á˜sÔ#ð �w‰w˜#Š~Ðˆ~Ø×!Ñ!×'Ñ'¨3Ò.Ð.Ð.Ø×!Ñ!×(Ñ(¨CÒ/Ð/Ð/ð �z‰z‹|˜sÒ"Ð"Ð"Ø�{‰{‹} Ò#Ð#Ð#Ø×)Ñ)Ó+¨zÒ9Ð9Ð9Ø×#Ñ#Ó%¨Ñ/×4Ñ4Ô6Ð6Ñ6÷}>7÷ >7ñ >7ús   ›J+KËKc                  óæ   — t        j                  «       \  } }t        j                  dd„ «      5  | j                  j
                  j                  j                  «        d d d «       y # 1 sw Y   y xY w)Nú#matplotlib.backends.qt_compat._execc                  ó   — y r   rK   ©Úobjs    r   r[   z"test_subplottool.<locals>.<lambda>Ù   ó   � r   )r   Úsubplotsr   r‡   r   r   ÚtoolbarÚconfigure_subplots©r#   Úaxs     r   Útest_subplottoolrž   Ö   sR   € ä�l‰l‹n�G€CˆÜ	�‰Ð9Ñ;KÓ	Lñ 8Ø�
‰
×Ñ×"Ñ"×5Ñ5Ô7÷8÷ 8ñ 8ús   ¯/A'Á'A0c                  ó�  — t        j                  «       \  } }|j                  ddg«       |j                  dgg«       |j	                  t        d«      t        d«      t        d«      ¬«       t        j                  dd„ «      5  | j                  j                  j                  j                  «        d d d «       y # 1 sw Y   y xY w)Né   rt   rr   )Úcr”   c                  ó   — y r   rK   r–   s    r   r[   z$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ñ 5Ø�
‰
×Ñ×"Ñ"×2Ñ2Ô4÷5÷ 5ñ 5ús   Â/B<Â<Cc                  óB  — t        j                  «       \  } }t        ddd¬«      t        ddd¬«      g}|j                  ||«       t	        j
                  dd„ «      5  | j                  j                  j                  j                  «        d d d «       y # 1 sw Y   y xY w)Néå  r    ©ÚyearÚmonthÚdayrt   r”   c                  ó   — y r   rK   r–   s    r   r[   z7test_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±   ç   s�   € ä�l‰l‹n�G€Cˆä�d !¨Ô+Ü�d !¨Ô+ð€Fð ‡G�GˆF�FÔÜ	�‰Ð9Ñ;KÓ	Lñ 5Ø�
‰
×Ñ×"Ñ"×2Ñ2Ô4÷5÷ 5ñ 5ús   Á/BÂBc                  óX  — t        j                  «       \  } }| j                  j                  «        | j                  j                  j
                  }d\  }}| j                  ||«       | j                  j                  «       |t        j                  d   z  k(  sJ ‚| j                  j                  «       |t        j                  d   z  k(  sJ ‚|j                  «       }|j                  «       }| j                  ||«       |j                  «       |k(  sJ ‚|j                  «       |k(  sJ ‚y )N)rr   rt   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€qØ×Ñ˜˜1ÔØ�:‰:×ÑÓ ¤Z×%8Ñ%8¸Ñ%FÑ!FÒFÐFÐFØ�:‰:×ÑÓ !¤j×&9Ñ&9¸,Ñ&GÑ"GÒGÐGÐGà—‘“€IØ—‘“€Jà×Ñ˜˜1ÔØ�<‰<‹>˜YÒ&Ð&Ð&Ø�=‰=‹?˜jÒ(Ð(Ñ(r   c                  ó‚   ‡— ddl m}  dŠˆfd„}t        j                  «       \  }}||_         | |«      }d|_        ‰sJ ‚y )Nr   )ÚFigureCanvasQTAggFc                 ó>   •— | j                   j                  «        dŠy )NT)r   Ú	draw_idle)r#   ÚstaleÚcalleds     €r   Úcrashing_callbackz-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Ä     sA   ø€ åCà€Fôô
 �l‰l‹n�G€CˆØ*€CÔá˜sÓ#€FØ€C„IÙ€M‰6r   c                  ó
  — ddl m}   | «        dt        ddd¬«      fdt        ddd¬«      fg}t	        j
                  |«      }|j                  «        |j                  «       }|t        ddd¬«      t        ddd¬«      gk(  sJ ‚y )	Nr   )Ú_create_qAppzDatetime fieldrª   rr   é   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            
      ó~  — g } dD �cg c]
  }|gd|dœf‘Œ c}D �]  \  }}d }|D �cg c]$  }t         j                  j                  |«      rŒ#|‘Œ& }}t        j                  dk(  rt        j                  «       sd}nL|r!dj                  dj                  |«      «      }n)|d   d	k(  r!t        j                  j                  d
«      rd}g }|r5|j                  t        j                  j                  d|› d|› �¬«      «       | j                  t        j                   ||t#        |«      ¬«      «       �Œ | S c c}w c c}w )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)rA   Úid)Ú	importlibÚutilÚ	find_specrb   rc   r   Údisplay_is_validÚformatÚjoinÚosÚenvironrË   Úappendr   ÚmarkÚskipÚparamÚstr)ÚenvsÚqt_apiÚdepsÚenvrÛ   ÚdepÚmissingrA   s           r   Ú_get_testable_qt_backendsrð   ,  s,  € Ø€Dð Cöàð ˆX g¸Ñ@ÒAòó A‰	ˆˆcð ˆØ"&ÖL˜3¬i¯n©n×.FÑ.FÀsÕ.K’3ÐLˆÐLÜ�L‰L˜GÒ#Ü%×6Ñ6Ô8Ø>‰FÙØ,×3Ñ3°D·I±I¸gÓ4FÓG‰FØ�Ñ (Ò*¬r¯z©z¯~©~¸jÔ/IØ4ˆFØˆÙØ�L‰LœŸ™×)Ñ)Ø" 3 % y°°Ð9ð *ó ;ô <à�‰”F—L‘L ¨E´c¸#³hÔ?Ö@ð#Að$ €Kùò%ùò
 Ms   ‡D5¦$D:ÁD:c                 óÀ  ‡ ‡— ddl m} t        j                  «        d Šˆˆ fd„}‰ j                  j                  d|«       t        j                  t        j                  «      }d„ }t        j                  t        j                  |«       	 t        j                  j                  j                  j                  «        ‰|k7  sJ ‚t        j                  t        j                  «      |k(  sJ ‚t        j                  t        j                  fD ]�  }‰ j                  j                  d|«       t        j                  t        j                  |«       |j                  «        ‰|k(  sJ ‚t        j                  t        j                  «      |k(  rŒ�J ‚ 	 t        j                  t        j                  |«       y # t        j                  t        j                  |«       w xY w)Nr   )Ú_BackendQT5c                  ó€   •— t        j                  t         j                  «      Š ‰j                  j	                  «        y r   )ÚsignalÚ	getsignalÚSIGINTÚQCoreApplicationÚexit)Úevent_loop_handlerr   s   €€r   Úfire_signal_and_quitz6test_fig_sigint_override.<locals>.fire_signal_and_quitM  s.   ø€ ô $×-Ñ-¬f¯m©mÓ<Ðð 	× Ñ ×%Ñ%Õ'r   c                  ó   — y r   rK   )ÚsignumÚframes     r   Úcustom_handlerz0test_fig_sigint_override.<locals>.custom_handler\  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	  C  s^  ù€ å;ä‡J�J„Lð Ðõ(ð ‡N�N×Ñ˜aÐ!5Ô6ô ×'Ñ'¬¯©Ó6Ðòô ‡M�M”&—-‘- Ô0ð7ô 	×Ñ×&Ñ&×1Ñ1×:Ñ:Ô<ð " ^Ò3Ð3Ð3ô ×Ñ¤§¡Ó.°.Ò@Ð@Ð@ô  &Ÿ~™~¬v¯~©~Ð>ò 	EˆNØ�N‰N×%Ñ% aÐ)=Ô>Ü�M‰Mœ&Ÿ-™-¨Ô8à× Ñ Ô"à%¨Ò7Ð7Ð7Ü×#Ñ#¤F§M¡MÓ2°nÓDÐDÐDñ	Eô 	�‰”f—m‘mÐ%5Õ6øŒ�‰”f—m‘mÐ%5Õ6ús   ÂDF7 ÆF7 Æ7&G)*r   rÝ   rã   rô   rb   r   r   Úunittestr   r   r´   r   r   Úmatplotlib._pylab_helpersr   r   ra   r	   r
   Úmatplotlib.backends.qt_editorr   ÚImportErrorræ   rç   Ú
pytestmarkÚ_test_timeoutÚfixturer   r?   r$   Úparametrizerè   rp   r’   rž   r¨   r±   rº   rÄ   rÏ   rð   r	  rK   r   r   ú<module>r     s)  ðÛ Û Û 	Û Û 
ç #Ý ã ã Ý $Ý )Ý (ð;ß>Ý9ð
 €ð ‡�ñó ðð ‡�×Ñ�W°$ÐÓ7ñ!ó 8ð!ð" ‡�×ÑØà	�?Ð# SÐ)Ø	�"�cÐØ	Ð$Ð%¨Ð2àØÐØ3ð	
ð
 
�rÐ@ÐAØ	˜˜¨-Ð9Ø	Ð&Ð'¨Ð4àÚ>Ø@ð	
ð 
�R˜ÐØ	˜"˜kÐ*àØÐØð	
ð+ò6	ð; ó *ðV ‡�×Ñ˜à€F‡L�LØØ�k‰k×!Ñ! (ÀÐ!ÓEôGð €F‡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ñ5ó 8ð5ð ‡�×Ñ�W°$ÐÓ7ñ)ó 8ð)ð& ‡�×Ñ�W°$ÐÓ7ñó 8ðð$ ‡�×Ñ�X°4ÐÓ8ñó 9ðò"ð. ‡�×Ñ�W°$ÐÓ7ñ57ó 8ñ57øð_	 ò ;Ø—‘×!Ñ!Ð"9Ó:ƒJð;ús   ¾I4 É4 JÊJ