
    Ne8                         d 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mZ ddl	m
Z
 d Zd	 Z G d
 de      Z G d de      Z G d de      Zy)z,Tests for adapting Jupyter msg spec versions    N)TestCase)adaptcode_to_line)V4toV5)Sessionc                      t               } | j                  d      }|d   j                  d       t        j                  |      }t        |      }|d   d   t        j                  k(  sJ y )Nmsg_typeheaderversion)r   msgpopcopydeepcopyr   r   r   )sr   originaladapteds       C/usr/lib/python3/dist-packages/jupyter_client/tests/test_adapter.pytest_default_versionr      s\    	A
%%

CMi }}S!HHoG8Y'6>>999    c                  >    t        dd      \  } }| dk(  sJ |dk(  sJ y )N r   r   )lineposs     r   test_code_to_line_no_coder      s)    R#ID#2::!8O8r   c                        e Zd Zd ZddZd Zy)AdapterTestc                 "    t               | _        y N)r   session)selfs    r   setUpzAdapterTest.setUp   s    yr   Nc                 h    t        j                  |      }t        ||xs | j                        }||fS r   )r   r   r   
to_version)r!   r   r   r   r   s        r   r   zAdapterTest.adapt!   s0    ==%W78  r   c                      y r    )r!   r   s     r   check_headerzAdapterTest.check_header&   s    r   r   )__name__
__module____qualname__r"   r   r'   r&   r   r   r   r      s    !!
r   r   c                   h    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zy)V4toV5TestCase      c                 f    | j                   j                  ||      }|d   j                  d       |S )z2Create a v4 msg (same as v5, minus version header)r   r   )r    r   r   )r!   r
   contentr   s       r   r   zV4toV5TestCase.msg.   s/    llx1H)$
r   c                     | j                  dddi      }| j                  || j                        \  }}| j                  ||       y Nexecute_resultstatusok)r0   r   r   from_versionassertEqualr!   r   r   r   s       r   test_same_versionz V4toV5TestCase.test_same_version4   E    hh'(D1AhB JJsD,=,=>'7+r   c                     | j                  dddi      }| j                  |      \  }}| j                  |d   d   t        j                         |d   j                  d       | j                  ||       y )Ninput_replyvalue	some textr   r   )r   r   r8   r   r   r   r!   r   v4v5s       r   test_no_adaptzV4toV5TestCase.test_no_adapt:   sg    hh}w&<=CBHi0&..A
8#R r   c                    dD ]  \  }}| j                  |ddi      }| j                  |      \  }}| j                  |d   d   t        j                         | j                  |d   d   |       | j                  |d   |d           y )N)r3   pyout)execute_inputpyin)errorpyerrkeyr>   r   r   r
   r0   )r   r   r8   r   r   )r!   v5_typev4_typer   rA   rB   s         r   test_rename_typezV4toV5TestCase.test_rename_typeA   s    !
 		;GW
 ((7UG$45CZZ_FBR\)4fnnER\*5w?R	]ByM:		;r   c                 4   | j                  dddddidgd      }| j                  |      \  }}| j                  |d   d	   |d   d	          |d
   }|d
   }| j                  |d   ddd       | j                  d|       | j                  |d   |d          y )Nexecute_requesta=5Faappleb)codesilentuser_expressionsuser_variablesr   r
   r0   rW   )rR   rT   rX   rU   r   r   r8   assertNotInr!   r   rA   rB   v4cv5cs         r   test_execute_requestz#V4toV5TestCase.test_execute_requestM   s    hh%('N#&%	
 CBHj12h<
3KLmm/0c2JK)3/Vc&k2r   c           
          | j                  dddddiddidd	d
gd      }| j                  |      \  }}|d   }| j                  d|       | j                  |d   ddd       | j                  |d   ddd	idg       y )Nexecute_replyr5      rR      a+a   pageblah)sourcetext)r4   execution_countrX   rW   payloadr0   rX   rW   )rR   rc   rj   
text/plain)rg   datar   r   rZ   r8   r!   r   rA   rB   r]   s        r   test_execute_replyz!V4toV5TestCase.test_execute_reply_   s    hh#$#&(%*AJ'-v>?	
 CBm)3//0!2DEYVlTZE[*\)]^r   c                     | j                  dddd dd      }| j                  |      \  }}|d   }|d   }dD ]  }| j                  ||        | j                  |d   |d          | j                  |d	   |d
          y )Ncomplete_requesta.isz
foo = a.is
   )rh   r   block
cursor_posr0   )rh   r   rt   ru   rU   r   rm   )r!   r   rA   rB   r\   r]   rK   s          r   test_complete_requestz$V4toV5TestCase.test_complete_requestp   s    hh$ 	
 CBmm, 	'CS#&	'\*C,=>Vc&k2r   c                    | j                  ddg dd      }| j                  |      \  }}|d   }|d   }| j                  |d   |d          | j                  |d   i        | j                  |d   d	       | j                  |d
   d        y )Ncomplete_replyrr   z	a.isalnumz	a.isalphaz	a.isdigitz	a.islower)matched_textmatchesr0   r{   metadatacursor_start
cursor_endr   r   r8   r[   s         r   test_complete_replyz"V4toV5TestCase.test_complete_reply   s    hh &
 CBmmYY8Z"-^,b1\*D1r   c                 <   | j                  dddd      }| j                  |      \  }}| j                  |d   d   d       |d   }|d   }| j                  |d	   |d
          | j                  |d   t        |d
                | j                  |d   |d          y )Nobject_info_requestfoorb   )onamedetail_levelr   r
   inspect_requestr0   rU   r   ru   r   )r   r   r8   lenr[   s         r   test_object_info_requestz'V4toV5TestCase.test_object_info_request   s    hh! !
 CBHj13DEmmVc'l3\*CG,=>^,c..ABr   c           	      <   | j                  ddddddd      }| j                  |      \  }}| j                  |d   d	   d
       |d   }|d   }| j                  t        |      g d       |d   d   }| j                  |dj	                  |d   |d   g             y )Nobject_info_replyr   Tr5   zfoo(a=5)zthe docstring)namefoundr4   
definition	docstringr   r
   inspect_replyr0   )rl   r   r|   r4   rl   rk   
r   r   )r   r   r8   sortedjoin)r!   r   rA   rB   r\   r]   rh   s          r   test_object_info_replyz%V4toV5TestCase.test_object_info_reply   s    hh(,	
 CBHj1?Cmm&MN6{<(tyy#l*;S=M)NOPr   c                     | j                  dddd      }| j                  |      \  }}| j                  |d   d   d       |d    |d   }| j                  |d	di i d
       y )Nr   r   F)r   r   r   r
   r   r0   r5   )r4   r   rl   r|   r   rn   s        r    test_object_info_reply_not_foundz/V4toV5TestCase.test_object_info_reply_not_found   s|    hh
 CBHj1?C
9m		
r   c           	          | j                  ddg dg dd      }| j                  |      \  }}|d    |d   }| j                  |ddd	dd
ddd       y )Nkernel_info_replypythonrd      r   rb   rd      )languagelanguage_versionipython_versionr0   z4.1ipython1.2.32.8.0)r   r   r   protocol_versionimplementationimplementation_versionlanguage_infobannerr   rn   s        r   test_kernel_info_replyz%V4toV5TestCase.test_kernel_info_reply   ss    hh$$-#,
 CB
9m$)"+*1$&" 		
r   c                 R   t        d      }| j                  ddt        j                  |      ddddiid	      }| j	                  |      \  }}|d
   }|d
   }| j                  |d   |d          | j                  |d   d   |d   d          | j                  |d   d   |       y Nr.   )rR   display_datar?   )rk   application/jsonrk   rK   r>   )rl   r|   r0   r|   rl   r   )dictr   jsondumpsr   r8   )r!   jsondatar   rA   rB   r\   r]   s          r   test_display_dataz V4toV5TestCase.test_display_data   s    !9hh #.(,

8(< *E7+;<	
 CBmmZ#j/:V\2CK4MNV%78(Cr   c                     | j                  dddi      }| j                  |      \  }}| j                  |d   d   |d   d          | j                  |d   d          y )Ninput_requestprompt$>r0   password)r   r   r8   assertFalser@   s       r   test_input_requestz!V4toV5TestCase.test_input_request  sa    hh4(89CBIx0"Y-2IJIz23r   N)r(   r)   r*   r7   r$   r   r:   rC   rN   r^   ro   rv   r   r   r   r   r   r   r   r&   r   r   r,   r,   *   sV    LJ,!
;3$_"3$2,C Q&
,
8D*4r   r,   c                   b    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zy)V5toV4TestCaser.   r-   c                 :    | j                   j                  ||      S r   )r    r   )r!   r
   r0   s      r   r   zV5toV4TestCase.msg  s    ||'22r   c                     | j                  dddi      }| j                  || j                        \  }}| j                  ||       y r2   r6   r9   s       r   r:   z V5toV4TestCase.test_same_version  r;   r   c                     | j                  dddi      }| j                  |      \  }}| j                  d|d          |d   j                  d       | j	                  ||       y )Nr=   r>   r?   r   r   )r   r   rZ   r   r8   r!   r   rB   rA   s       r   rC   zV5toV4TestCase.test_no_adapt  s^    hh}w&<=CBBxL1
8#R r   c                     dD ]f  \  }}| j                  |ddi      }| j                  |      \  }}| j                  |d   d   |       d|d   vsJ | j                  |d   |d          h y )NrE   rK   r>   r   r
   r   r0   r   )r!   rL   rM   r   rB   rA   s         r   rN   zV5toV4TestCase.test_rename_type  s    !
 		;GW
 ((7UG$45CZZ_FBR\*5w?BxL000R	]ByM:		;r   c                    | j                  dddddid      }| j                  |      \  }}| j                  |d   d   |d   d          |d	   }|d	   }| j                  |d
   g        | j                  |d   |d          y )NrP   rQ   FrR   rS   )rU   rV   rW   r   r
   r0   rX   rU   r   r!   r   rB   rA   r\   r]   s         r   r^   z#V5toV4TestCase.test_execute_request)  s    hh%('N
 CBHj12h<
3KLmm-.3Vc&k2r   c                 `   | j                  dddd      }| j                  |      \  }}|d   }|d   }| j                  d|       | j                  |d   |d   j	                  d      d	          | j                  |d
   d       | j                  |d   d       | j                  |d   d        y )Nrq   zdef foo():
    a.is
foo()   )rU   ru   r0   rU   r   Trb   ru   r   rh   r   rt   )r   r   rZ   r8   
splitlinesr   s         r   rv   z$V5toV4TestCase.test_complete_request9  s    hh5 
 CBmm%Vc&k&<&<T&B1&EF\*A.Vb)Wt,r   c                     | j                  dddg di d      }| j                  |      \  }}|d   }|d   }| j                  |d   d       | j                  |d	   |d	          y )
Nrx   rs      ry   )r}   r   r{   r|   r0   rz   rr   r{   r   r   s         r   r   z"V5toV4TestCase.test_complete_replyJ  sz    hh "  

 CBmm^,f5YY8r   c                     | j                  ddddd      }| j                  |      \  }}| j                  |d   d   d       |d	   }|d	   }| j                  |d
   d       | j                  |d   |d          y )Nr   zdef foo():
    apple
bar()   rb   rU   ru   r   r   r
   r   r0   r   rS   r   r   r   s         r   test_inspect_requestz#V5toV4TestCase.test_inspect_request_  s    hh6  !
 CBHj13HImmWw/^,c..ABr   c                    d}| j                  d|t        |      dz
  dd      }| j                  |      \  }}| j                  |d   d   d       |d   }|d   }| j                  |d	   d
       | j                  |d   |d          y )NzQsomething(range(10), kwarg=smth) ; xxx.xxx.xxx( firstarg, rand(234,23), kwarg1=2,r   rb   r   r   r
   r   r0   r   zxxx.xxx.xxxr   )r   r   r   r8   )r!   r   r   rB   rA   r\   r]   s          r   test_inspect_request_tokenz)V5toV4TestCase.test_inspect_request_tokeno  s    bhh!$i!m !
 CBHj13HImmW}5^,c..ABr   c                    | j                  dddddii d      }| j                  |      \  }}| j                  |d   d   d	       |d
   }|d
    | j                  t        |      ddg       | j                  |d   d       y )Nr   r   Trk   r?   )r   r   rl   r|   r   r
   r   r0   r   r   F)r   r   r8   r   )r!   r   rB   rA   r\   s        r   test_inspect_replyz!V5toV4TestCase.test_inspect_reply  s    hh%{3	
 CBHj13FGm
9w&89Wu-r   c           
          | j                  ddddddddd	d
      }| j                  |      \  }}|d   }|d   }|d    | j                  |ddgdg dg dd       y )Nr   z5.0r   r   r   r   ztext/x-python)r   r   mimetypez
the bannerr   r0   r   r.   r   r   r   )r   r   r   r   r   r   s         r   r   z%V5toV4TestCase.test_kernel_info_reply  s    hh$)"+*1$& /"
 '

 CBmmO%&F$$-#,		
r   c                 R   t        d      }| j                  dd|ddddiid	      }| j                  |      \  }}|d
   }|d
   }| j                  |d   |d          | j                  |d   d   |d   d          | j                  |d   d   t	        j
                  |             y r   )r   r   r   r8   r   r   )r!   r   r   rB   rA   r\   r]   s          r   r   z V5toV4TestCase.test_display_data  s    !9hh #.(0 *E7+;<	
 CBmmZ#j/:V\2CK4MNV%78$**X:NOr   c                     | j                  dddd      }| j                  |      \  }}| j                  |d   d   |d   d          | j                  d|d          y )Nr   r   T)r   r   r0   r   r   rY   r   s       r   r   z!V5toV4TestCase.test_input_request  s^    hh4T(JKCBIx0"Y-2IJR	]3r   N)r(   r)   r*   r7   r$   r   r:   rC   rN   r^   rv   r   r   r   r   r   r   r   r&   r   r   r   r   	  sP    LJ3,!
;3 -"9*C C"."
>P*4r   r   )__doc__r   r   unittestr   jupyter_client.adapterr   r   r   jupyter_client.sessionr   r   r   r   r,   r   r&   r   r   <module>r      sR    2    ( / ) *:
( 
\4[ \4~@4[ @4r   