§
    ®eîiº  ã            	       ó  — d Z ddlmZmZmZmZmZmZ ddlm	Z	m
Z
mZmZmZmZ ddlmZmZ ddlmZmZmZmZ  ed¦  «        Zded	e	d
e
fd„Zdee         dee         d
eeedf                  fd„Zd	e	d
e	fd„Zd	e	d
eeef         fd„ZdS )z,
Search functionality for Firecrawl v2 API.
é    )ÚDictÚAnyÚUnionÚListÚTypeVarÚTypeé   )ÚSearchRequestÚ
SearchDataÚDocumentÚSearchResultWebÚSearchResultNewsÚSearchResultImages)Únormalize_document_inputÚ_map_search_result_keys)Ú
HttpClientÚhandle_response_errorÚvalidate_scrape_optionsÚprepare_scrape_optionsÚTÚclientÚrequestÚreturnc                 ó¢  — t          |¦  «        }	 |                      d|¦  «        }|j        dk    rt          |d¦  «         |                     ¦   «         }|                     d¦  «        st          |d¦  «         |                     di ¦  «        pi }t          ¦   «         }d|v r t          |d         t          ¦  «        |_	        d|v r t          |d         t          ¦  «        |_        d|v r t          |d         t          ¦  «        |_        |S # t          $ r5}t          |d	¦  «        rt          t!          |d	¦  «        d¦  «         |‚d
}~ww xY w)a  
    Search for documents.
    
    Args:
        client: HTTP client instance
        request: Search request
        
    Returns:
        SearchData with search results grouped by source type
        
    Raises:
        FirecrawlError: If the search operation fails
    z
/v2/searchéÈ   ÚsearchÚsuccessÚdataÚwebÚnewsÚimagesÚresponseN)Ú_prepare_search_requestÚpostÚstatus_coder   ÚjsonÚgetr   Ú_transform_arrayr   r   r   r    r   r!   Ú	ExceptionÚhasattrÚgetattr)r   r   Úrequest_datar"   Úresponse_datar   ÚoutÚerrs           ú_/home/div/.hermes/hermes-agent/venv/lib/python3.11/site-packages/firecrawl/v2/methods/search.pyr   r      sS  € õ" +¨7Ñ3Ô3€LðØ—;’;˜|¨\Ñ:Ô:ˆØÔ 3Ò&Ð&Ý! (¨HÑ5Ô5Ð5Ø Ÿš™œˆØ× Ò  Ñ+Ô+ð 	6Ý! (¨HÑ5Ô5Ð5Ø× Ò  ¨Ñ,Ô,Ð2°ˆÝ‰lŒlˆØ�Dˆ=ˆ=Ý& t¨E¤{µOÑDÔDˆCŒGØ�Tˆ>ˆ>Ý'¨¨V¬Õ6FÑGÔGˆCŒHØ�tÐÐÝ)¨$¨x¬.Õ:LÑMÔMˆCŒJØˆ
øÝð ð ð õ �3˜
Ñ#Ô#ð 	FÝ!¥'¨#¨zÑ":Ô":¸HÑEÔEÐEØˆ	øøøøðøøøs   ‘C=D Ä
EÄ0E	Å	EÚarrÚresult_typer   c           
      ó  — g }| D ]ú}|r×t          |t          ¦  «        rÂd|v sd|v sd|v sd|v sd|v sd|v sd|v sd|v r-|                     t          di t	          |¦  «        ¤Ž¦  «         Œfd	}|t
          k    rd
}n|t          k    rd}n|t          k    rd}|r,t          ||¦  «        }|                      |di |¤Ž¦  «         Œ¿|                      |di |¤Ž¦  «         ŒÛ|                      ||¬¦  «        ¦  «         Œû|S )a  
    Transforms an array of items into a list of result_type or Document.
    If the item dict contains any of the special keys, it is treated as a Document.
    Otherwise, it is treated as result_type.
    If the item is not a dict, it is wrapped as result_type with url=item.
    ÚmarkdownÚhtmlÚrawHtmlÚlinksÚ
screenshotÚchangeTrackingÚsummaryr&   Nr!   r    r   )Úurl© )	Ú
isinstanceÚdictÚappendr   r   r   r   r   r   )r1   r2   ÚresultsÚitemÚresult_type_nameÚnormalized_items         r0   r(   r(   5   sy  € ð +-€GØð 2ð 2ˆØð 	2•J˜t¥TÑ*Ô*ð 	2à˜dÐ"Ð"Ø˜$��Ø˜TÐ!Ð!Ø˜4��Ø Ð$Ð$Ø  DÐ(Ð(Ø˜TÐ!Ð!Ø˜$��à—’�xÐIÐIÕ*BÀ4Ñ*HÔ*HÐIÐIÑJÔJÐJÐJà#'Ð ØÕ"4Ò4Ð4Ø'/Ð$Ð$Ø Õ$4Ò4Ð4Ø'-Ð$Ð$Ø ¥OÒ3Ð3Ø',Ð$à#ð 8Ý&=¸dÐDTÑ&UÔ&U�OØ—N’N ; ;Ð#AÐ#A°Ð#AÐ#AÑBÔBÐBÐBà—N’N ; ;Ð#6Ð#6°Ð#6Ð#6Ñ7Ô7Ð7Ð7à�NŠN˜;˜;¨4Ð0Ñ0Ô0Ñ1Ô1Ð1Ð1Ø€Nó    c                 óÊ  — | j         r| j                              ¦   «         st          d¦  «        ‚| j        �4| j        dk    rt          d¦  «        ‚| j        dk    rt          d¦  «        ‚| j        �4| j        dk    rt          d¦  «        ‚| j        dk    rt          d	¦  «        ‚| j        �ph d
£}| j        D ]d}t          |t          ¦  «        r||vrt          d|› d|› �¦  «        ‚Œ1t          |d¦  «        r#|j	        |vrt          d|j	        › d|› �¦  «        ‚Œe| j
        �ph d£}| j
        D ]d}t          |t          ¦  «        r||vrt          d|› d|› �¦  «        ‚Œ1t          |d¦  «        r#|j	        |vrt          d|j	        › d|› �¦  «        ‚Œe| j        �St          | j        t          ¦  «        r*t          | j                             ¦   «         ¦  «        dk    rt          d¦  «        ‚| j        �St          | j        t          ¦  «        r*t          | j                             ¦   «         ¦  «        dk    rt          d¦  «        ‚| j        �t          | j        ¦  «         | S )zÚ
    Validate and normalize search request.
    
    Args:
        request: Search request to validate
        
    Returns:
        Validated request
        
    Raises:
        ValueError: If request is invalid
    zQuery cannot be emptyNr   zLimit must be positiveéd   zLimit cannot exceed 100zTimeout must be positiveià“ z*Timeout cannot exceed 300000ms (5 minutes)>   r   r    r!   zInvalid source type: z. Valid types: Útype>   ÚpdfÚgithubÚresearchzInvalid category type: z#Location must be a non-empty stringztbs must be a non-empty string)ÚqueryÚstripÚ
ValueErrorÚlimitÚtimeoutÚsourcesr=   Ústrr*   rG   Ú
categoriesÚlocationÚlenÚtbsÚscrape_optionsr   )r   Úvalid_sourcesÚsourceÚvalid_categoriesÚcategorys        r0   Ú_validate_search_requestr[   \   s×  € ð Œ=ð 2 ¤× 3Ò 3Ñ 5Ô 5ð 2ÝÐ0Ñ1Ô1Ð1ð „}Ð ØŒ=˜AÒÐÝÐ5Ñ6Ô6Ð6ØŒ=˜3ÒÐÝÐ6Ñ7Ô7Ð7ð „Ð"ØŒ?˜aÒÐÝÐ7Ñ8Ô8Ð8ØŒ?˜VÒ#Ð#ÝÐIÑJÔJÐJð „Ð"Ø1Ð1Ð1ˆØ”oð 	jð 	jˆFÝ˜&¥#Ñ&Ô&ð jØ Ð.Ð.Ý$Ð%c¸VÐ%cÐ%cÐTaÐ%cÐ%cÑdÔdÐdð /å˜ Ñ(Ô(ð jØ”; mÐ3Ð3Ý$Ð%h¸V¼[Ð%hÐ%hÐYfÐ%hÐ%hÑiÔiÐiøð ÔÐ%Ø8Ð8Ð8ÐØÔ*ð 	qð 	qˆHÝ˜(¥CÑ(Ô(ð qØÐ#3Ð3Ð3Ý$Ð%j¸xÐ%jÐ%jÐXhÐ%jÐ%jÑkÔkÐkð 4å˜ 6Ñ*Ô*ð qØ”=Ð(8Ð8Ð8Ý$Ð%o¸x¼}Ð%oÐ%oÐ]mÐ%oÐ%oÑpÔpÐpøð ÔÐ#Ý˜'Ô*­CÑ0Ô0ð 	DµC¸Ô8H×8NÒ8NÑ8PÔ8PÑ4QÔ4QÐUVÒ4VÐ4VÝÐBÑCÔCÐCð „{ÐÝ˜'œ+¥sÑ+Ô+ð 	?­s°7´;×3DÒ3DÑ3FÔ3FÑ/GÔ/GÈ1Ò/LÐ/LÝÐ=Ñ>Ô>Ð>ð ÔÐ)Ý Ô 6Ñ7Ô7Ð7à€NrD   c                 óÚ  — t          | ¦  «        }|                     dd¬¦  «        }d|vr|j        �
|j        |d<   d|vr|j        �
|j        |d<   |j        � |j        |d<   |                     dd¦  «         |j        �1t          |j        ¦  «        }|r||d<   |                     d	d¦  «         t          |d
d¦  «        }|�(t          |¦  «         
                    ¦   «         }|r||d
<   |S )z“
    Prepare a search request payload.
    
    Args:
        request: Search request
        
    Returns:
        Request payload dictionary
    T)Úexclude_noneÚby_aliasrN   NrO   ÚignoreInvalidURLsÚignore_invalid_urlsÚscrapeOptionsrV   Úintegration)r[   Ú
model_dumprN   rO   r`   ÚpoprV   r   r+   rQ   rL   )r   Úvalidated_requestr   Úscrape_dataÚintegration_valueÚintegration_strs         r0   r#   r#   ¢   s)  € õ 1°Ñ9Ô9ÐØ×'Ò'°TÀDÐ'ÑIÔI€Dð �dÐÐÐ0Ô6ÐBØ)Ô/ˆˆW‰Ø˜ÐÐÐ!2Ô!:Ð!FØ+Ô3ˆˆY‰ð Ô,Ð8Ø$5Ô$IˆÐ Ñ!Ø�ŠÐ&¨Ñ-Ô-Ð-ð Ô'Ð3Ý,Ð->Ô-MÑNÔNˆØð 	0Ø$/ˆD�Ñ!Ø�ŠÐ! 4Ñ(Ô(Ð(õ  Ð 1°=À$ÑGÔGÐØÐ$ÝÐ/Ñ0Ô0×6Ò6Ñ8Ô8ˆØð 	2Ø"1ˆD�Ñà€KrD   N)Ú__doc__Útypingr   r   r   r   r   r   Útypesr
   r   r   r   r   r   Úutils.normalizer   r   Úutilsr   r   r   r   r   r   r(   r[   rQ   r#   r<   rD   r0   ú<module>rn      s†  ððð ð 9Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nØ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fÐ fà€GˆC�L„L€ð'Øð'àð'ð ð'ð 'ð 'ð 'ðR%˜$˜sœ)ð %°$°q´'ð %¸dÀ5ÈÈJÈÔCWÔ>Xð %ð %ð %ð %ðNC mð C¸ð Cð Cð Cð CðL) ]ð )°t¸CÀ¸H´~ð )ð )ð )ð )ð )ð )rD   