
    +#h                     V    d dl Z d dlmZmZmZ d dlZd dlmZ d dlm	Z	  G d de      Z
y)    N)ListOptionalUnion)	Parameter)
Predictionc                   d    e Zd ZdZdZdZddZd Zd Zd Z	d Z
dd
eeee   f   dee   defdZy	)RetrieveSearchqueryzXtakes a search query and returns one or more potentially relevant passages from a corpusc                 b    t        j                  d      j                         | _        || _        y )N   )random	randbyteshexstagek)selfr   s     S/var/www/html/sandstorm/venv/lib/python3.12/site-packages/dspy/retrieve/retrieve.py__init__zRetrieve.__init__   s$    %%a(,,.
    c                      y N )r   s    r   resetzRetrieve.reset   s    r   c                 H    dg}|D ci c]  }|t        | |       c}S c c}w )Nr   )getattr)r   
state_keysr   s      r   
dump_statezRetrieve.dump_state   s)    U
-7874##888s   c                 N    |j                         D ]  \  }}t        | ||        y r   )itemssetattr)r   statenamevalues       r   
load_statezRetrieve.load_state   s'     ;;= 	'KD%D$&	'r   c                 &     | j                   |i |S r   )forward)r   argskwargss      r   __call__zRetrieve.__call__   s    t||T,V,,r   Nquery_or_queriesr   returnc                    t        |t              r|gn|}|D cg c]2  }|j                         j                  d      d   j                         4 }}||n| j                  }t        j                  |fd|i|}t        |      S c c}w )N
r   r   )passages)
isinstancestrstripsplitr   dspretrieveEnsembler   )r   r+   r   r)   queriesr   r/   s          r   r'   zRetrieve.forward    s    (23CS(I#$O_ELME5;;=&&t,Q/557MM ADFF''>1>v>8,, Ns   7B)   r   )__name__
__module____qualname__r#   input_variabledescr   r   r   r%   r*   r   r1   r   r   intr   r'   r   r   r   r	   r	   	   sV    DNeD9'--c49n(= -(3- -dn -r   r	   )r   typingr   r   r   r4   dspy.predict.parameterr   dspy.primitives.predictionr   r	   r   r   r   <module>rA      s#     ( ( 
 , 1-y -r   