o
    &j                     @   s  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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mZ d dlmZ d dlmZ d dlmZ d dlZd d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl%m&Z& d dl'm(Z( ej)*ej+dZ,ddgZ-e-d  Z.ej)/ej)0ej1d  Z2ej)*e,dZ3ej)*e,dZ4dZ5dd Z6de fddZ7dd  Z8d&d!d"Z9d#d$ Z:e;d%kre:  dS dS )'    N)Flask)make_responseredirect)request)Response)	send_file)Babel)__version__)get_start_arguments)create_profiler_api_call)create_api_call)get_component_tabs)
parse_args)	ParseArgs)info)upload_to_dev)Template)update_utilserverenzhz./distz./mock_data/z/alivec                    s^  t jd }dd |_tdd d}d|j_d|jd< t|jd	< fd
dttj	tj
 t|d}jr=tj  jd tjjj tjjd urdjv rzdd l}W n tyv   td td Y nw zdd l}W n ty   td Y nw ddlm} | |jd ddgdfdd}djv sdjv rzdd l }W n ty   td Y nw zdd l!}	W n ty   td Y nw ddl"m#}
 |
 |jd ddgdfd d!}|jd" ddgdfd#d$}|jd% ddgdd&t$ffd'd(}d)d* j%sst&tj'(t)t*jr4d+nd,j+d u r=d,nj+d-	|d.fd/d0}|d1d2d3 }|d. fd4d5}|d6 	fd7d8}|jd9 ddgd fd:d;}|jd< ddgdfd=d>}|d?  fd@dA}|t,dBdC }|S )DNz	flask.clic                  W   s   d S N )xr   r   T/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/visualdl/server/app.py<lambda>@   s    zcreate_app.<locals>.<lambda>visualdl)Zstatic_folderT   ZSEND_FILE_MAX_AGE_DEFAULTZBABEL_DEFAULT_LOCALEc                     s"    j } | r	| tvrtjt} | S r   )languagesupport_languager   Zaccept_languages
best_match)langargsr   r   
get_localeJ   s   zcreate_app.<locals>.get_locale)Zlocale_selector/apix2paddler   zpip install x2paddlezpip install onnxzpip install paddle2onnx)create_model_convert_api_callz/inference/<path:method>GETPOST)methodsc                    B   t jdkr | t j\}}}n	 | t j\}}}tt|||dS Nr*   mimetypeheadersr   methodformr$   r   r   r2   datar/   r0   )inference_api_callr   r   serve_inference_apii   s   

z'create_app.<locals>.serve_inference_apiZfastdeploy_serverZfastdeploy_clientzpip install tritonclient[all]zpip install gradio==3.11.0)create_fastdeploy_api_callz/fastdeploy/<path:method>c                    r,   r-   r1   r4   )fastdeploy_api_callr   r   serve_fastdeploy_api   s   

z(create_app.<locals>.serve_fastdeploy_apiz/fastdeploy/fastdeploy_clientc               
      s   zt jdkrdt j t j} n	dt j t j} W n ty5 } zd|}t|W  Y d }~S d }~ww tj	| }|rIt
 d| ddS t
 d ddS )Nr*   create_fastdeploy_clientz{}z$/fastdeploy/fastdeploy_client/app?{}.  code!/fastdeploy/fastdeploy_client/app)r   r2   r3   r$   	Exceptionformatr   urllibparse	urlencoder   )request_argse	error_msgr$   api_pathr9   r   r   )serve_fastdeploy_create_fastdeploy_client   s6   

z=create_app.<locals>.serve_fastdeploy_create_fastdeploy_clientz)/fastdeploy/fastdeploy_client/<path:path>pathc                    s
  d}t jdkr2t jdkrt j}nt j }d|v r$|d d }||d< nd|v r,|d }d|}n!t j }d|v rF|d d }||d< nd|v rN|d }d|}| dkrjt jt j	
d	  d
 d|}nt jt j	
d	  d d|}tj t j|dd t jD t  t jdd}| dkrF|j}|rEd|v rE|d}t|}|dd}	|dd}
|dd}| }z~zl|dddkrytdtjddddd|}|r|dddkrtd tjddddd|}|d}d!|v r|d!d"}n|d#d"}|||}tdtjd$dddd|}|r:|dddkrLtd tjd$dddd|}|d}d!|v r`|d!d%|	}n	|d#d%|	}|	rr|||}tdtjd&dddd|}|r|dddkrtd tjd&dddd|}|d}d!|v r|d!d%|
}n	|d#d%|
}|
r|||}tdtjd'dddd|}|r|dddkrtd tjd'dddd|}|d}d!|v r|d!d%|}n	|d#d%|}|r"|||}tdtjd(dddd|}|rB|dddkrTtd tjd(dddd|}|d}d!|v rh|d!d%d)}n	|d#d%d)}|||}ntdtjd*dddd|}|r|dddkrtd tjd*dddd|}|stdtjd*dddd|}|r|dddkrtd tjd*dddd|}|d}d!|v r|d!d"}n|d#d"}|||}tdtjd+dddd|}|r|dddkrdtd tjd+dddd|}|sdtdtjd+dddd|}|rR|dddkrdtd tjd+dddd|}|d}d!|v rx|d!d%|	}n	|d#d%|	}|	r|||}tdtjd,dddd|}|r|dddkrtd tjd,dddd|}|stdtjd,dddd|}|r|dddkrtd tjd,dddd|}|d}d!|v r|d!d%|
}n	|d#d%|
}|
r|||}tdtjd-dddd|}|r7|dddkr~td tjd-dddd|}|s~tdtjd-dddd|}|rl|dddkr~td tjd-dddd|}|d}d!|v r|d!d%|}n	|d#d%|}|r|||}tdtjd.dddd|}|r|dddkrtd tjd.dddd|}|stdtjd.dddd|}|r|dddkrtd tjd.dddd|}|d}d!|v r|d!d%d)}n	|d#d%d)}|||}W n
 ty9   Y nw W | }n	| }w n|j}d/d0 |jj D }t||j|}|S )1a  
                Gradio app server url interface. We route urls for gradio app to gradio server.

                Args:
                    path(str): All resource path from gradio server.

                Returns:
                    Any thing from gradio server.
                r   r*   zapplication/jsonr5   r"   r;   app/r?   zhttp://localhost:{}/z/fastdeploy/fastdeploy_client/c                 S   s   i | ]\}}|d kr||qS )Hostr   ).0keyvaluer   r   r   
<dictcomp>   s    zWcreate_app.<locals>.request_fastdeploy_create_fastdeploy_client_app.<locals>.<dictcomp>F)r2   urlr0   r5   cookiesallow_redirects	server_idz	http-port zmetrics-portdefault_model_namer   z""label":\s*{}.*?"value":\s*"".*?}}z	server ipT)ensure_ascii\z\\r   z"label"   z""value":\s*"".*?"label":\s*{}.*?}}z"value": ""z"value": "localhost"z
"value":""zserver portz"value": "{}"zmetrics portz
model namezmodel version1u   服务ipu   推理服务端口u   性能服务端口u   模型名称u   模型版本c                 S   s   g | ]\}}||fqS r   r   )rP   namerR   r   r   r   
<listcomp>g  s    zWcreate_app.<locals>.request_fastdeploy_create_fastdeploy_client_app.<locals>.<listcomp>)r   r2   r/   jsonr3   to_dictr$   rT   replaceZhost_urlrstriprA   requestsr0   get_datarU   contentgetr   decoderesearchdumpsgroupcountr@   encoderawitemsr   status_code)rK   r"   rE   port	proxy_urlresprf   rW   Z
start_argsZ	http_portZmetrics_portZ
model_nameZserver_addr_matchZdefault_server_addrZcur_server_addrZhttp_port_matchZdefault_http_portZcur_http_portZmetrics_port_matchZdefault_metrics_portZcur_metrics_portZmodel_name_matchrY   Zcur_model_nameZmodel_version_matchZdefault_model_versionZcur_model_versionr0   responserH   r   r   /request_fastdeploy_create_fastdeploy_client_app   sJ  





















	













	

zCcreate_app.<locals>.request_fastdeploy_create_fastdeploy_client_appc                 S   s    d}t jrdt j  }| | S )NrX   ?)r   query_stringrh   )rT   rx   r   r   r   append_query_stringl  s   z'create_app.<locals>.append_query_stringZ 63a600296f8a71f576c4806376a9245brX   )ZPUBLIC_PATHZBASE_URIZAPI_URLZTELEMETRY_IDZTHEMErN   c                      s   t  ddS )Nr<   r=   r   r   ry   public_pathr   r   base}  s   zcreate_app.<locals>.basez/favicon.icoc                  S   s&   t jtd} t j| rt| S dS )Nzfavicon.ico)zfile not foundi  )osrK   jointemplate_file_pathexistsr   )iconr   r   r   favicon  s   zcreate_app.<locals>.faviconc                      s   t  d ddS )Nz/indexr<   r=   r   r   rz   r   r   index  s   zcreate_app.<locals>.indexz/<path:filename>c                    s>   t d| }|r| nd}|s|jd  ddddd |S )Nz\..+$z
index.htmlZvdl_lngrN   ZStrictF)rK   samesitesecurehttponly)ri   rj   render
set_cookie)filenameZis_not_page_requestru   )r%   templater   r   serve_static  s   
z create_app.<locals>.serve_staticz/<path:method>c                    $    | t j\}}}tt|||dS Nr.   r   r$   r   r   r4   )api_callr   r   	serve_api     zcreate_app.<locals>.serve_apiz/profiler/<path:method>c                    r   r   r   r4   )profiler_api_callr   r   serve_profiler_api  r   z&create_app.<locals>.serve_profiler_apiz/component_tabsc                     s*   t  tjd\} }}tt| ||dS )N)Zvdl_argsrE   r.   )r   r   r$   r   r   )r5   r/   r0   )r   r$   r   r   r   component_tabs  s   z"create_app.<locals>.component_tabsc                   S   s   dS )N)rX      r   r   r   r   r   
check_live  s   zcreate_app.<locals>.check_live)-sysmodulesZshow_server_bannerr   loggerdisabledconfigdefault_languagesignalSIGINTSIG_DFLr	   Z	telemetryr   Z	PbUpdaterproductstartr{   r   logdirmodelZcache_timeoutr   r   r'   r@   r}   systempaddle2onnxZ1visualdl.component.inference.model_convert_serverr(   ZroutetritonclientgradioZ.visualdl.component.inference.fastdeploy_serverr8   strapi_onlyr   rK   r~   server_pathr   themecheck_live_path)r$   clirM   Zbabelr'   r   r(   r7   r   r   r8   r:   rJ   rv   r|   r   r   r   r   r   r   r   r   )
r   rI   ry   r$   r9   r%   r6   r   r{   r   r   
create_app=   s   








   D	
	
r   r$   c                 C   s   dj | j| jd}	 z%t|t  td| j| j | jdkr#td | jr.td| jd  W n t	y=   t
d	 Y nw q
| jsO| jrQt|| j  d S d S d S )
Nzhttp://{host}:{port})hostrr   Tz8Running VisualDL at http://%s:%s/ (Press CTRL+C to quit)	localhostz[Serving VisualDL on localhost; to expose to the network, use a proxy or pass --host 0.0.0.0z.Running in API mode, only %s/* will be served.r&   g      ?)rA   r   rr   rd   rg   r   r   r   r{   r@   timesleepZopen_browser
webbrowseropen)r$   rT   r   r   r   wait_until_live  s.   
r   c                 C   sX   t di | } td tdt t| }tjt| fd	  |j
d| j| jdd d S )NrX   z[1;33mVisualDL %s[0mtargetr$   F)debugr   rr   Zthreadedr   )r   r}   r   r   r
   r   	threadingThreadr   r   runr   rr   )r$   rM   r   r   r   _run  s   

r   c                 K   s0   d| i}| | tjt|fd}|  |jS )Nr   r   )updatemultiprocessingProcessr   r   pid)r   optionsr$   pr   r   r   r     s
   
r   c                  C   sL   t  } | ddkr | ddkrt| d| d d S d S t|  d S )NdestZserviceZbehaviorZuploadr   r   )r   rg   r   r   r#   r   r   r   main  s   r   __main__r   )<r`   r   r}   ri   r   r   r   r   rB   r   rd   Zflaskr   r   r   r   r   r   Zflask_babelr	   Zvisualdl.serverr   r
   Z+visualdl.component.inference.fastdeploy_libr   Z+visualdl.component.profiler.profiler_serverr   Zvisualdl.server.apir   r   Zvisualdl.server.argsr   r   Zvisualdl.server.logr   Zvisualdl.server.server   Zvisualdl.server.templater   Zvisualdl.utilsr   rK   r~   ROOTZ
SERVER_DIRr    r   abspathdirnameargvr   r   Zmock_data_pathr   r   r   r   r   r   __name__r   r   r   r   <module>   sd        
		
