
    Jj8              	          d Z ddlZddlZddl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   )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       j/home/rurouni/.cache/uv/archive-v0/6mr0qdqUAO9GXgnL/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_headerA       
r   c                     |S )zUpdate the metadata.r#   r$   s     r   update_metadatazAdapter.update_metadataE   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_typeI   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_errorQ   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)   r-   getattrgetr/   )r%   r    r+   handlers       r   __call__zAdapter.__call__X   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   dictstr__annotations__r   r&   r)   r-   r/   r8   r#   r   r   r   r   9   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)r@   vparts      r   _version_str_to_listrI   h   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_inputr3   inspect_requestinspect_replyr    r   c                 v    |d                              dd           |d                              dd           |S )r"   r+   r@   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.r1   )language_versionprotocol_versionimplementationr
   ipythonimplementation_versionipython_versionlanguage_infonamelanguager@   r\   )rI   r6   
setdefault)r%   r    v4cr1   keyrb   rd   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.r1   user_variablesre   r%   r    r1   s      r   execute_requestzV5toV4.execute_request   s'    i.+R000
r   c                 B    |d         }|                     di            |S )Handle an execute reply.r1   rk   rl   rm   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.r1   r   r   r
   textr   Nblock)r   )r%   r    r1   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.r1   cursor_start
cursor_endr   r   Nmatched_textmetadatarX   )r%   r    r1   rz   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.r1   r   r   onamedetail_level)r   r   )r%   r    r1   r   r   _liner   rv   s           r   rP   zV5toV4.object_info_request   sg    i.v\*
j11q'))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   r1   r#   r$   s     r   rQ   zV5toV4.object_info_reply   s    #(9==I
r   c                 F    |d         }|                     d          |d<   |S )Handle a stream message.r1   rt   datarX   rm   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.r1   sourcedisplayr   application/json)re   jsondumps	Exceptionr%   r    r1   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.r1   passwordNrX   r$   s     r   input_requestzV5toV4.input_request   s!    I:t,,,
r   N)r9   r:   r;   r<   r@   r   r=   r>   r   r&   rh   rn   rq   rw   r   rP   rQ   r   r   r   r#   r   r   rK   rK   v   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   rK   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krG   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+   r@   rW   )r@   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[   r1   )r]   ra   rB   r]   rL   rd   pythonra   r_   r^   r`   rb   rc   r\   r@   r
   banner)joinmapr>   re   
startswithrY   )r%   r    r1   rg   rd   rb   r\   s          r   rh   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 )rj   r1   rk   user_expressions)rY   re   )r%   r    r1   rk   r   rG   s         r   rn   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 )rp   r1   r   rk   payloadr   Npagert   r   
text/plain)re   rY   updater6   )r%   r    r1   r   rk   r   s         r   rq   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 )rs   r1   r   r   r   r#   )r%   r    old_contentrv   s       r   rw   zV4toV5.complete_request1  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 )
ry   r1   r2   okr   r|   rz   Nr{   r}   r   )r%   r    r1   rv   s       r   r   zV4toV5.complete_reply:  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.r1   r   r   r   r   r   )r%   r    r1   rc   rv   s        r   rT   zV4toV5.inspect_requestL  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   r1   r2   r   r   r   r}   )call_definit_definition
definitionF)call_docstringinit_docstring	docstringz<empty docstring>
r   )r6   rD   r   )r%   r    r1   rv   r   r   linesrg   s           r   rU   zV4toV5.inspect_replyW  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   r1   r   rt   rX   rm   s      r   r   zV4toV5.streamo  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.r1   r   Nr   r   )rY   r   loadsr   r   s       r   r   zV4toV5.display_datau  s}    i.Hd###v%%+/:d;M6N+O+O'((    
r   c                 >    |d                              dd           |S )r   r1   r   Frl   r$   s     r   r   zV4toV5.input_request  s!    I!!*e444
r   N)r9   r:   r;   r<   r@   rK   r   itemsr=   r>   r   r&   rh   rn   rq   rw   r   rT   rU   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          }|| 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+   dater@   rB   r      )sessionr   rE   rC   adaptersr6   )r    r   r   r+   from_versionadapters         r   adaptr     s    $  ]FVvF6),22377:;; llL*566G
73<<r   ))   r   )r   r   )r<   r   retypingr   _versionr   r>   rE   tupler   compileUNICODEr   r   Ir   r   r   listrI   rK   r   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   