
    P/Ph2                        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 d dlmZ d d	lmZ n%# e$ r e	j                            d
          ZY nw xY wdZe	j        d             Ze	j                            dd          d             Ze	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                            d( e	j        d)e	j                            d)d          *           e	j        de	j                            dd          *          g          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d          d0             Z%e	j                            dd          d1             Z&e	j                            dd          d2             Z'e	j                            d)d          d3             Z(d4 Z)e	j                            dd          d5             Z*e	j                            dd          d6             Z+dS )7    N)datedatetime)mock)pyplot)Gcf)_c_internal_utils)QtGui)	QtWidgets)_formlayoutzNo usable Qt bindings<   c                     ddl m} |S )Nr   )QtCore)matplotlib.backends.qt_compatr   )requestr   s     `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_backend_qt.pyqt_corer      s    444444M    QtAggT)skip_on_importerrorc                      t          j         t          j                  } t          j                    }|j        j        j                                         | t          j        k    sJ d S N)	copyr   figspltfigurecanvasmanagerwindowclose)	init_figsfigs     r   test_fig_closer"   "   sY     	#(##I *,,C 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                 L  
 ddl mm
 t          j        dk    rD|B|                    dd          }|                    dd          }|                    dd          }d
j        j        j        |D ]}t          
j        j        |          z    G 
fd	d
          }|
                    t          j        dfd           fd}t          j                    j        }	|	                    d|           |	                     |                       |k    sJ 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   darwinNctrlcmdr4   metac                   $    e Zd Zd Z fdZdS ) test_correct_key.<locals>._Eventc                     dS )NF )selfs    r   isAutoRepeatz-test_correct_key.<locals>._Event.isAutoRepeat{   s    uur   c                 J     t          j        j                            S r   )getattrQtKey)rJ   r   rA   qt_keys    r   keyz$test_correct_key.<locals>._Event.key|   s     gggfimV&D&DEEEr   N)__name__
__module____qualname__rK   rQ   )r   rA   rP   s   r   _EventrG   z   s/        ,,,EEEEEEEEEr   rU   keyboardModifiersc                     S r   rI   )rJ   qt_mods    r   <lambda>z"test_correct_key.<locals>.<lambda>   s    V r   c                     | j         d S r   )rQ   )eventresults    r   on_key_pressz&test_correct_key.<locals>.on_key_press   s    r   key_press_event)r   rA   r   sysplatformreplacerN   KeyboardModifier
NoModifierrM   setattrr
   QApplicationr   r   r   mpl_connectkeyPressEvent)r=   r   rP   qt_modsanswermonkeypatchmodrU   r]   	qt_canvasr   rA   rX   r\   s     `       @@@@r   test_correct_keyrm   4   s   v >=======
|xF$6..	511//FY'2F ; ;'&)4c:::F F F F F F F F F F F F 	.0C++++- - -     
#I+\:::FFHH%%%Vr   c                     d} t          j        |           5 d_        t          j        dd          }|j                                         fd}j                                                                         }	                                
                                                                 |d           |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        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        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dd           dS # 1 swxY w 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   )figsizedpic                     | _         j                            d                                                                             j        | k    sJ d S )N`   )return_valuelogicalDotsPerInchChangedemitdrawflush_eventsdevice_pixel_ratio)ratioprl   screens    r   set_device_pixel_ratioz>test_device_pixel_ratio_change.<locals>.set_device_pixel_ratio   sa    "AN ,11"555NN""$$$ /5888888r   ih  i  i  X     )r   r   rq   i  i  g      ?   i  N)r   patchrw   r   r   r   showr   sizer   windowHandler   rt   rendererwidthheightget_width_heightget_size_inchesall)propr!   r   r   r~   rl   r   s       @@@r   test_device_pixel_ratio_changer      s    MD	D		 >7QjS111J		9 	9 	9 	9 	9 	9 	9 	   ~~!!##002299;;q!!! w#~~~~!'4////!(C//// zz||s""""{{}}####))++z9999##%%/4466666q!!! w#~~~~!'4////!(C//// zz||s""""{{}}####))++z9999##%%/4466666s### w#~~~~!'3....!(C//// zz||s""""{{}}####))++z9999##%%/44666666}>7 >7 >7 >7 >7 >7 >7 >7 >7 >7 >7 >7 >7 >7 >7 >7 >7 >7s   KK//K36K3c                      t          j                    \  } }t          j        dd           5  | j        j        j                                         d d d            d S # 1 swxY w Y   d S )N#matplotlib.backends.qt_compat._execc                     d S r   rI   objs    r   rY   z"test_subplottool.<locals>.<lambda>       t r   )r   subplotsr   r   r   r   toolbarconfigure_subplotsr!   axs     r   test_subplottoolr      s    lnnGC	9;K;K	L	L 8 8
"557778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   $AA"%A"c                     t          j                    \  } }|                    ddg           |                    dgg           |                    t          d          t          d          t          d                     t          j        dd           5  | j        j	        j
                                         d d d            d S # 1 swxY w Y   d S )N   rq   ro   )cr   c                     d S r   rI   r   s    r   rY   z$test_figureoptions.<locals>.<lambda>   r   r   )r   r   plotimshowscatterranger   r   r   r   r   edit_parametersr   s     r   test_figureoptionsr      s    lnnGCGGQFOOOIIseJJuQxxqU1XXJ...	9;K;K	L	L 5 5
"224445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   $CCCc                     t          j                    \  } }|                    dgg           d}t          j        |d          5  | j        j        j                                        }t          j
        d           |dk    sJ 	 d d d            n# 1 swxY w Y   t          j        |d          5  | j        j        j                                        }|J 	 d d d            d S # 1 swxY w Y   d S )Nr   zCmatplotlib.backends.qt_compat.QtWidgets.QFileDialog.getSaveFileName)
foobar.pngN)rw   r   )NN)r   r   r   r   r   r   r   r   save_figureosremove)r!   r   r   fnames       r   test_save_figure_returnr      ss   lnnGCIIsePD	D';	<	<	< % %
"*6688
	,$$$$$% % % % % % % % % % % % % % % 
D|	4	4	4  
"*6688}}}}                 s%   A BBB4(C**C.1C.c                  J   t          j                    \  } }t          ddd          t          ddd          g}|                    ||           t	          j        dd           5  | j        j        j        	                                 d d d            d S # 1 swxY w Y   d S )N  r   yearmonthdayrq   r   c                     d S r   rI   r   s    r   rY   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    lnnGCd!+++d!+++F GGFF	9;K;K	L	L 5 5
"224445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   '$BBBc                  h   t          j                    \  } }| j                                         | j        j        j        }d\  }}|                     ||           | j                                        |t          j	        d         z  k    sJ | j        
                                |t          j	        d         z  k    sJ |                                }|
                                }|                     ||           |                                |k    sJ |
                                |k    sJ d S )N)ro   rq   z
figure.dpi)r   r   r   rz   r   r   set_size_inchesr   
matplotlibrcParamsr   )r!   r   r   wh	old_width
old_heights          r   test_double_resizer      s    lnnGCJOOZ&FDAq1:Z%8%F!FFFFF:!j&9,&G"GGGGGIJ1<<>>Y&&&&==??j((((((r   c                      ddl m}  dfd}t          j                    \  }}||_         | |          }d|_        sJ d S )Nr   )FigureCanvasQTAggFc                 >    | j                                          dd S )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     sp    CCCCCCF    
 lnnGC*Cs##FCIMMMMMr   c                  B   ddl m}   |              dt          ddd          fdt          ddd          fg}t	          j        |          }|                                 |                                }|t          ddd          t          ddd          gk    sJ d S )	Nr   )_create_qAppzDatetime fieldr   ro      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    ;;;;;;LNNN 
8QB???@	tQB7778D #D))F
LLNNNZZ\\Fd!,,,$aR(((      r   c            
      2   g } d dD             D ]\  }}d }d |D             }t           j        dk    rt          j                    sd}nX|r)d                    d                    |                    }n-|d         d	k    r!t          j                            d
          rd}g }|r9|	                    t          j                            d| d|                      | 	                    t          j        ||t          |                               | S )Nc                     g | ]
}|gd |dfS )qtagg)
MPLBACKENDQT_APIrI   ).0qt_apis     r   
<listcomp>z-_get_testable_qt_backends.<locals>.<listcomp>:  s7        Xg@@A  r   )PyQt6PySide6PyQt5PySide2c                 P    g | ]#}t           j                            |          !|$S rI   )	importlibutil	find_spec)r   deps     r   r   z-_get_testable_qt_backends.<locals>.<listcomp>?  s-    LLL3in.F.Fs.K.KL3LLLr   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)r_   r`   r   display_is_validformatjoinr   environr   appendpytestmarkskipparamstr)envsdepsenvr   missingr?   s         r   _get_testable_qt_backendsr   8  sE   D B   A A	c LL$LLLLG##%688 $>FF 	5,33DIIg4F4FGGFF(**rz~~j/I/I*4F 	<LL))939999 * ; ; < < <FLEc#hh???@@@@Kr   c                 ^    ddl m} t          j                     d  fd} j                            d|           t          j        t          j                  }d }t          j        t          j        |           	 t          j
        j        j                                         |k    sJ t          j        t          j                  |k    sJ t          j        t          j        fD ]|} j                            d|           t          j        t          j        |           |                                 |k    sJ t          j        t          j                  |k    sJ }	 t          j        t          j        |           d S # t          j        t          j        |           w xY w)Nr   )_BackendQT5c                  v    t          j        t           j                   j                                         d S r   )signal	getsignalSIGINTQCoreApplicationexit)event_loop_handlerr   s   r   fire_signal_and_quitz6test_fig_sigint_override.<locals>.fire_signal_and_quitY  s5     $-fm<< 	 %%'''''r   c                     d S r   rI   )signumframes     r   custom_handlerz0test_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  s   ;;;;;;JLLL ( ( ( ( ( ( Na!5666 '66   M&-0007 	&1::<<< "^3333 ...@@@@  &~v~> 	E 	ENN%%a)=>>>M&-888  """%7777#FM22nDDDDD	E 	fm%566666fm%56666s    C)F !F,c                  2    ddl m}   | ddddd           d S )Nr   ipython_in_subprocessqtr   r   r>   ))      )r     )   r   )matplotlib.testingr  r  s    r   test_ipythonr    s7    888888$'GX V VWWWWWr   ),r   r   r   r   r_   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   rm   r   r   r   r   r   r   r   r   r   r  r  rI   r   r   <module>r$     s        				  



 # # # # # # # #            $ $ $ $ $ $ ) ) ) ) ) ) ( ( ( ( ( (;3333337777779999999 ; ; ;!!"9::JJJ;    
 W$77! ! 87!" 	?#S)	"c	$%23	

 
r@A	-9	&'4>>>@	
 
R	"k*	
+6	 	 	;  * *V FLk!!(!EEG G G FLk!!'t!DDF F F%      W* *h F W$77E7 E7 87E7P W$778 8 878 W$775 5 875 W$77
 
 87
 W$775 5 875 W$77) ) 87)& W$77  87$ X488  98"  . W$7757 57 8757p W$77X X 87X X Xs   A A32A3