
    Pi(8                       d dl mZ d dlZd dlZd dl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 d dlZd ZdZdZd	Zd
ZdZdZej         G d d                      Zi d edde          d edde          d ede          d ede          d ede          d ede          d ede          d ede          d ede          d eddde          d  ed d!d"e          d# ed#d$%          d& ed&d'd"e          d( ed(d)d* ej        d+                    d, ed,dde          d- ed-d.d"e          d/ ed/d0d"e           ed1dde           ed2d3e           ed4d5e           ed6e           ed7e           ed8 ej        d9                     ed:e           ed; ej        d<                     ed=d> ej        d?          @           edAdBdCD           edEdFdGD           edHdIdJD           edKdL ej        d9          @           edMdNdO ej        dP          Q          dRZdqdVZdrd[ZdsdaZdtdeZdudgZdvdjZdwdnZ dxdoZ!dvdpZ"dS )y    )annotationsN)Path)Literal)snapshot_downloadc                 J    t          j                    j        dd         dk    S )zHCheck if the current working directory ends with gradio/js/preview/test.N)gradiojspreviewtest)r   cwdparts     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/gradio/cli/commands/components/_create_utils.py_in_test_dirr      s     8::BCC $GGGr   a  
example = {name}().example_value()

demo = gr.Interface(
    lambda x:x,
    {name}(),  # interactive version of your component
    {name}(),  # static version of your component
    # examples=[[example]],  # uncomment this line to view the "example version" of your component
)
z
example = {name}().example_value()

with gr.Blocks() as demo:
    with gr.Row():
        {name}(label="Blank"),  # blank component
        {name}(value=example, label="Populated"),  # populated component
z
with gr.Blocks() as demo:
    with {name}():
        gr.Textbox(value="foo", interactive=True)
        gr.Number(value=10, interactive=True)
z
with gr.Blocks() as demo:
    gr.Markdown("# Change the value (keep it JSON) and the front-end will update automatically.")
    {name}(value={{"message": "Hello from Gradio!"}}, label="Static")
zgradio-template-\w+zgradio-template-{template}c                  J    e Zd ZU ded<   eZded<   dZded<   dZded<   d ZdS )	ComponentFilesstrtemplate	demo_code python_file_namejs_dirc                    | j         p| j                                        | _         | j        p| j                                         d| _        d S )N.py)r   r   lowerr   )selfs    r   __post_init__zComponentFiles.__post_init__C   sK    k:T]%8%8%:%: $ 5 VDM<O<O<Q<Q9V9V9Vr   N)	__name__
__module____qualname____annotations__default_demo_coder   r   r   r   r   r   r   r   r   <   sg         MMM&I&&&&FW W W W Wr   r   AnnotatedImagezannotated_image.py)r   r   r   HighlightedTextzhighlighted_text.pyChatbot)r   r   GalleryHTMLLabelMarkdownFallbackPlotBarPlotznative_plot.pyplot)r   r   r   r   ClearButtonzclear_button.pybuttonColorPickerzcolor_picker.py)r   r   DuplicateButtonzduplicate_button.pyFileExplorerzfile_explorer.pyfileexplorerz|
        import os

        with gr.Blocks() as demo:
            {name}(value=os.path.dirname(__file__).split(os.sep))
    LinePlotLogoutButtonzlogout_button.pyLoginButtonzlogin_button.pyScatterPlotUploadButtonzupload_button.pyJSONzjson_component.pyRowColumnTabsa
  
        with gr.Blocks() as demo:
            with {name}():
                with gr.Tab("Tab 1"):
                    gr.Textbox(value="foo", interactive=True)
                with gr.Tab("Tab 2"):
                    gr.Number(value=10, interactive=True)
        Group	Accordionz
        with gr.Blocks() as demo:
            with {name}(label="Accordion"):
                gr.Textbox(value="foo", interactive=True)
                gr.Number(value=10, interactive=True)
        Model3Dmodel3Dz@
        with gr.Blocks() as demo:
            {name}()
        )r   r   r   ImageEditorzimage_editor.pyimageeditor)r   r   r   MultimodalTextboxzmultimodal_textbox.pymultimodaltextboxDownloadButtonzdownload_button.pydownloadbuttonWalkthroughtabsSteptabitemzwalkthrough.pyz
        with gr.Blocks() as demo:
            with {name}():
                gr.Textbox(value="foo", interactive=True)
        )r   r   r   r   )r9   r:   r;   r<   r=   r>   r?   r@   rA   rC   rE   rG   rI   rK   r   
str | Nonereturnc                    | pd} | t           v rt           |          S t          |                                  d|                                 |           S )Nr,   r   )r   r   r   )	OVERRIDESr   r   r   s    r   _get_component_coderR      s_    %:H9"" ( 0 0555>>##
 
 
 	
r   namer   local_js_dirr   c                    t          j        t          ||                     d          d         z  dz                                                      }|d         S )N/   package.jsonversion)jsonloadsr   split	read_text)rS   rT   package_jsons      r   _get_js_dependency_versionr_     sP    :\DJJsOOA..?@@JJLL L 	""r   r^   dictkey*Literal['dependencies', 'devDependencies']
gradio_dirc                    |                      |g           D ]N}t                      s>|                    d          r)t          ||dz  t          j        z            | |         |<   O| S )Nz@gradio/_frontend_code)getr   
startswithr_   r	   __version__)r^   ra   rc   deps       r   _modify_js_depsrj     sw    
 R((  ~~ 	#.."<"< 	%?Z"22V5GG& &Lc" r   	directory
str | PathNonec                    t          |           }|                    d          D ]S}|                                r|                                 +|                                rt          j        |           TdS )zADelete all contents of a directory, but not the directory itself.*N)r   globis_fileunlinkis_dirshutilrmtree)rk   pathchilds      r   delete_contentsrx     sp    	??D3 ! !==?? 	!LLNNNN\\^^ 	!M%   	! !r   destinationc                J    t           j        }t          d| d| d           d S )Nzgradio/frontendz/**dataset)repo_idallow_patterns	local_dir	repo_type)r	   rh   r   )ry   rY   s     r   _download_from_hubr   #  s=     G!!	     r   	componentpackage_namec                   |dz  }|                     d           t          t          j        t                              j        }|dz  }|                                s%|                     d           t          |           d }t          j	        t          |dz  t          j        z  |j        z            |d|           t          j        t          |dz                                                      }||d<   t!          |d	|          }t!          |d
|          }|dz                      t          j        |d                     t          j        t          t          t(                    j        dz  dz            |dz             t          j        t          t          t(                    j        dz  dz            |dz             d S )NfrontendT)exist_okre   c                    g }|D ]M}|                     d          s!|                     d          sd|v sd|v sd|v r|                    |           N|S )N	CHANGELOG	README.mdz.test.z	.stories.z.spec.)rg   append)_srcnamesignoredns       r   ignorez _create_frontend.<locals>.ignore>  su     	" 	"A[))"<<,," q==!##q==q!!!r   )dirs_exist_okr   rX   rS   dependenciesdevDependencies   )indentfileszgradio.config.jsztsconfig.json)mkdirr   inspectgetfiler	   parentexistsr   rt   copytreer   rh   r   rZ   r[   r]   rj   
write_textdumpscopy__file__)	rS   r   rk   r   r   pcomponent_sourcer   source_package_jsons	            r   _create_frontendr   .  s    :%HNNDN!!!W_V$$%%,A++""$$ ----+,,,   OA  6#55	8HHII	    *T(^*C%D%D%N%N%P%PQQ".)*=~qQQ)*=?PRSTT**4:6IRS+T+T+TUUU
KDNN!G+.@@AA%%   KDNN!G+o=>>?"    r   old_class_namenew_class_namecontentc                ^    dt          j        |            d}t          j        |||          S )Nz(?<=\b)(?<!\bimport\s)(?<!\.)z(?=\b))reescapesub)r   r   r   patterns       r   _replace_old_class_namer   a  s0    Pry/H/HPPPG6'>7333r   c                f    d                     d |                     d          D                       S )N
c                <    g | ]}|                     d           |S )z
@document()rg   ).0lines     r   
<listcomp>z)_strip_document_lines.<locals>.<listcomp>h  s)    SSS$T__\5R5RSSSSr   )joinr\   )r   s    r   _strip_document_linesr   f  s5    99SS'----SSS  r   c           
     $   d }t           j        j        dft           j        j        dft           j        j        dfg}d }d }|D ]\  }}	 ||j        |          }|r|	} n|st          d|j         d          |st          d          t          j        d          	                    || 	          }
|d
z  
                    |
           |dz  |z  }|                    dd           t          t                    j        dz  dz  }|                                }|dz  }|
                    |           t          t                    j        dz  dz  }|                                }|dz  }|                    d|                              dt"          	                    |                    }|
                    |           |dz  }|                    dd           |dz  
                    d| d|  d|j        	                    |            d           |dz                                   |dz  }|
                    d|                                  d|  d|  d            t          t+          j        t                               j        }||                                  d!z  }t/          j        t3          ||z  |j        z            t3          |                     ||z  |j                            d!d"          z  }||                                  d"z  }|                                r/t/          j        t3          |          t3          |                     |                                }t9          || |          }t;          |          }|
                    |           |                                rK|                                }t9          || |          }t;          |          }|
                    |           d S d S )#Nc                l    |D ]0}|                                  |                                 k    r|c S 1d S )N)r   )r   list_to_searchitems      r   find_template_in_listz._create_backend.<locals>.find_template_in_listo  sA    " 	 	D~~4::<<// 0tr   
componentslayouts_simple_templateszCannot find z in gradio.components, gradio.layouts, or gradio._simple_templates. Please pass in a valid component name via the --template option. It must match the name of the python class.zModule not foundz
# {package_name}
A Custom Gradio component.

## Example usage

```python
import gradio as gr
from {package_name} import {name}
```
)r   rS   r   backendT)r   parentsr   	gitignorez
.gitignorezpyproject_.tomlzpyproject.tomlz<<name>>z<<template>>rQ   demozapp.pyz
import gradio as gr
from z import z

)rS   z/

if __name__ == "__main__":
    demo.launch()
z__init__.pyz
from .z

__all__ = ['z']
r   z.pyi)r	   r   __all__r   r   r   
ValueErrortextwrapdedentformatr   r   r   r   r   r]   replacePATTERNr   touchr   r   r   rt   r   r   r   r   r   r   )rS   r   rk   r   r   lists_to_searchcorrect_cased_templatemodulelist_module_namereadme_contentsr   r   gitignore_contentsgitignore_dest	pyprojectpyproject_contentspyproject_destdemo_dirinitr   python_filesource_pyi_filepyi_filer   pyi_contents                             r   _create_backendr   l  s      
		"L1		+		!	)+>?O "F-  {!6!6y7I5!Q!Q! 	 FE	 " 
{9- { { {
 
 	

  -+,,, o
	  f,Tf22  ((999)#l2GMM4M...X%/+=I",,..-N0111X%/2CCI",,..!11N+33JMMUU0FGG  01116!HNND$N///$$		 	 	 	 &&		 	 	
 
 
 $$&&&]"DOO	zz||	 	!	 	 	 	 	   	W_V$$%%,Atzz||0000K
KAJ3344K  
 &j9#=#E#EeV#T#TTODJJLL....H 9C((#h--888##%%G%&<dGLLG#G,,G7### )((**-.DdGTT+K88K(((((	) )r   )r   rM   rN   r   )rS   r   rT   r   rN   r   )r^   r`   ra   rb   rc   r   )rk   rl   rN   rm   )ry   r   )rS   r   r   r   rk   r   r   r   )r   r   r   r   r   r   )r   r   )#
__future__r   dataclassesr   rZ   r   rt   r   pathlibr   typingr   huggingface_hubr   r	   r   r$   static_only_demo_codelayout_demo_codefallback_code
PATTERN_REr   	dataclassr   r   rP   rR   r_   rj   rx   r   r   r   r   r   r   r   r   <module>r      ss   " " " " " "       				               - - - - - - H H H
	    $

& W W W W W W W Wmnn!-'  m ~~".'  m ~~y<QRRRm ~~y<QRRRm NNF6KLLLm ^^W8MNNNm 
>STTTm  
mLLL!m" NNF6KLLL#m$ ~~)'	  %m0 >>*'	  1m< >>1B  =mB ~~".'	  CmN NN+!(/
 
	  Omh )'	  imt NN+'	  um@ >>*'	  AmL ">)'	   #N+'  
 N,'  
 >"   n"   N!(/	
 	
   ^"    !(/
 

 
 
 ~!(/
 
	 	 	 ">*  
 ($0"  
 %n!-  
 ">!(/	
 	
   N)!(/
 
	  Cm m m	`	
 	
 	
 	
# # # #   ! ! ! !   0 0 0 0f4 4 4 4
   o) o) o) o) o) o)r   