
    tf                     N    d Z ddlmZ ddlmZ ddlmZ ddlmZ  G d de	      Z
y)	zTracing module.    )Path)Any)
CDPSession)
merge_dictc                   V    e Zd ZdZdeddfdZddededdfdZde	fd	Z
d
e	de	de	fdZy)Tracingaq  Tracing class.

    You can use :meth:`start` and :meth:`stop` to create a trace file which can
    be opened in Chrome DevTools or
    `timeline viewer <https://chromedevtools.github.io/timeline-viewer/>`_.

    .. code::

        await page.tracing.start({'path': 'trace.json'})
        await page.goto('https://www.google.com')
        await page.tracing.stop()
    clientreturnNc                 .    || _         d| _        d| _        y )NF )_client
_recording_path)selfr	   s     [/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/pyppeteer/tracing.py__init__zTracing.__init__   s    
    optionskwargsc                 &  K   t        ||      }g d}|j                  d|      }d|v r|j                  d       |j                  dd      | _        d| _        | j
                  j                  dd	d
j                  |      d       d{    y7 w)ao  Start tracing.

        Only one trace can be active at a time per browser.

        This method accepts the following options:

        * ``path`` (str): A path to write the trace file to.
        * ``screenshots`` (bool): Capture screenshots in the trace.
        * ``categories`` (List[str]): Specify custom categories to use instead
          of default.
        )z-*zdevtools.timelinez
v8.executez%disabled-by-default-devtools.timelinez+disabled-by-default-devtools.timeline.frametoplevelzblink.consolezblink.user_timinglatencyInfoz+disabled-by-default-devtools.timeline.stackz#disabled-by-default-v8.cpu_profilerz)disabled-by-default-v8.cpu_profiler.hires
categoriesscreenshotsz'disabled-by-default-devtools.screenshotpathr   TzTracing.startReturnAsStream,)transferModer   N)r   getappendr   r   r   sendjoin)r   r   r   defaultCategoriescategoriesArrays        r   startzTracing.start    s      Wf-
 "++l4EFG#""#LM[[,
ll,((?32
  	 	s   BB	B
Bc                    K    j                   j                  j                          j                   j                  d fd        j                   j	                  d       d{    d _         d{   S 7 7 w)z>Stop tracing.

        :return: trace data as string.
        zTracing.tracingCompletec                     j                   j                  j                  j                  | j	                  d      j
                              j                  fd      S )Nstreamc                 B    j                  | j                               S N)
set_resultresult)futcontentPromises    r   <lambda>z0Tracing.stop.<locals>.<lambda>.<locals>.<lambda>M   s    N55cjjlC r   )r   _loopcreate_task_readStreamr   r   add_done_callback)eventr.   r   s    r   r/   zTracing.stop.<locals>.<lambda>J   sJ    $,,,,88  8!4djjAC r   zTracing.endNF)r   r0   create_futureoncer!   r   )r   r.   s   `@r   stopzTracing.stopB   sn     
 ++99;%	
 ll...### 	/#s$   A#B'A=(B8A?9B?Bhandler   c                   K   d}g }|s\| j                   j                  dd|i       d {   }|j                  dd      }|j                  |j                  dd             |s\| j                   j                  dd|i       d {    dj	                  |      }|r:t        |      }|j                  dd	
      5 }|j                  |       d d d        |S |S 7 7 U# 1 sw Y   |S xY ww)NFzIO.readr8   eofdatar   zIO.closewzutf-8)encoding)r   r!   r   r    r"   r   openwrite)	r   r8   r   r:   bufsresponser,   filefs	            r   r2   zTracing._readStreamT   s     !\\..y8V:LMMH,,ue,CKKVR01  ll
Xv,>???:D31  Q v N 	@
 s?   (C+C9C+%!C+C5C+<CC+C+C(#C+r*   )__name__
__module____qualname____doc__r   r   dictr   r%   strr7   r2    r   r   r   r      s[    z d 
 4  #  $  D$C $$ 3 3 r   r   N)rG   pathlibr   typingr   pyppeteer.connectionr   pyppeteer.utilr   objectr   rJ   r   r   <module>rP      s$       + %Vf Vr   