
    +#h                     >    d dl Z d dlZd dlZddlmZ  G d de      Zy)    N   )Predictc                   0     e Zd Z fdZd Zd Zd Z xZS )Retryc                     t         |   |j                         || _        |j                  | _        |j
                  | _        | j                  | j                        | _        y )N)	super__init__	signaturemoduleoriginal_signatureforwardoriginal_forward_create_new_signaturenew_signature)selfr   	__class__s     O/var/www/html/sandstorm/venv/lib/python3.12/site-packages/dspy/predict/retry.pyr	   zRetry.__init__
   sP    ))*"("2"2 &!778O8OP    c                 J   |j                   j                         D ]Y  \  }}|j                  d| t        j                  d|j
                  d   z   d|j
                  j                  d                  }[ |j                  dt        j                  dd	t                    }|S )
Npast_zPast prefixzpast output with errorsformat)r   descr   feedbackzInstructions:z"Some instructions you must satisfy)output_fieldsitemsappenddspy
InputFieldjson_schema_extragetstr)r   r
   keyvalues       r   r   zRetry._create_new_signature   s    #11779 	JC!((5!8!8!BB...228<9 I	 $$Z"52
 	 r   c                0   |j                  dd       }|r'|| _        | j                  | j                        | _        |j	                         D ](  \  }}d| }|| j                  j
                  v s$|||<   * | j                  |d<    | j                  di |S )Nr   r    )popr   r   r   r   input_fieldsr   )r   past_outputskwargsr   r#   r$   past_keys          r   r   zRetry.forward"   s    

?D9&3D#!%!;!;D<S<S!TD ',,. 	)JCse}H4--:::#(x 	) #'"4"4$t$$.v..r   c                 \   t        j                  |      }d|d<   |j                  d| j                  | j                  ng        t        j
                  j                  | k(  rUt        j
                  j                  j                         D ]  \  }}|j                  ||         | j                  di |}n | j                  di |}dD ]  }|j                  |d         t        j
                  j                  0t        j
                  j                  }|j                  | i ||f       |S )NF_tracedemos)r-   r.   r
   r   configlmr)   r&   )copydeepcopy
setdefaultr.   r   settingsbacktrack_tobacktrack_to_argsr   r   r   r'   dsptracer   )r   r*   cached_kwargsr#   r$   predr8   s          r   __call__zRetry.__call__4   s   f- x'1G4::RP ==%%-"mm==CCE .
U!!#u-.4<<)&)D4;;((D
 e 	"CJJsD!	" <<)LL&&ELL$
6
D12r   )__name__
__module____qualname__r	   r   r   r;   __classcell__)r   s   @r   r   r   	   s    Q"/$r   r   )r1   r7   r   predictr   r   r&   r   r   <module>rA      s     
  AG Ar   