
    7|hc
                     J    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	y)    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y)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                 Z    	 ddl m}  |d      |d<   |S # t        $ r t        d      w xY w)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      j/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/utilities/stackexchange.pyvalidate_environmentz,StackExchangeAPIWrapper.validate_environment   sD    	)'8F8   	A 	s    *queryc                    | j                   dk(  rdn| j                   } | j                  j                  	 di ||i| j                  }t	        |d         dk  rd| dS |d   D cg c]  }|d   dk(  s| c}d	| j
                   }|d   D cg c]  }|d   d
k(  s| }}g }|D ]~  }d|d    d|d    }	|D 
cg c]  }
|
d   |d   k(  r|
 }}
|D 
cg c]
  }
|
d   s	|
 }}
|r,|r|d   n|d   }t        j                  |d         }|	d| z  }	|j                  |	        | j                  j                  |      S c c}w c c}w c c}
w c c}
w )z6Run query through StackExchange API and parse results.r   qitems   zNo relevant results found for 'z' on Stack Overflow.	item_typequestionNanswerz
Question: r   
excerptquestion_idis_acceptedr   z	
Answer: )zsearch/excerpts)r   r   fetchr   lenr   htmlunescapeappendr   join)selfr!   	query_keyoutputitem	questionsanswersresultsr'   res_textr(   relevant_answersaccepted_answers
top_answerr*   s                  r   runzStackExchangeAPIWrapper.run%   s     ??e3C	"""
"+U!3
7;7H7H
 vg!#4UG;OPP#G_
[0AZ0OD

D	 %+7OUDtK7HH7T4UU! 	%H#HW$5#6b)9L8MNH & -(H],CC     &6 !9N     +;$Q'AQRSAT  --
9(=>j	22NN8$!	%$ $$))'22/
 V 
 s*   'E5EE	E	=E
E"E)__name__
__module____qualname____doc__r   r   __annotations__r   intr   r   r   dictr   r   strr   r   classmethodr    r>        r   r
   r
      s    )FCK527J./7 $)#>L$sCx.>6"c"2(#$ 3   $ 3  3  3rI   r
   )
r/   typingr   r   r   pydanticr   r   r   r
   rH   rI   r   <module>rL      s      % % 6 6>3i >3rI   