
    Pi7                        d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ  ee          Zi Zd Zd Zg d	Z ed
          dd            ZddddZddZd Zd ZdS )zNContains methods that generate documentation for Gradio functions and classes.    )annotationsN)defaultdict)Callable)	lru_cachec                    dS )zRA no-op for backwards compatibility of custom components published prior to 4.16.0N )ms    o/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/gradio_client/documentation.pyset_documentation_groupr      s    D    c                   t          j        | j                  }d |                    d          D             }d }t	          |          D ]=\  }}|                    d|z   dz             s|                    d|z   dz             r n>|t          d| d| j                   |                    d|          }|                    d|d	z             }t          |d	z   |          D ]M}||                             d          r0t          d
| d| j         d||         z   dz   ||         z             Nd                    ||d	z   |                   }	|	S )Nc                6    g | ]}|                                 S r   )strip).0lines     r
   
<listcomp>z-extract_instance_attr_doc.<locals>.<listcomp>   s     777dTZZ\\777r   
zself.:z =zCould not find z in z"""   z-Found another attribute before docstring for : z
 start: )inspect	getsource__init__split	enumerate
startswith	NameError__name__indexrange
ValueErrorjoin)
clsattrcodelinesir   
start_lineend_linej
doc_strings
             r
   extract_instance_attr_docr-      s   S\**D77djj&6&6777EAU##  4??7T>C/00 	DOOdNT!5
 5
 	 E	 	yB$BBCLBBCCCUA&&J{{5*q.11H1q5*%%  8w'' 	ZZZ#,ZZZ( (  	 %
Q 9:;;Jr   ))zgradio._simple_templates	component)zgradio.blockblock)zgradio.chatchatinterface)zgradio.componentr.   )zgradio.eventshelpers)zgradio.data_classesr1   )zgradio.exceptionsr1   )zgradio.externalr1   )zgradio.flagflagging)zgradio.helpersr1   )zgradio.interface	interface)zgradio.layoutlayout)zgradio.routeroutes)zgradio.themethemes)gradio_client.z	py-client)zgradio.utilsr1   )zgradio.renderable
renderable)zgradio.validators
validators
   )maxsizereturnstrc                r    t           D ]\  }}|                     |          r|c S t          d|           )Nz(No known documentation group for module )_module_prefixesr   r"   )modnameprefixgroups      r
   _get_module_documentation_grouprC   D   sP    )  f%% 	LLL	
KKK
L
LLr   F)inheritdocumentation_groupc                     | fd}|S )a  
    Defines the @document decorator which adds classes or functions to the Gradio
    documentation at www.gradio.app/docs.

    Usage examples:
    - Put @document() above a class to document the class and its constructor.
    - Put @document("fn1", "fn2") above a class to also document methods fn1 and fn2.
    - Put @document("*fn3") with an asterisk above a class to document the instance attribute methods f3.
    c                   t                    }t          | d          r
|| j        z  }r
d t          | <   }	 t	          j        |           j        }|                    d          s|                    d          rt          |          }n	 n1# t          $ r$}t          j        d|  d|            Y d }~nd }~ww xY wt          |                             | |f           | S )NEVENTSzgradio.r7   z&Could not get documentation group for r   )listhasattrrH   classes_inherit_documentationr   	getmoduler   r   rC   	Exceptionwarningswarnclasses_to_documentappend)r$   	functionsrE   r@   exc_documentation_groupfnsrD   s        r
   	inner_doczdocument.<locals>.inner_docX   s%   II	3!! 	$#I 	615)#.2'
U!+C009%%i00 G4F4F$5 5  +J'*R*R''  U U USsSScSSTTTTTTTTU/077i8HIII
s   AB 
B?B::B?r   )rD   rE   rU   rV   rT   s   ` ` @r
   documentrW   L   s8     /      . r   fnr   (tuple[str, list[dict], dict, str | None]c                H   t          j        |           pd}|                    d          }t          j        |           }g i g g f\  }}}}d}	|D ]}
|
                                }
|
dk    rd}	 |
                    d          rLd}	d|
v rEd	|
v rA|
                    d          d
                             d	          d         }||j        k    rd}	|
dk    rd}	|	dk    r,|                    |
                                r|
nd           |
                    d          s'|
                                dk    st          |
           |
                    d          s2|
                                dk    st          d| j         d|
           |
dd         }
|	dk    rS|
                    d          }|dk     rt          d| j         d|
           |
d|         }|
|dz   d         }|||<   |	dk    r|                    |
           |	dk    r|                    |
           d                    |          }g }|j                                        D ]\  }}|                    d          r|dk    r"|dv r||vr+||j        |                    |          d}||v r||= |j        t           j        j        k    rI|j        }t)          |t*                    rd|z   dz   }|j        j        dk    r|j        j         d}||d <   n&|d!         d"|d!         v rd#|d"<   d$|d!         v rd#|d$<   |                    |           |rlt1          d| j         d%d&                    |                                           d'd&                    |j                                                             t5          |          dk    ri }n&t5          |          d
k    r|j        |d         d(}ni }t5          |          dk    rd                    |          nd}||||fS ))a  
    Generates documentation for any function.
    Parameters:
        fn: Function to document
    Returns:
        description: General description of fn
        parameters: A list of dicts for each parameter, storing data for the parameter name, annotation and doc
        return: A dict storing data for the returned annotation and doc
        example: Code for an example use of the fn
     r   descriptionzParameters:	parameterzExample:example()r   r   ignorezReturns:r<   <br>    Documentation format for  has format error in line:    Nr      r   _self)kwargsargs)name
annotationdoc"builtinsz()defaultro   rk   Trl   z# documents nonexistent parameters: z, z. Valid parameters: )rn   ro   )r   getdocr   	signaturerstripr   r   rQ   r   printSyntaxErrorr    r#   
parametersitemsrn   getrr   	Parameterempty
isinstancer=   	__class__
__module__r"   keyslenreturn_annotation)rX   r$   doc_str	doc_linesrt   r\   rx   returnsexamplesmoder   ccolon_indexr]   parameter_docdescription_docparameter_docs
param_nameparamrr   return_docsexamples_docs                         r
   document_fnr   r   s    nR  &BGd##I!"%%I13RR.KWhD #& #&{{}}=  DD__Z(( 	&Dd{{sd{{JJsOOA&,,S11!4$$#DZDD}$$""4::<<#C44VDDDOOF++ tzz||r/A/AdOOF++ tzz||r/A/A!^^^X\^^   8D{"""jj..##%bBKbb\`bb   !+.	 $[1_%6%6 7(5
9%%!!t$$$$""%%%hh{++ON&17799 - -
E  %% 	+++
*0L0L*>>*--
 

 ##:&=G-333mG'3'' .-#- +z99$.7;;;'.M)$$5!-=///*.h'u---(,f%m,,,, 
J J J'+yy1B1B'C'CJ J!%9+?+D+D+F+F!G!GJ J
 
 	

 7||q	W		%.%@QRTT*-h--!*;*;499X&&&LNKEEr   c                   t          j        |           }|di dfS i }g }d}|                    d          D ]}|                                }|                    d          r&d|vr"|d d                                         }g ||<   R|                    d          d                             d          rj|                    d          sU|d |                    d                                                   }||                    d          d	z   d          }|||<   |dk    r-|                    |	                                r|nd
           |                    d          s.|	                                rt          d| j         d|           ||                             |dd                     d|v rd                    |d                   }|d= nd }|                                D ]2\  }	}
t          |
t                    rd
                    |
          ||	<   3d                    |                              dd
          }|||fS )Nr[   r\   r   r   r   rg   r   rc   rh   rb   rd   re   rf   r^   )r   rs   r   ru   endswithlowerr   r    rQ   r   rw   r   r#   ry   r}   rI   replace)r$   r   tagsdescription_linesr   r   tagvaluer^   keyvalr\   s               r
   document_clsr      sc   nS!!G2rzDDd## ( ({{}}== 	(#T//9??$$DDJJZZ__Q((-- 	(doof6M6M 	((C()//11CC1,../EDII]""$$TZZ\\%ETTvFFFFOOF++ 4::<< !___Y]__   Jd122h''''D))DO,,OOJJLL ) )Sc4   	)C((DI((,--55dFCCKg%%r   c                    i } t                                           D ]\  }}g | |<   |D ]y\  }}t          j        |          st	          j        |          r|n|j        }t          ||          \  }}}}t          |d          rt          |j
                  rpt          |d          r`t          |j                  rLt          |j
        |          }	t          |j        |          }
|	d         |	d         d|
d         |
d         d}
}	t          |          \  }}}||j        |||||g d}t          |d          rBt          |j
                  r.t          |d          rt          |j                  r
|	|d<   |
|d<   |D ]}|                    d          }|r(|dd          }t           |            |          j        }nt          ||          }t          |          s#t#          |          }i }i }d}d	|j         d
| }n4t          ||          \  }}}}|t          |dg           v r
|dd          }d }|rt%          ||          }|d                             |||i ||||d           | |                             |           |t(          v r|d         t(          |<   {t                                           D ]\  }}t+          |          D ]\  }\  }}t(                                          D ]\  }}t          j        |          r|t/          ||          rl||k    rf|D ]c}t1          |          }	 t%          ||d                   |d<   n# t2          $ r Y nw xY w| |         |         d                             |           d| S )N
preprocesspostprocessr   rh   )r   
return_doc)classrm   r\   r   rx   r   r^   rU   *r[   zgr..rH   rU   )rX   rm   r\   r   rx   r   r^   override_signaturerm   r\   )rP   ry   r   
isfunctiondataclassesis_dataclassr   r   rJ   callabler   r   r   r   r   getattr__call__r=   r-   rQ   rK   r   isclass
issubclassdictr"   )documentationr   
class_listr$   rU   fn_to_documentri   r   r   preprocess_docpostprocess_doccls_descriptioncls_tagscls_examplecls_documentationfn_nameinstance_attribute_fnrX   r   r   r   r   r   r(   super_classinherited_fns                             r
   generate_documentationr      s   M/5577 WN WNj d" U	N U	NHC %c**".9.Fs.K.K"\ 
 /:.#.N.N+A}j!\**S^,, C// S_--	 "-S^S!A!A"-cos"C"C *8):&4Q&7 
 *9);&5a&8  !0 6B#5F5F2OX{. +%&	! 	! \**CS^,,C C//C S_--	C 3A!,/3B!-0 & &(/(:(:3(?(?%( /%abbkG !009BB g..B|| .&)"ggO%'N"$K#%L)Gs|)G)Gg)G)G&& $B,,'&#$'#x"<"<<<)7);)-&( N&?W&M&MO!%(//  ''6 "&4#.#/.@	 	    $&&'89993335Fu5M-c2kU	Nl 05577 K Kj$Z00 	K 	KKAxQ$A$G$G$I$I K K SOC((K"344K {**(+ K K'+L'9'9!:S #\&%9; ;L77  * ! ! ! D!%d+A.u5<<\JJJJK	K  s   7M
MM)r<   r=   )rX   r   r<   rY   )__doc__
__future__r   r   r   rN   collectionsr   collections.abcr   	functoolsr   rI   rP   rK   r   r-   r?   rC   rW   r   r   r   r   r   r
   <module>r      sU   T T " " " " " "       # # # # # # $ $ $ $ $ $      !k$''  " 	 	 	
  2   , 2M M M M !d # # # # #L_F _F _F _FD!& !& !&Hk k k k kr   