
    Mh-8              	          d 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e
dedee
ef         fd	Z ej        d
ej                  Z ej        dej                  Z ej        dej        ej        z            Zde
dede
fdZ G d d          Zde
dee         fdZ G d de          Z G d de          Ze	d         fdee
ef         dedee
ef         fdZ e             e            dZdS )z'Adapters for Jupyter msg spec versions.    N)AnyDictListTuple   )protocol_version_infocode
cursor_posreturnc                 x    | sdS |                      d          D ]}t          |          }||k    r||z  } ||fS )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       V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jupyter_client/adapter.pycode_to_liner      sY      u%%  II>>!OJJ    z\([^\(\)]+\)z	\([^\(]*$z[a-z_][0-9a-z._]*c                 6   t          | |          \  }}|}t                              d|          }||k    r#|}t                              d|          }||k    #t                              d|          }t                              |          }|r|d         S dS )ztReimplement 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
T//!!"d++ T//
 B%%D!!$''G r{rr   c                   "   e Zd ZU dZi Zeeef         ed<   deeef         deeef         fdZ	deeef         deeef         fdZ
deeef         deeef         fdZdeeef         deeef         fdZdeeef         deeef         fd	Zd
S )AdapterzaBase class for adapting messages

    Override message_type(msg) methods to create adapters.
    msg_type_mapmsgr   c                     |S )Update the header. selfr#   s     r   update_headerzAdapter.update_header@       
r   c                     |S )zUpdate the metadata.r&   r'   s     r   update_metadatazAdapter.update_metadataD   r*   r   c                 b    |d         }|d         }|| j         v r| j         |         x|d<   |d<   |S )zUpdate the message type.headermsg_type)r"   )r(   r#   r.   r/   s       r   update_msg_typezAdapter.update_msg_typeH   sC    X*%t(((373DX3NNC
OfZ0
r   c                     |S )zeThis will be called *instead of* the regular handler

        on any reply with status != ok
        r&   r'   s     r   handle_reply_status_errorz!Adapter.handle_reply_status_errorP   s	    
 
r   c                 B   |                      |          }|                     |          }|                     |          }|d         }t          | |d         d           }||S |d                             dd           dv r|                     |          S  ||          S )Nr.   r/   contentstatus>   erroraborted)r)   r,   r0   getattrgetr2   )r(   r#   r.   handlers       r   __call__zAdapter.__call__W   s      %%""3''""3''X$z 2D99?J y>h--1EEE11#666ws||r   N)__name__
__module____qualname____doc__r"   r   str__annotations__r   r)   r,   r0   r2   r;   r&   r   r   r!   r!   8   s4         
 $&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                     g }|                      d          D ]5}	 |                    t          |                     &# t          $ r Y 2w xY w|S )zRconvert a version string to a list of ints

    non-int segments are excluded
    .)splitappendint
ValueError)rB   vparts      r   _version_str_to_listrK   g   si    
 	Ac""  	HHSYY 	 	 	D	Hs   ">
A
Ac                   6   e Zd ZdZdZddddddZd	eeef         d
eeef         fdZ	d	eeef         d
eeef         fdZ
d	eeef         d
eeef         fdZd	eeef         d
eeef         fdZd	eeef         d
eeef         fdZd	eeef         d
eeef         fdZd	eeef         d
eeef         fdZd	eeef         d
eeef         fdZd	eeef         d
eeef         fdZd	eeef         d
eeef         fdZd	eeef         d
eeef         fdZdS )V5toV4zAdapt msg protocol v5 to v44.1pyoutpyinpyerrobject_info_requestobject_info_reply)execute_resultexecute_inputr6   inspect_requestinspect_replyr#   r   c                 v    |d                              dd           |d                              dd           |S )r%   r.   rB   Nparent_headerpopr'   s     r   r)   zV5toV4.update_header   s<    H)T***O  D111
r   c                    i }|d         }dD ]}||v rt          ||                   ||<   |                    dd          dk    rd|v rt          |d                   |d<   |                    di           }|                    d	d          }|                    d
|           d|v r)|                    dt          |d                              ||d<   |S )Handle a kernel info reply.r4   )language_versionprotocol_versionimplementationr   ipythonimplementation_versionipython_versionlanguage_infonamelanguagerB   r^   )rK   r9   
setdefault)r(   r#   v4cr4   keyrd   rf   s          r   kernel_info_replyzV5toV4.kernel_info_reply   s    i.; 	> 	>Cg~~/==C;;',,	99>VZa>a>a%9'BZ:[%\%\C!"OR88 $$VR00z8,,,%%NN-/CMR[D\/]/]^^^I
r   c                 B    |d         }|                     dg            |S )Handle an execute request.r4   user_variablesrg   r(   r#   r4   s      r   execute_requestzV5toV4.execute_request   s'    i.+R000
r   c                 B    |d         }|                     di            |S )Handle an execute reply.r4   rm   rn   ro   s      r   execute_replyzV5toV4.execute_reply   s'    i.+R000
r   c                     |d         }|d         }|d         }t          ||          \  }}i x}|d<   d|d<   ||d<   d|d<   ||d<   |S )	Handle a complete request.r4   r	   r
   r   textr   Nblock)r   )r(   r#   r4   r	   r
   r   new_contents          r   complete_requestzV5toV4.complete_request   sm    i.v\*
'j99j'))c)n F"F#G$.L!
r   c                     |d         }|                     d          }|                     d          }||z
  }|d         d         d|         |d<   |                     dd           |S )	Handle a complete reply.r4   cursor_start
cursor_endr   r   Nmatched_textmetadatarZ   )r(   r#   r4   r|   r}   	match_lens         r   complete_replyzV5toV4.complete_reply   sm    i.{{>22[[..
-	"))"4Q"7

"CJ%%%
r   c                     |d         }|d         }|d         }t          ||          \  }}i x}|d<   t          ||          |d<   |d         |d<   |S )zHandle an object info request.r4   r	   r
   onamedetail_level)r   r   )r(   r#   r4   r	   r
   r   r   rx   s           r   rR   zV5toV4.object_info_request   sg    i.v\*
tZ00a'))c)n/jAAG&-n&=N#
r   c                     ddd|d<   |S )1inspect_reply can't be easily backward compatibleFunknown)foundr   r4   r&   r'   s     r   rS   zV5toV4.object_info_reply   s    #(9==I
r   c                 F    |d         }|                     d          |d<   |S )Handle a stream message.r4   rv   datarZ   ro   s      r   streamzV5toV4.stream   %    i.!++f--
r   c                     |d         }|                     dd           |d         }d|v r/	 t          j        |d                   |d<   n# t          $ r Y nw xY w|S )zHandle a display data message.r4   sourcedisplayr   application/json)rg   jsondumps	Exceptionr(   r#   r4   r   s       r   display_datazV5toV4.display_data   s    i.8Y///v%%+/:d;M6N+O+O'((    
   A
 

AAc                 >    |d                              dd           |S )Handle an input request.r4   passwordNrZ   r'   s     r   input_requestzV5toV4.input_request   s!    I:t,,,
r   N)r<   r=   r>   r?   rB   r"   r   r@   r   r)   rj   rp   rs   ry   r   rR   rS   r   r   r   r&   r   r   rM   rM   u   sb       %%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   rM   c                   l   e Zd ZdZdZd ej                                        D             Zdee	e
f         dee	e
f         fdZdee	e
f         dee	e
f         fdZdee	e
f         dee	e
f         fdZdee	e
f         dee	e
f         fd	Zdee	e
f         dee	e
f         fd
Zdee	e
f         dee	e
f         fdZdee	e
f         dee	e
f         fdZdee	e
f         dee	e
f         fdZdee	e
f         dee	e
f         fdZdee	e
f         dee	e
f         fdZdee	e
f         dee	e
f         fdZdS )V4toV5zConvert msg spec V4 to V5z5.0c                     i | ]\  }}||	S r&   r&   ).0krI   s      r   
<dictcomp>zV4toV5.<dictcomp>   s    AAATQAqAAAr   r#   r   c                 V    | j         |d         d<   |d         r| j         |d         d<   |S )r%   r.   rB   rY   )rB   r'   s     r   r)   zV4toV5.update_header   s5    #'<Hi  	;.2lC +
r   c                 d   |d         }dD ]7}||v r1d                     t          t          ||                             ||<   8|                    dd           |d                             d          r!d|v rd	|d
<   |                    d          |d<   |                    d          }|                    di           }|                    d|           d|v rQd                     t          t          |                    d                              }|                    d|           d|d<   |S )r]   r4   )r_   rc   rD   r_   rN   rf   pythonrc   ra   r`   rb   rd   re   r^   rB   r   banner)joinmapr@   rg   
startswithr[   )r(   r#   r4   ri   rf   rd   r^   s          r   rj   zV4toV5.kernel_info_reply   s@   i.: 	@ 	@Cg~~"xxC(>(>??-u555:))(33 	O8IW8T8T(1G$%07<M0N0NG,-;;z****?B??  222(("xxC=O1P1P(Q(QRR$$Y0@AAA
r   c                     |d         }|                     dg           }|                    di           }|D ]}|||<   |S )rl   r4   rm   user_expressions)r[   rg   )r(   r#   r4   rm   r   rI   s         r   rp   zV4toV5.execute_request  sX    i. %5r::"--.@"EE 	$ 	$A"#Q
r   c                 X   |d         }|                     di           }|                    di           }|r|                    |           |                    dg           D ]G}|                    dd          dk    r+d|v r'd	|vri |d	<   |                    d          |d	         d
<   H|S )rr   r4   r   rm   payloadr   Npagerv   r   
text/plain)rg   r[   updater9   )r(   r#   r4   r   rm   r   s         r   rs   zV4toV5.execute_reply  s    i."--.@"EE %5r:: 	4##N333 {{9b11 	D 	DG{{8T**f44&G:K:K((&(GFO07F0C0C-
r   c                 P    |d         }i x}|d<   |d         |d<   |d         |d<   |S )ru   r4   r   r	   r
   r&   )r(   r#   old_contentrx   s       r   ry   zV4toV5.complete_request0  s<    )n'))c)n)&1F$/$=L!
r   c                     |d         }ddix}|d<   |d         |d<   |d         rt          |d                    |d<   nd|d<   d|d<   i |d	<   |S )
r{   r4   r5   okr   r~   r|   Nr}   r   r   )r(   r#   r4   rx   s       r   r   zV4toV5.complete_reply9  s~     i.(0$'77c)n!(!3I>" 	/+.w~/F+G+G*GK'' +/K'$(L!"$J
r   c                 x    |d         }|d         }i x}|d<   ||d<   t          |          |d<   |d         |d<   |S )zHandle an inspect request.r4   r   r	   r
   r   r   )r(   r#   r4   re   rx   s        r   rV   zV4toV5.inspect_requestK  sQ    i.w'))c)n"F$'IIL!&-n&=N#
r   c                    |d         }ddix}|d<   |d         x}|d<   i x|d<   }i |d<   |rg }dD ]5}|                     |d          r|                    ||                     n6d	D ]5}|                     |d          r|                    ||                     n6|s|                    d
           d                    |          |d<   |S )r   r4   r5   r   r   r   r   )call_definit_definition
definitionF)call_docstringinit_docstring	docstringz<empty docstring>
r   )r9   rF   r   )r(   r#   r4   rx   r   r   linesri   s           r   rW   zV4toV5.inspect_replyV  s   i.(0$'77c)n'.w'77G$%''Fd"$J 	2ED  ;;sE** LL...E I  ;;sE** LL...E  20111!%5!1!1D
r   c                 F    |d         }|                     d          |d<   |S )r   r4   r   rv   rZ   ro   s      r   r   zV4toV5.streamn  r   r   c                     |d         }|                     dd           |d         }d|v r/	 t          j        |d                   |d<   n# t          $ r Y nw xY w|S )zHandle display data.r4   r   Nr   r   )r[   r   loadsr   r   s       r   r   zV4toV5.display_datat  s}    i.Hd###v%%+/:d;M6N+O+O'((    
r   c                 >    |d                              dd           |S )r   r4   r   Frn   r'   s     r   r   zV4toV5.input_request  s!    I!!*e444
r   N)r<   r=   r>   r?   rB   rM   r"   itemsr   r@   r   r)   rj   rp   rs   ry   r   rV   rW   r   r   r   r&   r   r   r   r      sj       ##G BAV%8%>%>%@%@AA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      r   r   r#   
to_versionc                    ddl m} | d         }d|vr |            |d<   d|v r/t          |d                             d          d                   }nd}t                              ||fd	          }|| S  ||           S )
aS  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   )utcnowr.   daterB   rD   r      N)sessionr   rG   rE   adaptersr9   )r#   r   r   r.   from_versionadapters         r   adaptr     s    $  ]FVvF6),22377:;; llL*5t<<G
73<<r   ))   r   )r   r   )r?   r   retypingr   r   r   r   _versionr   r@   rG   r   compileUNICODEr   r   Ir   r   r!   rK   rM   r   r   r   r&   r   r   <module>r      s   - -  				 ) ) ) ) ) ) ) ) ) ) ) ) + + + + + +s  c3h    " ORZ88rz,
33bj-rtbj/@AA3 C C    ., , , , , , , ,^# $s)    v v v v vW v v vrX X X X XW X X Xv 2Gq1I  tCH~ 3 dSVX[S[n    H FHHFHH r   