
    Ng                        d dl mZ d dlZd dlmZmZmZmZmZ d dl	m
Z
mZ d dlmZmZ d dlmZ d dlmZmZ erd dlmZ d dlmZ  G d	 d
e          ZddZddZ G d de          ZdS )    )annotationsN)TYPE_CHECKINGListOptionalSequenceType)AsyncCallbackManagerForToolRunCallbackManagerForToolRun)	BaseModelField)BaseBrowserTool)aget_current_pageget_current_page)Pagec                  ^    e Zd ZU dZ edd          Zded<    ed d	          Zd
ed<   dS )GetElementsToolInputzInput for GetElementsTool..z;CSS selector, such as '*', 'div', 'p', 'a', #id, .classname)descriptionstrselectorc                     dgS )N	innerText r       m/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/tools/playwright/get_elements.py<lambda>zGetElementsToolInput.<lambda>   s     r   z.Set of attributes to retrieve for each element)default_factoryr   z	List[str]
attributesN)__name__
__module____qualname____doc__r   r   __annotations__r   r   r   r   r   r      s         $$EQ  H     "E--D  J      r   r   page	AsyncPager   r   r   Sequence[str]return
List[dict]c                @  K   |                      |           d{V }g }|D ]{}i }|D ]]}|dk    r|                                 d{V }n|                    |           d{V }||                                dk    r|||<   ^|r|                    |           ||S )-Get elements matching the given CSS selector.Nr    query_selector_all
inner_textget_attributestripappend	r#   r   r   elementsresultselementresult	attributevals	            r   _aget_elementsr8   $   s       ,,X66666666HG 
# 
## 	( 	(IK''+2+=+=+?+?%?%?%?%?%?%?#11)<<<<<<<<399;;"#4#4$'y! 	#NN6"""Nr   SyncPagec                   |                      |          }g }|D ]o}i }|D ]Q}|dk    r|                                }n|                    |          }||                                dk    r|||<   R|r|                    |           p|S )r)   r   Nr*   r+   r1   s	            r   _get_elementsr;   8   s     &&x00HG 
# 
## 	( 	(IK''%,%7%7%9%9++I66399;;"#4#4$'y! 	#NN6"""Nr   c                  ^    e Zd ZU dZdZded<   dZded<   eZded<   d	gd
fddZ	d	gd
fddZ
d
S )GetElementsToolzJTool for getting elements in the current web page matching a CSS selector.get_elementsr   namezIRetrieve elements in the current web page matching the given CSS selectorr   zType[BaseModel]args_schemar   Nr   r   r%   run_manager#Optional[CallbackManagerForToolRun]r&   c                    | j         t          d| j                   t          | j                   }t	          |||          }t          j        |d          S )Use the tool.Nz$Synchronous browser not provided to Fensure_ascii)sync_browser
ValueErrorr?   r   r;   jsondumpsselfr   r   rA   r#   r3   s         r   _runzGetElementsTool._runU   s\     $ODIOOPPP 122h
;;z'6666r   (Optional[AsyncCallbackManagerForToolRun]c                   K   | j         t          d| j                   t          | j                    d{V }t	          |||           d{V }t          j        |d          S )rD   Nz%Asynchronous browser not provided to FrE   )async_browserrH   r?   r   r8   rI   rJ   rK   s         r   _arunzGetElementsTool._arunc   s       %PTYPPQQQ&t'9::::::::&tXzBBBBBBBBz'6666r   )r   r   r   r%   rA   rB   r&   r   )r   r   r   r%   rA   rN   r&   r   )r   r   r    r!   r?   r"   r   r   r@   rM   rQ   r   r   r   r=   r=   L   s         TTDS      $8K7777
 &1M;?	7 7 7 7 7" &1M@D	7 7 7 7 7 7 7r   r=   )r#   r$   r   r   r   r%   r&   r'   )r#   r9   r   r   r   r%   r&   r'   )
__future__r   rI   typingr   r   r   r   r   langchain_core.callbacksr	   r
   pydanticr   r   )langchain_community.tools.playwright.baser   *langchain_community.tools.playwright.utilsr   r   playwright.async_apir   r$   playwright.sync_apir9   r   r8   r;   r=   r   r   r   <module>rZ      sz   " " " " " "  @ @ @ @ @ @ @ @ @ @ @ @ @ @        & % % % % % % % E E E E E E       
  5666666444444
 
 
 
 
9 
 
 
   (   (#7 #7 #7 #7 #7o #7 #7 #7 #7 #7r   