
    Ngb                        d dl mZ d dlZd dlmZmZmZmZ d dlm	Z	m
Z
 d dlmZmZmZ d dlmZ d dlmZmZ er	  G d d	e          Z G d
 de          ZdS )    )annotationsN)TYPE_CHECKINGAnyOptionalType)AsyncCallbackManagerForToolRunCallbackManagerForToolRun)	BaseModelFieldmodel_validator)BaseBrowserTool)aget_current_pageget_current_pagec                  8    e Zd ZU dZ edd          Zded<   dS )ExtractHyperlinksToolInputz Input for ExtractHyperlinksTool.Fz-Return absolute URLs instead of relative URLs)defaultdescriptionboolabsolute_urlsN)__name__
__module____qualname____doc__r   r   __annotations__     s/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/tools/playwright/extract_hyperlinks.pyr   r      sL         **%C  M      r   r   c                      e Zd ZU dZdZded<   dZded<   eZded<    e	d	
          e
dd                        Zedd            Z	 	 dddZ	 	 dd dZdS )!ExtractHyperlinksToolz#Extract all hyperlinks on the page.extract_hyperlinksstrnamez-Extract all hyperlinks on the current webpager   zType[BaseModel]args_schemabefore)modevaluesdictreturnr   c                P    	 ddl m} n# t          $ r t          d          w xY w|S )z#Check that the arguments are valid.r   BeautifulSoupzoThe 'beautifulsoup4' package is required to use this tool. Please install it with 'pip install beautifulsoup4'.)bs4r+   ImportError)clsr&   r+   s      r   check_bs_importz%ExtractHyperlinksTool.check_bs_import&   sV    	))))))) 	 	 	H  	
 s   	 #pagehtml_contentr   r   c                   ddl m ddlm}  ||d          }|                    d          }|r| j        fd|D             }nd |D             }t          j        t          t          |                              S )Nr   )urljoinr*   lxmlac           	     P    g | ]"} |                     d d                    #S href get).0anchorbase_urlr3   s     r   
<listcomp>z5ExtractHyperlinksTool.scrape_page.<locals>.<listcomp>@   s3    UUU6WWXvzz&"'='=>>UUUr   c                :    g | ]}|                     d d          S r7   r:   )r<   r=   s     r   r?   z5ExtractHyperlinksTool.scrape_page.<locals>.<listcomp>B   s&    BBBVZZ++BBBr   )
urllib.parser3   r,   r+   find_allurljsondumpslistset)	r0   r1   r   r+   soupanchorslinksr>   r3   s	          @@r   scrape_pagez!ExtractHyperlinksTool.scrape_page3   s    ((((((%%%%%% }\622 --$$ 	CxHUUUUUWUUUEEBB'BBBE z$s5zz**+++r   FNrun_manager#Optional[CallbackManagerForToolRun]c                    | j         t          d| j                   t          | j                   }|                                }|                     |||          S )zUse the tool.Nz$Synchronous browser not provided to )sync_browser
ValueErrorr"   r   contentrK   selfr   rL   r0   r1   s        r   _runzExtractHyperlinksTool._runG   s[     $ODIOOPPP 122||~~lMBBBr   (Optional[AsyncCallbackManagerForToolRun]c                   K   | j         t          d| j                   t          | j                    d{V }|                                 d{V }|                     |||          S )zUse the tool asynchronously.Nz%Asynchronous browser not provided to )async_browserrP   r"   r   rQ   rK   rR   s        r   _arunzExtractHyperlinksTool._arunS   s       %PTYPPQQQ&t'9::::::::!\\^^++++++lMBBBr   )r&   r'   r(   r   )r0   r   r1   r!   r   r   r(   r!   )FN)r   r   rL   rM   r(   r!   )r   r   rL   rU   r(   r!   )r   r   r   r   r"   r   r   r   r#   r   classmethodr/   staticmethodrK   rT   rX   r   r   r   r   r      s         --$D$$$$FKFFFF#=K====_(###	 	 	 [ $#	 , , , \,* $;?
C 
C 
C 
C 
C $@D
C 
C 
C 
C 
C 
C 
Cr   r   )
__future__r   rD   typingr   r   r   r   langchain_core.callbacksr   r	   pydanticr
   r   r   )langchain_community.tools.playwright.baser   *langchain_community.tools.playwright.utilsr   r   r   r   r   r   r   <module>ra      s;   " " " " " "  5 5 5 5 5 5 5 5 5 5 5 5        7 6 6 6 6 6 6 6 6 6 E E E E E E       
  	       >C >C >C >C >CO >C >C >C >C >Cr   