
    dhc
                     J    S SK r S SKJrJrJr  S SKJrJrJr   " S S\5      r	g)    N)AnyDictLiteral)	BaseModelFieldmodel_validatorc                       \ rS rSr% SrSr\\S'   Sr\	\S'    Sr
\S   \S	'    \" \S
9r\\\4   \S'    Sr\\S'    \" SS9\S\S\4S j5       5       rS\S\4S jrSrg)StackExchangeAPIWrapper   z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                 \     SSK Jn  U" S5      US'   U$ ! [         a    [        S5      ef = f)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      c/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/utilities/stackexchange.pyvalidate_environment,StackExchangeAPIWrapper.validate_environment   sD    	)'8F8   	A 	s    +queryc                    U R                   S:X  a  SOU R                   nU R                  R                  "  S0 X!0DU R                  D6n[	        US   5      S:  a  SU S3$ US    Vs/ sH  oDS   S:X  d  M  UPM     snS	U R
                   nUS    Vs/ sH  oDS   S
:X  d  M  UPM     nn/ nU H  nSUS    SUS    3n	U V
s/ sH  n
U
S   US   :X  d  M  U
PM     nn
U V
s/ sH  oS   (       d  M  U
PM     nn
U(       a2  U(       a  US   OUS   n[        R                  " US   5      nU	SU 3-  n	UR                  U	5        M     U R                  R                  U5      $ s  snf s  snf s  sn
f s  sn
f )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    runStackExchangeAPIWrapper.run%   s     ??e3C	""
"+!3
7;7H7H
 vg!#4UG;OPP#G_
,T[0AZ0OD_

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