+
    0j
                     X   R t ^ RIHt ^ RIHt ^ RIHtHt ^ RIH	t	H
t
 ^ RIHtHtHtHt ^RIHtHtHt ]! R4      t ! R R	4      t]	 ! R
 R]4      4       t]	 ! R R]4      4       t]	 ! R R]4      4       t]	 ! R R]4      4       t]	 ! R R]4      4       t ! R R]]],          4      tR# )zResult classes.)ABC)Counter)CallableMapping)	dataclassfield)AnyClassVarGenericTypeVar)_normalize_date_normalize_text_normalize_urlTc                   n   a  ] tR t^t o RtR]R]R]R]R]R]R]R	]R
]R]/
tV 3R lR lt	V 3R lt
RtV tR# )
BaseResultz=Base class for all results. Contains normalization functions.titlebodyhrefurl	thumbnailimagedateauthor	publisherinfoc                *   < V ^8  d   QhRS[ RS[ RR/# )   namevaluereturnNstr)format__classdict__s   "a/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/ddgs/results.py__annotate__BaseResult.__annotate__   s"     . . .C .D .    c                    V'       d,   V P                   P                  V4      ;p'       d	   V! V4      p\        P                  WV4       R# )zHOverride setattr to apply normalization functions to certain attributes.N)_normalizersgetobject__setattr__)selfr   r   
normalizers   &&& r%   r-   BaseResult.__setattr__   s:    D$5$5$9$9$$??j?u%E4u-r(   c                d   < V ^8  d   Qh/ S[ S[S[S[S[.S[3,          3,          ,          ;R&   # )r   r*   )r	   r   r"   r   r   )r#   r$   s   "r%   r&   r'      s.      73#(<#<=>  r(    N)__name__
__module____qualname____firstlineno____doc__r   r   r   r*   r-   __annotate_func____static_attributes____classdictcell__r$   s   @r%   r   r      sU     G 	~^/_BL. .!  r(   r   c                   <   a  ] tR t^%t o RtRtRtRtV 3R ltRt	V t
R# )
TextResultzText search result. c                >   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   # )r   r   r   r   r!   )r#   r$   s   "r%   r&   TextResult.__annotate__%   s)      O	 
 N  N r(   r2   N)r3   r4   r5   r6   r7   r   r   r   r8   r9   r:   r;   s   @r%   r=   r=   %   s     EDD  r(   r=   c                   L   a  ] tR t^.t o RtRtRtRtRtRt	Rt
RtV 3R ltRtV tR# )ImagesResultzImage search result.r>   c                n   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   # )r   r   r   r   r   heightwidthsourcer!   )r#   r$   s   "r%   r&   ImagesResult.__annotate__.   s\      O	 
 O    
M    O   r(   r2   N)r3   r4   r5   r6   r7   r   r   r   r   rD   rE   rF   r8   r9   r:   r;   s   @r%   rB   rB   .   s2     EEICFEF  r(   rB   c                   H   a  ] tR t^;t o RtRtRtRtRtRt	Rt
V 3R ltRtV tR# )
NewsResultzNews search result.r>   c                b   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   # )r   r   r   r   r   r   rF   r!   )r#   r$   s   "r%   r&   NewsResult.__annotate__;   sN      N	 
 O  N  
M  O   r(   r2   N)r3   r4   r5   r6   r7   r   r   r   r   r   rF   r8   r9   r:   r;   s   @r%   rI   rI   ;   s-     DEDCEF  r(   rI   c                      a  ] tR t^Gt o RtRtRtRtRtRt	Rt
Rt]! ]R7      tRtRtRt]! ]R7      tRtV 3R ltRtV tR# )VideosResultzVideo search result.r>   )default_factoryc                   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[S[ S[ 3,          ;R&   S[ ;R	&   S[ ;R
&   S[ ;R&   S[S[ S[ 3,          ;R&   S[ ;R&   # )r   r   contentdescriptionduration
embed_html	embed_urlimage_tokenimagesprovider	publishedr   
statisticsuploader)r"   dict)r#   r$   s   "r%   r&   VideosResult.__annotate__G   s      O	 
             cN8        S#X<   ! r(   r2   N)r3   r4   r5   r6   r7   r   rP   rQ   rR   rS   rT   rU   r   r[   rV   rW   rX   r   rY   rZ   r8   r9   r:   r;   s   @r%   rM   rM   G   sZ     EGKHJIK"48FHII!&t!<JH!  r(   rM   c                   H   a  ] tR t^Zt o RtRtRtRtRtRt	Rt
V 3R ltRtV tR# )BooksResultzBook search result.r>   c                b   < V ^8  d   Qh/ S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   S[ ;R&   # )r   r   r   r   r   r   r   r!   )r#   r$   s   "r%   r&   BooksResult.__annotate__Z   sP      O	 
     N  
M   r(   r2   N)r3   r4   r5   r6   r7   r   r   r   r   r   r   r8   r9   r:   r;   s   @r%   r^   r^   Z   s-     EFIDCI  r(   r^   c                      a  ] tR t^ft o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
RtV tR# )ResultsAggregatorzAggregates incoming results.

Items are deduplicated by `cache_field`. Append just increments a counter;
`extract_results` returns items sorted by descending frequency.
c                4   < V ^8  d   QhRS[ S[,          RR/# )r   cache_fieldsr    N)setr"   )r#   r$   s   "r%   r&   ResultsAggregator.__annotate__m   s     ' 'SX '$ 'r(   c                |    V'       g   R p\        V4      h\        V4      V n        \        4       V n        / V n        R# )z)At least one cache_field must be providedN)
ValueErrorre   rd   r   _counter_cache)r.   rd   msgs   && r%   __init__ResultsAggregator.__init__m   s1    =CS/!-&-i$&r(   c                &   < V ^8  d   QhRS[ RS[/# )r   itemr    )r   r"   )r#   r$   s   "r%   r&   rf   u   s     " "Q "3 "r(   c                    VP                    F1  pW P                  9   g   K  \        VP                   V,          4      u # 	  R V: RV P                   2p\        V4      h)zItem z has none of the cache fields )__dict__rd   r"   AttributeError)r.   ro   keyrk   s   &&  r%   _get_keyResultsAggregator._get_keyu   sW    ==C'''4==-.. ! dX;D<M<M;NOS!!r(   c                    < V ^8  d   QhRS[ /# r   r    )int)r#   r$   s   "r%   r&   rf   |   s          r(   c                ,    \        V P                  4      # )z(Return the number of items in the cache.)lenrj   )r.   s   &r%   __len__ResultsAggregator.__len__|   s    4;;r(   c                $   < V ^8  d   QhRS[ RR/# )r   ro   r    N)r   )r#   r$   s   "r%   r&   rf      s        1    r(   c                ^   V P                  V4      pW P                  9  g_   \        VP                  P	                  RR4      4      \        V P                  V,          P                  P	                  RR4      4      8  d   WP                  V&   V P
                  V;;,          ^,          uu&   R# )zAdd an item to the cache.

Register an occurrence of `item`. First time we see its key,
we store the item; every time we bump the counter.
r   r>   N)rt   rj   rz   rq   r+   ri   )r.   ro   rs   s   && r%   appendResultsAggregator.append   s     mmD!kk!S):):62)F%G#KK%%))&"5K
 &
  $KKcar(   c                4   < V ^8  d   QhRS[ S[,          RR/# )r   itemsr    N)listr   )r#   r$   s   "r%   r&   rf      s      DG  r(   c                :    V F  pV P                  V4       K  	  R# )z!Add a list of items to the cache.N)r   )r.   r   ro   s   && r%   extendResultsAggregator.extend   s    DKK r(   c                F   < V ^8  d   QhRS[ S[S[S[3,          ,          /# rw   )r   r[   r"   r   )r#   r$   s   "r%   r&   rf      s$     U UtDcN3 Ur(   c                    V P                   P                  4        UUu. uF"  w  rV P                  V,          P                  NK$  	  upp# u uppi )zXReturn a list of items, sorted by descending frequency. Each item is returned as a dict.)ri   most_commonrj   rq   )r.   rs   _s   &  r%   extract_dictsResultsAggregator.extract_dicts   s:    8<8Q8Q8ST8SfcC ))8STTTs   (A
)rj   ri   rd   N)r3   r4   r5   r6   r7   rl   rt   r{   r   r   r   r9   r:   r;   s   @r%   rb   rb   f   sH     ' '" "       
U Ur(   rb   N)r7   abcr   collectionsr   collections.abcr   r   dataclassesr   r   typingr   r	   r
   r   utilsr   r   r   r   r   r=   rB   rI   rM   r^   rb   r2   r(   r%   <module>r      s       - ( 2 2 C CCL. ..    	: 	 	    :  $ *  .UWQZ .Ur(   