U
    /e                     @   sr  d 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dl	m
Z
mZ ddlmZ ejdkrpejd	d
d G dd dZe
ddddZdd ZeddddZdd Zdd Zdd Zdd Zdd Zdd  Zeddd!d"Zeddd#d$Zd%d& Zd'd( Ze
ddd)d*Ze
ddd+d,Ze
ddd-d.Z e
ddd/d0Z!d1d2 Z"e
ddd3d4Z#e
ddd5d6Z$dS )7zTest IPythonKernel directly    N)DummyDB)BaseComm)IPythonKernel_create_comm   )MockIPyKernelntzskipping tests on windowsT)Zallow_module_levelc                   @   s   e Zd Zi ZdS )user_modN)__name__
__module____qualname____dict__ r   r   H/tmp/pip-unpacked-wheel-g43y689f/ipykernel/tests/test_ipkernel_direct.pyr	      s   r	   )ipkernelreturnc                    s   t  | _i | _d S N)r	   Zuser_moduleZuser_nsr   r   r   r   test_properties   s    r   c                    s*   |  di I d H }|d d dks&td S )NZkernel_info_requestheadermsg_typeZkernel_info_replytest_shell_messageAssertionErrorr   replyr   r   r   test_direct_kernel_info_request   s    r   c                    s   |  dtdddI d H }|d d dks.t|  dtdddI d H }|d	 d
 dks\t|  dtdddI d H }|d d dkstd S )Nexecute_requesthelloFcodeZsilentr   r   execute_replyZtrigger_errorcontentstatusabortedr   dictr   r   r   r   r   test_direct_execute_request!   s     

r'   c                    sL   d| _ | dtdddI d H }|d d dks4t|d	 d
 dksHtd S )NTr   r   Fr   r   r   r!   r"   r#   r$   )Z	_abortingr   r&   r   r   r   r   r   $test_direct_execute_request_aborting-   s    r(   c                    sf   |  dtdddI d H }|d d dks.td| _|  dtdd dI d H }|d d dksbtd S )	NZcomplete_requestr   r   r    Z
cursor_posr   r   Zcomplete_replyF)r   r&   r   Zuse_experimental_completionsr   r   r   r   test_complete_request4   s     

r*   c                    s2   |  dtdddI d H }|d d dks.td S )NZinspect_requestr   r   r)   r   r   Zinspect_replyr%   r   r   r   r   test_inspect_request>   s    r+   c                    s   t  | jj_| dtddddI d H }|d d dks<t| dtddddI d H }|d d dkslt| dtddddI d H }|d d dkst| dtd	dddI d H }|d d dkstd S )
NZhistory_request )Zhist_access_typeoutputrawr   r   Zhistory_replytailrangesearch)r   shellZhistory_managerdbr   r&   r   r   r   r   r   test_history_requestC   s*     
 
 
 
r4   c                    s(   |  dI d H }|d d dks$td S )NZcomm_info_requestr   r   Zcomm_info_replyr   r   r   r   r   test_comm_info_requestW   s    r5   c                    s   |  di I d H }|d d dks&t|d ddiks:tdd	 }|| _|  di I d H }|d d dksnt|d d d
kst|d d dkst|d d dkstt|d d dkstd S )NZinterrupt_requestr   r   Zinterrupt_replyr"   r#   okc                   S   s   t dd S )Nevalue)OSErrorr   r   r   r   raiseOSErrorb   s    z3test_direct_interrupt_request.<locals>.raiseOSErrorerrorenamer8   r7   	tracebackr   )test_control_messager   Z_send_interrupt_childrenlen)r   r   r9   r   r   r   test_direct_interrupt_request\   s    r?   c                    sh   |  dtddI d H }|d d dks,tt| dd  |  dtddI d H }|d d dksdtd S )NZis_complete_requestr   )r    r   r   Zis_complete_replyzshell.input_transformer_manager)r   r&   r   setattrr   r   r   r   test_is_complete_request{   s
    rA   c                 C   sD   ddl m} dd }||di }| d |di  | d g di  d S )Nr   )pack_apply_messagec                   S   s   d S r   r   r   r   r   r   r      s    ztest_do_apply.<locals>.hellor   1)ZipyparallelrB   Zdo_apply)r   rB   r   msgr   r   r   test_do_apply   s
    rE   c                    s*   |  di I d H }|d d dks&td S )Ndebug_requestr   r   Zdebug_reply)r=   r   r   r   r   r   test_direct_debug_request   s    rG   c                    s   |    d S r   )Zdo_clearr   r   r   r   test_direct_clear   s    rH   c              	      s,   t  }| | W 5 Q R X |d  d S r   )asyncioFutureZ_cancel_on_sigint
set_result)r   futurer   r   r   test_cancel_on_sigint   s    
rM   c                 C   s2   | j di }| j |}| dd |D  d S )NrF   c                 S   s   g | ]}t |qS r   )zmqMessage).0mr   r   r   
<listcomp>   s     z)test_dispatch_debugpy.<locals>.<listcomp>)sessionrD   	serializeZdispatch_debugpyr   rD   Zmsg_listr   r   r   test_dispatch_debugpy   s    rV   c                    sr   t  t   fdd} fdd}|| _|| _|   d | _|   | dI d H  I d H   I d H  d S )Nc                      s     d  d S r   rK   r   shell_futurer   r   fake_dispatch_queue   s    z'test_start.<locals>.fake_dispatch_queuec                      s     d  d S r   rW   r   control_futurer   r   fake_poll_control_queue   s    z+test_start.<locals>.fake_poll_control_queueF)rI   rJ   dispatch_queuepoll_control_queuestartdebugpy_streamZprocess_oner   rZ   r]   r   r\   rY   r   
test_start   s    
rd   c                    sZ   t  t   fdd} fdd}|| _|| _d | _|   I d H   I d H  d S )Nc                      s     d  d S r   rW   r   rX   r   r   rZ      s    z2test_start_no_debugpy.<locals>.fake_dispatch_queuec                      s     d  d S r   rW   r   r[   r   r   r]      s    z6test_start_no_debugpy.<locals>.fake_poll_control_queue)rI   rJ   r^   r_   ra   r`   rb   r   rc   r   test_start_no_debugpy   s    
re   c                   C   s   t t tstd S r   )
isinstancer   r   r   r   r   r   r   test_create_comm   s    rg   c                 C   s.   t ddd}| i i |}|d dks*td S )Nr:   ZUnmetDependency)r#   r;   Zdependencies_metF)r&   Zfinish_metadatar   )r   Zreply_contentmetadatar   r   r   test_finish_metadata   s    ri   c                    s.   | j di }| j |}| |I d H  d S )NrF   )rS   rD   rT   Zdo_debug_requestrU   r   r   r   test_do_debug_request   s    rj   )%__doc__rI   osZpytestrN   ZIPython.core.historyr   Zipykernel.comm.commr   Zipykernel.ipkernelr   r   Zconftestr   nameskipr	   r   r   r'   r(   r*   r+   r4   r5   r?   rA   rE   rG   rH   rM   rV   rd   re   rg   ri   rj   r   r   r   r   <module>   s>   

