+
    0j[  ã                   óœ   € R t ^ RIHt ^ RIHtHtHt ^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ]! 4       t]! R4      t ! R R	]
],          4      tR
# )z(Duckduckgo search engine implementation.)ÚMapping)ÚAnyÚClassVarÚTypeVar)Ú	UserAgent)ÚBaseSearchEngine)ÚHttpClient2)Ú
TextResultÚTc                   óº   a € ] tR t^t o RtRtRtRtRtRt	Rt
RR	R
RRR/tR]P                  /tRRR/V 3R lR llltRV 3R lR lltV 3R lR ltV 3R ltRtV tR# )Ú
DuckduckgozDuckduckgo search engine.Ú
duckduckgoÚtextÚbingz!https://html.duckduckgo.com/html/ÚPOSTz//div[contains(@class, 'body')]Útitlez.//h2//text()Úhrefz	./a/@hrefÚbodyz./a//text()z
User-AgentNÚverifyTc                óL   <€ V ^8„  d   QhRS[ R,          RS[R,          RS[RR/# )é   ÚproxyNÚtimeoutr   Úreturn)ÚstrÚintÚbool)ÚformatÚ__classdict__s   "€Úl/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/ddgs/engines/duckduckgo.pyÚ__annotate__ÚDuckduckgo.__annotate__    s3   ø€ ÷ #ñ #™c Djð #¹#À½*ð #ÑX\ð #Ðhlñ #ó    c               óN   € \        V P                  WVR7      V n        . V n        R# )z+Temporary, delete when HttpClient is fixed.)Úheadersr   r   r   N)r   r$   Úhttp_clientÚresults)Úselfr   r   r   s   &&&$r   Ú__init__ÚDuckduckgo.__init__    s   € ä&¨t¯|©|À5ÐbhÔiˆÔØ "ˆŽr"   c                óh   <€ V ^8„  d   QhRS[ RS[ RS[ RS[ R,          RS[RS[ RS[S[ S[3,          /# )	r   ÚqueryÚregionÚ
safesearchÚ	timelimitNÚpageÚkwargsr   )r   r   Údictr   )r   r   s   "€r   r    r!   %   s]   ø€ ÷ ñ áðñ ðñ ð	ñ
 ˜•:ðñ ðñ ðñ 
‰c‘3ˆhñr"   c                ór   € RVRRRV/pV^8”  d   ^
V^,
          ^,          ,            VR&   V'       d   WGR&   V# )z'Build a payload for the search request.ÚqÚbÚ ÚlÚsÚdf© )r'   r+   r,   r-   r.   r/   r0   Úpayloads   &&&&&&, r   Úbuild_payloadÚDuckduckgo.build_payload%   sE   € ð ˜˜s B¨¨VÐ4ˆØ!Œ8Ø  D¨1¥H°¥?Õ2Ð3ˆGC‰LßØ%D‰MØˆr"   c                óF   <€ V ^8„  d   QhRS[ S[,          RS[ S[,          /# )r   r&   r   )Úlistr	   )r   r   s   "€r   r    r!   6   s)   ø€ ÷ ]ñ ]©D±Õ,<ð ]ÁÁjÕAQñ ]r"   c                ót   € V Uu. uF'  q"P                   P                  R4      '       d   K%  VNK)  	  up# u upi )zPost-process search results.zhttps://duckduckgo.com/y.js?)r   Ú
startswith)r'   r&   Úrs   && r   Úpost_extract_resultsÚDuckduckgo.post_extract_results6   s,   € á"Ó\™7a¯&©&×*;Ñ*;Ð<Z×*[—™7Ñ\Ð\ùÒ\s   …"5¬5c                ó~   <€ V ^8„  d   Qh/ S[ S[S[S[3,          ,          ;R&   S[ S[S[S[3,          ,          ;R&   # )r   Úelements_xpathr$   )r   r   r   r1   )r   r   s   "€r   r    r!      s:   ø‡ ‚ ñ ™W¡S©# XÕ.Õ/Ñxñ ñ ‘d™3¡˜8•nÕ%ÑAò r"   )r%   r&   )NN)é   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚnameÚcategoryÚproviderÚ
search_urlÚsearch_methodÚitems_xpathrE   ÚuaÚrandomr$   r(   r;   rB   Ú__annotate_func__Ú__static_attributes__Ú__classdictcell__)r   s   @r   r   r      sy   ø‡ € Ù#à€DØ€HØ€Hà4€JØ€Mà3€KØ3:¸OÈVÐU`ÐbhÐjwÐ2x€Nà)5°r·y±yÐ(A€Gñ#Ð_c÷ #ó #÷
ò ÷"]ð ]÷K ƒ r"   r   N)rK   Úcollections.abcr   Útypingr   r   r   Úfake_useragentr   Ú	ddgs.baser   Úddgs.http_client2r   Úddgs.resultsr	   rR   r
   r   r9   r"   r   Ú<module>r]      sA   ðÙ .å #ß )Ñ )å $å &Ý )Ý #áƒ[€áˆCƒL€ô']Ð! *Õ-ö ']r"   