o
    li                      @   s4  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 d dl	m
Z
 dZd!ddZeddd	d
 Zedddd Zejje dkddejjddedddd Zejjdddejjdded ddd Zedddd Zejjdddedddd Zedddd  ZdS )"    N)_c_internal_utils)subprocess_run_helper<   c                    s    du r
t tS dtjv r S tjjtj	
d ddtjjtjdko)t  ddtjjdtjv s9d	tjv oFtjd
koFtjdd dk ddt   fdd}|S )z
    A decorator to run *func* in a subprocess and assert that it prints
    "success" *success_count* times and nothing on stderr.

    TkAgg tests seem to have interactions between tests, so isolate each test
    in a subprocess. See GH#18261
    NMPL_TEST_ESCAPE_HATCHtkinterzmissing tkinterreasonlinuxz'$DISPLAY and $WAYLAND_DISPLAY are unsetTF_BUILDGITHUB_ACTIONdarwin   )      z%Tk version mismatch on Azure macOS CIc               
      s   t d ztttdddd} W n- tjy"   t d Y d S  tjy? } zt dt	|j
  W Y d }~d S d }~ww g d  fd	d
| j
 D rRJ | jdks\J d S )Nr   TkAgg1)
MPLBACKENDr   )timeout	extra_envzSubprocess timed outz,Subprocess failed to test intended behavior
)OpenGLz!CFMessagePort: bootstrap_registerz%/usr/include/servers/bootstrap_defs.hc                    s&   g | ] t  fd dD r qS )c                 3   s    | ]}| vV  qd S N ).0msgliner   ^/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/matplotlib/tests/test_backend_tk.py	<genexpr>E   s    zB_isolated_tk_test.<locals>.test_func.<locals>.<listcomp>.<genexpr>)all)r   ignored_linesr   r   
<listcomp>D   s    
z8_isolated_tk_test.<locals>.test_func.<locals>.<listcomp>success)pytestimportorskipr   _test_timeoutdict
subprocessTimeoutExpiredfailCalledProcessErrorstrstderr
splitlinesstdoutcount)procefuncsuccess_countr   r   	test_func!   s$   

	z$_isolated_tk_test.<locals>.test_func)	functoolspartial_isolated_tk_testosenvironr#   markskipif	importlibutil	find_specsysplatformr   display_is_validxfailversion_infowraps)r4   r3   r5   r   r2   r   r8      s,   	
r8      )r4   c               	   C   s   dd l m}  dd l}dd l}ddlm} |  \}}|jj}|	d}|j
d d \}}	||	|jjf}
d}|D ] }z||j t||
dd| W q7 tyW   td Y q7w d S )Nr   )_tkagg)   rH   rH   r   ))r   r   r   )r   r   r   r   )   rF   r   r   )r   r   rI   r   )r   r   r   r   )r   r   rJ   rF   )r   rJ   r   r   r"   )matplotlib.pyplotpyplotnumpy!matplotlib.backends.backend_tkaggmatplotlib.backendsrG   subplotscanvas_tkphotoonesshapectypesdatablittk
interpaddrr+   
ValueErrorprint)pltnp
matplotlibrG   figax
photoimagerV   heightwidthdataptr	bad_boxesbad_boxr   r   r   	test_blitK   s(   
rg   rJ   c                     sf   dd l } dd lm g  fdd}fdd |  d|   r1td d S d S )Nr   c                      s4      ddgddg   d  d S )NrJ   r   r      r   )figureplotcloseafterr   )legitimate_quitr\   rootr   r   do_plotm   s   z;test_figuremanager_preserves_host_mainloop.<locals>.do_plotc                      s       d d S NT)quitappendr   )rn   r"   r   r   rm   s   s   zCtest_figuremanager_preserves_host_mainloop.<locals>.legitimate_quitr"   )r   rK   rL   Tkrl   mainloopr[   )r   ro   r   )rm   r\   rn   r"   r   *test_figuremanager_preserves_host_mainloopg   s   ru   CPythonzZPyPy does not support Tkinter threading: https://foss.heptapod.net/pypy/pypy/-/issues/1929r   r   )rerunsc                     s   dd l } dd ldd lm dd l}ddlm  |  }g dg d  fdd}|	 |j
|dd}|  jdd	   |  d S )
Nr   )"_get_running_interactive_frameworkrJ   r   r   )rJ   r   rh   c                      s>   d  ks d d  kr   rtd d S d S )NrX   g{Gz?r"   )sleeprk   waitr[   r   rx   r\   show_finished_eventtimer   r   target   s   


z6test_figuremanager_cleans_own_mainloop.<locals>.targetT)r   daemonblock)r   r~   rK   rL   	threadingmatplotlib.cbookrx   rs   rj   EventThreadstartshowsetjoin)r   r   rn   r   threadr   r|   r   &test_figuremanager_cleans_own_mainloop   s   r   r   T)skip_on_importerrorc                  C   sn   dd l } | j`| j`dd lm} | }|jdd |  |j	j
  |j	 d|j| |jdd d S )Nr   Fr   d   T)r   Miscupdateupdate_idletasksrK   rL   ri   r   drawrQ   toolbarconfigure_subplotsget_tk_widgetrl   rk   )r   r\   r_   r   r   r   test_never_update   s   r   r   c                     sZ   dd l m}  ddlm  G  fddd }|  }td ||j|jjj td d S )Nr   NavigationToolbar2Tkc                       s   e Zd Zdd  jD ZdS )z)test_missing_back_button.<locals>.Toolbarc                 S   s   g | ]
}|d  dv r|qS )r   )HomePanZoomr   )r   tr   r   r   r!      s    z4test_missing_back_button.<locals>.Toolbar.<listcomp>N)__name__
__module____qualname__	toolitemsr   r   r   r   Toolbar   s    r   r"   )	rK   rL   rN   r   ri   r[   rQ   managerwindow)r\   r   r_   r   r   r   test_missing_back_button   s   r   c                     s~   dd l } dd lm g  fdd}|    g d dj d|   r=t	d d S d S )Nr   c                     sD    j  } |  s|   |  | krd     d S rp   )rQ   r   winfo_viewablewait_visibilityfocus_lastforrr   rk   destroy)tkcanvasr_   r\   rn   r"   r   r   check_focus   s   

z&test_canvas_focus.<locals>.check_focusry   r   r"   )
r   rK   rL   rs   ri   rj   rl   r   rt   r[   )rX   r   r   r   r   test_canvas_focus   s   r   c                     s~   dd l } ddlmm ddlm ddlm  |  } fdd}|| t	d |j
dd	d
d || t	d d S )Nr   )FigureCanvasTkAggr   )key_press_handler)Figurec                    s     }|  }|g d || d}|  |d | jddd || dd}|jdd	d |   |  d S )
Nry   )masterkey_press_eventTboth)expandfillF)pack_toolbarx)add_subplotrj   r   mpl_connectr   packforget)r   r_   r`   rQ   r   r   r   r   r   r   r   test_figure   s   z#test_embedding.<locals>.test_figurer"   zsky bluezmidnight bluewhite)
backgroundselectColor
foreground)r   rN   r   r   matplotlib.backend_basesr   matplotlib.figurer   rs   r[   tk_setPalette)rX   rn   r   r   r   r   test_embedding   s   r   r   )r6   r=   r9   rA   r'   r@   r#   r^   r   matplotlib.testingr   r%   r8   rg   ru   r;   r<   python_implementationflakyr   backendr   r   r   r   r   r   r   r   <module>   s@    
:


