
    tf&                        d Z ddlZddlZddlZddlZddlmZmZmZm	Z	m
Z
 ddlmZ ddlZddlmZ ddlmZmZ  ej&                  e      Zdej,                  ded	dfd
Zdeded	efdZded	efdZdededed	e	eef   fdZde
e   d	dfdZdddej<                  ej<                   dZde	d	efdZ deded	efdZ!dededeege"f   de#dejH                  d	efdZ%ded ed	e&fd!Z'd"ed	e"fd#Z(y)$zHelper functions.    N)Any	AwaitableCallableDictList)EventEmitter)
CDPSession)ElementHandleErrorTimeoutError_loggermsgreturnc                 j    t         j                  r| j                  |       y| j                  |       y)zLog error messages.N)	pyppeteerDEBUGerrordebug)r   r   s     Z/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/pyppeteer/helper.py
debugErrorr      s!    cc    funargsc                     dj                  |D cg c]  }t        j                  |dn|       c}      }d|  d| d}|S c c}w )z&Convert function and arguments to str.z, 	undefined(z)())joinjsondumps)r   r   arg_argsexprs        r   evaluationStringr#      sR    IICG<?

#+;37 E se2eWADK	s    AexceptionDetailsc                    | j                  d      }|r$|j                  d      xs |j                  d      S | j                  dd      }| j                  dt                     }|r|j                  d      D ]x  }t        |j                  dd            d	z   t        |j                  d
d            z   d	z   t        |j                  d            z   }|j                  dd      }|d| d| dz   }z |S )z5Get exception message from `exceptionDetails` object.	exceptiondescriptionvaluetext 
stackTrace
callFramesurl:
lineNumbercolumnNumberfunctionNamez<anonymous>z
    at z (r   )getdictstr)r$   r&   messager+   	callframelocationr1   s          r   getExceptionMessager8   &   s     $$[1I}}]+Ey}}W/EE""62.G!%%lDF;J#5 	HIIMM%,-3IMM,3457:;IMM.123 
 %==GL)L>H:Q GGG	H Nr   emitter	eventNamehandlerc                 2    | j                  ||       | ||dS )z6Add handler to the emitter and return emitter/handler.r9   r:   r;   )onr=   s      r   addEventListenerr?   9   s     JJy'"Y7KKr   	listenersc                 t    | D ]#  }|d   }|d   }|d   }|j                  ||       % | j                          y)zRemove listeners from emitter.r9   r:   r;   N)remove_listenerclear)r@   listenerr9   r:   r;   s        r   removeEventListenersrE   @   sK     49%[)	9%	73	4
 OOr   )-0NaNNInfinity	-InfinityremoteObjectc                 $   | j                  d      rt        d      | j                  d      }|rQ|dk(  ry|dk(  ry|dk(  rt        j                  S |d	k(  rt        j                   S t        d
j	                  |            | j                  d      S )z!Serialize value of remote object.objectIdz+Cannot extract value when objectId is givenunserializableValuerF   r   rG   NrH   rI   z$Unsupported unserializable value: {}r(   )r2   r
   mathinfformat)rJ   r(   s     r   valueFromRemoteObjectrQ   S   s    
# !NOO23ED=e^j 88Ok!HH9$6==eDF FG$$r   clientc                     |j                  d      }| j                  j                         }|j                  d       |s|S 	 | j	                  dd|i      S # t
        $ r}t        t        |       Y d}~|S d}~ww xY w)zRelease remote object.rL   NzRuntime.releaseObject)r2   _loopcreate_future
set_resultsend	Exceptionr   logger)rR   rJ   rL   fut_nonees        r   releaseObjectr\   g   s     
+H||))+H{{25
  	   	61O	s   A 	A:A55A:	predicatetimeoutloopc                    	
 |j                         
dt        ddf
fddt        ddf
fdd
fd}dt        ddffd}t        | ||      	r|j	                   |             d
	fd	
S )z+Wait for an event emitted from the emitter.targetr   Nc                 (    j                  |        y N)rV   )ra   promises    r   resolveCallbackz%waitForEvent.<locals>.resolveCallback   s    6"r   r&   c                 (    j                  |        y rc   )set_exception)r&   rd   s    r   rejectCallbackz$waitForEvent.<locals>.rejectCallback   s    i(r   c                  t   K   t        j                  dz         d {      t        d             y 7 w)Ni  z(Timeout exceeded while waiting for event)asynciosleepr   )rh   r^   s   r   timeoutTimerz"waitForEvent.<locals>.timeoutTimer   s4     mmGdN+++CD	F 	,s   868c                 6     |       sy           |        y rc    )ra   cleanupr]   re   s    r   	_listenerzwaitForEvent.<locals>._listener   s     	r   c                  D    t        g       r j                          y y rc   )rE   cancel)eventTimeoutrD   r^   s   r   ro   zwaitForEvent.<locals>.cleanup   s!    hZ(! r   )r   N)rU   r   rX   r?   create_task)r9   r:   r]   r^   r_   rl   rp   ro   rs   rD   rd   rh   re   s     ``   @@@@@@r   waitForEventru   z   s       "G# # #)) ) )F
 #  $    I>H''7"
 Nr   objnamec                     | |   }t        |t              st        | dt        |             |dk  rt	        | d|       |S )z;Get and check the value of name in obj is positive integer.z must be integer: r   z must be positive integer: )
isinstanceint	TypeErrortype
ValueError)rv   rw   r(   s      r   get_positive_intr~      s]    IEeS!f&tE{m46 	6	f/w79 	9Lr   funcc                 t    | j                         } | j                  d      s| j                  d      ryd| v ryy)z+Heuristically check function or expression.functionzasync Tz=>F)strip
startswith)r   s    r   	is_jsfuncr      s4    ::<Dz"dooh&?	r   ))__doc__rj   r   loggingrN   typingr   r   r   r   r   pyeer   r   pyppeteer.connectionr	   pyppeteer.errorsr
   r   	getLogger__name__rY   Loggerr   r4   r#   r3   r8   r?   rE   rO   unserializableValueMaprQ   r\   boolfloatAbstractEventLoopru   rz   r~   r   rn   r   r   <module>r      s        7 7   + =			8	$ S T # c c $ 3 &Ll Ls LX LsCx.LDJ 4  
(( % % %(* D  & ,  3  $cUD[1 <A 00 5> F	$ 	c 	c 	C D r   