o
    Zh                     @  s   d dl mZ d dlmZmZmZmZmZ d dlm	Z	 d dl
mZ d dlmZ er5d dlmZ d dlmZ nzd dlmZ d dlmZ W n	 eyL   Y nw dd	d
ZG dd de	ZdS )    )annotations)TYPE_CHECKINGAnyOptionalTupleType)BaseTool)guard_import)model_validator)Browserreturn,Tuple[Type[AsyncBrowser], Type[SyncBrowser]]c                   C  s   t ddjt ddjfS )z
    Lazy import playwright browsers.

    Returns:
        Tuple[Type[AsyncBrowser], Type[SyncBrowser]]:
            AsyncBrowser and SyncBrowser classes.
    zplaywright.async_api)module_namezplaywright.sync_api)r	   r    r   r   `/var/www/html/lang_env/lib/python3.10/site-packages/langchain_community/tools/playwright/base.pylazy_import_playwright_browsers   s   
	
r   c                   @  sV   e Zd ZU dZdZded< dZded< eddedddZ	e		ddddZ
dS )BaseBrowserToolzBase class for browser tools.NzOptional['SyncBrowser']sync_browserzOptional['AsyncBrowser']async_browserbefore)modevaluesdictr   r   c                 C  s.   t   |ddu r|ddu rtd|S )z#Check that the arguments are valid.r   Nr   z7Either async_browser or sync_browser must be specified.)r   get
ValueError)clsr   r   r   r   validate_browser_provided)   s   z)BaseBrowserTool.validate_browser_providedOptional[SyncBrowser]Optional[AsyncBrowser]c                 C  s   t   | ||dS )zInstantiate the tool.)r   r   )r   )r   r   r   r   r   r   from_browser2   s   zBaseBrowserTool.from_browser)r   r   r   r   )NN)r   r   r   r   r   r   )__name__
__module____qualname____doc__r   __annotations__r   r
   classmethodr   r   r   r   r   r   r   #   s   
 r   N)r   r   )
__future__r   typingr   r   r   r   r   Zlangchain_core.toolsr   Zlangchain_core.utilsr	   Zpydanticr
   Zplaywright.async_apir   ZAsyncBrowserZplaywright.sync_apiZSyncBrowserImportErrorr   r   r   r   r   r   <module>   s     
