
    
!i                    D   S r SSKJr  SSKJrJrJrJr  SSKJ	r	  SSKJ
r
  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr   " S S\R&                  5      r    SS jr            SS jr    SS jr        SS jr            SS jrg)z\Utilities for Commands.

Common methods for Commands such as RunCommand and CompileCommand.
    )annotations)AbstractSetAnyCallableSequence)ipython_env)model_registry)parsed_args_lib)post_process_utils)llm_function)llmfn_input_utils)llmfn_output_row)llmfn_outputs)	unique_fnc                  L   ^  \ rS rSrSrSU 4S jjrSS jr    S	S jrSrU =r	$ )
_GroundTruthLLMFunction"   z9LLMFunction that returns pre-generated ground truth data.c                ,   > [         TU ]  S S9  Xl        g )N)outputs_ipython_display_fn)super__init___data)selfdata	__class__s     d/home/james-whalen/.local/lib/python3.13/site-packages/google/generativeai/notebook/command_utils.pyr    _GroundTruthLLMFunction.__init__%   s    D9
    c                    [        0 5      $ N)	frozenset)r   s    r   get_placeholders(_GroundTruthLLMFunction.get_placeholders)   s    }r   c           
     &   [         R                  " U5      n[        U R                  5      [        U5      :w  a7  [	        SR                  [        U R                  5      [        U5      5      5      e/ n[        [        U R                  U5      5       H|  u  nu  pV[        R                  " [        R                  R                  S[        R                  R                  U0[        S9nUR                  [        R                   " SUUU/S95        M~     U$ )NzCGround truth should have same number of entries as inputs: {} vs {}r   )r   result_type)
prompt_num	input_numprompt_varsoutput_rows)r   to_normalized_inputslenr   RuntimeErrorformat	enumeratezipr   LLMFnOutputRowr   ColumnNames
RESULT_NUMTEXT_RESULTstrappendLLMFnOutputEntry)r   inputsnormalized_inputsoutputsidxvaluer(   
output_rows           r   
_call_impl"_GroundTruthLLMFunction._call_impl-   s     .BB6Jtzz?c"344U\\

OS):%;  9;)23tzzCT3U)V%C%%)88!--88!!--995  J NN.. ! +!+	 *W  r   )r   )r   zSequence[str])returnzAbstractSet[str])r7   z*llmfn_input_utils.LLMFunctionInputs | Noner?   z(Sequence[llmfn_outputs.LLMFnOutputEntry])
__name__
__module____qualname____firstlineno____doc__r   r"   r=   __static_attributes____classcell__)r   s   @r   r   r   "   s*    C@	1 r   r   c                   ^  U 4S j$ )Nc                B   > TR                  U R                  5       5      $ r    )displayas_pandas_dataframe)xenvs    r   <lambda>)_get_ipython_display_fn.<locals>.<lambda>O   s    S[[!6!6!89r    )rL   s   `r   _get_ipython_display_fnrP   L   s     :9r   c                :   U/nU(       a  [        U5      OSn[        R                  " U R                  UR                  5      UR
                  UUS9nUR                  (       a  UR                  S[        R                  S9nU H  nUR                  U5      nM     U$ )z8Creates an LLMFunction from Command.execute() arguments.N)model
model_argspromptsr   unique)namefn)
rP   r   LLMFunctionImpl	get_model
model_typerS   rU   add_post_process_reorder_fnr   add_to_llm_function)	modelsrL   parsed_argscell_contentpost_processing_fnsrT   llmfn_outputs_display_fnllm_fnrW   s	            r   create_llm_functionrc   R   s     'G?B6s;)){556))#;	F 33iFYFY3Z!''/ " Mr   c                (   ^ U S   mU4S jnU S   U4$ )N   c                N   > T" U R                  5       UR                  5       5      $ r    )result_value)rK   y	simple_fns     r   rM   ,_convert_simple_compare_fn.<locals>.<lambda>p   s    )ANN$4ann6FGr   r   rO   )name_and_simple_fnnew_fnri   s     @r   _convert_simple_compare_fnrm   l   s$     #1%IGFa &((r   c           
     
   U (       a  [        U 5      OSn[        R                  " UR                  UR                  UR
                   Vs/ s H  n[        U5      PM     snUS9nU H  nUR                  U5      nM     U$ s  snf )?Creates an LLMCompareFunction from Command.execute() arguments.Nlhs_name_and_fnrhs_name_and_fncompare_name_and_fnsr   )rP   r   LLMCompareFunctionrq   rr   
compare_fnrm   r\   )rL   r^   r`   ra   rK   
llm_cmp_fnrW   s          r   create_llm_compare_functionrw   t   s     @C6s;00#33#33EPE[E[\E[8;E[\#;	J "++J7
 "  ]s   	B c           
         U(       a  [        U5      OSn[        U UUUUS9n[        UR                  S9n[        R
                  " SU4SU4UR                   Vs/ s H  n[        U5      PM     snUS9n	U	$ s  snf )ro   N)r]   rL   r^   r_   r`   )r   actualground_truthrp   )rP   rc   r   rz   r   rt   ru   rm   )
r]   rL   r^   r_   r`   ra   rb   ground_truth_fnrK   rv   s
             r   create_llm_eval_functionr|      s     @C6s; !!/F .;3K3KLO00!6*'9EPE[E[\E[8;E[\#;	J 	 ]s   A6N)rL   zipython_env.IPythonEnvr?   z,Callable[[llmfn_outputs.LLMFnOutputs], None])r]   zmodel_registry.ModelRegistryrL   ipython_env.IPythonEnv | Noner^   parsed_args_lib.ParsedArgsr_   r4   r`   2Sequence[post_process_utils.ParsedPostProcessExpr]r?   llm_function.LLMFunction)rk   z%tuple[str, Callable[[str, str], Any]]r?   z"tuple[str, llm_function.CompareFn])rL   r}   r^   r~   r`   r   r?   r   )rD   
__future__r   typingr   r   r   r   google.generativeai.notebookr   r	   r
   r    google.generativeai.notebook.libr   r   r   r   r   LLMFunctionr   rP   rc   rm   rw   r|   rO   r   r   <module>r      s   # 7 7 4 7 8 ; 9 > = : 6'l66 'T:	:1:(	& , 	
 L 4)=)')	&+ L 	((	& , 	
 L r   