
    *j                    `    d Z ddlmZ ddlZddlmc mZ ddl	m
Z
 ddlmZ d Zd Zd Zd	 ZdS )
z+Tests for auto-compile improvement actions.    )annotationsNSourceCandidate)improve_sources_configc                   K   d#d$d} t          ddg d	d
dddd|            d {V \  }}d}||v }|st          j        d|fd||f          t          j        |          dt	          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j        |                    d x}}d |d         D             }dg}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }	t          t          j        |	                    d x}x}}|d         d         d         }d }||u }|slt          j        d!|fd"||f          t          j        |          t          j        |          dz  }dd|iz  }	t          t          j        |	                    d x}x}}d S )%NFnamestrinclude_podcastsboolc           
       K   d}| |k    }|st          j        d|fd| |f          dt          j                    v st          j        |           rt          j        |           ndt          j        |          dz  }dd|iz  }t          t          j        |                    d x}}d}||u }|st          j        d	|fd
||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd|iz  }t          t          j        |                    d x}}t          ddddddddi          t          dddd          gS )NAda Lovelace==z%(py0)s == %(py3)sr   py0py3assert %(py5)spy5Fis)z%(py0)s is %(py3)sr
   bookPublic Book$https://www.gutenberg.org/ebooks/123public-domain	gutenberggutenberg-123gutenberg_id{   source_typetitle
origin_urlrights
fetch_type	source_idfetch_configarticlezModern Articlezhttps://example.com/articlezfair-use-excerpt)r!   r"   r#   r$   )	
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr   )r   r
   @py_assert2@py_assert1@py_format4@py_format6s         D/Users/jameslopez/projects/MentorCore/tests/compiler/test_improve.pyfake_discoverzTtest_improve_adds_public_domain_candidates_and_marks_approved.<locals>.fake_discover
   s     %%t~%%%%%%%%%%t~%%%%%%%%%%%%t%%%%%t%%%%%%~%%%%%%%%%%%%%%%%%%%%%%%%%#((5((((((((((5(((((((((((((((((((((((5((((((((((((((((((((((((("#A&&),c2   %&8)	  
 	
    ada-lovelacer   slugdisplay_namesources皙?333333?r   groundednessstyle_matchmisattribution   	iterationdiscover_fnz)added 1 public-domain source candidate(s))in)z%(py1)s in %(py3)sactions)py1r   r   r   c                    g | ]
}|d          S )id ).0ss     r5   
<listcomp>zQtest_improve_adds_public_domain_candidates_and_marks_approved.<locals>.<listcomp>'   s    ///AdG///r7   r<   r   r   z%(py1)s == %(py4)srI   py4assert %(py6)spy6approvedTr   )z%(py1)s is %(py4)sFr   r	   r
   r   )	r   r)   r*   r.   r+   r,   r-   r/   r0   )
r6   configrH   @py_assert0r1   r3   r4   @py_assert3@py_format5@py_format7s
             r5   =test_improve_adds_public_domain_candidates_and_marks_approvedr]   	   s     
 
 
 
 
* 3BOOSAFF!	        OFG 7A6'AAAAAAAAAA6'AAAAA6AAAAAAAAAAA'AAAAA'AAAAAAAAAAAAAAAAAAAAAAAAAAA//VI.///DO3DD/3DDDDDDDDDDD/3DDDDDD/DDDD3DDDDDDDDDDDDDDDDDDDDDDDDDDDD)Q
+3t3+t3333333333+t33333+3333t33333333333333333333333333333r7   c                 r  K   dd d} ddd	d
dgd}t          |ddddd|            d {V \  }}g }||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd|iz  }t          t          j        |                    d x}}|d         }t          |          }d}	||	k    }
|
st          j        d|
fd||	f          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          t          j        |	          dz  }dd|iz  }t          t          j        |                    d x}x}x}
}	|d         }t          |          }d}	||	k    }
|
st          j        d|
fd||	f          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          t          j        |	          dz  }dd|iz  }t          t          j        |                    d x}x}x}
}	d S )!NFr   r	   r
   r   c           
     8   K   t          ddddddddi	          gS )
Nr   r   r   r   r   r   r   r   r    r   r   r
   s     r5   r6   zAtest_improve_deduplicates_existing_sources.<locals>.fake_discover,   s<      "#A&&),c2  

 
	
r7   r8   r   r   T)rK   rU   r9   r=   r>   r   r?   rC   rD   r   r   rH   r   r   r   r<   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)slen)r   py2rR   py7zassert %(py9)spy9rV   rW   )
r   r)   r*   r+   r,   r-   r.   r/   r0   ra   )r6   originalrX   rH   r1   r2   r3   r4   rZ   @py_assert6@py_assert5@py_format8@py_format10s                r5   *test_improve_deduplicates_existing_sourcesrj   +   sd     
 
 
 
 
 &*==> H 3SAFF!	        OFG 7b=7b77bi &3 !!&Q&!Q&&&&&&&&&&!Q&&&&&&&&&&&&3&&&&&3&&&&&& &&&&!&&&&Q&&&&&&&&&&&&&&&&&&&&&&&&&&&&&	"(3"##(q(#q((((((((((#q((((((((((((3(((((3(((((("((((#((((q(((((((((((((((((((((((((((((((r7   c                   K   t          ddg ddddddd	d
ddd           d {V \  } }| d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t	          t          j        |                    d x}x}}| d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t	          t          j        |                    d x}x}}| d         d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }t	          t          j        |                    d x}x}}d |D             }t          |          }|sddt          j                    v st          j	        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }t	          t          j        |                    d x}}d S ) Nr8   r      @   )retrieval_top_kchunk_overlap)r:   r;   r<   indexg?r=   r   r?      Fc                    g S NrL   r`   s     r5   <lambda>zEtest_improve_tweaks_retrieval_when_groundedness_low.<locals>.<lambda>U        r7   rD   rp   rn      r   rP   rQ   rS   rT   ro   P   autolast_iterationc              3     K   | ]}d |v V  	dS )ztweaked retrieval/index paramsNrL   )rM   actions     r5   	<genexpr>zFtest_improve_tweaks_retrieval_when_groundedness_low.<locals>.<genexpr>[   s(      PPf/69PPPPPPr7   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}any)r   rb   rR   rV   )
r   r)   r*   r.   r/   r0   r}   r+   r,   r-   )rX   rH   rY   rZ   r1   r[   r\   r2   s           r5   3test_improve_tweaks_retrieval_when_groundedness_lowr~   K   s<     2"*)*R@@		
 	
 SAFF;;;
 
 
 
 
 
 
 
 
OFG '?,-22-2222222222-22222-2222222222222222222222222222222'??+1r1+r1111111111+r11111+1111r111111111111111111111111111&>*+0q0+q0000000000+q00000+0000q000000000000000000000000000PPPPPP3PPPPPPPPPPPPPPPP3PPPPP3PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPr7   c                   K   t          ddg dddddddd
           d {V \  } }g }||k    }|st          j        d|fd||f          dt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd|iz  }t          t          j        |                    d x}}| d         }g }||k    }|slt          j        d|fd||f          t          j        |          t          j        |          dz  }dd|iz  }	t          t          j        |	                    d x}x}}d S )Nr8   r   r9   r=   gffffff?r   r?   rC   Fc                    g S rs   rL   r`   s     r5   rt   z5test_improve_noops_when_scores_pass.<locals>.<lambda>c   ru   r7   rD   r   r   rH   r   r   r   r<   rP   rQ   rS   rT   rV   )	r   r)   r*   r+   r,   r-   r.   r/   r0   )
rX   rH   r1   r2   r3   r4   rY   rZ   r[   r\   s
             r5   #test_improve_noops_when_scores_passr   ^   s     2BOOSAFF;;;	        OFG 7b=7b77b)""""""""""""""""""""""""""""""""""""""""""""""""""r7   )__doc__
__future__r   builtinsr+   _pytest.assertion.rewrite	assertionrewriter)   compiler.sources.discoverr   compiler.stages.improver   r]   rj   r~   r   rL   r7   r5   <module>r      s    1 1 " " " " " "               5 5 5 5 5 5 : : : : : :4 4 4D) ) )@Q Q Q&	# 	# 	# 	# 	#r7   