
    5P@i"                    r   d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddlm
Z ddlmZ dd	lmZ dd
lmZ dZej$                  Zej&                  Ze	j(                  ZddZe	j,                  dd       Ze	j0                  dd       Zej4                  j7                  ej8                  dej8                  e   i       G d dej<                               Zej4                  j7                  ej8                  dej8                  e   i       G d dej<                               Z edk(  r ejB                          yy)z!Unittests for post_process_utils.    )annotationsN)mock)absltest)post_process_utils)post_process_utils_test_helper)llm_function)llmfn_output_row)modelzthis is a string not a functionc                    t        |       S Nlenxs    ~/home/www/lebenam.kofcorporation.com/venv/lib/python3.12/site-packages/google/generativeai/notebook/post_process_utils_test.py
add_lengthr   $   s    q6M    c                    t        |       S r   r   r   s    r   add_length_decoratedr   (   s    q6Mr   c                "    | j                         S r   )upperr   s    r   to_upperr   -   s    779r   __main__c                  H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)PostProcessUtilsResolveTestc                    | j                  t        d      5  t        j                  g        d d d        y # 1 sw Y   y xY w)NzCannot have emptyassertRaisesRegexPostProcessParseErrorr   '_resolve_one_post_processing_expressionselfs    r   $test_cannot_resolve_empty_expressionz@PostProcessUtilsResolveTest.test_cannot_resolve_empty_expression5   s;    ##$9;NO 	KFFrJ	K 	K 	Ks   6?c                    | j                  t        d      5  t        j                  ddg       d d d        y # 1 sw Y   y xY w)Nzshould be a single tokenhelloworldr   r!   s    r   (test_cannot_resolve_multiword_expressionzDPostProcessUtilsResolveTest.test_cannot_resolve_multiword_expression9   sA    ##$9;UV 	[FFQXGYZ	[ 	[ 	[	   8Ac                    | j                  t        d      5  t        j                  dg       d d d        y # 1 sw Y   y xY w)Nz"Unable to resolve "invalid_module"zinvalid_module.add_lengthr   r!   s    r   "test_cannot_resolve_invalid_modulez>PostProcessUtilsResolveTest.test_cannot_resolve_invalid_module=   s=    ##$9;_` 	FF,-	 	 		   7A c                    | j                  t        d      5  t        j                  dg       d d d        y # 1 sw Y   y xY w)Nz+Unable to resolve "helper.invalid_function"zhelper.invalid_functionr   r!   s    r   $test_cannot_resolve_invalid_functionz@PostProcessUtilsResolveTest.test_cannot_resolve_invalid_functionC   sC    ##!#P
 	d FFHaGbc	d 	d 	dr+   c                    t        j                  dg      \  }}| j                  d|       | j                  t        |       | j                  d |d             y )Nr      hello_world)r   r    assertEqualr   r"   nameexprs      r   !test_resolve_undecorated_functionz=PostProcessUtilsResolveTest.test_resolve_undecorated_functionI   sO    'OOQ]P^_
dt,T*T-01r   c           	        t        j                  dg      \  }}| j                  d|       | j                  t        |       | j	                  |t         j
                         | j                  dg |t        ddit              g             y )Nr   r/   text_resultr0   dataresult_type)r   r    r1   r   assertIsInstance_ParsedPostProcessAddExprLLMFnOutputRowstrr2   s      r   #test_resolve_decorated_add_functionz?PostProcessUtilsResolveTest.test_resolve_decorated_add_functionO   s    'OO#$

d 	/6-t4d$6$P$PQD.}m&DRUVWX	
r   c           	        t        j                  dg      \  }}| j                  d|       | j                  t        |       | j	                  |t         j
                         | j                  dg |t        ddit              g             y )Nr   HELLO_WORLDr7   r0   r8   )r   r    r1   r   r;   _ParsedPostProcessReplaceExprr=   r>   r2   s      r   'test_resolve_decorated_replace_functionzCPostProcessUtilsResolveTest.test_resolve_decorated_replace_function[   s|    'OOQ[P\]
dT*4(d$6$T$TUO.}m&DRUVWX	
r   c                    t        j                  dg      \  }}| j                  d|       | j                  t        j                  |       | j                  d |d             y )Nhelper.add_lengthr/   r0   )r   r    r1   helperr   r2   s      r   (test_resolve_module_undecorated_functionzDPostProcessUtilsResolveTest.test_resolve_module_undecorated_functionf   sZ    'OO !

d 	,d3**D1T-01r   c           	     0   t        j                  dg      \  }}| j                  d|       | j                  t        j                  |       | j                  |t         j                         | j                  dg |t        ddit              g             y )Nhelper.add_length_decoratedr/   r7   r0   r8   )	r   r    r1   rF   r   r;   r<   r=   r>   r2   s      r   *test_resolve_module_decorated_add_functionzFPostProcessUtilsResolveTest.test_resolve_module_decorated_add_functionn   s    'OO*+

d 	6=44d;d$6$P$PQD.}m&DRUVWX	
r   c           	     0   t        j                  dg      \  }}| j                  d|       | j                  t        j                  |       | j                  |t         j                         | j                  dg |t        ddit              g             y )Nhelper.to_upperrA   r7   r0   r8   )	r   r    r1   rF   r   r;   rB   r=   r>   r2   s      r   .test_resolve_module_decorated_replace_functionzJPostProcessUtilsResolveTest.test_resolve_module_decorated_replace_functionz   s    'OOQbPcd
d*D1$/d$6$T$TUO.}m&DRUVWX	
r   N)__name__
__module____qualname__r#   r'   r*   r-   r5   r?   rC   rG   rJ   rM    r   r   r   r   3   s7    K[d2

	
2


r   r   c                  $    e Zd Zd Zd Zd Zd Zy)PostProcessUtilsTestc                    | j                  t        d      5  t        j                  dgg       d d d        y # 1 sw Y   y xY w)NzNOT_A_FUNCTION is not callableNOT_A_FUNCTION)r   r   r   resolve_post_processing_tokensr!   s    r   test_must_be_callablez*PostProcessUtilsTest.test_must_be_callable   sB    ##$9;[\ 	T==@P?Q>RS	T 	T 	Tr(   c           	        t        j                  dgg      }| j                  |d       | j                  |d   t         j                         t        j                  t        j                         dg      }|d   j                  |        |       }| j                  dgdgdgdgdgdgd|j                                y)	zATest that from a post-processing token to an updated LLMFunction.r      r   r%   r
   prompts   )	Input Num
Prompt NumPrompt
Result Numr   r7   N)r   rV   	assertLenr;   r<   r   LLMFunctionImpl	model_lib	EchoModeladd_to_llm_functionr1   as_dictr"   parsed_exprsllm_fnresultss       r   test_parsed_post_process_add_fnz4PostProcessUtilsTest.test_parsed_post_process_add_fn   s    )HH

 	|Q'l1o/A/[/[\--I4G4G4IT[S\]Q++F3(S c") c c 'y OO
	
r   c                |   t        j                  dgg      }| j                  |d       | j                  |d   t         j                         t        j                  t        j                         dg      }|d   j                  |        |       }| j                  dgdgdgdgdgd|j                                y )Nr   rY   r   r%   rZ   HELLO)r]   r^   r_   r`   r7   )r   rV   ra   r;   rB   r   rb   rc   rd   re   r1   rf   rg   s       r   #test_parsed_post_process_replace_fnz8PostProcessUtilsTest.test_parsed_post_process_replace_fn   s    )HH

 	|Q'l1o/A/_/_`--I4G4G4IT[S\]Q++F3(S c") c 'y OO		
r   c                   t        j                  dgdgdgdgdgdgg      }|D ]"  }| j                  |t         j                         $ t	        j
                  t        j                         dg      }|D ]  }|j                  |         |       }| j                  d	gd	gdgd	gd
gd
gd
gd
gdgd	|j                                y )Nr   r   r   rE   rI   rL   r%   rZ   r   r\   rm   )	r]   r^   r_   r`   r   r   add_length_decorated_1rE   r7   )r   rV   r;   ParsedPostProcessExprr   rb   rc   rd   re   r1   rf   )r"   rh   fnri   r4   rj   s         r   #test_resolve_post_processing_tokensz8PostProcessUtilsTest.test_resolve_post_processing_tokens   s    )HH'($%./"#	
  	PB!!"&8&N&NO	P --I4G4G4IT[S\]  	-D$$V,	- (S c") c c)*+,#&'S 'y
 OO	
r   N)rN   rO   rP   rW   rk   rn   rs   rQ   r   r   rS   rS      s    T
0
,!
r   rS   )r   r>   returnint)r   r>   rt   r>   )"__doc__
__future__r   sysunittestr   absl.testingr   google.generativeai.notebookr   r   rF    google.generativeai.notebook.libr   r	   r
   rc   rU   r=   LLMFnOutputRowViewr   r   post_process_add_fnr   post_process_replace_fnr   patchdictmodulesrN   TestCaser   rS   mainrQ   r   r   <module>r      s2   ( " 
  ! ; : = ?2!00%88 *@@  '' ( ++ ,
 z3;;x+@ABN
("3"3 N
 CN
d z3;;x+@ABT
8,, T
 CT
n zHMMO r   