a
    bgc
                     @   sD   d dl Z d dlmZmZmZ d dlmZmZmZ G dd deZ	dS )    N)AnyDictLiteral)	BaseModelFieldmodel_validatorc                   @   s   e Zd ZU dZdZeed< dZeed< dZ	e
d ed< eed	Zeeef ed
< dZeed< eddeeedddZeedddZdS )StackExchangeAPIWrapperzWrapper for Stack Exchange API.Nclient   max_resultsall)r   titlebody
query_type)default_factoryfetch_paramsz

result_separatorbefore)mode)valuesreturnc                 C   s<   zddl m} |d|d< W n ty6   tdY n0 |S )z1Validate that the required Python package exists.r   )StackAPIZstackoverflowr	   z^The 'stackapi' Python package is not installed. Please install it with `pip install stackapi`.)Zstackapir   ImportError)clsr   r    r   y/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/utilities/stackexchange.pyvalidate_environment   s    
z,StackExchangeAPIWrapper.validate_environment)queryr   c                    s
  | j dkrdn| j }| jjdi ||i| j}t|d dk rLd| dS dd	 |d D d
| j }dd	 |d D }g }|D ]z d d  d d  } fdd	|D }dd	 |D }	|r|	r|	d n|d }
t|
d }|d| 7 }|| q| j	
|S )z6Run query through StackExchange API and parse results.r   qsearch/excerptsitems   zNo relevant results found for 'z' on Stack Overflow.c                 S   s   g | ]}|d  dkr|qS )	item_typequestionr   .0itemr   r   r   
<listcomp>.   s   z/StackExchangeAPIWrapper.run.<locals>.<listcomp>Nc                 S   s   g | ]}|d  dkr|qS )r"   answerr   r$   r   r   r   r'   1       z
Question: r   
excerptc                    s    g | ]}|d   d  kr|qS )Zquestion_idr   r%   r(   r#   r   r   r'   5   s   c                 S   s   g | ]}|d  r|qS )Zis_acceptedr   r,   r   r   r   r'   :   s   r   z	
Answer: )r   )r   r	   fetchr   lenr   htmlunescapeappendr   join)selfr   Z	query_keyoutputZ	questionsZanswersresultsZres_textZrelevant_answersZaccepted_answersZ
top_answerr+   r   r-   r   run%   s@     
zStackExchangeAPIWrapper.run)__name__
__module____qualname____doc__r	   r   __annotations__r   intr   r   r   dictr   r   strr   r   classmethodr   r7   r   r   r   r   r      s   
r   )
r0   typingr   r   r   Zpydanticr   r   r   r   r   r   r   r   <module>   s   