
    +#h	                     R    d dl mZ d dlmZmZmZmZ  G d d      Z G d de      Zy)    )Callable)Field
TemplateV2format_answerspassages2textc                   <    e Zd ZdZd
dededdfdZd Zdedefd	Z	y)Typez@A primitive datatype that defines and represents a prompt label.Nprefixdescreturnc                 .    || _         || _        || _        y N)r
   r   format)selfr
   r   r   s       V/var/www/html/sandstorm/venv/lib/python3.12/site-packages/dsp/templates/template_v3.py__init__zType.__init__	   s    	    c                 8    i | j                   |}t        di |S )N )__dict__r	   )r   kwargss     r   __call__zType.__call__   s!    ,DMM,V,~f~r   _Type__valuec                 X    t        |t              xr | j                  |j                  k(  S r   )
isinstancer	   r   )r   r   s     r   __eq__zType.__eq__   s#    '4(NT]]g>N>N-NNr   r   )
__name__
__module____qualname____doc__strr   r   objectboolr   r   r   r   r	   r	      s:    Js # t 
Of O Or   r	   c                   .    e Zd ZdZdefdZd ZdefdZy)TemplatezMA template datatype that represents the structure of communicate with the LM.instructionsc                    || _         || _        g | _        t        t        t        d| _        |j                         D ]  \  }}|j                  }|j                         |k(  rt        |      dkD  rdn|t        |j                               d  }t        |j                         |j                  |||      }| j                  j                  |       |j                  s|j                  | j
                  |<    y )N)contextpassagesanswersr    )namedescriptioninput_variableoutput_variable	separator)r&   r   fieldsr   r   format_handlersitemsr
   rstriplenr   stripr   appendr   )r   r&   r   keyvaluer
   r0   fields           r   r   zTemplate.__init__   s    (#%$%%5
 !,,. 	9JC,,F}}&0S[1_&QTU[UbUbUdQeQgJh  \\^!JJ" ##E KKu%||,1LL$$S)	9r   c                    t        | j                  j                               t        |j                  j                               k7  rt        d       y| j                  j                         D ]3  }| j                  |   |j                  |   }}||k(  r't        |||       5 | j                  |j                  k(  xr | j                  |j                  k(  S )Nhere2F)setr   keysprintr&   )r   otherkv1v2s        r   r   zTemplate.__eq__7   s    t{{!"c%,,*;*;*=&>>'N!!# 	!A[[^U\\!_B8aR 	!   E$6$66V4;;%,,;VVr   r   c                 x    | j                   D cg c]  }|j                   }}d| j                   d| dS c c}w )Nz	Template(z, ))r1   r,   r&   )r   r:   field_namess      r   __str__zTemplate.__str__E   s>    /3{{;euzz;;4,,-R}A>> <s   7N)r   r   r   r    r!   r   r   rG   r   r   r   r%   r%      s#    W9S 9<W? ?r   r%   N)	typingr   dsp.templatesr   r   r   r   r	   r%   r   r   r   <module>rJ      s&     J JO O 3?z 3?r   