
    +#h
                     :    d dl mZ  G d de      Z G d d      Zy)    )Examplec                   L     e Zd Z fdZedd       Zd Zd Zed        Z	 xZ
S )
Predictionc                 :    t        |   |i | | `| `d | _        y N)super__init___demos_input_keys_completions)selfargskwargs	__class__s      W/var/www/html/sandstorm/venv/lib/python3.12/site-packages/dspy/primitives/prediction.pyr	   zPrediction.__init__   s(    $)&)K     c                      |        }t        ||      |_        |j                  j                         D ci c]  \  }}||d    c}}|_        |S c c}}w )N)	signaturer   )Completionsr   items_store)clslist_or_dictr   objkvs         r   from_completionszPrediction.from_completions   sP    e&|yI*-*:*:*@*@*BC$!Qa1gC

 Ds   Ac                     dj                  d | j                  j                         D              }| j                  t	        | j                        dk(  rd| dS t	        | j                        }d| d|dz
   dS )N,
    c              3   B   K   | ]  \  }}| d t        |         yw=Nrepr.0r   r   s      r   	<genexpr>z&Prediction.__repr__.<locals>.<genexpr>   s#     #UAqc47)$4#U      zPrediction(
    
)z&,
    completions=Completions(...)
) (z completions omitted))joinr   r   r   len)r   
store_reprnum_completionss      r   __repr__zPrediction.__repr__   s    ^^#UARARAT#UU
$D,=,=(>!(C&zl#66d//0":,.VWfghWhVii~r   c                 "    | j                         S r   r/   r   s    r   __str__zPrediction.__str__   s    }}r   c                     | j                   S r   r   r2   s    r   completionszPrediction.completions!   s       r   r   )__name__
__module____qualname__r	   classmethodr   r/   r3   propertyr6   __classcell__)r   s   @r   r   r      s;    !  @ ! !r   r   c                   >    e Zd Zd
dZd Zd Zd Zd Zd Zd Z	d	 Z
y)r   Nc                    || _         t        |t              rCi }|D ];  }|j                         D ]&  \  }}|j	                  |g       j                  |       ( = n|}t        d |j                         D              sJ d       |rTt        t        t        |j                                           t        fd|j                         D              sJ d       || _        y )Nc              3   <   K   | ]  }t        |t                y wr   )
isinstancelist)r&   r   s     r   r'   z'Completions.__init__.<locals>.<genexpr>2   s     @1:a&@s   zAll values must be listsc              3   :   K   | ]  }t        |      k(    y wr   )r,   )r&   r   lengths     r   r'   z'Completions.__init__.<locals>.<genexpr>6   s     AAs1v'As   z#All lists must have the same length)r   r@   rA   r   
setdefaultappendallvaluesr,   nextiterr   )r   r   r   r   argr   r   rC   s          @r   r	   zCompletions.__init__'   s    "lD)F# 7IIK 7DAq%%a,33A677 "F@@@\B\\@d6==?345FAAAhChhA"r   c                 6    | j                   j                         S r   )r   r   r2   s    r   r   zCompletions.items:   s      &&((r   c                     t        |t              rX|dk  s|t        |       k\  rt        d      t	        di | j
                  j                         D ci c]  \  }}|||    c}}S | j
                  |   S c c}}w )Nr   zIndex out of range )r@   intr,   
IndexErrorr   r   r   )r   keyr   r   s       r   __getitem__zCompletions.__getitem__=   su    c3Qw#T* !566Rt7H7H7N7N7P Qtq!AcF QRR  %% !Rs   A8c                     || j                   v r| j                   |   S t        dt        |       j                   d| d      )N'z' object has no attribute ')r   AttributeErrortyper7   )r   names     r   __getattr__zCompletions.__getattr__F   sJ    4$$$$$T**qd!4!4 55PQUPVVWXYYr   c                 l    t        t        t        | j                  j	                                           S r   )r,   rH   rI   r   rG   r2   s    r   __len__zCompletions.__len__L   s(     4T..55789::r   c                     || j                   v S r   r5   )r   rP   s     r   __contains__zCompletions.__contains__Q   s    d''''r   c                 n    dj                  d | j                  j                         D              }d| dS )Nr   c              3   B   K   | ]  \  }}| d t        |         ywr!   r#   r%   s      r   r'   z'Completions.__repr__.<locals>.<genexpr>U   s#     #[Aqc47)$4#[r(   zCompletions(
    r*   )r+   r   r   )r   
items_reprs     r   r/   zCompletions.__repr__T   s4    ^^#[ARARAXAXAZ#[[
#J<s33r   c                 "    | j                         S r   r1   r2   s    r   r3   zCompletions.__str__X   s    }}r   r   )r7   r8   r9   r	   r   rQ   rW   rY   r[   r/   r3   rM   r   r   r   r   &   s+    #&)&Z;
(4r   r   N)dspy.primitives.exampler   r   r   rM   r   r   <module>ra      s    +! !D4 4r   