
    <h-8              	          S r SSKrSSKrSSKJrJrJrJr  SSKJ	r	  S\
S\S\\
\4   4S	 jr\R                  " S
\R                  5      r\R                  " S\R                  5      r\R                  " S\R"                  \R                  -  5      rS\
S\S\
4S jr " S S5      rS\
S\\   4S jr " S S\5      r " S S\5      r\	S   4S\\
\4   S\S\\
\4   4S jjr\" 5       \" 5       S.rg)z'Adapters for Jupyter msg spec versions.    N)AnyDictListTuple   )protocol_version_infocode
cursor_posreturnc                 z    U (       d  gU R                  S5       H  n[        U5      nX:  a  X-  nM    X!4$    WU4$ )zTurn a multiline code block and cursor position into a single line
and new cursor position.

For adapting ``complete_`` and ``object_info_request``.
) r   T)
splitlineslen)r	   r
   linens       iC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\jupyter_client/adapter.pycode_to_liner      sK     %I>OJ &     z\([^\(\)]+\)z	\([^\(]*$z[a-z_][0-9a-z._]*c                    [        X5      u  p#Un[        R                  SU5      nXB:w  a  Un[        R                  SU5      nXB:w  a  M  [        R                  SU5      n[        R                  U5      nU(       a  US   $ g)zlReimplement token-finding logic from IPython 2.x javascript

for adapting object_info_request from v5 to v4
r   )r   _match_bracketsub_end_bracket_identifierfindall)r	   r
   r   _oldlinematchess         r   extract_oname_v4r   !   s~     4,GDGb$'D
/!!"d+ /
 B%D!!$'Gr{r   c                       \ rS rSr% Sr0 r\\\4   \S'   S\\\	4   S\\\	4   4S jr
S\\\	4   S\\\	4   4S jrS\\\	4   S\\\	4   4S jrS\\\	4   S\\\	4   4S	 jrS\\\	4   S\\\	4   4S
 jrSrg)Adapter8   zYBase class for adapting messages

Override message_type(msg) methods to create adapters.
msg_type_mapmsgr   c                     U$ )Update the header. selfr$   s     r   update_headerAdapter.update_header@       
r   c                     U$ )zUpdate the metadata.r'   r(   s     r   update_metadataAdapter.update_metadataD   r,   r   c                 f    US   nUS   nX0R                   ;   a  U R                   U   =US'   US'   U$ )zUpdate the message type.headermsg_type)r#   )r)   r$   r1   r2   s       r   update_msg_typeAdapter.update_msg_typeH   sD    X*%(((373D3DX3NNC
OfZ0
r   c                     U$ )zUThis will be called *instead of* the regular handler

on any reply with status != ok
r'   r(   s     r   handle_reply_status_error!Adapter.handle_reply_status_errorP   s	    
 
r   c                     U R                  U5      nU R                  U5      nU R                  U5      nUS   n[        XS   S 5      nUc  U$ US   R	                  SS 5      S;   a  U R                  U5      $ U" U5      $ )Nr1   r2   contentstatus>   erroraborted)r*   r.   r3   getattrgetr6   )r)   r$   r1   handlers       r   __call__Adapter.__call__W   s      %""3'""3'X$z 2D9?J y>h-1EE11#66s|r   r'   N)__name__
__module____qualname____firstlineno____doc__r#   r   str__annotations__r   r*   r.   r3   r6   r@   __static_attributes__r'   r   r   r!   r!   8   s    
 $&L$sCx.%c3h DcN 4S> d38n 4S> d38n T#s(^ S#X DcN tCH~ r   r!   versionc                     / nU R                  S5       H  n UR                  [        U5      5        M      U$ ! [         a     M1  f = f)zJconvert a version string to a list of ints

non-int segments are excluded
.)splitappendint
ValueError)rJ   vparts      r   _version_str_to_listrS   g   sL    
 	Ac"	HHSY #
 H  		s   8
AAc                      \ rS rSrSrSrSSSSSS	.rS
\\\	4   S\\\	4   4S jr
S
\\\	4   S\\\	4   4S jrS
\\\	4   S\\\	4   4S jrS
\\\	4   S\\\	4   4S jrS
\\\	4   S\\\	4   4S jrS
\\\	4   S\\\	4   4S jrS
\\\	4   S\\\	4   4S jrS
\\\	4   S\\\	4   4S jrS
\\\	4   S\\\	4   4S jrS
\\\	4   S\\\	4   4S jrS
\\\	4   S\\\	4   4S jrSrg)V5toV4u   zAdapt msg protocol v5 to v44.1pyoutpyinpyerrobject_info_requestobject_info_reply)execute_resultexecute_inputr;   inspect_requestinspect_replyr$   r   c                 Z    US   R                  SS5        US   R                  SS5        U$ )r&   r1   rJ   Nparent_headerpopr(   s     r   r*   V5toV4.update_header   s0    H)T*O  D1
r   c                 h   0 nUS   nS H  nXC;   d  M
  [        X4   5      X$'   M     UR                  SS5      S:X  a  SU;   a  [        US   5      US'   UR                  S0 5      nUR                  S	S5      nUR                  S
U5        SU;   a  UR                  S[        US   5      5        X!S'   U$ )Handle a kernel info reply.r9   )language_versionprotocol_versionimplementationr   ipythonimplementation_versionipython_versionlanguage_infonamelanguagerJ   rh   )rS   r>   
setdefault)r)   r$   v4cr9   keyrn   rp   s          r   kernel_info_replyV5toV4.kernel_info_reply   s    i.;C~/= < ;;',	9>VZa>a%9'BZ:[%\C!"OR8 $$VR0z8,%NN-/CMR[D\/]^I
r   c                 4    US   nUR                  S/ 5        U$ )Handle an execute request.r9   user_variablesrq   r)   r$   r9   s      r   execute_requestV5toV4.execute_request   s!    i.+R0
r   c                 4    US   nUR                  S0 5        U$ )Handle an execute reply.r9   rx   ry   rz   s      r   execute_replyV5toV4.execute_reply   s!    i.+R0
r   c                 n    US   nUS   nUS   n[        X45      u  pT0 =oaS'   SUS'   XVS'   SUS'   XFS'   U$ )	Handle a complete request.r9   r	   r
   r   textr   Nblock)r   )r)   r$   r9   r	   r
   r   new_contents          r   complete_requestV5toV4.complete_request   s`    i.v\*
'9')))n F"F#G$.L!
r   c                     US   nUR                  S5      nUR                  S5      nXC-
  nUS   S   SU US'   UR                  SS5        U$ )	Handle a complete reply.r9   cursor_start
cursor_endr   r   Nmatched_textmetadatarc   )r)   r$   r9   r   r   	match_lens         r   complete_replyV5toV4.complete_reply   s]    i.{{>2[[.
-	"))"4Q"7
"CJ%
r   c                 v    US   nUS   nUS   n[        X45      u  pV0 =oqS'   [        X45      US'   US   US'   U$ )zHandle an object info request.r9   r	   r
   onamedetail_level)r   r   )r)   r$   r9   r	   r
   r   r   r   s           r   r[   V5toV4.object_info_request   sY    i.v\*
t0')))n/AG&-n&=N#
r   c                     SSS.US'   U$ )1inspect_reply can't be easily backward compatibleFunknown)foundr   r9   r'   r(   s     r   r\   V5toV4.object_info_reply   s    #(9=I
r   c                 8    US   nUR                  S5      US'   U$ )Handle a stream message.r9   r   datarc   rz   s      r   streamV5toV4.stream   "    i.!++f-
r   c                     US   nUR                  SS5        US   nSU;   a   [        R                  " US   5      US'   U$ U$ ! [         a     U$ f = f)zHandle a display data message.r9   sourcedisplayr   application/json)rq   jsondumps	Exceptionr)   r$   r9   r   s       r   display_dataV5toV4.display_data   so    i.8Y/v%+/::d;M6N+O'( 
s
  
   A 
AAc                 0    US   R                  SS5        U$ )Handle an input request.r9   passwordNrc   r(   s     r   input_requestV5toV4.input_request   s    I:t,
r   r'   N)rB   rC   rD   rE   rF   rJ   r#   r   rG   r   r*   rt   r{   r   r   r   r[   r\   r   r   r   rI   r'   r   r   rU   rU   u   s   %G "0,Lc3h DcN T#s(^ S#X "4S> d38n c3h DcN DcN tCH~ $sCx. T#s(^ 
tCH~ 
$sCx. 
T#s(^ S#X $sCx. T#s(^ S#X 4S> c3h DcN r   rU   c                   .   \ rS rSrSrSr\R                  R                  5        V VVs0 s H  u  pX!_M	     snnn rS\	\
\4   S\	\
\4   4S jrS\	\
\4   S\	\
\4   4S jrS\	\
\4   S\	\
\4   4S jrS\	\
\4   S\	\
\4   4S	 jrS\	\
\4   S\	\
\4   4S
 jrS\	\
\4   S\	\
\4   4S jrS\	\
\4   S\	\
\4   4S jrS\	\
\4   S\	\
\4   4S jrS\	\
\4   S\	\
\4   4S jrS\	\
\4   S\	\
\4   4S jrS\	\
\4   S\	\
\4   4S jrSrgs  snnn f )V4toV5   zConvert msg spec V4 to V5z5.0r$   r   c                 b    U R                   US   S'   US   (       a  U R                   US   S'   U$ )r&   r1   rJ   rb   )rJ   r(   s     r   r*   V4toV5.update_header   s4    #'<<Hi .2llC +
r   c                 
   US   nS H-  nX2;   d  M
  SR                  [        [        X#   5      5      X#'   M/     UR                  SS5        US   R	                  S5      (       a  SU;   a  S	US
'   UR                  S5      US'   UR                  S5      nUR                  S0 5      nUR                  SU5        SU;   a@  SR                  [        [        UR                  S5      5      5      nUR                  SU5        SUS'   U$ )rg   r9   )ri   rm   rL   ri   rW   rp   pythonrm   rk   rj   rl   rn   ro   rh   rJ   r   banner)joinmaprG   rq   
startswithrd   )r)   r$   r9   rs   rp   rn   rh   s          r   rt   V4toV5.kernel_info_reply   s    i.:C~"xxC(>? ; 	-u5:))(338IW8T(1G$%07<M0NG,-;;z***?B?  2("xxC=O1P(QR$$Y0@A
r   c                 r    US   nUR                  S/ 5      nUR                  S0 5      nU H  nXTU'   M	     U$ )rw   r9   rx   user_expressions)rd   rq   )r)   r$   r9   rx   r   rQ   s         r   r{   V4toV5.execute_request  sG    i. %5r:"--.@"EA"#Q  
r   c                 >   US   nUR                  S0 5      nUR                  S0 5      nU(       a  UR                  U5        UR                  S/ 5       HE  nUR                  SS5      S:X  d  M  SU;   d  M#  S	U;  a  0 US	'   UR                  S5      US	   S
'   MG     U$ )r~   r9   r   rx   payloadr   Npager   r   
text/plain)rq   rd   updater>   )r)   r$   r9   r   rx   r   s         r   r   V4toV5.execute_reply  s    i."--.@"E %5r:##N3 {{9b1G{{8T*f4&G:K(&(GFO07F0C-	 2 
r   c                 <    US   n0 =o1S'   US   US'   US   US'   U$ )r   r9   r   r	   r
   r'   )r)   r$   old_contentr   s       r   r   V4toV5.complete_request0  s:    )n')))n)&1F$/$=L!
r   c                     US   nSS0=o1S'   US   US'   US   (       a  [        US   5      * US'   OSUS'   SUS'   0 US	'   U$ )
r   r9   r:   okr   r   r   Nr   r   r   )r)   r$   r9   r   s       r   r   V4toV5.complete_reply9  sq     i.(0$'77)n!(!3I>"+.w~/F+G*GK' +/K'$(L!"$J
r   c                 Z    US   nUS   n0 =oAS'   X4S'   [        U5      US'   US   US'   U$ )zHandle an inspect request.r9   r   r	   r
   r   r   )r)   r$   r9   ro   r   s        r   r_   V4toV5.inspect_requestK  sK    i.w')))n"F$'IL!&-n&=N#
r   c                    US   nSS0=o1S'   US   =oCS'   0 =US'   n0 US'   U(       a  / nS H/  nUR                  US5      (       d  M  UR                  X'   5          O   S	 H/  nUR                  US5      (       d  M  UR                  X'   5          O   U(       d  UR                  S
5        SR                  U5      US'   U$ )r   r9   r:   r   r   r   r   )call_definit_definition
definitionF)call_docstringinit_docstring	docstringz<empty docstring>
r   )r>   rN   r   )r)   r$   r9   r   r   r   linesrs   s           r   r`   V4toV5.inspect_replyV  s    i.(0$'77)n'.w'77G$%''Fd"$JED;;sE**LL. E I;;sE**LL. I 01!%5!1D
r   c                 8    US   nUR                  S5      US'   U$ )r   r9   r   r   rc   rz   s      r   r   V4toV5.streamn  r   r   c                     US   nUR                  SS5        US   nSU;   a   [        R                  " US   5      US'   U$ U$ ! [         a     U$ f = f)zHandle display data.r9   r   Nr   r   )rd   r   loadsr   r   s       r   r   V4toV5.display_datat  sm    i.Hd#v%+/::d;M6N+O'( 
s
  
r   c                 0    US   R                  SS5        U$ )r   r9   r   Fry   r(   s     r   r   V4toV5.input_request  s    I!!*e4
r   r'   N)rB   rC   rD   rE   rF   rJ   rU   r#   itemsr   rG   r   r*   rt   r{   r   r   r   r_   r`   r   r   r   rI   ).0krQ   s   000r   r   r      s   #G &,%8%8%>%>%@A%@TQAD%@ALc3h DcN T#s(^ S#X .4S> d38n c3h DcN "DcN tCH~ $sCx. T#s(^ $	4S> 	d38n 	c3h DcN 0$sCx. T#s(^ S#X 4S> c3h DcN _ Bs   Dr   r$   
to_versionc                     SSK Jn  U S   nSU;  a
  U" 5       US'   SU;   a!  [        US   R                  S5      S   5      nOSn[        R                  XA4S	5      nUc  U $ U" U 5      $ )
a#  Adapt a single message to a target version

Parameters
----------

msg : dict
    A Jupyter message.
to_version : int, optional
    The target major version.
    If unspecified, adapt to the current version.

Returns
-------

msg : dict
    A Jupyter message appropriate in the new version.
r   )utcnowr1   daterJ   rL   r      N)sessionr   rO   rM   adaptersr>   )r$   r   r   r1   from_versionadapters         r   adaptr     sx    $  ]FVvF6),2237:; llL5t<G
3<r   ))   r   )r   r   )rF   r   retypingr   r   r   r   _versionr   rG   rO   r   compileUNICODEr   r   Ir   r   r!   rS   rU   r   r   r   r'   r   r   <module>r      s)   -  	 ) ) +s  c3h " ORZZ8zz,

3jj-rttbjj/@A3 C C ., ,^# $s) vW vrXW Xv 2Gq1I tCH~ 3 dSVX[S[n H HHr   