a
    bg                     @  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rjd dlmZ d dlmZ n0zd dlmZ d dlmZ W n ey   Y n0 ddd	d
ZG dd de	ZdS )    )annotations)TYPE_CHECKINGAnyOptionalTupleType)BaseTool)guard_import)model_validator)Browserz,Tuple[Type[AsyncBrowser], Type[SyncBrowser]])returnc                   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   w/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/tools/playwright/base.pylazy_import_playwright_browsers   s    	

r   c                   @  s`   e Zd ZU dZdZded< dZded< edded	d
dddZ	edddd dddZ
dS )BaseBrowserToolzBase class for browser tools.NzOptional['SyncBrowser']sync_browserzOptional['AsyncBrowser']async_browserbefore)modedictr   )valuesr   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_providedzOptional[SyncBrowser]zOptional[AsyncBrowser])r   r   r   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)NN)__name__
__module____qualname____doc__r   __annotations__r   r
   classmethodr   r   r   r   r   r   r   #   s   
  r   N)
__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   