
    ]j4                       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
 ddl	mZ ddl	mZ e G d	 d
             Ze G d d             ZddZ ed      e G d d                    Z ed      e G d d                    Zy)    )annotations   )event_classT_JSON_DICT)	dataclassN)dom)page)runtimec                  D    e Zd ZU dZdZded<   dZded<   d Zed        Z	y)
Annotationz
    Tool annotations
    Nztyping.Optional[bool]	read_only
autosubmitc                    t               }| j                  | j                  |d<   | j                  | j                  |d<   |S )NreadOnlyr   )dictr   r   selfjsons     c/home/ubuntu/.local/lib/python3.12/site-packages/selenium/webdriver/common/devtools/v147/web_mcp.pyto_jsonzAnnotation.to_json   s>    v>>%#~~D??&!%D    c                h     | d|v rt        |d         nd d|v rt        |d               S d       S )Nr   r   )r   r   )boolclsr   s     r   	from_jsonzAnnotation.from_json$   sF    0:d0Bd4
+,3?43GtD./
 	
MQ
 	
r   )
__name__
__module____qualname____doc__r   __annotations__r   r   classmethodr    r   r   r   r      s:     (,I$+ )-J%, 
 
r   r   c                  ~    e Zd ZU dZded<   ded<   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	e
d        Zy)Toolz3
    Definition of a tool that can be invoked.
    strnamedescriptionzpage.FrameIdframe_idNztyping.Optional[dict]input_schemaztyping.Optional[Annotation]r   z"typing.Optional[dom.BackendNodeId]backend_node_idz#typing.Optional[runtime.StackTrace]stack_tracec                   t               }| j                  |d<   | j                  |d<   | j                  j	                         |d<   | j
                  | j
                  |d<   | j                  | j                  j	                         |d<   | j                  | j                  j	                         |d<   | j                  | j                  j	                         |d<   |S )Nr'   r(   frameIdinputSchemar   backendNodeId
stackTrace)	r   r'   r(   r)   r   r*   r   r+   r,   r   s     r   r   zTool.to_jsonF   s    vyyV"..]--//1Y("&"3"3D'"&"2"2":":"<D+$($8$8$@$@$BD!'!%!1!1!9!9!;Dr   c                    | t        |d         t        |d         t        j                  j                  |d         d|v rt	        |d         nd d|v rt
        j                  |d         nd d|v r"t        j                  j                  |d         nd d|v r't        j                  j                  |d               S d       S )	Nr'   r(   r.   r/   r   r0   r1   )r'   r(   r)   r*   r   r+   r,   )
r&   r	   FrameIdr   r   r   r   BackendNodeIdr
   
StackTracer   s     r   r   zTool.from_jsonU   s    T&\"D/0\\++DO<6Ct6Kd=12QUERVZEZ
,,T--@A`dRaeiRiC--77_8MNosLX\`L`**44T,5GH
 	
 gk
 	
r   )r   r   r   r    r!   r*   r   r+   r,   r   r"   r   r#   r   r   r%   r%   ,   sk     I   +/L'. 04K,3 ;?O7> 8<K4; 	
 	
r   r%   c               #     K   ddi} | }yw)z
    Enables the WebMCP domain, allowing events to be sent. Enabling the domain will trigger a toolsAdded event for
    all currently registered tools.
    methodzWebMCP.enableNr#   )cmd_dictr   s     r   enabler9   b   s      	/H >Ds   
zWebMCP.toolsAddedc                  .    e Zd ZU dZded<   edd       Zy)
ToolsAddedz/
    Event fired when new tools are added.
    typing.List[Tool]toolsc                f     | |d   D cg c]  }t         j                  |       c}      S c c}w Nr=   )r=   r%   r   r   r   is      r   r   zToolsAdded.from_jsonv   -    .27m<4>>!$<
 	
<   .N)r   r   returnr;   r   r   r   r    r!   r"   r   r#   r   r   r;   r;   m   !     
 
r   r;   zWebMCP.toolsRemovedc                  .    e Zd ZU dZded<   edd       Zy)ToolsRemovedz-
    Event fired when tools are removed.
    r<   r=   c                f     | |d   D cg c]  }t         j                  |       c}      S c c}w r?   r@   rA   s      r   r   zToolsRemoved.from_json   rC   rD   N)r   r   rE   rI   rF   r#   r   r   rI   rI   }   rG   r   rI   )rE   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None])
__future__r   utilr   r   dataclassesr   enumtyping r   r	   r
   r   r%   r9   r;   rI   r#   r   r   <module>rQ      s    # * !      
 
 
4 2
 2
 2
j  !

 
  "
 "#

 
  $
r   