o
    ҷhV2                     @  sL  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G dd dejZG dd dejZd?ddZd@ddZdAddZ		dBdCd#d$Z									dDdEd4d5Zed6eG d7d8 d8Zed9eG d:d; d;Zed<eG d=d> d>ZdS )F    )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   b/var/www/html/venv/lib/python3.10/site-packages/selenium/webdriver/common/devtools/v118/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Zded< dd Zedd ZdS )TraceConfigNtyping.Optional[str]record_modetyping.Optional[float]trace_buffer_size_in_kb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r5| j|d< | jd urDdd | jD |d< | jd urSd	d | jD |d
< | jd urbdd | jD |d< | j	d urn| j	
 |d< |S )N
recordModetraceBufferSizeInKbenableSamplingenableSystraceenableArgumentFilterc                 S     g | ]}|qS r   r   .0ir   r   r   
<listcomp>I       z'TraceConfig.to_json.<locals>.<listcomp>includedCategoriesc                 S  r4   r   r   r5   r   r   r   r8   K   r9   excludedCategoriesc                 S  r4   r   r   r5   r   r   r   r8   M   r9   syntheticDelaysmemoryDumpConfig)r
   r$   r&   r(   r)   r*   r+   r,   r-   r.   r   )r   r   r   r   r   r   <   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 r7t|d nd d|v rEdd |d D nd d	|v rSd
d |d	 D nd d|v radd |d D nd d|v rot|d d	S d d	S )Nr/   r0   r1   r2   r3   r:   c                 S     g | ]}t |qS r   strr5   r   r   r   r8   Z       z)TraceConfig.from_json.<locals>.<listcomp>r;   c                 S  r>   r   r?   r5   r   r   r   r8   [   rA   r<   c                 S  r>   r   r?   r5   r   r   r   r8   \   rA   r=   )	r$   r&   r(   r)   r*   r+   r,   r-   r.   )r@   floatboolr   r   r   r   r   r   r   R   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   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   i      zStreamFormat.to_jsonc                 C  r   r   r   r   r   r   r   r   l   r   zStreamFormat.from_jsonN)	r   r   r   r   JSONPROTOr   r    r   r   r   r   r   rF   a   s    rF   c                   @  rE   )	StreamCompressionzB
    Compression type to use for traces returned via streams.
    nonegzipc                 C  rH   r   rI   r   r   r   r   r   x   rK   zStreamCompression.to_jsonc                 C  r   r   r   r   r   r   r   r   {   r   zStreamCompression.from_jsonN)	r   r   r   r   NONEGZIPr   r    r   r   r   r   r   rN   q   s    rN   c                   @  0   e Zd ZdZdZdZdZdd Zedd Z	d	S )
MemoryDumpLevelOfDetailz
    Details exposed when memory request explicitly declared.
    Keep consistent with memory_dump_request_args.h and
    memory_instrumentation.mojom
    
backgroundlightdetailedc                 C  rH   r   rI   r   r   r   r   r      rK   zMemoryDumpLevelOfDetail.to_jsonc                 C  r   r   r   r   r   r   r   r      r   z!MemoryDumpLevelOfDetail.from_jsonN)
r   r   r   r   
BACKGROUNDLIGHTDETAILEDr   r    r   r   r   r   r   rT      s    rT   c                   @  rS   )
TracingBackenda  
    Backend type to use for tracing. ``chrome`` uses the Chrome-integrated
    tracing service and is supported on all platforms. ``system`` is only
    supported on Chrome OS and uses the Perfetto system tracing service.
    ``auto`` chooses ``system`` when the perfettoConfig provided to Tracing.start
    specifies at least one non-Chrome data source; otherwise uses ``chrome``.
    autochromesystemc                 C  rH   r   rI   r   r   r   r   r      rK   zTracingBackend.to_jsonc                 C  r   r   r   r   r   r   r   r      r   zTracingBackend.from_jsonN)
r   r   r   r   AUTOCHROMESYSTEMr   r    r   r   r   r   r   r[      s    r[   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   end   s   
rf   <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.
    rc   zTracing.getCategoriesc                 S  r>   r   r?   r5   r   r   r   r8      rA   z"get_categories.<locals>.<listcomp>
categoriesr   rd   r   r   r   get_categories   s
   ri   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rc   paramsNr
   )rj   rm   re   r   r   r   r   record_clock_sync_marker   s   
ro   deterministicr'   level_of_detail(typing.Optional[MemoryDumpLevelOfDetail]Ctyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[str, bool]]c                 c  sT    t  }| dur| |d< |dur| |d< d|d}|V }t|d t|d fS )a  
    Request a global memory dump.

    :param deterministic: *(Optional)* Enables more deterministic results by forcing garbage collection
    :param level_of_detail: *(Optional)* Specifies level of details in memory dump. Defaults to "detailed".
    :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.
    Nrp   levelOfDetailzTracing.requestMemoryDumprl   dumpGuidsuccess)r
   r   r@   rC   )rp   rq   rm   re   r   r   r   r   request_memory_dump   s   

rw   rh   r#   optionsbuffer_usage_reporting_intervalr%   transfer_modestream_formattyping.Optional[StreamFormat]stream_compression"typing.Optional[StreamCompression]trace_configtyping.Optional[TraceConfig]perfetto_configtracing_backendtyping.Optional[TracingBackend]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urJ||	d	< |durT| |	d
< d|	d}
|
V }dS )a]  
    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)*
    :param perfetto_config: *(Optional)* Base64-encoded serialized perfetto.protos.TraceConfig protobuf message When specified, the parameters ````categories````, ````options````, ````traceConfig```` are ignored.
    :param tracing_backend: *(Optional)* Backend type (defaults to ````auto```)
    Nrh   rx   bufferUsageReportingIntervaltransferModestreamFormatstreamCompressiontraceConfigperfettoConfigtracingBackendzTracing.startrl   )r
   r   )rh   rx   ry   rz   r{   r}   r   r   r   rm   re   r   r   r   r   start   s0   
r   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 )BufferUsager%   percent_fullevent_countrJ   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
eventCountrJ   )r   r   rJ   )rB   r   r   r   r   r   *  s   zBufferUsage.from_jsonN)r   r   r	   r   )r   r   r   rD   r    r   r   r   r   r   r     s   
 r   zTracing.dataCollectedc                   @  s(   e Zd ZU dZded< ed
ddZd	S )DataCollectedz
    Contains a bucket of collected trace events. When tracing is stopped collected events will be
    sent as a sequence of dataCollected events followed by tracingComplete event.
    ztyping.List[dict]rJ   r   r   r	   c                 C  s   | dd |d D dS )Nc                 S  r>   r   rn   r5   r   r   r   r8   ?  rA   z+DataCollected.from_json.<locals>.<listcomp>rJ   rI   r   r   r   r   r   r   <  s   zDataCollected.from_jsonN)r   r   r	   r   r   r   r   r   rD   r    r   r   r   r   r   r   3  s
   
 r   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.
    rC   data_loss_occurredz typing.Optional[io.StreamHandle]streamr|   trace_formatr~   r}   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   traceFormatr   )r   r   r   r}   )rC   r   StreamHandler   rF   rN   r   r   r   r   r   T  s   
zTracingComplete.from_jsonN)r   r   r	   r   r   r   r   r   r   r   C  s   
 r   )r	   rb   )r	   rg   )rj   r@   r	   rb   )NN)rp   r'   rq   rr   r	   rs   )	NNNNNNNNN)rh   r#   rx   r#   ry   r%   rz   r#   r{   r|   r}   r~   r   r   r   r#   r   r   r	   rb   )
__future__r   utilr   r   dataclassesr   enumtyping r   r
   r   r"   EnumrF   rN   rT   r[   rf   ri   ro   rw   r   r   r   r   r   r   r   r   <module>   sL   B



2