o
    ¹iû#  ã                   @   sÈ  d dl Z d dlZd dlmZ d dlZd dlmZ d dlmZ d dl	Z	e	j
dd„ ƒZe	j de	jde	j d¡d	e	jd
e	j d
¡d	g¡dd„ ƒZe	j 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 dgd"fd#g dfgg d$¢d%e	j de	jde	j d¡d	e	jd
e	j d
¡d	g¡d&d'„ ƒƒZe	j d
¡d(d)„ ƒZe	j d
¡d*d+„ ƒZe	j d
¡d,d-„ ƒZe	j d
¡d.d/„ ƒZe	j d
¡d0d1„ ƒZdS )2é    N)Úmock)Úpyplot)ÚGcfc                 C   st   | j  d¡j\}t d¡}|j}|dkr8zt|j d¡d ƒ}W n t	y.   |j
d }Y nw |dkr8t d¡ |S )NÚbackendzmatplotlib.backends.qt_compatÚQt4AggÚ.r   é   zQt4 is not available)ÚnodeÚget_closest_markerÚargsÚpytestÚimportorskipÚQtCoreÚintÚPYQT_VERSION_STRÚsplitÚAttributeErrorÚ__version_info__Úskip)Úrequestr   Ú	qt_compatr   Ú	py_qt_ver© r   ú[/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/matplotlib/tests/test_backend_qt.pyÚqt_core   s   
ÿ
r   r   r   )ÚmarksÚQt5Aggc                 C   s4   t   tj¡}t ¡ }|jjj ¡  |tjksJ ‚d S ©N)	Úcopyr   ÚfigsÚpltÚfigureÚcanvasÚmanagerÚwindowÚclose)r   Ú	init_figsÚfigr   r   r   Útest_fig_close   s   r(   c                    sŒ   t  ¡  d ‰ ‡ ‡fdd„}ˆj d|¡ t tj¡}dd„ }t tj|¡ tjj	j
 ¡  ˆ tjks3J ‚|t tj¡ks=J ‚t tj|¡ d S )Nc                      s   t  t j¡‰ ˆj ¡  d S r   )ÚsignalÚ	getsignalÚSIGINTÚQCoreApplicationÚexitr   ©Úevent_loop_signalr   r   r   Úfire_signal_and_quit;   s   z.test_fig_signals.<locals>.fire_signal_and_quitr   c                 S   ó   d S r   r   )ÚsignumÚframer   r   r   ÚCustomHandlerJ   s   z'test_fig_signals.<locals>.CustomHandler)r    r!   ÚQTimerÚ
singleShotr)   r*   r+   Ú
matplotlibÚbackendsÚbackend_qt5Ú_BackendQT5ÚmainloopÚSIG_DFL)r   r0   Úoriginal_signalr4   r   r.   r   Útest_fig_signals2   s   	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)rC   rH   ÚMetaModifieru   ctrl+alt+super+Ã¡ÚKey_BackspaceÚ	backspacezctrl+backspaceÚKey_Play)ÚshiftÚlowerÚcontrolÚunicode_upperÚunicode_lowerÚalt_controlÚcontrol_altÚmodifier_orderrL   Úbackspace_modÚnon_unicode_key)Úidsc           	         sj   ˆj j‰|D ]
}ˆtˆj |ƒO ‰qG ‡‡‡fdd„dƒ}‡ fdd„}t ¡ j}| d|¡ | |ƒ ¡ dS )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.
    c                       s.   e Zd Zdd„ Z‡ ‡fdd„Z‡fdd„ZdS )z test_correct_key.<locals>._Eventc                 S   s   dS )NFr   ©Úselfr   r   r   ÚisAutoRepeatŽ   ó    z-test_correct_key.<locals>._Event.isAutoRepeatc                    s   t ˆ jˆƒS r   )ÚgetattrÚQtrY   )r   Úqt_keyr   r   Úkey   s    z$test_correct_key.<locals>._Event.keyc                    s   ˆ S r   r   rY   )Úqt_modr   r   Ú	modifiers   r\   z*test_correct_key.<locals>._Event.modifiersN)Ú__name__Ú
__module__Ú__qualname__r[   r`   rb   r   )r   r_   ra   r   r   Ú_Event   s    rf   c                    s   | j ˆ ksJ ‚d S r   )r`   )Úevent)Úanswerr   r   Úon_key_press’   s   z&test_correct_key.<locals>.on_key_pressÚkey_press_eventN)r^   Ú
NoModifierr]   r    r!   r"   Úmpl_connectÚkeyPressEvent)	r   r   r_   Úqt_modsrh   Úmodrf   ri   Ú	qt_canvasr   )rh   r   r_   ra   r   Útest_correct_key]   s   ,
rq   c                  C   sP  d} t j| t jd}d|_tjddd}|j}| ¡  ddlm	} |j
dks*J ‚| ¡ }|j ¡  | ¡  | ¡  |jd	ksBJ ‚|jjd
ksJJ ‚|jjdksRJ ‚| ¡ dksZJ ‚| ¡ dksbJ ‚| ¡ dksjJ ‚| ¡ dk ¡ stJ ‚d|_|j
dks~J ‚| ¡  | ¡  | ¡  |jdks‘J ‚|jjdks™J ‚|jjdks¡J ‚| ¡ dks©J ‚| ¡ dks±J ‚| ¡ dks¹J ‚| ¡ dk ¡ sÃJ ‚d|_|j
dksÍJ ‚| ¡  | ¡  | ¡  |jdksàJ ‚|jjdksèJ ‚|jjd	ksðJ ‚| ¡ dksøJ ‚| ¡ dksJ ‚| ¡ dks
J ‚| ¡ dk ¡ sJ ‚W d  ƒ dS 1 s!w   Y  dS )zy
    Make sure that if _dpi_ratio changes, the figure dpi changes but the
    widget remains the same physical size.
    z9matplotlib.backends.backend_qt5.FigureCanvasQT._dpi_ratio)Únew_callableé   )é   é   éx   )ÚfigsizeÚdpir   )ÚqAppih  i  iÐ  éX  éð   )rz   r{   ru   i°  ià  g      ø?é´   i„  N)r   ÚpatchÚPropertyMockÚreturn_valuer    r!   r"   ÚshowÚmatplotlib.backends.backend_qt5ry   Ú
_dpi_ratioÚsizer#   ÚdrawÚprocessEventsrx   ÚrendererÚwidthÚheightÚget_width_heightÚget_size_inchesÚall)ÚpropÚpr'   rp   ry   rƒ   r   r   r   Útest_dpi_ratio_changeš   sX   
$¶rŽ   c                  C   sP   t  ¡ \} }t ddd„ ¡ | jjj ¡  W d   ƒ d S 1 s!w   Y  d S )Nz3matplotlib.backends.backend_qt5.SubplotToolQt.exec_c                 S   r1   r   r   rY   r   r   r   Ú<lambda>õ   r\   z"test_subplottool.<locals>.<lambda>)r    Úsubplotsr   r}   r"   r#   ÚtoolbarÚconfigure_subplots©r'   Úaxr   r   r   Útest_subplottoolð   s   þ"ýr•   c                  C   sˆ   t  ¡ \} }| ddg¡ | dgg¡ |jtdƒtdƒtdƒd t ddd„ ¡ | jj	j
 ¡  W d   ƒ d S 1 s=w   Y  d S )Né   ru   rs   )Úcz:matplotlib.backends.qt_editor._formlayout.FormDialog.exec_c                 S   r1   r   r   rY   r   r   r   r     r\   z$test_figureoptions.<locals>.<lambda>)r    r   ÚplotÚimshowÚscatterÚranger   r}   r"   r#   r‘   Úedit_parametersr“   r   r   r   Útest_figureoptionsù   s   þ"ýr   c                  C   s¬   t  ¡ \} }| j ¡  | jjj}d\}}|  ||¡ | j ¡ |tj	d  ks(J ‚| j 
¡ |tj	d  ks6J ‚| ¡ }| 
¡ }|  ||¡ | ¡ |ksLJ ‚| 
¡ |ksTJ ‚d S )N)rs   ru   z
figure.dpi)r    r   r"   r„   r#   r$   Úset_size_inchesr‡   r7   ÚrcParamsrˆ   )r'   r”   r$   ÚwÚhÚ	old_widthÚ
old_heightr   r   r   Útest_double_resize  s   

r¤   c                     sH   ddl m}  d‰ ‡ fdd„}t ¡ \}}||_| |ƒ}d|_ˆ s"J ‚d S )Nr   )ÚFigureCanvasQTAggFc                    s   | j  ¡  d‰ d S )NT)r"   Ú	draw_idle)r'   Ústale©Úcalledr   r   Úcrashing_callback  s   
z-test_canvas_reinit.<locals>.crashing_callbackT)Ú"matplotlib.backends.backend_qt5aggr¥   r    r   Ústale_callbackr§   )r¥   rª   r'   r”   r"   r   r¨   r   Útest_canvas_reinit  s   r­   )r   r)   Úunittestr   r7   r   r    Úmatplotlib._pylab_helpersr   r   Úfixturer   ÚmarkÚparametrizeÚparamr   r(   r>   rq   rŽ   r•   r   r¤   r­   r   r   r   r   Ú<module>   sj    
ý


*

ÿÿ

ÿ
òî ý


U





