o
    i/                     @   sr  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 zd dlmZmZ d dlmZ W n ey[   e	jd	ZY nw d
Ze	jdd Ze	jjdd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'd(e	jd)e	jd*e	jjd*ddd+e	jde	jjdddd+gd,d- Z e	jjdddd.d/ Z!e	jjdddd0d1 Z"e	jjdddd2d3 Z#e	jjdddd4d5 Z$e	jjdddd6d7 Z%e	jjdddd8d9 Z&e	jjd*ddd:d; Z'd<d= Z(e	jjdddd>d? Z)dS )@    N)datedatetime)mock)pyplot)Gcf)_c_internal_utils)QtGui	QtWidgets)_formlayoutzNo usable Qt bindings<   c                 C   s   t d}|j}|S )Nzmatplotlib.backends.qt_compat)pytestZimportorskipQtCore)requestZ	qt_compatr    r   o/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/matplotlib/tests/test_backend_qt.pyqt_core   s   
r   ZQtAggT)Zskip_on_importerrorc                  C   s4   t  tj} t }|jjj  | tjksJ d S N)	copyr   Zfigspltfigurecanvasmanagerwindowclose)Z	init_figsfigr   r   r   test_fig_close$   s   r   zqt_key, qt_mods, answerZKey_AZShiftModifierAaControlModifierzctrl+aZ
Key_Aacute   Á   áZKey_ControlAltModifierzalt+controlZKey_Altzctrl+alt)r   r!   ZMetaModifieru   ctrl+alt+meta+áZKey_PlayZKey_Backspace	backspacezctrl+backspace)shiftlowercontrolZunicode_upperZunicode_lowerZalt_controlZcontrol_altZmodifier_orderZnon_unicode_keyr"   Zbackspace_mod)ZidsbackendZQt5Agg)marksc           
         s   ddl mm  tjdkr#|dur#|dd}|dd}|dd}d jjj|D ]}t	 jj|O q,G  fd	d
d
}|
tjdfdd fdd}t j}	|	d| |	|  |kslJ 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.
    r   )_to_intr   darwinNZctrlcmdr%   metac                       s$   e Zd Z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jS r   )getattrQtKeyr,   r   r(   qt_keyr   r   key~   s    z$test_correct_key.<locals>._Event.keyN)__name__
__module____qualname__r.   r5   r   r3   r   r   _Event|   s    r9   ZkeyboardModifiersc                    s    S r   r   r,   )qt_modr   r   <lambda>   r/   z"test_correct_key.<locals>.<lambda>c                    s
   | j  d S r   )r5   )event)resultr   r   on_key_press   s   
z&test_correct_key.<locals>.on_key_pressZkey_press_event)matplotlib.backends.qt_compatr(   r   sysplatformreplacer1   ZKeyboardModifierZ
NoModifierr0   setattrr	   ZQApplicationr   r   r   Zmpl_connectZkeyPressEvent)
r&   r   r4   Zqt_modsZanswerZmonkeypatchmodr9   r>   	qt_canvasr   )r   r(   r4   r:   r=   r   test_correct_key6   s$   ;



rF   c                     s  d} t |  d _tjddd}|j   fdd}j   }	 
  |d |jdks=J jjd	ksEJ jjd
ksMJ | dksUJ | dks]J  dkseJ | dk soJ |d |jdkszJ jjdksJ jjdksJ | dksJ | dksJ  dksJ | dk sJ |d |jdksJ jjdksJ jjdksJ | dksJ | dksJ  dksJ | dk sJ W d   dS 1 sw   Y  dS )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   )Zfigsizedpic                    s4   |  _ jd     j| ksJ d S )N`   )return_valueZlogicalDotsPerInchChangedemitdrawZflush_eventsZdevice_pixel_ratio)ratioprE   screenr   r   set_device_pixel_ratio   s
   z>test_device_pixel_ratio_change.<locals>.set_device_pixel_ratioih  i  i  X     )rU   rV   rI   i  i  g      ?   i  N)r   patchrM   r   r   r   showr   sizer   ZwindowHandlerS   rK   rendererwidthheightZget_width_heightZget_size_inchesall)propr   rT   rZ   r   rQ   r   test_device_pixel_ratio_change   sF   
"r`   c                  C   sP   t  \} }tddd  | jjj  W d    d S 1 s!w   Y  d S )N#matplotlib.backends.qt_compat._execc                 S      d S r   r   objr   r   r   r;      r/   z"test_subplottool.<locals>.<lambda>)r   subplotsr   rX   r   r   toolbarZconfigure_subplotsr   axr   r   r   test_subplottool   s   "ri   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   rI   rG   )cra   c                 S   rb   r   r   rc   r   r   r   r;      r/   z$test_figureoptions.<locals>.<lambda>)r   re   plotZimshowZscatterranger   rX   r   r   rf   edit_parametersrg   r   r   r   test_figureoptions   s   "ro   c                  C   sx   t  \} }tddddtddddg}||| tddd  | jjj	  W d    d S 1 s5w   Y  d S )N  rj   yearmonthdayrI   ra   c                 S   rb   r   r   rc   r   r   r   r;      r/   z7test_figureoptions_with_datetime_axes.<locals>.<lambda>)
r   re   r   rl   r   rX   r   r   rf   rn   )r   rh   Zxydatar   r   r   %test_figureoptions_with_datetime_axes   s   "ru   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)rG   rI   z
figure.dpi)r   re   r   rO   r   r   Zset_size_inchesr\   
matplotlibZrcParamsr]   )r   rh   r   whZ	old_widthZ
old_heightr   r   r   test_double_resize   s   

ry   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   Z	draw_idle)r   stalecalledr   r   crashing_callback  s   
z-test_canvas_reinit.<locals>.crashing_callbackT)Z!matplotlib.backends.backend_qtaggrz   r   re   Zstale_callbackr{   )rz   r~   r   rh   r   r   r|   r   test_canvas_reinit  s   r   c                  C   sx   ddl m}  |   dtddddfdtddddfg}t|}|  | }|tddddtddddgks:J d S )	Nr   )_create_qAppzDatetime fieldrp   rG      rq   z
Date field)Zmatplotlib.backends.backend_qtr   r   r   r
   Z
FormWidgetsetupget)r   formZwidgetvaluesr   r   r   2test_form_widget_get_with_datetime_and_date_fields  s   
r   c                  C   s   g } dd dD D ]S\}}d }dd |D }t jdkr"t s"d}n|r-dd|}n|d	 d
kr;tjdr;d}g }|rO|	t
jjd| d| d | 	t
j||t|d q	| S )Nc                 S   s   g | ]
}|gd |dfqS )Zqtagg)
MPLBACKENDZQT_APIr   ).0Zqt_apir   r   r   
<listcomp>.  s    z-_get_testable_qt_backends.<locals>.<listcomp>)ZPyQt6ZPySide6ZPyQt5ZPySide2c                 S   s   g | ]
}t j|s|qS r   )	importlibutil	find_spec)r   depr   r   r   r   3  s    linuxz'$DISPLAY and $WAYLAND_DISPLAY are unsetz{} cannot be importedz, r   macosxZTF_BUILDzmacosx backend fails on Azurez	Skipping z	 because )reason)r'   id)r@   rA   r   Zdisplay_is_validformatjoinosenvironr   appendr   markskipparamstr)Zenvsdepsenvr   missingr'   r   r   r   _get_testable_qt_backends,  s*   

r   c              
      s   ddl m} t  d   fdd}jd| ttj}dd }ttj| zLt	j
jj   |ks9J ttj|ksCJ tjtjfD ]$}jd| ttj| |   |kscJ ttj|ksmJ qIW ttj| d S ttj| w )Nr   )_BackendQT5c                      s   t t j j  d S r   )signal	getsignalSIGINTZQCoreApplicationexitr   Zevent_loop_handlerr   r   r   fire_signal_and_quitM  s   z6test_fig_sigint_override.<locals>.fire_signal_and_quitc                 S   rb   r   r   )signumframer   r   r   custom_handler\  s   z0test_fig_sigint_override.<locals>.custom_handler)Zmatplotlib.backends.backend_qt5r   r   r   ZQTimerZ
singleShotr   r   r   rv   backendsZ
backend_qtZ
_BackendQTZmainloopSIG_DFLSIG_IGN)r   r   r   Zoriginal_handlerr   r   r   r   test_fig_sigint_overrideC  s(   	"r   )*r   r   r   r   r@   r   r   Zunittestr   r   rv   r   r   Zmatplotlib._pylab_helpersr   r   r?   r   r	   Zmatplotlib.backends.qt_editorr
   ImportErrorr   r   Z
pytestmarkZ_test_timeoutZfixturer   r&   r   Zparametrizer   rF   r`   ri   ro   ru   ry   r   r   r   r   r   r   r   r   <module>   s    





+	#
H

	



