
    Ngc
                     R    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e          Z	dS )    N)AnyDictLiteral)	BaseModelFieldmodel_validatorc                       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	          Zeeef         ed
<   	 dZeed<   	  ed          ededefd                        Zdedef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                 l    	 ddl m}  |d          |d<   n# t          $ r t          d          w xY w|S )z1Validate that the required Python package exists.r   )StackAPIstackoverflowr   z^The 'stackapi' Python package is not installed. Please install it with `pip install stackapi`.)stackapir   ImportError)clsr   r   s      g/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/utilities/stackexchange.pyvalidate_environmentz,StackExchangeAPIWrapper.validate_environment   sj    	))))))'x88F8 	 	 	A  	
 s    1queryc                 8   | j         dk    rdn| j         } | j        j        	 di ||i| j        }t	          |d                   dk     rd| dS d |d         D             d	| j                 }d
 |d         D             }g }|D ]{dd          dd          }fd|D             }d |D             }	|r4|	r|	d         n|d         }
t          j        |
d                   }|d| z  }|                    |           || 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                 *    g | ]}|d          dk    |S )	item_typequestion .0items     r   
<listcomp>z/StackExchangeAPIWrapper.run.<locals>.<listcomp>.   s.     
 
 
[0AZ0O0OD0O0O0O    Nc                 *    g | ]}|d          dk    |S )r(   answerr*   r+   s     r   r.   z/StackExchangeAPIWrapper.run.<locals>.<listcomp>1   s'    UUUDtK7HH7T7T47T7T7Tr/   z
Question: r   
excerptc                 8    g | ]}|d          d          k    |S )question_idr*   )r,   r1   r)   s     r   r.   z/StackExchangeAPIWrapper.run.<locals>.<listcomp>5   s8          -(H],CCC CCCr/   c                 "    g | ]}|d          
|S )is_acceptedr*   )r,   r1   s     r   r.   z/StackExchangeAPIWrapper.run.<locals>.<listcomp>:   s2          !9N      r/   r   z	
Answer: )r$   )r   r   fetchr   lenr   htmlunescapeappendr   join)selfr!   	query_keyoutput	questionsanswersresultsres_textrelevant_answersaccepted_answers
top_answerr3   r)   s               @r   runzStackExchangeAPIWrapper.run%   s     ?e33CC	""
 
"+U!3
7;7H
 
 vg!##PUPPPP
 
#G_
 
 

D
	 VUF7OUUU! 	% 	%HNHW$5NN)9LNNH       %     
   %5        3+;T$Q''AQRSAT  -
9(=>>2222NN8$$$$$))'222r/   )__name__
__module____qualname____doc__r   r   __annotations__r   intr   r   r   dictr   r   strr   r   classmethodr    rH   r*   r/   r   r
   r
      s         ))FCK527J./777 $)5#>#>#>L$sCx.>>>6"c"""2_(###$ 3    [ $# 3  3  3  3  3  3  3  3r/   r
   )
r:   typingr   r   r   pydanticr   r   r   r
   r*   r/   r   <module>rT      s~     % % % % % % % % % % 6 6 6 6 6 6 6 6 6 6>3 >3 >3 >3 >3i >3 >3 >3 >3 >3r/   