
    OJnim
                     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
Z
dZ G d de      Zy# e$ r dZY w xY w)	    N)AbstractRuntime)AbstractRuntimeContext)encode_unicode_codepointsTFc                   J    e Zd ZdZd Zed        Zd	dZd Z G d de	      Z
y)
PyV8Runtimez#Runtime to execute codes with PyV8.c                      y N selfs    D/home/uftp/myenv/lib/python3.12/site-packages/execjs/_pyv8runtime.py__init__zPyV8Runtime.__init__   s        c                      y)NPyV8r
   r   s    r   namezPyV8Runtime.name   s    r   Nc                 $    | j                  |      S r	   )Context)r   sourcecwds      r   _compilezPyV8Runtime._compile   s    ||F##r   c                     t         S r	   _pyv8_availabler   s    r   is_availablezPyV8Runtime.is_available   s    r   c                   <    e Zd ZddZd Zd Zd Zd Zed        Z	y)	PyV8Runtime.Contextc                     || _         y r	   )_sourcer   r   s     r   r   zPyV8Runtime.Context.__init__    s	    !DLr   c                     t         S r	   r   r   s    r   r   z PyV8Runtime.Context.is_available#   s    ""r   c                 h   dj                  t        | j                        t        |            }t        |      }t	        j
                         5 }t	        j                         5 }t        j                  t        t        t        t        f}	 |j                  |      }	 |j                         }| j!                  |      cd d d        cd d d        S # |$ r}t        j                  |      d }~ww xY w# |$ r}t        j                  |      d }~ww xY w# 1 sw Y   nxY wd d d        y # 1 sw Y   y xY w)NzV            (function() {{
                {0};
                {1};
            }})())formatr   r   strr   	JSContextJSEngineJSError
IndexErrorReferenceErrorSyntaxError	TypeErrorcompile
exceptionsProgramErrorrunconvert)r   r   ctxtengine	js_errorsscriptevalues           r   _exec_zPyV8Runtime.Context._exec_&   s    V)$,,7)&1	  [F ! 
+T4==? 
+f!\\:~{T]^	5#^^F3F5"JJLE ||E*
+ 
+ 
+ ! 5$11!445 ! 5$11!445
+ 
+ 
+ 
+ 
+sf   D(#&D
CC1,D<	D(C.C))C..D1D6DDDD	D((D1c                 <    | j                  dt        |      z         S )Nzreturn )exec_r   r    s     r   _evalzPyV8Runtime.Context._eval>   s    ::i*CF*KKLLr   c                 p    t        j                  |      }| j                  dj                  ||            S )Nz {identifier}.apply(this, {args}))
identifierargs)jsondumpsevalr#   )r   r<   r=   s      r   _callzPyV8Runtime.Context._callA   s2    ::d#D99?FFR\cgFhiir   c                    ddl m} t        |t              r|j	                  d      S t        ||j
                        r|D cg c]  }| j                  |       c}S t        ||j                        ry t        ||j                        rDi }|j                         D ]-  }| j                  ||         }|||| j                  |      <   / |S |S c c}w )Nr   )_PyV8utf8)
r   rC   
isinstancebytesdecodeJSArrayr0   
JSFunctionJSObjectkeys)clsobjrC   vretks         r   r0   zPyV8Runtime.Context.convertE   s    "#u%zz&))#u}}-0341A44C!1!12C0 0ACF+A}./CKKN+0 

 5s   CN) )
__name__
__module____qualname__r   r   r7   r:   rA   classmethodr0   r
   r   r   r   r      s1    	"	#	+0	M	j 
	 
	r   r   r	   )rR   rS   rT   __doc__r   propertyr   r   r   r   r   r
   r   r   r   r      s5    -  $7( 7r   r   )r>   execjs._exceptions_exceptionsr-   execjs._abstract_runtimer    execjs._abstract_runtime_contextr   execjs._miscr   r   r   ImportErrorr   r
   r   r   <module>r^      sG     ' 4 C 2 OF/ F  Os   0 ::