
    NeyU                     R   d 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dl
m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 d
dlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddl!m"Z" ddl!m#Z# dZ$d Z% G d de      Z& G d de      Z'y)z2Tests for the notebook kernel and session manager.    N)ensure_future)PIPE)TestCase)paths)AsyncTestCase)gen_test)Config   )	localhost   )AsyncKMSubclass)AsyncMKMSubclass)install_kernel)
skip_win32)SyncKMSubclass)SyncMKMSubclass)test_env)AsyncKernelManager)KernelManager)AsyncMultiKernelManager)MultiKernelManager   c                 P   K   t        j                  |        d{   \  }|S 7 w)zgUse this function ensure that this awaitable
    happens before other awaitables defined after it.
    N)asynciogather)	awaitableouts     N/usr/lib/python3/dist-packages/jupyter_client/tests/test_multikernelmanager.pynowr   !   s%      >>),,FSJ -s   &$	&c                       e Zd Z fdZd fdZed        Zed        Zed        Zedd       Z	d Z
ed        Zd	 Zd
 Zd Zed        Zed        Zd Zed        Zd Zd Zej0                  j3                  ej6                  dk(  xr  ej8                  dk\  xr ej8                  dk  d      d        Zd Z xZS )TestKernelManagerc                 t    t               | _        | j                  j                          t        |           y Nr   	env_patchstartsupersetUpself	__class__s    r   r(   zTestKernelManager.setUp*   %    !    c                 T    | j                   j                          t        |          S r#   r%   stopr'   tearDownr)   s    r   r1   zTestKernelManager.tearDown/   !    w!!r-   c                  2    t               } t        |       }|S Nconfig)r	   r   ckms     r   _get_tcp_kmzTestKernelManager._get_tcp_km4   s    Hq)	r-   c                  2    t               } t        |       }|S r4   )r	   r   r7   s     r   _get_tcp_km_subz!TestKernelManager._get_tcp_km_sub:   s    HA&	r-   c                  v    t               } d| j                  _        d| j                  _        t	        |       }|S Nipctestr5   )r	   r   	transportipr   r7   s     r   _get_ipc_kmzTestKernelManager._get_ipc_kmA   s0    H$)!#q)	r-   c                    |r#| j                  t        t        |      }||k(  sJ | j                  t        t              }| j                  |      sJ | j                  |      j                  j                         sJ || v sJ || j                         v sJ t        |       dk(  sJ t        |        dd        | j                  |d       | j                  |      sJ || j                         v sJ | j                  |       | j                  |      }|j                         }t        |t              sJ | j                  |d       || vsJ | d|         |j                          y N)stdoutstderr	kernel_idrF   rG   r    != Tr    not in )start_kernelr   is_alive
get_kernelreadydonelist_kernel_idslenrestart_kernelinterrupt_kernelclient
isinstancer   shutdown_kernelstop_channels)r9   test_kidkidkkcs        r   _run_lifecyclez TestKernelManager._run_lifecycleJ   s_   //dh/OC(?"?//d/;C{{3}}S!'',,...byyb((****2w!|0ByQC00|
#4({{3b((****
C MM#XXZ!]+++
3D)"}2XbT22}
r-   c                 V   |j                  t        t              }|j                  |       |j                  |      }| j	                  ||d          | j	                  ||d          | j                  d|v        | j                  d|v        |j                  |      }|j                          | j                  d|v        |j                  |      }|j                          | j                  d|v        |j                  |      }|j                          |j                  |d	       y 
NrI   rA   rB   
stdin_port
iopub_port
shell_porthb_portTrK   )rM   r   rO   get_connection_infoassertEqual
assertTrueconnect_iopubcloseconnect_shell
connect_hbrX   r*   r9   rA   rB   r[   cinfostreams          r   
_run_cinfozTestKernelManager._run_cinfoa   s    ooT$o7
c&&s+E+$67U4[)-.-.!!#&-.!!#&	U*+s#
3D)r-   c                 F    | j                         }| j                  |       y r#   r:   r^   )clsr9   s     r   test_tcp_lifecyclez$TestKernelManager.test_tcp_lifecyclet   s    __2r-   c                     | j                         }| j                  |t        t        j                                      y N)rZ   )r:   r^   struuiduuid4r*   r9   s     r   !test_tcp_lifecycle_with_kernel_idz3TestKernelManager.test_tcp_lifecycle_with_kernel_idy   s.    BTZZ\):;r-   c                     | j                         }|j                  t        t              }| j                  ||       |j	                          | j                  ||       |j	                          y NrI   r:   rM   r   assertInshutdown_allassertNotInr*   r9   r[   s      r   test_shutdown_allz#TestKernelManager.test_shutdown_all}   sT    ooT$o7c2
b!
r-   c                 Z    | j                         }| j                  |dt                      y Ntcpr:   ro   r   ry   s     r   test_tcp_cinfoz TestKernelManager.test_tcp_cinfo   s"    E9;/r-   c                 F    | j                         }| j                  |       y r#   rC   r^   ry   s     r   test_ipc_lifecyclez$TestKernelManager.test_ipc_lifecycle   s    Br-   c                 J    | j                         }| j                  |dd       y Nr?   r@   rC   ro   ry   s     r   test_ipc_cinfoz TestKernelManager.test_ipc_cinfo   s     E6*r-   c                     | j                  | j                                | j                  | j                                | j                  | j                                yzAEnsure that a sequence of kernel startups doesn't break anything.Nr^   r:   r*   s    r   test_start_sequence_tcp_kernelsz1TestKernelManager.test_start_sequence_tcp_kernels   sG    D,,./D,,./D,,./r-   c                     | j                  | j                                | j                  | j                                | j                  | j                                yr   r^   rC   r   s    r   test_start_sequence_ipc_kernelsz1TestKernelManager.test_start_sequence_ipc_kernels   sI     	D,,./D,,./D,,./r-   c                     t        j                         }t        j                  |       | j                          |j	                          y r#   )r   new_event_loopset_event_looprs   ri   r*   loops     r   tcp_lifecycle_with_loopz)TestKernelManager.tcp_lifecycle_with_loop   s3    %%'t$!

r-   c                 :   | j                          t        j                  j                  d      5 }|j	                  | j
                        }|j	                  | j
                        }|j                          |j                          d d d        y # 1 sw Y   y xY wNr
   max_workers)rs   
concurrentfuturesThreadPoolExecutorsubmitr   resultr*   thread_executorfuture1future2s       r   "test_start_parallel_thread_kernelsz4TestKernelManager.test_start_parallel_thread_kernels   s|    !22q2A 	_%,,T-I-IJG%,,T-I-IJGNNNN		 	 	s   ABBdarwin)      )r      z"Bad file descriptor" error)reasonc                    | j                          t        j                  j                  d      5 }|j	                  | j
                        }t        j                  j                  d      5 }|j	                  | j                         }|j                          d d d        |j                          d d d        y # 1 sw Y   "xY w# 1 sw Y   y xY wNr   r   )rs   r   r   r   r   r   ProcessPoolExecutorr   r*   r   r   process_executorr   s        r   #test_start_parallel_process_kernelsz5TestKernelManager.test_start_parallel_process_kernels   s    
 	!22q2A 	_%,,T-I-IJG##77A7F !JZ*11$2I2IJ ! NN	 	! !	 	s#   <C-,B:C:C	?CCc                    | j                         }|j                          |j                  t        t              }|j	                  d      dk(  sJ t        |j                  |      t              sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      sJ ||v sJ ||j                         v sJ t        |      dk(  sJ t        |       dd        |j                  |      j                          |j                          |j                  |d       |j	                  d      dk(  sJ |j	                  d	      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d
      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      sJ ||j                         v sJ |j                  |      j                          |j                          |j                  |       |j	                  d      dk(  sJ |j	                  d	      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j                          |j                          |j                  |      }t        |t              sJ |j	                  d	      dk(  sJ |j                  |      j                          |j                          |j                  d       |j	                  d
      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ ||vsJ | d|        y NrI   rM   r   _launch_kernelrJ   TrK   rT   rO   rX   rU   _kill_kernelcleanup_resourcesremove_kernelrequest_shutdownr   finish_shutdownrL   )r<   reset_countsrM   r   
call_countrW   rO   r   rN   rR   rS   rT   rU   r   )r*   r9   r[   r\   s       r   test_subclass_callablesz)TestKernelManager.test_subclass_callables   s
   !!#
ooT$o7}}^,111"--,n===}}S!,,^<AAA}}S!,,-=>!CCC{{3byyb((****2w!|0ByQC00|
c'')

#4(}}-.!333}}\*a///}}S!,,-=>!CCC}}S!,,->?1DDD}}S!,,-?@AEEE}}S!,,^<AAA}}S!,,-@AQFFF}}S!,,^<AAA}}S!,,-=>!CCC{{3b((****
c'')

C }}/0A555}}\*a///}}S!,,-?@AEEE
c'')
MM#!^,,,}}\*a///
c'')

D!}}./1444}}_-222}}/0A555}}./1444}}01Q666"}2XbT22}r-   returnNr#   ) __name__
__module____qualname__r(   r1   staticmethodr:   r<   rC   r^   ro   classmethodrs   rz   r   r   r   r   r   r   r   r   r   pytestmarkskipifsysplatformversion_infor   r   __classcell__r+   s   @r   r!   r!   )   s-   
"
  
      ,*&  <0     + +0 0 0 [[		!c(8(8F(BcIYIY\bIb,  			53r-   r!   c                       e Zd Z fdZd! fdZed        Zed        Zed        Zed        Z	ed"d       Z
d Zed	        Zed
        Zed        Z ed      d        Z ed      d        Zed        Zed        Zed        Zed        Zed        Zeed               Zeed               Zed        Zeed               Zd Zed"d       Zed"d       Zed        Z ed        Z!ed        Z"ed        Z#ed         Z$ xZ%S )#TestAsyncKernelManagerc                 t    t               | _        | j                  j                          t        |           y r#   r$   r)   s    r   r(   zTestAsyncKernelManager.setUp   r,   r-   c                 T    | j                   j                          t        |          S r#   r/   r)   s    r   r1   zTestAsyncKernelManager.tearDown   r2   r-   c                  2    t               } t        |       }|S r4   )r	   r   r7   s     r   r:   z"TestAsyncKernelManager._get_tcp_km  s    H$A.	r-   c                  2    t               } t        |       }|S r4   )r	   r   r7   s     r   r<   z&TestAsyncKernelManager._get_tcp_km_sub	  s    HQ'	r-   c                  v    t               } d| j                  _        d| j                  _        t	        |       }|S r>   )r	   r   rA   rB   r   r7   s     r   rC   z"TestAsyncKernelManager._get_ipc_km  s0    H$)!#$A.	r-   c                  T    t               } d| j                  _        t        |       }|S )NTr5   )r	   r   use_pending_kernelsr7   s     r   _get_pending_kernels_kmz.TestAsyncKernelManager._get_pending_kernels_km  s&    H8<!!5$A.	r-   c                   K   |r+| j                  t        t        |       d {   }||k(  s%J | j                  t        t               d {   }| j                  |       d {   sJ || v sJ || j                         v sJ t	        |       dk(  sJ t	        |        dd        | j                  |d       d {    | j                  |       d {   sJ || j                         v sJ | j                  |       d {    | j                  |      }t        |t              sJ | j                  |d       d {    || vsJ | d|         y 7 97 7 7 7 7 _7 #wrE   )rM   r   rN   rR   rS   rT   rU   rO   rW   r   rX   )r9   rZ   r[   r\   s       r   r^   z%TestAsyncKernelManager._run_lifecycle   su    tDHUUC(?"?tDAAC[[%%%%%byyb((****2w!|0ByQC00|...[[%%%%%b((****!!#&&&MM#!/000  $ ///"}2XbT22} V B% 	/%& 	0s|   "E-E)E-E E-'E#(AE-E%E-E'.E-	E)
=E-E+E- E-#E-%E-'E-)E-+E-c                   K   |j                  t        t               d {   }|j                  |       |j                  |      }| j	                  ||d          | j	                  ||d          | j                  d|v        | j                  d|v        |j                  |      }|j                          | j                  d|v        |j                  |      }|j                          | j                  d|v        |j                  |      }|j                          |j                  |d	       d {    | j                  ||       y 7 .7 wr`   )rM   r   rO   re   rf   rg   rh   ri   rj   rk   rX   r   rl   s          r   ro   z!TestAsyncKernelManager._run_cinfo4  s!    OO4O==
c&&s+E+$67U4[)-.-.!!#&-.!!#&	U*+s#  $ ///b!! > 	0s"   EEDE7E8EEc                 @   K   | j                          d {    y 7 wr#   )raw_tcp_lifecycler   s    r   rs   z)TestAsyncKernelManager.test_tcp_lifecycleG  s     $$&&&s   c                 z   K   | j                  t        t        j                                      d {    y 7 wru   )r   rv   rw   rx   r   s    r   rz   z8TestAsyncKernelManager.test_tcp_lifecycle_with_kernel_idK  s(     $$c$**,.?$@@@s   1;9;c                 &  K   | j                         }|j                  t        t               d {   }| j                  ||       |j	                          d {    | j                  ||       |j	                          d {    y 7 Y7 17 	wr|   r}   r   s      r   r   z(TestAsyncKernelManager.test_shutdown_allO  sv     OO4O==c2oob!oo > 	 s3   /BB)BB)BBBBB   )timeoutc                   K   | j                         }|j                  t        t               d {   }| j                  ||       |j	                          d {    | j                  ||       |j                  t        t               d {   }| j                  ||       |j	                          d {    | j                  ||       |j	                          d {    y 7 7 7 ]7 57 wr|   r}   r   s      r   test_use_after_shutdown_allz2TestAsyncKernelManager.test_use_after_shutdown_allY  s     OO4O==c2oob! OO4O==c2oob!oo > > 	 sW   /C4C*)C4C,4C4C.)C4:C0;)C4$C2%C4,C4.C40C42C4c                 P  K   | j                         }t        j                  |j                  t        t                    }t        j
                  ||j                                d {   \  }}| j                  ||       t        |j                  t        t                     d {   }| j                  ||       | j                  t        |      d       |j                          d {    | j                  ||       |j                          d {    y 7 7 v7 37 w)NrI   r   )r:   r   r   rM   r   r   r   r   r~   rf   rS   )r*   r9   
kid_futurer[   _s        r    test_shutdown_all_while_startingz7TestAsyncKernelManager.test_shutdown_all_while_startingi  s     **2??$t?+TU
~~j"//2CDDQb! ""//d/"KLLc2R!$oob!oo E M 	  	 sJ   A&D&(D)A D&)D *AD&.D"/)D&D$D& D&"D&$D&c                 >  K   | j                         }t        |j                  t        t                     d {   }|j	                  |      }|j
                  j                         rJ ||v sJ ||j                         v sJ t        |      dk(  sJ t        |       dd        |j
                   d {    |j                  |d       d {    |j                  |       d {   }|sJ ||j                         v sJ |j                  |       d {    |j	                  |      }t        |t              sJ t        |j                  |d             d {    |j
                   d {    ||vsJ | d|        y 7 T7 7 7 7 y7 47 "w)NrI   r   rJ   TrK   rL   )r   r   rM   r   rO   rP   rQ   rR   rS   rT   rN   rU   rW   r   rX   )r*   r9   r[   kernelr   r\   s         r   test_use_pending_kernelsz/TestAsyncKernelManager.test_use_pending_kernelsz  s    ))+!"//d/"KLLs#<<$$&&&byyb((****2w!|0ByQC00|ll...KK$$
sb((****!!#&&&MM#!/000B..s.=>>>ll"}2XbT22}% M 	.$ 	' 	?s}   8FFA=F8F9FFF,F-0FFAF$F%F8F9FFFFFFFc                 <  K   | j                         }t        |j                  t        t                     d {   }|j	                  |      }|j
                  j                         rJ t        j                  t              5  |j                  |d       d {    d d d        |j
                   d {    t        |j                  |d             d {    |j
                   d {    ||vsJ | d|        y 7 7 k# 1 sw Y   jxY w7 ]7 ;7 )wNrI   TrK   rL   )r   r   rM   r   rO   rP   rQ   r   raisesRuntimeErrorrT   rX   r*   r9   r[   r   s       r   &test_use_pending_kernels_early_restartz=TestAsyncKernelManager.test_use_pending_kernels_early_restart  s     ))+!"//d/"KLLs#<<$$&&&]]<( 	3##CT#222	3llB..s.=>>>ll"}2XbT22} M 3	3 	3>sj   8DDA
DD
DD
!D8D9#DDD0D1DD

DDDDc                 z  K   | j                         }t        |j                  t        t                     d {   }|j	                  |      }|j
                  j                         rJ t        |j                  |d             d {    |j
                   d {    ||vsJ | d|        y 7 z7 +7 wr   )r   r   rM   r   rO   rP   rQ   rX   r   s       r   'test_use_pending_kernels_early_shutdownz>TestAsyncKernelManager.test_use_pending_kernels_early_shutdown  s     ))+!"//d/"KLLs#<<$$&&&B..s.=>>>ll"}2XbT22} M 	?s4   8B;B5AB;B7B;B9 B;7B;9B;c                 8  K   | j                         }t        |j                  t        t                     d {   }|j	                  |      }|j
                  j                         rJ t        j                  t              5  |j                  |       d {    d d d        |j
                   d {    t        |j                  |d             d {    |j
                   d {    ||vsJ | d|        y 7 7 k# 1 sw Y   jxY w7 ]7 ;7 )wr   )r   r   rM   r   rO   rP   rQ   r   r   r   rU   rX   r   s       r   (test_use_pending_kernels_early_interruptz?TestAsyncKernelManager.test_use_pending_kernels_early_interrupt  s     ))+!"//d/"KLLs#<<$$&&&]]<( 	+%%c***	+ llB..s.=>>>ll"}2XbT22} M +	+ 	+ 	>sj   8DDA
DDDDD6D7#DDD.D/DDDDDDc                 v   K   | j                         }| j                  |dt                      d {    y 7 wr   r   ry   s     r   r   z%TestAsyncKernelManager.test_tcp_cinfo  s,     oob%555s   /979c                 b   K   | j                         }| j                  |       d {    y 7 wr#   r   ry   s     r   r   z)TestAsyncKernelManager.test_ipc_lifecycle  s*      !!"%%%s   %/-/c                 f   K   | j                         }| j                  |dd       d {    y 7 wr   r   ry   s     r   r   z%TestAsyncKernelManager.test_ipc_cinfo  s,      oob%000   '1/1c                   K   | j                  | j                                d{    | j                  | j                                d{    | j                  | j                                d{    y7 S7 .7 	wr   r   r   s    r   r   z6TestAsyncKernelManager.test_start_sequence_tcp_kernels  sl      !!$"2"2"4555!!$"2"2"4555!!$"2"2"4555 	6553   #A?A9&A?A;&A?3A=4A?;A?=A?c                   K   | j                  | j                                d{    | j                  | j                                d{    | j                  | j                                d{    y7 S7 .7 	wr   r   r   s    r   r   z6TestAsyncKernelManager.test_start_sequence_ipc_kernels  sl      !!$"2"2"4555!!$"2"2"4555!!$"2"2"4555 	655r   c                     t        j                         }t        j                  |       |j                  | j	                                |j                          y r#   r   r   r   run_until_completer   ri   r   s     r   r   z.TestAsyncKernelManager.tcp_lifecycle_with_loop  s>    %%'t$ 6 6 89

r-   c                 f   K   | j                         }| j                  ||       d {    y 7 wru   rq   )rr   rZ   r9   s      r   r   z(TestAsyncKernelManager.raw_tcp_lifecycle  s-      __  h 777r   c                     t        j                         }t        j                  |       |j                  | j	                  |             |j                          y ru   r   )rr   rZ   r   s      r   raw_tcp_lifecycle_syncz-TestAsyncKernelManager.raw_tcp_lifecycle_sync  sC    %%'t$ 5 5x 5 HI

r-   c                 V  K   | j                          d {    t        j                  j                  d      5 }|j	                  | j
                        }|j	                  | j
                        }|j                          |j                          d d d        y 7 # 1 sw Y   y xY wwr   )r   r   r   r   r   r   r   r   s       r   r   z9TestAsyncKernelManager.test_start_parallel_thread_kernels  s     $$&&&22q2A 	_%,,T-I-IJG%,,T-I-IJGNNNN		 	 	'	 	s'   B)B$B)AB
B)B&"B)c                   K   | j                          d {    t        j                  j                  d      5 }|j	                  | j
                        }t        j                  j                  d      5 }|j	                  | j                        }|j                          d d d        |j                          d d d        y 7 # 1 sw Y   $xY w# 1 sw Y   y xY wwr   )	r   r   r   r   r   r   r   r  r   r   s        r   r   z:TestAsyncKernelManager.test_start_parallel_process_kernels  s     $$&&&22q2A 	_%,,T-I-IJG##77A7F !JZ*11$2M2MN ! NN	 	 	'! !	 	s>   CC$C<C7,C#C;
CC	CCCc                 F	  K   | j                         }|j                          |j                  t        t               d {   }|j	                  d      dk(  sJ t        |j                  |      t              sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |       d {   sJ ||v sJ ||j                         v sJ t        |      dk(  sJ t        |       dd        |j                  |      j                          |j                          |j                  |d       d {    |j	                  d      dk(  sJ |j	                  d	      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d
      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |       d {   sJ ||j                         v sJ |j                  |      j                          |j                          |j                  |       d {    |j	                  d      dk(  sJ |j	                  d	      dk(  sJ |j                  |      j	                  d      dk(  sJ |j                  |      j                          |j                          |j                  |      }t        |t              sJ |j	                  d	      dk(  sJ |j                  |      j                          |j                          |j                  d       d {    |j	                  d
      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ |j	                  d      dk(  sJ ||vsJ | d|        y 7 O7 7 27 7 7 wr   )r<   r   rM   r   r   rW   rO   r   rN   rR   rS   rT   rU   r   )r*   mkmr[   r\   s       r   r   z.TestAsyncKernelManager.test_subclass_callables  sc    ""$$$D$>>~~n-222#..-???~~c"--n=BBB~~c"--.>?1DDD\\#&&&&&czzc))++++3x1}2S
$qc22}s((*  $ ///~~./1444~~l+q000~~c"--.>?1DDD~~c"--.?@AEEE~~c"--.@AQFFF~~c"--n=BBB~~c"--.ABaGGG~~c"--n=BBB~~c"--.>?1DDD\\#&&&&&c))++++s((*""3'''~~01Q666~~l+q000~~c"--.@AQFFFs((*NN3!_---~~l+q000s((*4(((~~/0A555~~o.!333~~01Q666~~/0A555~~12a777#~4#hse44~c ? ' 	0 '
 	( 	)sq   ?R!RBR!RBR!$R%ER!,R-AR!
RDR!RBR!R!R!R!R!R!c                 d  K   | j                         }t        t        j                  j	                  t        j                         d      dgd       t        j                  t              5  t        |j                  dt        t                     d {    d d d        y 7 # 1 sw Y   y xY wwNkernelsnon_existent_executablebad)argvname)kernel_namerF   rG   )r:   r   ospathjoinr   jupyter_data_dirr   r   FileNotFoundErrorr   rM   r   ry   s     r   test_bad_kernelspecz*TestAsyncKernelManager.test_bad_kernelspec?  s     GGLL//19=+,	

 ]],- 	^E$W[ \]]]	^ 	^]	^ 	^s0   A)B0+)B$B"B$	B0"B$$B-)B0c                 F  K   | j                         }t        t        j                  j	                  t        j                         d      dgd       t        |j                  dt        t                     d {   }t        j                  t              5  |j                  |      j                   d {    d d d        ||j                         v sJ t        |j!                  |             d {    ||j                         vsJ y 7 7 Y# 1 sw Y   XxY w7 )wr  )r   r   r  r  r  r   r  r   rM   r   r   r   r  rO   rP   rR   rX   )r*   r9   rH   s      r   test_bad_kernelspec_pendingz2TestAsyncKernelManager.test_bad_kernelspec_pendingJ  s     ))+GGLL//19=+,	

 (OOd4OH
 
	 ]],- 	1--	*0000	1B..0000B..y9::: 2 2 4444
 1	1 	1 	;sH   A8D!:D;D!D7D8D<9D!5D6D!DDD!r   r#   )&r   r   r   r(   r1   r   r:   r<   rC   r   r^   ro   r   rs   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r  r  r   r   s   @r   r   r      sF   
"
  
       3 3&"& ' ' A A     b    b     3 3, 3 3 	3 	3 3 3 6 6 &  & 1  1 6 6 6  6 8 8     	 	 55 55n ^ ^ 5 5r-   r   )(__doc__r   concurrent.futuresr   r  r   rw   r   
subprocessr   unittestr   r   jupyter_corer   tornado.testingr   r   traitlets.config.loaderr	   localinterfacesr   utilsr   r   r   r   r   r   r   jupyter_clientr   r   !jupyter_client.multikernelmanagerr   r   TIMEOUTr   r!   r    r-   r   <module>r#     sz    8   	 
  !     ) $ * ' " # !  ! "  - ( E @
L3 L3^a5] a5r-   