o
    ҷh<)                     @  s"  d dl mZ ddlmZmZ d dlmZ d dlZd dlZddl	m
Z
 G dd deZeG d	d
 d
ZG dd dejZG dd dejZd6ddZd7ddZd8ddZ	d9d:ddZ							d;d<d+d,Zed-eG d.d/ d/Zed0eG d1d2 d2Zed3eG d4d5 d5ZdS )=    )annotations   )event_classT_JSON_DICT)	dataclassN)ioc                      s8   e Zd ZdZdddZedddZ fd	d
Z  ZS )MemoryDumpConfigz[
    Configuration for memory dump. Used only when "memory-infra" category is enabled.
    returndictc                 C  s   | S N selfr   r   a/var/www/html/venv/lib/python3.10/site-packages/selenium/webdriver/common/devtools/v85/tracing.pyto_json   s   zMemoryDumpConfig.to_jsonjsonc                 C     | |S r   r   clsr   r   r   r   	from_json      zMemoryDumpConfig.from_jsonc                   s   d t  S )NzMemoryDumpConfig({}))formatsuper__repr__r   	__class__r   r   r      s   zMemoryDumpConfig.__repr__)r	   r
   )r   r
   r	   r   )	__name__
__module____qualname____doc__r   classmethodr   r   __classcell__r   r   r   r   r      s    
r   c                   @  s   e Zd ZU dZded< dZded< dZded< dZded< dZded	< dZ	ded
< dZ
ded< dZded< dd Zedd ZdS )TraceConfigNtyping.Optional[str]record_modetyping.Optional[bool]enable_samplingenable_systraceenable_argument_filterz!typing.Optional[typing.List[str]]included_categoriesexcluded_categoriessynthetic_delaysz!typing.Optional[MemoryDumpConfig]memory_dump_configc                 C  s   t  }| jd ur| j|d< | jd ur| j|d< | jd ur!| j|d< | jd ur+| j|d< | jd ur:dd | jD |d< | jd urIdd | jD |d	< | jd urXd
d | jD |d< | jd urd| j	 |d< |S )N
recordModeenableSamplingenableSystraceenableArgumentFilterc                 S     g | ]}|qS r   r   .0ir   r   r   
<listcomp>C       z'TraceConfig.to_json.<locals>.<listcomp>includedCategoriesc                 S  r1   r   r   r2   r   r   r   r5   E   r6   excludedCategoriesc                 S  r1   r   r   r2   r   r   r   r5   G   r6   syntheticDelaysmemoryDumpConfig)
r
   r$   r&   r'   r(   r)   r*   r+   r,   r   )r   r   r   r   r   r   8   s$   











zTraceConfig.to_jsonc                 C  s   | d|v rt |d nd d|v rt|d nd d|v r!t|d nd d|v r,t|d nd d|v r:dd |d D nd d|v rHd	d |d D nd d
|v rVdd |d
 D nd d|v rdt|d dS d dS )Nr-   r.   r/   r0   r7   c                 S     g | ]}t |qS r   strr2   r   r   r   r5   S       z)TraceConfig.from_json.<locals>.<listcomp>r8   c                 S  r;   r   r<   r2   r   r   r   r5   T   r>   r9   c                 S  r;   r   r<   r2   r   r   r   r5   U   r>   r:   )r$   r&   r'   r(   r)   r*   r+   r,   )r=   boolr   r   r   r   r   r   r   L   s   zTraceConfig.from_json)r   r   r   r$   __annotations__r&   r'   r(   r)   r*   r+   r,   r   r    r   r   r   r   r   r"      s   
 r"   c                   @  ,   e Zd ZdZdZdZdd Zedd ZdS )	StreamFormatz
    Data format of a trace. Can be either the legacy JSON format or the
    protocol buffer format. Note that the JSON format will be deprecated soon.
    r   protoc                 C     | j S r   valuer   r   r   r   r   b      zStreamFormat.to_jsonc                 C  r   r   r   r   r   r   r   r   e   r   zStreamFormat.from_jsonN)	r   r   r   r   JSONPROTOr   r    r   r   r   r   r   rB   Z   s    rB   c                   @  rA   )	StreamCompressionzB
    Compression type to use for traces returned via streams.
    nonegzipc                 C  rD   r   rE   r   r   r   r   r   q   rG   zStreamCompression.to_jsonc                 C  r   r   r   r   r   r   r   r   t   r   zStreamCompression.from_jsonN)	r   r   r   r   NONEGZIPr   r    r   r   r   r   r   rJ   j   s    rJ   r	   0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]c                  c  s    ddi} | V }dS )z'
    Stop trace events collection.
    methodzTracing.endNr   cmd_dictr   r   r   r   endy   s   
rS   <typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[str]]c                  c  s"    ddi} | V }dd |d D S )zc
    Gets supported tracing categories.

    :returns: A list of supported tracing categories.
    rP   zTracing.getCategoriesc                 S  r;   r   r<   r2   r   r   r   r5      r>   z"get_categories.<locals>.<listcomp>
categoriesr   rQ   r   r   r   get_categories   s
   rV   sync_idr=   c                 c  s$    t  }| |d< d|d}|V }dS )zh
    Record a clock sync marker in the trace.

    :param sync_id: The ID of this clock sync marker
    syncIdzTracing.recordClockSyncMarkerrP   paramsNr
   )rW   rZ   rR   r   r   r   r   record_clock_sync_marker   s   
r\   deterministicr%   Ctyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[str, bool]]c                 c  s@    t  }| dur| |d< d|d}|V }t|d t|d fS )aI  
    Request a global memory dump.

    :param deterministic: *(Optional)* Enables more deterministic results by forcing garbage collection
    :returns: A tuple with the following items:

        0. **dumpGuid** - GUID of the resulting global memory dump.
        1. **success** - True iff the global memory dump succeeded.
    Nr]   zTracing.requestMemoryDumprY   dumpGuidsuccess)r
   r=   r?   )r]   rZ   rR   r   r   r   r   request_memory_dump   s   

ra   rU   r#   optionsbuffer_usage_reporting_intervaltyping.Optional[float]transfer_modestream_formattyping.Optional[StreamFormat]stream_compression"typing.Optional[StreamCompression]trace_configtyping.Optional[TraceConfig]c           
      c  s    t  }| dur| |d< |dur||d< |dur||d< |dur$||d< |dur.| |d< |dur8| |d< |durB| |d< d	|d
}|V }	dS )a7  
    Start trace events collection.

    :param categories: *(Optional)* Category/tag filter
    :param options: *(Optional)* Tracing options
    :param buffer_usage_reporting_interval: *(Optional)* If set, the agent will issue bufferUsage events at this interval, specified in milliseconds
    :param transfer_mode: *(Optional)* Whether to report trace events as series of dataCollected events or to save trace to a stream (defaults to ```ReportEvents````).
    :param stream_format: *(Optional)* Trace data format to use. This only applies when using ````ReturnAsStream```` transfer mode (defaults to ````json````).
    :param stream_compression: *(Optional)* Compression format to use. This only applies when using ````ReturnAsStream```` transfer mode (defaults to ````none```)
    :param trace_config: *(Optional)*
    NrU   rb   bufferUsageReportingIntervaltransferModestreamFormatstreamCompressiontraceConfigzTracing.startrY   )r
   r   )
rU   rb   rc   re   rf   rh   rj   rZ   rR   r   r   r   r   start   s(   
rq   zTracing.bufferUsagec                   @  s4   e Zd ZU ded< ded< ded< eddd	Zd
S )BufferUsagerd   percent_fullevent_countrF   r   r   r	   c                 C  sN   | d|v rt |d nd d|v rt |d nd d|v r#t |d dS d dS )NpercentFull
eventCountrF   )rs   rt   rF   )floatr   r   r   r   r      s   zBufferUsage.from_jsonN)r   r   r	   rr   )r   r   r   r@   r    r   r   r   r   r   rr      s   
 rr   zTracing.dataCollectedc                   @  s(   e Zd ZU dZded< ed
ddZd	S )DataCollectedz
    Contains an bucket of collected trace events. When tracing is stopped collected events will be
    send as a sequence of dataCollected events followed by tracingComplete event.
    ztyping.List[dict]rF   r   r   r	   c                 C  s   | dd |d D dS )Nc                 S  r;   r   r[   r2   r   r   r   r5     r>   z+DataCollected.from_json.<locals>.<listcomp>rF   rE   r   r   r   r   r   r     s   zDataCollected.from_jsonN)r   r   r	   rx   r   r   r   r   r@   r    r   r   r   r   r   rx      s
   
 rx   zTracing.tracingCompletec                   @  s@   e Zd ZU dZded< ded< ded< ded	< edddZdS )TracingCompletez
    Signals that tracing is stopped and there is no trace buffers pending flush, all data were
    delivered via dataCollected events.
    r?   data_loss_occurredz typing.Optional[io.StreamHandle]streamrg   trace_formatri   rh   r   r   r	   c                 C  s`   | t |d d|v rtj|d nd d|v rt|d nd d|v r,t|d dS d dS )NdataLossOccurredr|   traceFormatro   )r{   r|   r}   rh   )r?   r   StreamHandler   rB   rJ   r   r   r   r   r     s   
zTracingComplete.from_jsonN)r   r   r	   rz   ry   r   r   r   r   rz   
  s   
 rz   )r	   rO   )r	   rT   )rW   r=   r	   rO   r   )r]   r%   r	   r^   )NNNNNNN)rU   r#   rb   r#   rc   rd   re   r#   rf   rg   rh   ri   rj   rk   r	   rO   )
__future__r   utilr   r   dataclassesr   enumtyping r   r
   r   r"   EnumrB   rJ   rS   rV   r\   ra   rq   rr   rx   rz   r   r   r   r   <module>   sB   ;



*