a
    <+bd                     @   s   d Z ddlmZ ddlZddlZddlZddlmZm	Z	m
Z
mZ ddlmZ d aadd Zd	d
 Zdd Zejdg ddd ZdS )zTest async/await integration    )LooseVersionN   )executeflush_channelsstart_new_kernelTIMEOUT)validate_messagec                   C   s   t  \aatt dS )zCstart the global kernel (if it isn't running) and return its clientN)r   KMKCr    r   r   9lib/python3.9/site-packages/ipykernel/tests/test_async.pysetup_function   s    
r   c                   C   s   t   tjdd d S )NT)Znow)r
   Zstop_channelsr	   Zshutdown_kernelr   r   r   r   teardown_function   s    r   c                  C   s.   t t tdt\} }|d dks*J |d S )Nz(import asyncio; await asyncio.sleep(0.1)statusok)r   r
   r   )msg_idcontentr   r   r   test_async_await   s    r   asynclib)ZasyncioZtrioZcurioc                 C   s>  zt |  W n  ty,   td|   Y n0 |dd  tt td|  t\}}|d dksjJ |tt td|  d|  d	}tjt	d
}t
|d| |d d dksJ tjt	d
}t
|d tjt	d
}t
|d |d d dksJ t  t d }|d dks J ||d dv s2J tt d S )NzRequires %sc                   S   s
   t dtS )Nz%autoawait asyncio)r   r
   r   r   r   r   <lambda>*       z&test_async_interrupt.<locals>.<lambda>z%autoawait r   r   zprint('begin'); import z; await z	.sleep(5))Ztimeoutr   Zexecution_statebusyZexecute_inputstreamtextzbegin
errorZename>   ZCancelledErrorKeyboardInterrupt)
__import__ImportErrorpytestskipZaddfinalizerr   r
   r   Zget_iopub_msgr   r   r	   Zinterrupt_kernelZget_shell_msg)r   Zrequestr   r   r   Zechor   Zreplyr   r   r   test_async_interrupt$   s2    

r    )__doc__Zdistutils.versionr   Vsysr   ZIPythonZutilsr   r   r   r   Ztest_message_specr   r
   r	   r   r   r   ZmarkZparametrizer    r   r   r   r   <module>   s   