§
    D›j<v  ã                   óÄ   — d dl Z d dlZd dlZd dlZd dlmZmZmZmZm	Z	m
Z
 ddlmZ ddlmZmZmZmZmZmZmZmZ defd„Zdd„Z G d	„ d
¦  «        Z G d„ de¦  «        ZdS )é    N)ÚLiteralÚSequenceÚOptionalÚListÚUnionÚ	Generatoré   )Úget_max_items_from_list)ÚUsageLimitExceededErrorÚInvalidAPIKeyErrorÚMissingAPIKeyErrorÚBadRequestErrorÚForbiddenErrorÚTimeoutErrorÚTavilyKeylessLimitErrorÚKeylessUnsupportedEndpointErrorÚreturnc                 óØ   — t          | t          ¦  «        oUt          |                      d¦  «        t          ¦  «        o-t          | d                              d¦  «        t          ¦  «        S )zWReturn True when the response body matches the Tavily recoverable-error envelope shape.ÚerrorÚcode)Ú
isinstanceÚdictÚgetÚstr)Úbodys    úJ/home/lighthouse/health/venv/lib/python3.11/site-packages/tavily/tavily.pyÚ_is_keyless_enveloper      sX   € õ 	�4�ÑÔð 	7Ý�t—x’x Ñ(Ô(­$Ñ/Ô/ð	7å�t˜G”}×(Ò(¨Ñ0Ô0µ#Ñ6Ô6ðó    c           	      ó   — | d         }t          |                     d¦  «        pd|                     d¦  «        |                     d¦  «        |                     d¦  «        |                     d¦  «        pg ¬¦  «        ‚)	zHRaise ``TavilyKeylessLimitError`` from an envelope-shaped response body.r   ÚmessageÚ r   ÚwindowÚretry_after_secondsÚnext_actions)r    r   r"   r#   r$   )r   r   )r   Úerrs     r   Ú_raise_keyless_enveloper&      sv   € à
ˆwŒ-€CÝ
!Ø—’˜	Ñ"Ô"Ð( bØ�WŠW�V‰_Œ_Ø�wŠw�xÑ Ô ØŸGšGÐ$9Ñ:Ô:Ø—W’W˜^Ñ,Ô,Ð2°ðñ ô ð r   c            )       óx  — e Zd ZdZ	 	 	 	 	 	 	 	 	 d\dee         deeeef                  dee         dee         dee         dee         d	ee         d
ee         deej                 fd„Z	d„ Z
d„ Zd„ Zd]d„Zdeddfd„Zededee         fd„¦   «         Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d^deded         ded         ded         deded ed!ed"ee         d#ee         d$eeed%         f         d&eeed'         f         d(ed)ed*ed+ed,ed-ed.edef(d/„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d^deded         ded         ded         deded ed!ed"ee         d#ee         d$eeed%         f         d&eeed'         f         d(ed)ed*ed+ed,ed-ed.edef(d0„Z	 	 	 	 	 	 	 	 d_d2eee         ef         d(ed3ed%         d4ed'         d)ed,ed-eded5edefd6„Z	 	 	 	 	 	 	 	 d_d2eee         ef         d(ed3ed%         d4ed'         d)ed,ed-eded5edefd7„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d`d9ed:ed;ed<ed=ed>ee         d?ee         d@ee         d#ee         dAed(ed3ed%         d4ed'         d)ed,ed-ed5edef$dB„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d`d9ed:ed;ed<ed=ed>ee         d?ee         d@ee         d#ee         dAed(ed3ed%         d4ed'         d)ed,ed-ed5edef$dC„Z	 	 	 	 	 	 	 	 	 	 	 	 dad9ed:ed;ed<ed=ed>ee         d?ee         d@ee         d#ee         dAed(ed)ed-edefdD„Z	 	 	 	 	 	 	 	 	 	 	 	 dad9ed:ed;ed<ed=ed>ee         d?ee         d@ee         d#ee         dAed(ed)ed-edefdE„Z	 	 	 	 	 	 	 	 	 	 dbdeded         ded         d ed!ed"ee         d#ee         dKed)ed*ed,edefdL„Z 	 	 	 	 	 	 	 	 	 dcdeded         ded         d ed!ed"ee         d#ee         d)ed*ed,edefdN„Z!	 	 	 	 	 dddQedRedS         dTedUedVedW         d)ee         deee"e#ddf         f         fdX„Z$	 	 	 	 	 dddQedRedS         dTedUedVedW         d)ee         deee"e#ddf         f         fdY„Z%dZedefd[„Z&dS )eÚTavilyClientz"
    Tavily API client class.
    NÚapi_keyÚproxiesÚapi_base_urlÚclient_sourceÚ
project_idÚ
session_idÚhuman_idÚclient_nameÚsessionc
                 ó¦  — |€t          j        d¦  «        }|pd }|r|                     d¦  «        nt          j        d¦  «        |r|                     d¦  «        nt          j        d¦  «        dœ}
d„ |
                     ¦   «         D ¦   «         pd }
|pt          j        d¦  «        }|pd	| _        || _        |d u o|	d u | _        |
| _        | j        r|pd
}n|pd}ddi| j        rdd| j        › �ini ¥| j        rddini ¥d|i¥|rd|ini ¥|rd|ini ¥|rd|ini ¥|rd|ini ¥| _        |	d u| _	        |	�|	nt          j        ¦   «         | _        | j                             ¦   «         D ]"\  }}|| j        j        vr|| j        j        |<   Œ#| j        r<| j                             ¦   «         D ]$\  }}|| j        j        vr|| j        j        |<   Œ#d S d S )NÚTAVILY_API_KEYÚhttpÚTAVILY_HTTP_PROXYÚhttpsÚTAVILY_HTTPS_PROXY)r4   r6   c                 ó   — i | ]
\  }}|¯||“ŒS © r9   ©Ú.0ÚkÚvs      r   ú
<dictcomp>z)TavilyClient.__init__.<locals>.<dictcomp>C   s#   € ÐKÐKÐK¡T Q¨ÈÐK˜A˜qÐKÐKÐKr   ÚTAVILY_PROJECTzhttps://api.tavily.comztavily-python-keylessztavily-pythonzContent-Typezapplication/jsonÚAuthorizationzBearer zX-Tavily-Access-ModeÚkeylesszX-Client-SourcezX-Project-IDúX-Session-Idú
X-Human-IdúX-Client-Name)ÚosÚgetenvr   ÚitemsÚbase_urlr)   Ú_keylessr*   ÚheadersÚ_external_sessionÚrequestsÚSessionr1   )Úselfr)   r*   r+   r,   r-   r.   r/   r0   r1   Úresolved_proxiesÚtavily_projectÚclient_source_headerÚkeyÚvalueÚprotocolÚurls                    r   Ú__init__zTavilyClient.__init__-   sœ  € ð ˆ?Ý”iÐ 0Ñ1Ô1ˆGà�/˜Tˆð ,3ÐV�G—K’K Ñ'Ô'Ð'½¼	ÐBUÑ8VÔ8VØ-4ÐY�W—[’[ Ñ)Ô)Ð)½"¼)ÐDXÑ:YÔ:Yð
ð 
Ðð
 LÐKÐ-=×-CÒ-CÑ-EÔ-EÐKÑKÔKÐSÈtÐØ#ÐB¥r¤yÐ1AÑ'BÔ'Bˆà$Ð@Ð(@ˆŒØˆŒØ 4˜Ð;¨G°t¨OˆŒØ'ˆŒàŒ=ð 	DØ#0Ð#KÐ4KÐ Ð à#0Ð#C°OÐ ð Ð.ð	
à>B¼lÐR�Ð!9¨4¬<Ð!9Ð!9Ð:Ð:ÐPRð	
ð 7;´mÐKÐ&¨	Ð2Ð2Èð	
ð Ð3ð		
ð 	
ð
 4BÐI� Ð/Ð/Àrð	
ð 0:ÐA� 
Ð+Ð+¸rð	
ð ,4Ð;�˜hÐ'Ð'¸ð	
ð 2=ÐD� Ð-Ð-À"ð	
ˆŒð ")°Ð!4ˆÔØ")Ð"5�w�w½8Ô;KÑ;MÔ;MˆŒàœ,×,Ò,Ñ.Ô.ð 	2ð 	2‰JˆC�Ø˜$œ,Ô.Ð.Ð.Ø,1�”Ô$ SÑ)øØŒ<ð 	9Ø!%¤×!3Ò!3Ñ!5Ô!5ð 9ð 9‘�˜#Ø 4¤<Ô#7Ð7Ð7Ø58�D”LÔ(¨Ñ2øð	9ð 	9ð9ð 9r   c                 óJ   — | j         s| j                             ¦   «          dS dS )z(Close the session and release resources.N)rK   r1   Úclose©rN   s    r   rX   zTavilyClient.closef   s1   € àÔ%ð 	!ØŒL×ÒÑ Ô Ð Ð Ð ð	!ð 	!r   c                 ó   — | S ©Nr9   rY   s    r   Ú	__enter__zTavilyClient.__enter__k   s   € Øˆr   c                 ó.   — |                       ¦   «          d S r[   )rX   )rN   Úexc_typeÚexc_valÚexc_tbs       r   Ú__exit__zTavilyClient.__exit__n   s   € Ø�
Š
‰Œˆˆˆr   r   c                 óB  — d}	 |                      ¦   «         }n# t          $ r d}Y nw xY w| j        rt          |¦  «        rt	          |¦  «         d}t          |t          ¦  «        r@	 |                     di ¦  «                             dd¦  «        pd}n# t          $ r d}Y nw xY w|j        dk    rt          |¦  «        ‚|j        dv rt          |¦  «        ‚|j        dk    rt          |¦  «        ‚|j        dk    rt          |¦  «        ‚|                     ¦   «         ‚)	z6Raise an appropriate exception for a non-2xx response.Nr!   Údetailr   i­  )i“  i°  i±  i‘  i�  )ÚjsonÚ	ExceptionrI   r   r&   r   r   r   Ústatus_coder   r   r   r   Úraise_for_status)rN   Úresponser   rc   s       r   Ú_handle_error_responsez#TavilyClient._handle_error_responseq   sW  € àˆð	Ø—=’=‘?”?ˆDˆDøÝð 	ð 	ð 	ØˆDˆDˆDð	øøøð Œ=ð 	*Õ1°$Ñ7Ô7ð 	*Ý# DÑ)Ô)Ð)àˆÝ�d�DÑ!Ô!ð 	ðØŸš (¨BÑ/Ô/×3Ò3°G¸TÑBÔBÐHÀb��øÝð ð ð Ø���ðøøøð Ô 3Ò&Ð&Ý)¨&Ñ1Ô1Ð1ØÔ! _Ð4Ð4Ý  Ñ(Ô(Ð(ØÔ! SÒ(Ð(Ý$ VÑ,Ô,Ð,ØÔ! SÒ(Ð(Ý! &Ñ)Ô)Ð)à×+Ò+Ñ-Ô-Ð-s   „ ™(§(Á(,B ÂB$Â#B$Úmethodc                 ó2   — | j         rt          |¦  «        ‚dS )zGRaise ``KeylessUnsupportedEndpointError`` when running in keyless mode.N)rI   r   )rN   rj   s     r   Ú_check_keyless_supportedz%TavilyClient._check_keyless_supportedŽ   s$   € àŒ=ð 	:Ý1°&Ñ9Ô9Ð9ð	:ð 	:r   Úkwargsc                 ór   — i }dD ]/\  }}|                       |d¦  «        }|�t          |¦  «        ||<   Œ0|pdS )z¶Pop session_id, human_id, and client_name from kwargs and return them as headers.

        Returns None when no overrides are provided so callers can omit the headers kwarg.
        ))r.   rB   )r/   rC   )r0   rD   N)Úpopr   )rm   Ú	overridesrR   Úheader_namerS   s        r   Ú_pop_request_headersz!TavilyClient._pop_request_headers“   sV   € ð ˆ	ð!
ð 	4ð 	4ÑˆC�ð
 —J’J˜s DÑ)Ô)ˆEØÐ Ý),¨U©¬�	˜+Ñ&øØÐ ˜DÐ r   é<   ÚqueryÚsearch_depth)ÚbasicÚadvancedÚfastz
ultra-fastÚtopic)ÚgeneralÚnewsÚfinanceÚ
time_range)ÚdayÚweekÚmonthÚyearÚ
start_dateÚend_dateÚdaysÚmax_resultsÚinclude_domainsÚexclude_domainsÚinclude_answer)rv   rw   Úinclude_raw_content)ÚmarkdownÚtextÚinclude_imagesÚtimeoutÚcountryÚauto_parametersÚinclude_faviconÚinclude_usageÚexact_matchc                 óZ  — i d|“d|“d|“d|“d|“d|“d|“d|“d	|“d
|“d|	“d|
“d|“d|“d|“d|“d|“d|i¥}d„ |                      ¦   «         D ¦   «         }|                      |¦  «        }|r|                     |¦  «         t          |d¦  «        }| j        dz   }t          j        |¦  «        }	  | j        j        |f||dœ|rd|ini ¤Ž}n'# t          j
        j        $ r t          |¦  «        ‚w xY w|j        dk    r|                     ¦   «         S |                      |¦  «         dS )zH
        Internal search method to send the request to the API.
        rt   ru   ry   r}   r‚   rƒ   r„   rˆ   r‰   r…   r†   r‡   rŒ   rŽ   r�   r�   r‘   r’   c                 ó   — i | ]
\  }}|®||“ŒS r[   r9   r:   s      r   r>   z(TavilyClient._search.<locals>.<dictcomp>Ó   ó   € Ð?Ð?Ð?™˜˜A°°��1°°°r   éx   z/search©Údatar�   rJ   éÈ   N)rG   rr   ÚupdateÚminrH   rd   Údumpsr1   ÚpostrL   Ú
exceptionsÚTimeoutr   rf   ri   )rN   rt   ru   ry   r}   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŒ   r�   rŽ   r�   r�   r‘   r’   rm   r˜   Úoverride_headersrU   Úpayloadrh   s                             r   Ú_searchzTavilyClient._search¤   s  € ð4
Ø�Uð
à˜Lð
ð �Uð
ð ˜*ð	
ð
 ˜*ð
ð ˜ð
ð �Dð
ð ˜nð
ð "Ð#6ð
ð ˜;ð
ð ˜ð
ð ˜ð
ð ˜nð
ð �wð
ð ˜ð
ð  ˜ð!
ð" ˜]ð#
ð$ ˜;ð%
ð 
ˆð* @Ð? §¢¡¤Ð?Ñ?Ô?ˆà×4Ò4°VÑ<Ô<ÐØð 	 Ø�KŠK˜ÑÔÐå�g˜sÑ#Ô#ˆØŒm˜iÑ'ˆÝ”*˜TÑ"Ô"ˆð	(Ø(�t”|Ô(¨ð  L°7ÀGð  Lð  Lð  rBð  QJÐQZÐ\lÐPmÐPmð  HJð  Lð  LˆHˆHøÝÔ"Ô*ð 	(ð 	(ð 	(Ý˜wÑ'Ô'Ð'ð	(øøøð Ô 3Ò&Ð&Ø—=’=‘?”?Ð"à×'Ò'¨Ñ1Ô1Ð1Ð1Ð1s   Â3C Ã$C4c                 óº   —  | j         |fi d|“d|“d|“d|“d|“d|“d|“d|	“d	|
“d
|“d|“d|“d|“d|“d|“d|“d|“d|“|¤Ž}|                     dg ¦  «         |S )z)
        Combined search method.
        ru   ry   r}   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŒ   r�   rŽ   r�   r�   r‘   r’   Úresults)r¢   Ú
setdefault)rN   rt   ru   ry   r}   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŒ   r�   rŽ   r�   r�   r‘   r’   rm   Úresponse_dicts                         r   ÚsearchzTavilyClient.searchè   s!  € ð4 %˜œ Uð /ð /ð /Ø2>°,ð/à+0¨5ð/ð 1;°
ð/ð 1;°
ð	/ð
 /7¨hð/ð +/¨$ð/ð 2=°ð/ð 6E°_ð/ð 6E°_ð/ð 5C°Nð/ð :MÐ9Lð/ð 5C°Nð/ð .5¨Wð/ð .5¨Wð/ð 6E°_ð/ð  6E°_ð!/ð" 4A°=ð#/ð$ 2=°Ø'-ð'/ð /ˆð( 	× Ò  ¨BÑ/Ô/Ð/ØÐr   é   ÚurlsÚextract_depthÚformatÚchunks_per_sourcec
           
      óØ  — |||||||||	dœ	}d„ |                      ¦   «         D ¦   «         }|                      |
¦  «        }|
r|                     |
¦  «         	  | j        j        | j        dz   ft          j        |¦  «        |dœ|rd|ini ¤Ž}n'# t          j	        j
        $ r t          |¦  «        ‚w xY w|j        dk    r|                     ¦   «         S |                      |¦  «         dS )zJ
        Internal extract method to send the request to the API. 
        )	r©   rŒ   rª   r«   r�   r�   r‘   rt   r¬   c                 ó   — i | ]
\  }}|®||“ŒS r[   r9   r:   s      r   r>   z)TavilyClient._extract.<locals>.<dictcomp>4  r•   r   z/extractr—   rJ   r™   N)rG   rr   rš   r1   r�   rH   rd   rœ   rL   rž   rŸ   r   rf   ri   )rN   r©   rŒ   rª   r«   r�   r�   r‘   rt   r¬   rm   r˜   r    rh   s                 r   Ú_extractzTavilyClient._extract  sU  € ð  Ø,Ø*ØØØ.Ø*ØØ!2ð

ð 

ˆð @Ð? §¢¡¤Ð?Ñ?Ô?ˆà×4Ò4°VÑ<Ô<ÐØð 	 Ø�KŠK˜ÑÔÐð	(Ø(�t”|Ô(¨¬¸Ñ)Cð  lÍ$Ì*ÐUYÑJZÔJZÐdkð  lð  lð  Rbð  qjÐqzð  }Mð  qNð  qNð  hjð  lð  lˆHˆHøÝÔ"Ô*ð 	(ð 	(ð 	(Ý˜wÑ'Ô'Ð'ð	(øøøð Ô 3Ò&Ð&Ø—=’=‘?”?Ð"à×'Ò'¨Ñ1Ô1Ð1Ð1Ð1s   Á6B Â$B3c
                 óŒ   —  | j         |||||f||||	dœ|
¤Ž}|                     dg ¦  «         |                     dg ¦  «         |S )z*
        Combined extract method.
        )r�   r‘   rt   r¬   r¤   Úfailed_results)r¯   r¥   )rN   r©   rŒ   rª   r«   r�   r�   r‘   rt   r¬   rm   r¦   s               r   ÚextractzTavilyClient.extractD  s}   € ð &˜œ dØ&4Ø&3Ø&,Ø&-ð		0ð
 7FØ4AØ,1Ø8Ið	0ð 	0ð )/ð	0ð 	0ˆð 	× Ò  ¨BÑ/Ô/Ð/Ø× Ò Ð!1°2Ñ6Ô6Ð6ØÐr   é–   rU   Ú	max_depthÚmax_breadthÚlimitÚinstructionsÚselect_pathsÚselect_domainsÚexclude_pathsÚallow_externalc                 ó*  — i d|“d|“d|“d|“d|“d|“d|“d|“d	|	“d
|
“d|“d|“d|“d|“d|“d|“d|“}|                       |¦  «        }|r|                     |¦  «         d„ |                     ¦   «         D ¦   «         }	  | j        j        | j        dz   ft          j        |¦  «        |dœ|rd|ini ¤Ž}n'# t          j	        j
        $ r t          |¦  «        ‚w xY w|j        dk    r|                     ¦   «         S |                      |¦  «         dS )z“
        Internal crawl method to send the request to the API.
        include_favicon: If True, include the favicon in the crawl results.
        rU   r´   rµ   r¶   r·   r¸   r¹   rº   r‡   r»   rŒ   rª   r«   r�   r�   r‘   r¬   c                 ó   — i | ]
\  }}|®||“ŒS r[   r9   r:   s      r   r>   z'TavilyClient._crawl.<locals>.<dictcomp>‘  r•   r   z/crawlr—   rJ   r™   N©rr   rš   rG   r1   r�   rH   rd   rœ   rL   rž   rŸ   r   rf   ri   )rN   rU   r´   rµ   r¶   r·   r¸   r¹   rº   r‡   r»   rŒ   rª   r«   r�   r�   r‘   r¬   rm   r˜   r    rh   s                         r   Ú_crawlzTavilyClient._crawla  sû  € ð0
Ø�3ð
à˜ð
ð ˜;ð
ð �Uð	
ð
 ˜Lð
ð ˜Lð
ð ˜nð
ð ˜]ð
ð ˜ð
ð ˜nð
ð ˜nð
ð ˜]ð
ð �fð
ð �wð
ð ˜ð
ð  ˜]ð!
ð"  Ð!2ð#
ˆð(  ×4Ò4°VÑ<Ô<ÐØð 	 Ø�KŠK˜ÑÔÐà?Ð? §¢¡¤Ð?Ñ?Ô?ˆð	(Ø(�t”|Ô(¨¬¸Ñ)Að  jÍÌ
ÐSWÑHXÔHXÐbið  jð  jð  P`ð  ohÐoxð  {Kð  oLð  oLð  fhð  jð  jˆHˆHøÝÔ"Ô*ð 	(ð 	(ð 	(Ý˜wÑ'Ô'Ð'ð	(øøøð Ô 3Ò&Ð&Ø—=’=‘?”?Ð"à×'Ò'¨Ñ1Ô1Ð1Ð1Ð1s   Â6B8 Â8$Cc                 ó¨   — |                       d¦  «          | j        |fi d|“d|“d|“d|“d|“d|“d|“d	|	“d
|
“d|“d|“d|“d|“d|“d|“d|“|¤ŽS )zt
        Combined crawl method.
        include_favicon: If True, include the favicon in the crawl results.
        Úcrawlr´   rµ   r¶   r·   r¸   r¹   rº   r‡   r»   rŒ   rª   r«   r�   r�   r‘   r¬   )rl   r¿   )rN   rU   r´   rµ   r¶   r·   r¸   r¹   rº   r‡   r»   rŒ   rª   r«   r�   r�   r‘   r¬   rm   s                      r   rÁ   zTavilyClient.crawl�  sú   € ð0 	×%Ò% gÑ.Ô.Ð.ØˆtŒ{˜3ð %ð %ð %Ø%. Yð%à'2 {ð%ð "' ð%ð )5¨ð	%ð
 )5¨ð%ð +9¨.ð%ð *7¨ð%ð ,;¨?ð%ð +9¨.ð%ð +9¨.ð%ð *7¨ð%ð #) &ð%ð $+ 7ð%ð ,;¨?ð%ð *7¨ð%ð  .?Ð->Ø#ð#%ð %ð 	%r   c                 óà  — |||||||||	|
|||dœ}|                       |¦  «        }|r|                     |¦  «         d„ |                     ¦   «         D ¦   «         }	  | j        j        | j        dz   ft          j        |¦  «        |dœ|rd|ini ¤Ž}n'# t          j	        j
        $ r t          |¦  «        ‚w xY w|j        dk    r|                     ¦   «         S |                      |¦  «         dS )zE
        Internal map method to send the request to the API.
        )rU   r´   rµ   r¶   r·   r¸   r¹   rº   r‡   r»   rŒ   r�   r‘   c                 ó   — i | ]
\  }}|®||“ŒS r[   r9   r:   s      r   r>   z%TavilyClient._map.<locals>.<dictcomp>ð  r•   r   z/mapr—   rJ   r™   Nr¾   )rN   rU   r´   rµ   r¶   r·   r¸   r¹   rº   r‡   r»   rŒ   r�   r‘   rm   r˜   r    rh   s                     r   Ú_mapzTavilyClient._mapÉ  s`  € ð( Ø"Ø&ØØ(Ø(Ø,Ø*Ø.Ø,Ø,ØØ*ð
ð 
ˆð   ×4Ò4°VÑ<Ô<ÐØð 	 Ø�KŠK˜ÑÔÐà?Ð? §¢¡¤Ð?Ñ?Ô?ˆð	(Ø(�t”|Ô(¨¬¸Ñ)?ð  hÅdÄjÐQUÑFVÔFVÐ`gð  hð  hð  N^ð  mfÐmvð  yIð  mJð  mJð  dfð  hð  hˆHˆHøÝÔ"Ô*ð 	(ð 	(ð 	(Ý˜wÑ'Ô'Ð'ð	(øøøð Ô 3Ò&Ð&Ø—=’=‘?”?Ð"à×'Ò'¨Ñ1Ô1Ð1Ð1Ð1s   Á6B Â$B7c                 ób   — |                       d¦  «          | j        |f||||||||	|
|||dœ|¤ŽS )z'
        Combined map method.

        Úmap)r´   rµ   r¶   r·   r¸   r¹   rº   r‡   r»   rŒ   r�   r‘   )rl   rÄ   )rN   rU   r´   rµ   r¶   r·   r¸   r¹   rº   r‡   r»   rŒ   r�   r‘   rm   s                  r   rÆ   zTavilyClient.mapü  sh   € ð( 	×%Ò% eÑ,Ô,Ð,ØˆtŒy˜ð #Ø#,Ø%0Ø$Ø&2Ø&2Ø(6Ø'4Ø)8Ø(6Ø(6Ø!(Ø'4ð#ð #ð "ð#ð #ð 	#r   rv   rz   é   é   é   Ú
max_tokensc                 ó"  — |                       d¦  «         t          j        dt          d¬¦  «          | j        |f||||||ddd|	|
|dœ|¤Ž}|                     dg ¦  «        }d„ |D ¦   «         }t          j        t          ||¦  «        ¦  «        S )	a‰  
        Get the search context for a query. Useful for getting only related content from retrieved websites
        without having to deal with context extraction and limitation yourself.

        max_tokens: The maximum number of tokens to return (based on openai token compute). Defaults to 4000.

        Returns a string of JSON containing the search context up to context limit.
        Úget_search_contextzHget_search_context is deprecated and will be removed in future versions.é   ©Ú
stacklevelF)ru   ry   r„   r…   r†   r‡   rˆ   r‰   rŒ   r�   rŽ   r�   r¤   c                 ó0   — g | ]}|d          |d         dœ‘ŒS )rU   Úcontent)rU   rÑ   r9   )r;   Úsources     r   ú
<listcomp>z3TavilyClient.get_search_context.<locals>.<listcomp>J  s9   € ð *ð *ð *Øð " %œ=°V¸IÔ5FÐGÐGð *ð *ð *r   )	rl   ÚwarningsÚwarnÚDeprecationWarningr¢   r   rd   rœ   r
   )rN   rt   ru   ry   r„   r…   r†   r‡   rÊ   r�   rŽ   r�   rm   r¦   ÚsourcesÚcontexts                   r   rÌ   zTavilyClient.get_search_context   sÙ   € ð, 	×%Ò%Ð&:Ñ;Ô;Ð;ÝŒÐ`Ý(°Qð	8ñ 	8ô 	8ð 	8ð %˜œ Uð 'Ø2>Ø+0Ø*.Ø1<Ø5DØ5DØ49Ø9>Ø49Ø-4Ø-4Ø5Dð'ð 'ð (.ð'ð 'ˆð  ×#Ò# I¨rÑ2Ô2ˆð*ð *Ø!(ð*ñ *ô *ˆåŒzÕ1°'¸:ÑFÔFÑGÔGÐGr   rw   c                 óÆ   — |                       d¦  «         t          j        dt          d¬¦  «          | j        |f||||||ddd||	|
dœ|¤Ž}|                     dd	¦  «        S )
z`
        Q&A search method. Search depth is advanced by default to get the best answer.
        Ú
qna_searchz@qna_search is deprecated and will be removed in future versions.rÍ   rÎ   FT)ru   ry   r„   r…   r†   r‡   r‰   rŒ   rˆ   r�   rŽ   r�   Úanswerr!   )rl   rÔ   rÕ   rÖ   r¢   r   )rN   rt   ru   ry   r„   r…   r†   r‡   r�   rŽ   r�   rm   r¦   s                r   rÚ   zTavilyClient.qna_searchN  sž   € ð  	×%Ò% lÑ3Ô3Ð3ÝŒÐXÝ(°Qð	8ñ 	8ô 	8ð 	8à$˜œ Uð 'Ø2>Ø+0Ø*.Ø1<Ø5DØ5DØ9>Ø49Ø48Ø-4Ø-4Ø5Dð'ð 'ð (.ð'ð 'ˆð × Ò  ¨2Ñ.Ô.Ð.r   FÚnumberedÚinputÚmodel)ÚminiÚproÚautoÚoutput_schemaÚstreamÚcitation_format)rÜ   ÚmlaÚapaÚchicagoc                 ó   ‡— |||||dœ}d„ |                      ¦   «         D ¦   «         }|                      |¦  «        }	|r|                     |¦  «         |r¥	  | j        j        | j        dz   ft          j        |¦  «        |ddœ|	rd|	ini ¤ŽŠn'# t          j	        j
        $ r t          |¦  «        ‚w xY w‰j        dk    r|                      ‰¦  «         dt          t          d	d	f         fˆfd
„}
 |
¦   «         S 	  | j        j        | j        dz   ft          j        |¦  «        |dœ|	rd|	ini ¤ŽŠn'# t          j	        j
        $ r t          |¦  «        ‚w xY w‰j        dk    r‰                     ¦   «         S |                      ‰¦  «         d	S )zJ
        Internal research method to send the request to the API.
        )rÝ   rÞ   râ   rã   rä   c                 ó   — i | ]
\  }}|®||“ŒS r[   r9   r:   s      r   r>   z*TavilyClient._research.<locals>.<dictcomp>†  r•   r   z	/researchT)r˜   r�   rã   rJ   r™   r   Nc               3   ó¨   •K  — 	 ‰                      d ¬¦  «        D ]} | r| V — Œ		 ‰                     ¦   «          d S # ‰                     ¦   «          w xY w)N)Ú
chunk_size)Úiter_contentrX   )Úchunkrh   s    €r   Ústream_generatorz0TavilyClient._research.<locals>.stream_generator›  sq   øè è € ð%Ø!)×!6Ò!6À$Ð!6Ñ!GÔ!Gð (ð (˜Ø ð (Ø"'˜K˜K˜Køð(ð —N’NÑ$Ô$Ð$Ð$Ð$ø�H—N’NÑ$Ô$Ð$Ð$øøøs	   …; »Ar—   )rG   rr   rš   r1   r�   rH   rd   rœ   rL   rž   rŸ   r   rf   ri   r   Úbytes)rN   rÝ   rÞ   râ   rã   rä   r�   rm   r˜   r    rî   rh   s              @r   Ú	_researchzTavilyClient._researchr  s/  ø€ ð ØØ*ØØ.ð
ð 
ˆð @Ð? §¢¡¤Ð?Ñ?Ô?ˆà×4Ò4°VÑ<Ô<ÐØð 	 Ø�KŠK˜ÑÔÐàð &	6ð	,Ø,˜4œ<Ô,Ø”M KÑ/ðåœ DÑ)Ô)Ø#Øð	ð ð
 9IÐP˜	Ð#3Ð4Ð4Èbðð ��øõ Ô&Ô.ð ,ð ,ð ,Ý" 7Ñ+Ô+Ð+ð,øøøð Ô# sÒ*Ð*Ø×+Ò+¨HÑ5Ô5Ð5ð%¥iµ°t¸TÐ0AÔ&Bð %ð %ð %ð %ð %ð %ð $Ð#Ñ%Ô%Ð%ð,Ø,˜4œ<Ô,Ø”M KÑ/ðåœ DÑ)Ô)Ø#ðð ð 9IÐP˜	Ð#3Ð4Ð4Èbð	ð ��øõ Ô&Ô.ð ,ð ,ð ,Ý" 7Ñ+Ô+Ð+ð,øøøð Ô# sÒ*Ð*Ø—}’}‘”Ð&à×+Ò+¨HÑ5Ô5Ð5Ð5Ð5s   Á7B Â$B3Ã<6D3 Ä3$Ec           
      óT   — |                       d¦  «          | j        d||||||dœ|¤ŽS )aè  
        Research method to create a research task.
        
        Args:
            input: The research task or question to investigate (required).
            model: The model used by the research agent - must be either 'mini', 'pro', or 'auto'.
            output_schema: Schema for the 'structured_output' response format (JSON Schema dict).
            stream: Whether to stream the research task.
            citation_format: Citation format - must be either 'numbered', 'mla', 'apa', or 'chicago'.
            timeout: Optional HTTP request timeout in seconds. 
            **kwargs: Additional custom arguments.
        
        Returns:
            dict: Response containing request_id, created_at, status, input, and model.
        Úresearch)rÝ   rÞ   râ   rã   rä   r�   r9   )rl   rð   )rN   rÝ   rÞ   râ   rã   rä   r�   rm   s           r   rò   zTavilyClient.research´  sT   € ð0 	×%Ò% jÑ1Ô1Ð1àˆtŒ~ð 
ØØØ'ØØ+Øð
ð 
ð ð
ð 
ð 	
r   Ú
request_idc                 ó*  — |                       d¦  «         	 | j                             | j        d|› �z   ¦  «        }n$# t          $ r}t	          d|› �¦  «        ‚d}~ww xY w|j        dv r|                     ¦   «         S |                      |¦  «         dS )a
  
        Get research results by request_id.
        
        Args:
            request_id: The research request ID.
        
        Returns:
            dict: Research response containing request_id, created_at, completed_at, status, content, and sources.
        Úget_researchz
/research/zError getting research: N)r™   éÊ   )rl   r1   r   rH   re   rf   rd   ri   )rN   ró   rh   Úes       r   rõ   zTavilyClient.get_researchØ  s²   € ð 	×%Ò% nÑ5Ô5Ð5ð	<Ø”|×'Ò'¨¬Ð8QÀZÐ8QÐ8QÑ(QÑRÔRˆHˆHøÝð 	<ð 	<ð 	<ÝÐ:°qÐ:Ð:Ñ;Ô;Ð;øøøøð	<øøøð Ô :Ð-Ð-Ø—=’=‘?”?Ð"à×'Ò'¨Ñ1Ô1Ð1Ð1Ð1s   —%= ½
AÁAÁA)	NNNNNNNNN©r   N)NNNNNNNNNNNNrs   NNNNN)NNNr¨   NNNN)NNNNNNNNNNNNr³   NNN)NNNNNNNNNNr³   N)
rv   rz   rÇ   rÈ   NNrÉ   rs   NN)	rw   rz   rÇ   rÈ   NNrs   NN)NNFrÜ   N)'Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   rL   rM   rV   rX   r\   ra   ri   rl   Ústaticmethodrr   r   Úintr   r   ÚboolÚfloatr¢   r§   r   r¯   r²   r¿   rÁ   rÄ   rÆ   rÌ   rÚ   r   rï   rð   rò   rõ   r9   r   r   r(   r(   (   sK  € € € € € ðð ð "&Ø,0Ø&*Ø'+Ø$(Ø$(Ø"&Ø%)Ø.2ð79ð 79à˜#”ð79ð ˜$˜s C˜xœ.Ô)ð79ð ˜s”mð	79ð
   ”}ð79ð ˜S”Mð79ð ˜S”Mð79ð ˜3”-ð79ð ˜c”]ð79ð ˜(Ô*Ô+ð79ð 79ð 79ð 79ðr!ð !ð !ð
ð ð ðð ð ð.ð .ð .ð .ð::¨sð :°tð :ð :ð :ð :ð
 ð! Tð !¨h°t¬nð !ð !ð !ñ „\ð!ð$ TXØ?CØFJØ"&Ø $Ø Ø#'Ø15Ø15ØLPØPTØ'+Ø!#Ø#Ø(,Ø(,Ø&*Ø$(ð'A2ð A2ØðA2à%Ð&OÔPðA2ð Ð;Ô<ðA2ð $Ð$BÔCð	A2ð
  ðA2ð ðA2ð ðA2ð !ðA2ð "*¨#¤ðA2ð "*¨#¤ðA2ð !& d¨GÐ4GÔ,HÐ&HÔ IðA2ð &+¨4°Ð9KÔ1LÐ+LÔ%MðA2ð !%ðA2ð ðA2ð ðA2ð  "&ð!A2ð" "&ð#A2ð$  $ð%A2ð& "ð'A2ð* ð+A2ð A2ð A2ð A2ðL SWØ?CØEIØ!%Ø#ØØ"&Ø04Ø04ØKOØOSØ&*Ø "Ø"Ø'+Ø'+Ø%)Ø#'ð'/ð /Øð/à$Ð%NÔOð/ð Ð:Ô<ð/ð #Ð#AÔBð	/ð
 ð/ð ð/ð ð/ð  ð/ð !)¨¤ð/ð !)¨¤ð/ð  % T¨7Ð3FÔ+GÐ%GÔHð/ð %*¨$°Ð8JÔ0KÐ*KÔ$Lð/ð  $ð/ð ð/ð ð/ð  !%ð!/ð" !%ð#/ð$ #ð%/ð& !ð'/ð* ð+/ð /ð /ð /ðf )-Ø?CØ7;Ø"$Ø)-Ø'+Ø"Ø*.ð)2ð )2Ø˜T #œY¨˜^Ô,ð)2à!%ð)2ð !(Ð(;Ô <ð)2ð !Ð!3Ô4ð	)2ð
  ð)2ð #'ð)2ð !%ð)2ð ð)2ð %(ð)2ð ð)2ð )2ð )2ð )2ðZ (,Ø>BØ6:Ø!#Ø(,Ø&*Ø!Ø)-ðð Ø˜D œI s˜NÔ+ðà $ðð  'Ð':Ô;ðð  Ð 2Ô3ð	ð
 ðð "&ðð  $ðð ðð $'ðð ðð ð ð ð> "Ø#ØØ $Ø*.Ø,0Ø+/Ø-1Ø#'Ø#'Ø:>Ø26Ø Ø$(Ø"&Ø%)ð#:2ð :2Øð:2àð:2ð ð:2ð ð	:2ð
 ð:2ð # 3œ-ð:2ð % SœMð:2ð $ Cœ=ð:2ð & cœ]ð:2ð !ð:2ð !ð:2ð #Ð#6Ô7ð:2ð Ð.Ô/ð:2ð ð:2ð "ð:2ð   ð!:2ð"  #ð#:2ð& ð':2ð :2ð :2ð :2ð|  $Ø!%ØØ"&Ø,0Ø.2Ø-1Ø/3Ø%)Ø%)Ø<@Ø48Ø"Ø&*Ø$(Ø'+ð#*%ð *%Øð*%àð*%ð ð*%ð ð	*%ð
  ð*%ð % SœMð*%ð ' sœmð*%ð & cœ]ð*%ð  (¨œ}ð*%ð #ð*%ð #ð*%ð %Ð%8Ô9ð*%ð Ð0Ô1ð*%ð ð*%ð  $ð*%ð  "ð!*%ð" "%ð#*%ð& ð'*%ð *%ð *%ð *%ð\ "Ø#ØØ $Ø*.Ø,0Ø+/Ø-1Ø#'Ø#'Ø Ø"&ð12ð 12Øð12àð12ð ð12ð ð	12ð
 ð12ð # 3œ-ð12ð % SœMð12ð $ Cœ=ð12ð & cœ]ð12ð !ð12ð !ð12ð ð12ð  ð12ð ð12ð 12ð 12ð 12ðj  $Ø!%ØØ"&Ø,0Ø.2Ø-1Ø/3Ø%)Ø%)Ø"Ø$(ð"#ð "#Øð"#àð"#ð ð"#ð ð	"#ð
  ð"#ð % SœMð"#ð ' sœmð"#ð & cœ]ð"#ð  (¨œ}ð"#ð #ð"#ð #ð"#ð ð"#ð "ð"#ð ð"#ð "#ð "#ð "#ðL _fØJSØ'(Ø./Ø<@Ø<@Ø-1Ø,.Ø*.Ø37ð,Hð ,HØ"%ð,Hà)0Ð1ZÔ)[ð,Hð #*Ð*FÔ"Gð,Hð "%ð	,Hð
 ),ð,Hð -5°S¬Mð,Hð -5°S¬Mð,Hð (+ð,Hð %*ð,Hð %(ð,Hð -1ð,Hð !$ð,Hð ,Hð ,Hð ,Hð` WaØBKØ Ø&'Ø48Ø48Ø$&Ø"&Ø+/ð"/ð "/Øð"/à!(Ð)RÔ!Sð"/ð "Ð">Ô?ð"/ð ð	"/ð
 !$ð"/ð %-¨S¤Mð"/ð %-¨S¤Mð"/ð "ð"/ð  ð"/ð %)ð"/ð ð"/ð "/ð "/ð "/ðL ;?Ø(,Ø!&ØR\Ø-1ð@6ð @6Øð@6à Ð!6Ô7ð@6ð "&ð@6ð ð	@6ð
 $+Ð+NÔ#Oð@6ð $ Eœ?ð@6ð ˜T 9¨U°D¸$Ð->Ô#?Ð?Ô@ð@6ð @6ð @6ð @6ðH :>Ø'+Ø %ØQ[Ø,0ð"
ð "
Øð"
àÐ 5Ô6ð"
ð !%ð"
ð ð	"
ð
 #*Ð*MÔ"Nð"
ð # 5œ/ð"
ð ˜D )¨E°4¸Ð,=Ô">Ð>Ô?ð"
ð "
ð "
ð "
ðH2Ø!$ð2àð2ð 2ð 2ð 2ð 2ð 2r   r(   c                   ó"   ‡ — e Zd ZdZˆ fd„Zˆ xZS )ÚClientzk
    Tavily API client class.

    WARNING! This class is deprecated. Please use TavilyClient instead.
    c                 ó‚   •— t          j        dt          d¬¦  «         t          ¦   «                              |¦  «         d S )Nz5Client is deprecated, please use TavilyClient insteadrÍ   rÎ   )rÔ   rÕ   rÖ   ÚsuperrV   )rN   rm   Ú	__class__s     €r   rV   zClient.__init__÷  sB   ø€ ÝŒÐMÝ(°Qð	8ñ 	8ô 	8ð 	8å‰Œ×Ò˜Ñ Ô Ð Ð Ð r   )rù   rú   rû   rü   rV   Ú__classcell__)r  s   @r   r  r  ð  sB   ø€ € € € € ðð ð!ð !ð !ð !ð !ð !ð !ð !ð !r   r  rø   )rL   rd   rE   rÔ   Útypingr   r   r   r   r   r   Úutilsr
   Úerrorsr   r   r   r   r   r   r   r   rÿ   r   r&   r(   r  r9   r   r   ú<module>r
     sc  ðØ €€€Ø €€€Ø 	€	€	€	Ø €€€Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ *Ð *Ð *Ð *Ð *Ð *ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð $ð ð ð ð ð	ð 	ð 	ð 	ðE2ð E2ð E2ð E2ð E2ñ E2ô E2ð E2ðP
!ð 
!ð 
!ð 
!ð 
!ˆ\ñ 
!ô 
!ð 
!ð 
!ð 
!r   