
    tf                         d 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mZ ddlmZmZ ddlmZ  G d d	      Zd
dddddZy)zNavigator Watcher module.    N)Any	AwaitableDictListUnion)helper)TimeoutError)FrameManagerFrame)
merge_dictc                       e Zd ZdZ	 ddedededededdfd	Z	deddfd
Z
ded   fdZdefdZddeddfdZddeddfdZdedee   defdZddZddZy)NavigatorWatcherzNavigatorWatcher class.NframeManagerframetimeoutoptionskwargsreturnc                     t        ||      } j                  |       | _        | _        |j                   _        | _        d _        t        j                   j                  t        j                  j                   j                        t        j                   j                  t        j                  j                   j                        t        j                   j                  t        j                  j                    j                        g _         j                  j$                  j&                   _         j&                  j)                          _         j&                  j-                  t/        j0                   j*                   j3                         gt4        j6                  j8                               _         j:                  j=                   fd       y)zMake new navigator watcher.F)return_whenc                 $    j                         S N_cleanup)futselfs    e/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/pyppeteer/navigator_watcher.py<lambda>z+NavigatorWatcher.__init__.<locals>.<lambda>6   s         N)r   _validate_options_frameManager_frame	_loaderId_initialLoaderId_timeout_hasSameDocumentNavigationr   addEventListenerr
   EventsLifecycleEvent_checkLifecycleCompleteFrameNavigatedWithinDocument_navigatedWithinDocumentFrameDetached_eventListeners_client_loopcreate_future_lifecycleCompletePromisecreate_taskasynciowait_createTimeoutPromise
concurrentfuturesFIRST_COMPLETED_navigationPromiseadd_done_callback)r   r   r   r   r   r   s   `     r   __init__zNavigatorWatcher.__init__   s{    Wf-w') %*/'##""##22,,
 ##""##@@--
 ##""##11,, 
" ''//55
)-)A)A)C&"&**"8"8**&&(G
 "))99:; #< 	11'	)r   c                 2   d|v rt        d      d|v rt        d      |j                  d      dk(  rt        d      |j                  d      dk(  r(d	d l}|j                  t              j                  d
       |j                  dd      }t        |t              r|}n+t        |t              r|g}nt        dt        |             g | _        |D ]B  }t        j                  |      }|t        d|       | j                  j                  |       D y )NnetworkIdleTimeoutz3`networkIdleTimeout` option is no longer supported.networkIdleInflightz4`networkIdleInflight` option is no longer supported.	waitUntilnetworkidlezH`networkidle` option is no logner supported. Use `networkidle2` instead.documentloadedr   zO`documentloaded` option is no longer supported. Use `domcontentloaded` instead.loadz>`waitUntil` option should be str or list of str, but got type z%Unknown value for options.waitUntil: )
ValueErrorgetlogging	getLogger__name__warning
isinstanceliststr	TypeErrortype_expectedLifecyclepyppeteerToProtocolLifecycleappend)r   r   rF   
_waitUntilr@   valueprotocolEvents          r   r    z"NavigatorWatcher._validate_options8   s>   7*EG G G+FH H;;{#}4./ / ;;{#'77h'//23 [[f5
j$'"I
C(#I  $Z 013  .0 	:E8<<UCM$ ;E7CE E##**=9	:r   c                 B     j                   j                          _         j                  rHd j                   dd fd} j                   j	                   |              _         j                  S  j                   j                          _         j                  S )NzNavigation Timeout Exceeded: z ms exceeded.c                     K   t        j                  j                  dz         d {    j                  j	                  t                      y 7 )w)Ni  )r4   sleepr%   _maximumTimerset_exceptionr	   )errorMessager   s   r   _timeout_funcz=NavigatorWatcher._createTimeoutPromise.<locals>._timeout_func_   s@     mmDMMD$8999""00l1KL :s   &AA*Ar   N)r0   r1   rX   r%   r3   _timeout_timer)r   r[   rZ   s   ` @r   r6   z&NavigatorWatcher._createTimeoutPromiseZ   s    !ZZ557==:4==/WLM HLzzG]G]^k^mGnD !!! #'**":":"<D!!!r   c                     | j                   S )zReturn navigation promise.)r:   r   s    r   navigationPromisez"NavigatorWatcher.navigationPromiseh   s    &&&r   c                 R    || j                   k7  ry d| _        | j                          y )NT)r"   r&   r*   r   r   s     r   r,   z)NavigatorWatcher._navigatedWithinDocumentl   s%    DKK*.'$$&r   c                    | j                   j                  | j                  k(  r| j                  sy | j	                  | j                   | j
                        sy | j                  j                         s| j                  j                  d        y y r   )	r"   r#   r$   r&   _checkLifecyclerO   r2   done
set_resultrb   s     r   r*   z(NavigatorWatcher._checkLifecycleCompleter   sn    KK!!T%:%::33##DKK1H1HI--224**55d; 5r   expectedLifecyclec                 |    |D ]  }||j                   vs y |j                  D ]  }| j                  ||      r y y)NFT)_lifecycleEventschildFramesrd   )r   r   rg   eventchilds        r   rd   z NavigatorWatcher._checkLifecycle|   sR    & 	EE222	 && 	E''/@A	 r   c                 $    | j                          y)zCancel navigation.Nr   r_   s    r   cancelzNavigatorWatcher.cancel   s    r   c                     t        j                  | j                         | j                  j	                          | j
                  j	                          | j                  j	                          y r   )r   removeEventListenersr.   r2   rn   rX   r]   r_   s    r   r   zNavigatorWatcher._cleanup   sL    ##D$8$89&&--/!!#""$r   r   r\   )rH   
__module____qualname____doc__r
   r   intr   r   r<   r    r   r6   r`   r,   r*   r   rL   boolrd   rn   r    r   r   r   r      s    ! "&#)\ #)% #)# #)#)14#)9=#)J :  :$  :D"y "'3 ''e 't '<U <d <U tCy !%r   r   rC   DOMContentLoadednetworkIdlenetworkAlmostIdle)rC   domcontentloadedrB   networkidle0networkidle2)rs   r4   concurrent.futuresr7   typingr   r   r   r   r   	pyppeteerr   pyppeteer.errorsr	   pyppeteer.frame_managerr
   r   pyppeteer.utilr   r   rP   rv   r   r   <module>r      sH        4 4  ) 7 %~% ~%D *(!'  r   