§
    ‡ÛgS  ã                   óˆ  — d dl Z d dlZ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 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 G d„ dej         ¦  «        Z!d„ Z"ej                             dd¬¦  «        ej         #                    ddddifdddifg¦  «        d„ ¦   «         ¦   «         Z$d„ Z%ej         &                    ej'        dk    d¬¦  «        ej                             dd¬¦  «        ej         #                    ddddifdddifg¦  «        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 d0¢d1fd2g dfd3g d4fd3d&gd5fgg d6¢¬7¦  «        ej         #                    d8 ej*        dej                             dd¬¦  «        ¬9¦  «         ej*        dej                             dd¬¦  «        ¬9¦  «        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¬¦  «        d?„ ¦   «         Z0ej                             dd¬¦  «        d@„ ¦   «         Z1ej                             dd¬¦  «        dA„ ¦   «         Z2dB„ Z3dC„ Z4ej         #                    dD e4¦   «         ¦  «        dE„ ¦   «         Z5dS )Fé    N)ÚdateÚdatetime)Úmock)Úpyplot)ÚGcf)Ú_c_internal_utils)ÚQtGuiÚ	QtWidgets)Ú_formlayoutzNo usable Qt bindingsé<   c                 ó<   — t          j        d¦  «        }|j        }|S )Nzmatplotlib.backends.qt_compat)ÚpytestÚimportorskipÚQtCore)ÚrequestÚ	qt_compatr   s      úV/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/tests/test_backend_qt.pyÚqt_corer      s    € åÔ#Ð$CÑDÔD€IØÔ€Fà€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   c                   ó(   ‡ — e Zd ZdZˆ fd„Zd„ Zˆ xZS )ÚWaitForStringPopenzL
    A Popen that passes flags that allow triggering KeyboardInterrupt.
    c                 óº   •— t           j        dk    rt          j        |d<    t	          ¦   «         j        |i |¤i t          j        ¥dddœ¥t          j        ddœ¤Ž d S )NÚwin32ÚcreationflagsÚAggÚ0)Ú
MPLBACKENDÚSOURCE_DATE_EPOCHT)ÚenvÚstdoutÚuniversal_newlines)	ÚsysÚplatformÚ
subprocessÚCREATE_NEW_CONSOLEÚsuperÚ__init__ÚosÚenvironÚPIPE)ÚselfÚargsÚkwargsÚ	__class__s      €r   r6   zWaitForStringPopen.__init__=   s}   ø€ ÝŒ<˜7Ò"Ð"Ý&0Ô&CˆF�?Ñ#Ø�‰ŒÔØð	=Øð	=ð N•2”:ÐM¨UÈÐMÐMÐMÝ”?°tð		=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=r   c                 óž   — d}	 | j                              d¦  «        }|st          d|›�¦  «        ‚||z  }|                     |¦  «        rdS ŒK)z%Read until the terminator is reached.Ú Té   z)Subprocess died before emitting expected N)r/   ÚreadÚRuntimeErrorÚendswith)r:   Ú
terminatorÚbufÚcs       r   Úwait_forzWaitForStringPopen.wait_forF   sq   € àˆð	Ø”× Ò  Ñ#Ô#ˆAØð PÝ"ØNÀ
ÐNÐNñPô Pð Pà�1‰HˆCØ�|Š|˜JÑ'Ô'ð Ø�ð	r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r6   rG   Ú__classcell__)r=   s   @r   r&   r&   8   sQ   ø€ € € € € ðð ð=ð =ð =ð =ð =ð
ð 
ð 
ð 
ð 
ð 
ð 
r   r&   c                 óœ  ‡	‡
‡— dd l Š
dd lm} dd lŠ	dd l} |j        | ¦  «         ddlm} ˆ	ˆ
fd„}t          ||¦  «        }| 	                    d|¦  «        Š |j
        ¦   «         }|j                             dd„ ¦  «         |j                             dˆfd„¦  «         	  |di |¤Ž d S # t          $ r t          dd	¬
¦  «         Y d S w xY w)Nr   ©r   c                  ó¤   •— ‰j         dk    rdd l} |                      dd¦  «         d S dd l} ‰j         ‰j        ¦   «         |j        ¦  «         d S )Nr(   r   )r2   Úwin32apiÚGenerateConsoleCtrlEventÚsignalÚkillÚgetpidÚSIGINT)rP   rR   r7   r1   s     €€r   Úinterrupterz&_test_sigint_impl.<locals>.interrupter\   sb   ø€ ØŒ<˜7Ò"Ð"ØˆOˆOˆOØ×-Ò-¨a°Ñ3Ô3Ð3Ð3Ð3àˆMˆMˆMØˆBŒG�I�B”I‘K”K ¤Ñ/Ô/Ð/Ð/Ð/r   r@   Ú
draw_eventc                  ó$   — t          dd¬¦  «        S ©NÚDRAWT©Úflush©Úprint©r;   s    r   ú<lambda>z#_test_sigint_impl.<locals>.<lambda>i   s   € •e˜F¨$Ð/Ñ/Ô/€ r   c                  ó,   •— ‰                      ¦   «         S r   ©Ústart)r;   Útimers    €r   r`   z#_test_sigint_impl.<locals>.<lambda>m   s   ø€ �e—k’k‘m”m€ r   ÚSUCCESSTr[   © )r1   Úmatplotlib.pyplotr   r7   Ú	threadingÚswitch_backendÚmatplotlib.backends.qt_compatr   ÚgetattrÚTimerr   r   Úmpl_connectÚKeyboardInterruptr^   )ÚbackendÚtarget_namer<   r   rh   r   rV   Útargetr#   r7   r1   rd   s            @@@r   Ú_test_sigint_implrr   S   sO  øøø€ Ø€J€J€JØ#Ð#Ð#Ð#Ð#Ð#Ø€I€I€IØÐÐÐà€CÔ�wÑÔÐØ4Ð4Ð4Ð4Ð4Ð4ð0ð 0ð 0ð 0ð 0ð 0õ �S˜+Ñ&Ô&€FØ�OŠO˜A˜{Ñ+Ô+€EØ
ˆ#Œ*‰,Œ,€CØ„J×ÒØØ/Ð/ñô ð ð „J×ÒØØ#Ð#Ð#Ð#ñô ð ð%ØˆÐÐ�ÐÐÐÐÐøÝð %ð %ð %Ýˆi˜tÐ$Ñ$Ô$Ð$Ð$Ð$Ð$ð%øøøs   Â"B, Â,CÃ
Cztarget, kwargsÚshowÚblockÚpauseÚintervalé
   c                 ó¢  — t          j        ¦   «         }t          t          j        dt          j        t          ¦  «        d|›d| ›d|›d�z   g¦  «        }	 |                     d¦  «         | 	                    t          ¬¦  «        \  }}n1#  |                     ¦   «          | 	                    ¦   «         \  }}‚ xY wt          |¦  «         d|v sJ ‚d S )Nú-cz
_test_sigint_impl(ú, ú)rZ   ©Útimeoutre   )r   Úget_backendr&   r1   Ú
executableÚinspectÚ	getsourcerr   rG   ÚcommunicateÚ_test_timeoutrS   r^   ©rq   r<   ro   Úprocr/   Ú_s         r   Útest_sigintr‡   u   så   € õ ŒoÑÔ€GÝÝ	Œ˜Ý	Ô	Õ,Ñ	-Ô	-Ø	D Ð	DÐ	D¨VÐ	DÐ	D¸Ð	DÐ	DÐ	Dñ
Eð	FñGô G€DðØ�Š�fÑÔÐØ×$Ò$­]Ð$Ñ;Ô;‰	ˆ��øðØ�	Š	‰ŒˆØ×$Ò$Ñ&Ô&‰	ˆ�ØøøøÝ	ˆ&�M„M€MØ˜ÐÐÐÐÐÐs   Á3B	 Â	.B7c                 óÈ  ‡	— dd l }dd lm}  |j        | ¦  «         ddlm} t          ||¦  «        } |j        ¦   «         }|j         	                    dd„ ¦  «         |j         
                    d¬¦  «        Š	d‰	_        ‰	                     t          dd¬	¦  «         ˆ	fd
„} |j         |j        |¦  «         	  |di |¤Ž d S # t          $ r t          dd¬	¦  «         Y d S w xY w)Nr   rN   rW   c                  ó$   — t          dd¬¦  «        S rY   r]   r_   s    r   r`   z7_test_other_signal_before_sigint_impl.<locals>.<lambda>•   s   € ­¨v¸TÐ)BÑ)BÔ)B€ r   r@   )rv   TÚSIGUSR1r[   c                 ó0   •— ‰                      ¦   «          d S r   rb   )ÚsignumÚframerd   s     €r   Úcustom_signal_handlerzD_test_other_signal_before_sigint_impl.<locals>.custom_signal_handler›   s   ø€ Ø�Š‰Œˆˆˆr   re   rf   )rR   rg   r   ri   rj   r   rk   r   r   rm   Ú	new_timerÚsingle_shotÚadd_callbackr^   rŠ   rn   )
ro   rp   r<   rR   r   r   rq   r#   rŽ   rd   s
            @r   Ú%_test_other_signal_before_sigint_implr’   ‹   sI  ø€ Ø€M€M€MØ#Ð#Ð#Ð#Ð#Ð#Ø€CÔ�wÑÔÐØ4Ð4Ð4Ð4Ð4Ð4å�S˜+Ñ&Ô&€Fà
ˆ#Œ*‰,Œ,€CØ„J×Ò˜<ØBÐBñDô Dð Dð ŒJ× Ò ¨!Ð Ñ,Ô,€EØ€EÔØ	×Ò•u˜i¨tÐÑ4Ô4Ð4ðð ð ð ð à€F„M�&”.Ð"7Ñ8Ô8Ð8ð%ØˆÐÐ�ÐÐÐÐÐøÝð %ð %ð %Ýˆi˜tÐ$Ñ$Ô$Ð$Ð$Ð$Ð$ð%øøøs   Â8C ÃC!Ã C!r(   z,No other signal available to send on Windows©Úreasonc                 ó‚  — t          j        ¦   «         }t          t          j        dt          j        t          ¦  «        d|›d| ›d|›d�z   g¦  «        }	 |                     d¦  «         t          j
        |j        t          j        ¦  «         |                     d¦  «         t          j
        |j        t          j        ¦  «         |                     t           ¬¦  «        \  }}n1#  | 
                    ¦   «          |                     ¦   «         \  }}‚ xY wt#          |¦  «         d|v sJ ‚t          j        ¦   «          d S )	Nry   z'
_test_other_signal_before_sigint_impl(rz   r{   rZ   rŠ   r|   re   )r   r~   r&   r1   r   r€   r�   r’   rG   r7   rS   ÚpidrR   rŠ   rU   r‚   rƒ   r^   r   r„   s         r   Útest_other_signal_before_sigintr—   ¥   s;  € õ ŒoÑÔ€GÝÝ	Œ˜Ý	Ô	Õ@Ñ	AÔ	Að
4Øð
4ð 
4Ø"ð
4ð 
4Ø(.ð
4ð 
4ð 
4ñ
4ð	5ñ6ô 6€Dð
	Ø�Š�fÑÔÐÝ
Œ�”�&œ.Ñ)Ô)Ð)Ø�Š�iÑ Ô Ð Ý
Œ�”�&œ-Ñ(Ô(Ð(Ø×$Ò$­]Ð$Ñ;Ô;‰	ˆ��øðØ�	Š	‰ŒˆØ×$Ò$Ñ&Ô&‰	ˆ�ØøøøÝ	ˆ&�M„M€MØ˜ÐÐÐÐÝ„J�L„L€L€L€Ls   ÁBC& Ã&.DÚQt5Aggc                 ó^  ‡ ‡— 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   )rR   Ú	getsignalrU   ÚQCoreApplicationÚexit)Úevent_loop_handlerr   s   €€r   Úfire_signal_and_quitz6test_fig_sigint_override.<locals>.fire_signal_and_quitÌ   s5   ø€ õ $Ô-­f¬mÑ<Ô<Ðð 	Ô ×%Ò%Ñ'Ô'Ð'Ð'Ð'r   c                 ó   — d S r   rf   )rŒ   r�   s     r   Úcustom_handlerz0test_fig_sigint_override.<locals>.custom_handlerÛ   s   € Øˆr   )Úmatplotlib.backends.backend_qt5rš   r   r   ÚQTimerÚ
singleShotrR   rœ   rU   Ú
matplotlibÚbackendsÚ
backend_qtÚ
_BackendQTÚmainloopÚSIG_DFLÚSIG_IGN)r   rš   r    Úoriginal_handlerr¢   rŸ   s   `    @r   Útest_fig_sigint_overrider®   Â   s¼  øø€ à;Ð;Ð;Ð;Ð;Ð;å„J�L„L€Lð Ðð(ð (ð (ð (ð (ð (ð „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ÝÔ#¥F¤MÑ2Ô2°nÒDÐDÐDÐDÐDð	Eõ 	Œ•f”mÐ%5Ñ6Ô6Ð6Ð6Ð6ø�Œ•f”mÐ%5Ñ6Ô6Ð6Ð6øøøs   Â C)F Æ!F,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_keyr½   Úbackspace_mod)Úidsro   )Úmarksc                 óH  ‡‡
‡‡‡— ddl mŠ
mŠ t          j        dk    rD|�B|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }dŠ ‰
d	¦  «        j        Š|D ]}‰t           ‰
d	¦  «        |¦  «        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   ©Ú_enumÚ_to_intÚdarwinNÚctrlÚcmdrÀ   ÚmetaúQtCore.Qt.KeyboardModifierc                   ó$   •— e Zd Zd„ Zˆ ˆˆfd„ZdS )ú test_correct_key.<locals>._Eventc                 ó   — dS )NFrf   )r:   s    r   ÚisAutoRepeatz-test_correct_key.<locals>._Event.isAutoRepeatB  s   €  u ur   c                 óH   •—  ‰t           ‰d¦  «        ‰¦  «        ¦  «        S )NúQtCore.Qt.Key©rk   )r:   rÌ   rÍ   Úqt_keys    €€€r   Úkeyz$test_correct_key.<locals>._Event.keyC  s&   ø€ ˜g˜g¥g¨e¨e°OÑ.DÔ.DÀfÑ&MÔ&MÑNÔNÐNr   N)rH   rI   rJ   rÖ   rÛ   )rÌ   rÍ   rÚ   s   €€€r   Ú_EventrÔ   A  s/   ø€ € € € € Ø,Ð,Ð,ØNÐNÐNÐNÐNÐNÐNÐNÐNr   rÜ   ÚkeyboardModifiersc                 ó   •— ‰S r   rf   )r:   Úqt_mods    €r   r`   z"test_correct_key.<locals>.<lambda>F  s   ø€  V€ r   c                 ó   •— | j         Šd S r   )rÛ   )ÚeventÚresults    €r   Úon_key_pressz&test_correct_key.<locals>.on_key_pressH  s   ø€ à”ˆˆˆr   Úkey_press_event)rj   rÌ   rÍ   r1   r2   ÚreplaceÚ
NoModifierrk   Úsetattrr
   ÚQApplicationr   r   r   rm   ÚkeyPressEvent)ro   r   rÚ   Úqt_modsÚanswerÚmonkeypatchÚmodrÜ   rã   Ú	qt_canvasrÌ   rÍ   rß   râ   s     `       @@@@r   Útest_correct_keyrï   û   sž  øøøøø€ ðv =Ð<Ð<Ð<Ð<Ð<Ð<Ð<å
„|�xÒÐ FÐ$6Ø—’ ¨Ñ.Ô.ˆØ—’ 	¨5Ñ1Ô1ˆØ—’ ¨Ñ/Ô/ˆØ€FØˆUÐ/Ñ0Ô0Ô;€FØð Dð DˆØ•'˜%˜%Ð <Ñ=Ô=¸sÑCÔCÑCˆˆðOð Oð Oð Oð Oð Oð Oð Oð Oñ Oô Oð Oð ×Ò�	Ô.Ð0CØ+Ð+Ð+Ð+ñ-ô -ð -ðð ð ð ð õ ”
‘”Ô#€IØ×ÒÐ+¨\Ñ:Ô:Ð:Ø×Ò˜F˜F™HœHÑ%Ô%Ð%Ø�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Úprî   Úscreens    €€€r   Úset_device_pixel_ratioz>test_device_pixel_ratio_change.<locals>.set_device_pixel_ratioa  sa   ø€ Ø"ˆAŒNð Ô,×1Ò1°"Ñ5Ô5Ð5à�NŠNÑÔÐØ×"Ò"Ñ$Ô$Ð$ð Ô/°5Ò8Ð8Ð8Ð8Ð8Ð8r   ih  i  iÐ  éX  éð   )r  r  ró   i°  ià  g      ø?é´   i„  N)r   Úpatchrù   r   r   r   rs   r   Úsizer    ÚwindowHandler  rö   ÚrendererÚwidthÚheightÚget_width_heightÚget_size_inchesÚall)Úpropr#   r  r  r   rî   r  s       @@@r   Útest_device_pixel_ratio_changer  R  s„  øøø€ ð M€DÝ	Œ�DÑ	Ô	ð >7˜QØˆŒåŒj ¨SÐ1Ñ1Ô1ˆØ”Jˆ	Ø�ŠÑÔÐð	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	Ô×ÒÑ Ô Ð Ø�~Š~ÑÔˆØ×!Ò!Ñ#Ô#×0Ò0Ñ2Ô2×9Ò9Ñ;Ô;ˆØÐ˜qÑ!Ô!Ð!ð Œw˜#Š~ˆ~ˆ~ˆ~ØÔ!Ô'¨4Ò/Ð/Ð/Ð/ØÔ!Ô(¨CÒ/Ð/Ð/Ð/ð �zŠz‰|Œ|˜sÒ"Ð"Ð"Ð"Ø�{Š{‰}Œ} Ò#Ð#Ð#Ð#Ø×)Ò)Ñ+Ô+¨zÒ9Ð9Ð9Ð9Ø×#Ò#Ñ%Ô%¨Ò/×4Ò4Ñ6Ô6Ð6Ð6Ð6àÐ˜qÑ!Ô!Ð!ð Œw˜#Š~ˆ~ˆ~ˆ~ØÔ!Ô'¨4Ò/Ð/Ð/Ð/ØÔ!Ô(¨CÒ/Ð/Ð/Ð/ð �zŠz‰|Œ|˜sÒ"Ð"Ð"Ð"Ø�{Š{‰}Œ} Ò#Ð#Ð#Ð#Ø×)Ò)Ñ+Ô+¨zÒ9Ð9Ð9Ð9Ø×#Ò#Ñ%Ô%¨Ò/×4Ò4Ñ6Ô6Ð6Ð6Ð6àÐ˜sÑ#Ô#Ð#ð Œw˜#Š~ˆ~ˆ~ˆ~ØÔ!Ô'¨3Ò.Ð.Ð.Ð.ØÔ!Ô(¨CÒ/Ð/Ð/Ð/ð �zŠz‰|Œ|˜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   rf   ©Úobjs    r   r`   z"test_subplottool.<locals>.<lambda>ž  ó   € Àt€ r   )r   Úsubplotsr   r  r   r   ÚtoolbarÚconfigure_subplots©r#   Úaxs     r   Útest_subplottoolr  ›  s¦   € åŒl‰nŒn�G€CˆÝ	ŒÐ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 )Nr@   ró   rñ   )rF   r  c                 ó   — d S r   rf   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‰nŒn�G€CˆØ‡G‚GˆQ�ˆF�O„O€OØ‡I‚I�ˆsˆeÑÔÐØ‡J‚J�u�Q‰xŒx�˜q™œ¥U¨1¡X¤X€JÑ.Ô.Ð.Ý	ŒÐ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                  ó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Údayró   r  c                 ó   — d S r   rf   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‰nŒn�G€Cˆå�d !¨Ð+Ñ+Ô+Ý�d !¨Ð+Ñ+Ô+ð€Fð ‡G‚GˆF�FÑÔÐÝ	ŒÐ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)rñ   ró   z
figure.dpi)r   r  r   rü   r   r    Úset_size_inchesr
  r¦   ÚrcParamsr  )r#   r  r    ÚwÚhÚ	old_widthÚ
old_heights          r   Útest_double_resizer5  ¸  s  € õ Œl‰nŒn�G€CˆØ„J‡O‚OÑÔÐØŒZÔÔ&€Fà�D€A€qØ×Ò˜˜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_qtaggr7  r   r  Ústale_callbackr:  )r7  r<  r#   r  r   r;  s        @r   Útest_canvas_reinitr?  Ì  sp   ø€ àCÐCÐCÐCÐCÐCà€Fðð ð ð ð õ
 Œl‰nŒn�G€CˆØ*€CÔàÐ˜sÑ#Ô#€FØ€C„IØ€M€M€M€M€Mr   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&  rñ   é   r'  z
Date field)Úmatplotlib.backends.backend_qtrA  r   r   r   Ú
FormWidgetÚsetupÚget)rA  ÚformÚwidgetÚvaluess       r   Ú2test_form_widget_get_with_datetime_and_date_fieldsrJ  ß  sÌ   € à;Ð;Ð;Ð;Ð;Ð;Ø€L�N„N€Nð 
�8¨°Q¸BÐ?Ñ?Ô?Ð@Ø	•t ¨Q°BÐ7Ñ7Ô7Ð8ð€Dõ Ô# DÑ)Ô)€FØ
‡L‚L�N„N€NØ�ZŠZ‰\Œ\€FØÝ�d !¨Ð,Ñ,Ô,Ý�$˜a RÐ(Ñ(Ô(ðò ð ð ð ð ð r   c                  óô  ‡‡	— dd l } ddlmŠmŠ	 ddlm}m}  ‰d¦  «        j          ‰d¦  «        j          ‰d¦  «        j	          ‰d¦  «        j
         dD ]}t           ‰d¦  «        |¦  «         Œ ‰d¦  «        j          ‰d¦  «        j         ˆˆ	fd„g d	‘d
‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d‘d| j        dk    rdndf‘d | j        dk    rd!ndf‘d"‘d#‘d$‘d%‘d&‘d'‘d(‘d)‘d*‘d+‘d,‘d-‘d.‘d/‘d0‘d1‘R D ¦   «         }ˆˆ	fd2„d3D ¦   «         }ˆfd4„|j        d5f|j        d6f|j        d7f|j        d8f|j        d9ffD ¦   «         }ˆfd:„d;|j        fd<|j        fd=|j        fd>|j        fd?|j        ffD ¦   «         } ‰d@¦  «        j          ‰dA¦  «        j          ‰dB¦  «        j          ‰dB¦  «        j          ‰dC¦  «        j          ‰dC¦  «        j          ‰dD¦  «        j          ‰dD¦  «        j          ‰dE¦  «        j          ‰dB¦  «        j          ‰dB¦  «        j          ‰dC¦  «        j          ‰dC¦  «        j          ‰dD¦  «        j          ‰dD¦  «        j         d S )FNr   rË   )ÚcursorsÚMouseButtonzQtGui.QDoubleValidator.Statez)QtWidgets.QDialogButtonBox.StandardButton)ÚOkÚCancelzQtGui.QImage.Formatc           	      ó\   •— i | ](\  }} ‰t           ‰d ¦  «        |¦  «        ¦  «        |“Œ)S )rØ   rÙ   )Ú.0ÚkÚvrÌ   rÍ   s      €€r   ú
<dictcomp>z$_test_enums_impl.<locals>.<dictcomp>  sM   ø€ ð *ð *ð *áˆAˆqð 	ˆ•˜˜˜oÑ.Ô.°Ñ2Ô2Ñ3Ô3°Qð*ð *ð *r   )Ú
Key_EscapeÚescape)ÚKey_TabÚtab)r¼   r½   )Ú
Key_ReturnÚenter)Ú	Key_EnterrZ  )Ú
Key_InsertÚinsert)Ú
Key_DeleteÚdelete)Ú	Key_Pauseru   )Ú
Key_SysReqÚsysreq)Ú	Key_ClearÚclear)ÚKey_HomeÚhome)ÚKey_EndÚend)ÚKey_LeftÚleft)ÚKey_UpÚup)Ú	Key_RightÚright)ÚKey_DownÚdown)Ú
Key_PageUpÚpageup)ÚKey_PageDownÚpagedown)Ú	Key_Shiftr¾   r·   rÎ   rÀ   rÐ   ÚKey_MetarÑ   )r¹   Úalt)ÚKey_CapsLockÚ	caps_lock)ÚKey_F1Úf1)ÚKey_F2Úf2)ÚKey_F3Úf3)ÚKey_F4Úf4)ÚKey_F5Úf5)ÚKey_F6Úf6)ÚKey_F7Úf7)ÚKey_F8Úf8)ÚKey_F9Úf9)ÚKey_F10Úf10)rŒ  Úf11)ÚKey_F12Úf12)ÚKey_Super_Lr5   )ÚKey_Super_Rr5   c           
      óž   •— g | ]I\  }} ‰t           ‰d ¦  «        |¦  «        ¦  «         ‰t           ‰d¦  «        |¦  «        ¦  «        f‘ŒJS )rÒ   rØ   rÙ   )rQ  rí   rÛ   rÌ   rÍ   s      €€r   ú
<listcomp>z$_test_enums_impl.<locals>.<listcomp>3  st   ø€ ð ð ð ñ
 ˆC�ð ˆG•G˜E˜EÐ">Ñ?Ô?ÀÑEÔEÑFÔFØˆG•G˜E˜E /Ñ2Ô2°CÑ8Ô8Ñ9Ô9ð	
ðð ð r   ))r³   r·   )r¸   r¹   )r°   ru  )rº   rv  c                 óJ   •— i | ]\  }}|t           ‰d ¦  «        |¦  «        “Œ S )zQtCore.Qt.CursorShaperÙ   ©rQ  rR  rS  rÌ   s      €r   rT  z$_test_enums_impl.<locals>.<dictcomp>?  sD   ø€ ð 	ð 	ð 	áˆAˆqð 	
�7�5�5Ð0Ñ1Ô1°1Ñ5Ô5ð	ð 	ð 	r   ÚSizeAllCursorÚPointingHandCursorÚArrowCursorÚCrossCursorÚ
WaitCursorc                 óJ   •— i | ]\  }}t           ‰d ¦  «        |¦  «        |“Œ S )zQtCore.Qt.MouseButtonrÙ   r–  s      €r   rT  z$_test_enums_impl.<locals>.<dictcomp>J  sD   ø€ ð 	ð 	ð 	áˆAˆqõ 	��Ð-Ñ.Ô.°Ñ2Ô2°Að	ð 	ð 	r   Ú
LeftButtonÚRightButtonÚMiddleButtonÚXButton1ÚXButton2zQtCore.Qt.WidgetAttributezQtCore.Qt.FocusPolicyzQtCore.Qt.ToolBarAreazQtCore.Qt.AlignmentFlagzQtWidgets.QSizePolicy.PolicyzQtCore.Qt.MaskMode) r1   rj   rÌ   rÍ   Úmatplotlib.backend_basesrL  rM  Ú
AcceptablerN  rO  ÚApplyrk   ÚFormat_ARGB32_Premultipliedr2   ÚMOVEÚHANDÚPOINTERÚSELECT_REGIONÚWAITÚLEFTÚRIGHTÚMIDDLEÚBACKÚFORWARDÚWA_OpaquePaintEventÚStrongFocusÚTopToolBarAreaÚ
AlignRightÚAlignVCenterÚ	ExpandingÚIgnoredÚMaskOutColor)
r1   rL  rM  Úbtn_typeÚSPECIAL_KEYSÚ_MODIFIER_KEYSÚcursordÚbuttondrÌ   rÍ   s
           @@r   Ú_test_enums_implr½  ó  så  øø€ Ø€J€J€Jà<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ø=Ð=Ð=Ð=Ð=Ð=Ð=Ð=à	€EÐ
(Ñ)Ô)Ô4Ð4à	€EÐ
5Ñ6Ô6Ô9Ð9Ø	€EÐ
5Ñ6Ô6Ô=Ð=Ø	€EÐ
5Ñ6Ô6Ô<Ð<Ø$ð Nð NˆÝ��ÐAÑBÔBÀHÑMÔMÐMÐMà	€EÐ
Ñ Ô Ô<Ð<Ø	€EÐ
Ñ Ô Ô<Ð<ð*ð *ð *ð *ð *ð'
Ø$ð'
àð'
ð +ð'
ð $ð	'
ð
 #ð'
ð %ð'
ð %ð'
ð #ð'
ð %ð'
ð #ð'
ð !ð'
ð ð'
ð !ð'
ð ð'
ð #ð'
ð  !ð!'
ð" %ð#'
ð$ )ð%'
ð& #ð''
ð* ¨¬¸Ò)AÐ)A˜I˜IÀuÐMð+'
ð,  3¤<°8Ò#;Ð#;˜˜ÀÐKð-'
ð. ð/'
ð0 *ð1'
ð2 ð3'
ð4 ð5'
ð6 ð7'
ð8 ð9'
ð: ð;'
ð< ð='
ð> ð?'
ð@ ðA'
ðB ðC'
ðD ðE'
ðF ðG'
ðH ðI'
ðJ %ðK'
ðL %ðM'
ð '
ð*ñ *ô *€Lð\ð ð ð ð ð

ðñ ô €Nð	ð 	ð 	ð 	ð Œ\˜?Ð+ØŒ\Ð/Ð0ØŒ_˜mÐ,ØÔ" MÐ2ØŒ\˜<Ð(ð
ð	ñ 	ô 	€Gð	ð 	ð 	ð 	ð ˜;Ô+Ð,Ø˜KÔ-Ð.Ø˜[Ô/Ð0Ø˜Ô)Ð*Ø˜Ô,Ð-ð
ð	ñ 	ô 	€Gð 
€EÐ
%Ñ&Ô&Ô:Ð:Ø	€EÐ
!Ñ"Ô"Ô.Ð.Ø	€EÐ
!Ñ"Ô"Ô1Ð1Ø	€EÐ
!Ñ"Ô"Ô1Ð1Ø	€EÐ
#Ñ$Ô$Ô/Ð/Ø	€EÐ
#Ñ$Ô$Ô1Ð1Ø	€EÐ
(Ñ)Ô)Ô3Ð3Ø	€EÐ
(Ñ)Ô)Ô1Ð1Ø	€EÐ
ÑÔÔ,Ð,Ø	€EÐ
!Ñ"Ô"Ô1Ð1Ø	€EÐ
!Ñ"Ô"Ô1Ð1Ø	€EÐ
#Ñ$Ô$Ô/Ð/Ø	€EÐ
#Ñ$Ô$Ô1Ð1Ø	€EÐ
(Ñ)Ô)Ô3Ð3Ø	€EÐ
(Ñ)Ô)Ô1Ð1Ð1Ð1r   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)r,   ÚQT_APIrf   )rQ  Úqt_apis     r   r”  z-_get_testable_qt_backends.<locals>.<listcomp>h  s7   € ð ð ð àð ˆX g¸Ð@Ð@ÐAðð ð r   )ÚPyQt6ÚPySide6ÚPyQt5ÚPySide2c                 óP   — g | ]#}t           j                             |¦  «        °!|‘Œ$S rf   )Ú	importlibÚutilÚ	find_spec)rQ  Údeps     r   r”  z-_get_testable_qt_backends.<locals>.<listcomp>m  s-   € ÐLÐLÐL˜3­i¬n×.FÒ.FÀsÑ.KÔ.KÐL�3ÐLÐLÐLr   Úlinuxz'$DISPLAY and $WAYLAND_DISPLAY are unsetz{} cannot be importedrz   r,   ÚmacosxÚTF_BUILDzmacosx backend fails on Azurez	Skipping z	 because r“   )rÉ   Úid)r1   r2   r   Údisplay_is_validÚformatÚjoinr7   r8   rF  Úappendr   ÚmarkÚskipÚparamÚstr)ÚenvsÚdepsr.   r”   ÚmissingrÉ   s         r   Ú_get_testable_qt_backendsrÛ  f  sE  € Ø€Dðð àBðñ ô ð Añ A‰	ˆˆcð ˆØLÐL $ÐLÑLÔLˆÝŒL˜GÒ#Ð#Ý%Ô6Ñ8Ô8ð $à>ˆFˆFØð 	5Ø,×3Ò3°D·I²I¸gÑ4FÔ4FÑGÔGˆFˆFØ�Ô (Ò*Ð*­r¬z¯~ª~¸jÑ/IÔ/IÐ*Ø4ˆFØˆØð 	<Ø�LŠL�œ×)Ò)Ø9 3Ð9Ð9°Ð9Ð9ð *ñ ;ô ;ñ <ô <ð <à�Š•F”L ¨Eµc¸#±h´hÐ?Ñ?Ô?Ñ@Ô@Ð@Ñ@Ø€Kr   r.   c                 óÊ   — t          j        t          j        dt	          j        t          ¦  «        dz   gi t          j        ¥ddi¥| ¥t          dt           j
        d¬¦  «        }d S )Nry   z
_test_enums_impl()r-   r+   T)r.   r}   Úcheckr/   r0   )r3   Úrunr1   r   r€   r�   r½  r7   r8   rƒ   r9   )r.   r…   s     r   Útest_enums_availablerß  }  sd   € åŒ>Ý	Œ˜Ý	Ô	Õ+Ñ	,Ô	,Ð/EÑ	Eð	Gà;�rŒzÐ;Ð.°Ð;Ð;°sÐ;Ý TÝŒ°4ð9ñ 9ô 9€D€D€Dr   )6r   rÈ  r€   r7   rR   r3   r1   r   r   Úunittestr   r   r¦   r   r   Úmatplotlib._pylab_helpersr   r   rj   r	   r
   Úmatplotlib.backends.qt_editorr   ÚImportErrorrÔ  rÕ  Ú
pytestmarkrƒ   Úfixturer   ro   r$   ÚPopenr&   rr   Úparametrizer‡   r’   Úskipifr2   r—   r®   rÖ  rï   r  r  r$  r-  r5  r?  rJ  r½  rÛ  rß  rf   r   r   ú<module>ré     sH  ðØ €€€Ø Ð Ð Ð Ø €€€Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø 
€
€
€
à #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð à €€€à Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø )Ð )Ð )Ð )Ð )Ð )Ø (Ð (Ð (Ð (Ð (Ð (ð;Ø>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ø9Ð9Ð9Ð9Ð9Ð9Ð9øØð ;ð ;ð ;Ø”×!Ò!Ð"9Ñ:Ô:€J€J€Jð;øøøð €ð „ðð ñ „ðð „×Ò�W°$ÐÑ7Ô7ð!ð !ñ 8Ô7ð!ð"ð ð ð ð ˜Ô)ñ ô ð ð6%ð %ð %ðD „×Ò�W°$ÐÑ7Ô7Ø„×ÒÐ)Øˆg�tˆ_ÐØˆz˜2ÐÐð,ñ ô ðð ñ	ô ñ 8Ô7ð
ð"%ð %ð %ð4 „×Ò�C”L GÒ+ØIð ñ Kô Kà„×Ò�W°$ÐÑ7Ô7Ø„×ÒÐ)Øˆg�tˆ_ÐØˆz˜2ÐÐð,ñ ô ðð ñ	ô ñ 8Ô7ñKô Kðð, „×Ò�X°4ÐÑ8Ô8ð57ð 57ñ 9Ô8ð57ðp „×ÒØà	�?Ð# SÐ)Ø	�"�cÐØ	Ð$Ð%¨Ð2àØÐØ3ð	
ð
 
�rÐ@ÐAØ	˜˜¨-Ð9Ø	Ð&Ð'¨Ð4àØ>Ð>Ð>Ø@ð	
ð 
�R˜ÐØ	˜"˜kÐ*àØÐØð	
ð+ð6	ð 	ð 	ð; ñ *ô *ðV „×Ò˜à€F„LØØŒk×!Ò! (ÀÐ!ÑEÔEðGñ Gô Gð €F„LØØŒk×!Ò! '¸tÐ!ÑDÔDðFñ Fô Fð%ñ ô ð ð  ñô ñW*ô *ðh ðF „×Ò�W°$ÐÑ7Ô7ðE7ð E7ñ 8Ô7ðE7ðP „×Ò�W°$ÐÑ7Ô7ð8ð 8ñ 8Ô7ð8ð „×Ò�W°$ÐÑ7Ô7ð5ð 5ñ 8Ô7ð5ð „×Ò�W°$ÐÑ7Ô7ð5ð 5ñ 8Ô7ð5ð „×Ò�W°$ÐÑ7Ô7ð)ð )ñ 8Ô7ð)ð& „×Ò�W°$ÐÑ7Ô7ðð ñ 8Ô7ðð$ „×Ò�X°4ÐÑ8Ô8ðð ñ 9Ô8ðð&p2ð p2ð p2ðfð ð ð. „×Ò˜Ð 9Ð 9Ñ ;Ô ;Ñ<Ô<ð9ð 9ñ =Ô<ð9ð 9ð 9s   ÁA ÁA7Á6A7