B
    U[                  @   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ejjejdk peejedk ddZedd Zejddddge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.7/site-packages/ipykernel/tests/test_async.pysetup   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   s    r   )      z7.0z%IPython >=7 with async/await required)reasonc              C   s.   t t tdt\} }|d dks*t|d S )Nz(import asyncio; await asyncio.sleep(0.1)statusok)r   r
   r   AssertionError)msg_idcontentr   r   r   test_async_await#   s    r   asynclibZasyncioZtrioZcurioc             C   s8  yt |  W n" tk
r.   td|   Y nX |dd  tt td|  t\}}|d dkslt|tt td	| }tj
td}t|d| |d	 d
 dksttj
td}t|d tj
td}t|d |d	 d dkstt  t d	 }|d dkst||d dks,ttt d S )NzRequires %sc               S   s
   t dtS )Nz%autoawait asyncio)r   r
   r   r   r   r   <lambda>1   s    z&test_async_interrupt.<locals>.<lambda>z%autoawait r   r   z.print('begin'); import {0}; await {0}.sleep(5))Ztimeoutr   Zexecution_statebusyZexecute_inputstreamtextzbegin
errorZename>   CancelledErrorKeyboardInterrupt)
__import__ImportErrorpytestskipZaddfinalizerr   r
   r   r   formatZ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*   s0    

r%   )__doc__Zdistutils.versionr   Vsysr"   ZIPythonZutilsr   r   r   r   Ztest_message_specr   r
   r	   r   r   ZmarkZskipifversion_info__version__Zskip_without_asyncr   Zparametrizer%   r   r   r   r   <module>   s   