
    i8                     b    S r SSKJrJrJr  SSKJr  SSKJr  SSK	J
r
  SS	K	Jr   " S
 S\5      rg)zRuntime Session REST adapter.    )DictAnyOptional   )RestAdapterBase   )RetrySession)RequestsApiError   )IBMRuntimeErrorc                      ^  \ rS rSrSrSSS.rSS\S\S\S	S
4U 4S jjjr    SS\	\   S\	\   S\	\
   S\	\   S	\\\4   4
S jjrSS jrSS jrS	\\\4   4S jrSrU =r$ )RuntimeSession   z+Rest adapter for session related endpoints. z/close)selfclosesession
session_id
url_prefixreturnNc                    > U(       d   [         TU ]  USR                  U5      5        g[         TU ]  USR                  X25      5        g)zJob constructor.

Args:
    session: RetrySession to be used in the adapter.
    session_id: Job ID of the first job in a runtime session.
    url_prefix: Prefix to use in the URL.
z{}/sessionsz{}/sessions/{}N)super__init__format)r   r   r   r   	__class__s       e/home/james-whalen/.local/lib/python3.13/site-packages/qiskit_ibm_runtime/api/rest/runtime_session.pyr   RuntimeSession.__init__   s=     GWm&:&::&FGGW&6&=&=j&UV    backendinstancemax_timemodec                     U R                  S5      n0 nU(       a  XFS'   U(       a  XS'   U(       a  X&S'   U(       a  X6S'   U R                  R                  XVU R                  S9R	                  5       $ )zCreate a sessionr   r"   r   r    max_ttljsonheaders)get_urlr   post_HEADER_JSON_CONTENTr&   )r   r   r    r!   r"   urlpayloads          r   createRuntimeSession.create+   sk     ll6""FO!(I"*J!)I||  D<U<U V[[]]r   c                 \    U R                  S5      nU R                  R                  U5        g)zCancel all jobs in the session.r   N)r(   r   delete)r   r+   s     r   cancelRuntimeSession.cancel?   s"    ll7#C r   c                     SS0nU R                  S5      n U R                  R                  X!U R                  S9  g! [         a(  nUR
                  S:X  a   SnAg[        SU 35      eSnAff = f)zCSet accepting_jobs flag to false, so no more jobs can be submitted.accepting_jobsFr   r%   i  zError closing session: N)r(   r   patchr*   r
   status_coder   )r   r,   r+   exs       r   r   RuntimeSession.closeD   sq    #U+ll6"	FLLs$:S:ST 	F~~$%(?t&DEE		Fs   $< 
A.A)A))A.c                     U R                   R                  U R                  S5      U R                  S9R	                  5       $ )z#Return the details of this session.r   )r'   )r   getr(   _HEADER_JSON_ACCEPTr&   )r   s    r   detailsRuntimeSession.detailsP   s6     ||V 4d>V>VW\\^^r    )r   )NNNN)r   N)__name__
__module____qualname____firstlineno____doc__URL_MAPr	   strr   r   intr   r   r-   r1   r   r<   __static_attributes____classcell__)r   s   @r   r   r      s    5 G
W W# W3 WX\ W W "&"&"&"^#^ 3-^ 3-	^
 sm^ 
c3h^(!

F_c3h _ _r   r   N)rC   typingr   r   r   baser   r   r	   
exceptionsr
   r   r   r>   r   r   <module>rL      s*    $ & & ! " ) )=__ =_r   