
    Ng                        d Z ddlmZ ddlZddlmZmZmZmZm	Z	m
Z
 erddlmZ ddlmZ ddlmZ ddlmZ ddZddZ	 dddZ	 dddZ e
d          ZddZdS ) z+Utilities for the Playwright browser tools.    )annotationsN)TYPE_CHECKINGAny	CoroutineListOptionalTypeVar)Browser)PagebrowserAsyncBrowserreturn	AsyncPagec                   K   | j         s4|                                  d{V }|                                 d{V S | j         d         }|j        s|                                 d{V S |j        d         S )z
    Asynchronously get the current page of the browser.

    Args:
        browser: The browser (AsyncBrowser) to get the current page from.

    Returns:
        AsyncPage: The current page.
    Nr   contextsnew_contextnew_pagepagesr   contexts     f/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/tools/playwright/utils.pyaget_current_pager      s        (++--------%%'''''''''q!G= (%%'''''''''=    SyncBrowserSyncPagec                    | j         s(|                                 }|                                S | j         d         }|j        s|                                S |j        d         S )z
    Get the current page of the browser.
    Args:
        browser: The browser to get the current page from.

    Returns:
        SyncPage: The current page.
    r   r   r   r   s     r   get_current_pager   #   sh      "%%''!!!q!G= "!!!=r   TheadlessboolargsOptional[List[str]]c                    ddl m} t           |                                                      }t          |j                            | |                    S )a   
    Create an async playwright browser.

    Args:
        headless: Whether to run the browser in headless mode. Defaults to True.
        args: arguments to pass to browser.chromium.launch

    Returns:
        AsyncBrowser: The playwright browser.
    r   )async_playwrightr    r"   )playwright.async_apir%   	run_asyncstartchromiumlaunch)r    r"   r%   r   s       r   create_async_playwright_browserr,   6   s]     655555((**002233GW%,,hT,JJKKKr   c                ~    ddl m}  |                                            }|j                            | |          S )z
    Create a playwright browser.

    Args:
        headless: Whether to run the browser in headless mode. Defaults to True.
        args: arguments to pass to browser.chromium.launch

    Returns:
        SyncBrowser: The playwright browser.
    r   )sync_playwrightr&   )playwright.sync_apir.   r)   r*   r+   )r    r"   r.   r   s       r   create_sync_playwright_browserr0   I   sK     433333o%%''G""H4"@@@r   TcoroCoroutine[Any, Any, T]c                R    t          j                    }|                    |           S )zRun an async coroutine.

    Args:
        coro: The coroutine to run. Coroutine[Any, Any, T]

    Returns:
        T: The result of the coroutine.
    )asyncioget_event_looprun_until_complete)r2   
event_loops     r   r(   r(   _   s&     '))J((...r   )r   r   r   r   )r   r   r   r   )TN)r    r!   r"   r#   r   r   )r    r!   r"   r#   r   r   )r2   r3   r   r1   )__doc__
__future__r   r5   typingr   r   r   r   r   r	   r'   r
   r   r   r   r/   r   r   r   r   r,   r0   r1   r(    r   r   <module>r=      sA   1 1 " " " " " "  I I I I I I I I I I I I I I I I 5<<<<<<666666::::::444444   (   ( 8<L L L L L( 8<A A A A A& GCLL
/ 
/ 
/ 
/ 
/ 
/r   