route vendor files through gradio.app if share=True; cache bust other static files

This commit is contained in:
Ali Abid 2020-10-30 09:44:08 -07:00
parent 6eb945f639
commit 5c87b2aa96
9 changed files with 173 additions and 175 deletions

View File

@ -121,6 +121,7 @@ class Interface:
self.analytics_enabled=analytics_enabled
self.launch_port = None
self.save_to = None
self.share = None
data = {'fn': fn,
'inputs': inputs,
@ -359,6 +360,7 @@ class Interface:
else:
print("Colab notebook detected. To show errors in colab notebook, set debug=True in launch()")
self.share = share
if share:
print("This share link will expire in 6 hours. If you need a "
"permanent link, email support@gradio.app")

View File

@ -6,6 +6,7 @@ import os
import socket
import threading
from flask import Flask, request, jsonify, abort, send_file, render_template
from flask_cachebuster import CacheBuster
from flask_cors import CORS
import threading
import pkg_resources
@ -31,12 +32,14 @@ GRADIO_API_SERVER = "https://api.gradio.app/v1/tunnel-request"
STATIC_TEMPLATE_LIB = pkg_resources.resource_filename("gradio", "templates/")
STATIC_PATH_LIB = pkg_resources.resource_filename("gradio", "static/")
GRADIO_STATIC_ROOT = "https://gradio.app"
app = Flask(__name__,
template_folder=STATIC_TEMPLATE_LIB,
static_folder=None) # TODO (aliabid94): replace with default static
# handler
static_folder=STATIC_PATH_LIB)
CORS(app)
cache_buster = CacheBuster(config={'extensions': ['.js', '.css'], 'hash_size': 5})
cache_buster.init_app(app)
app.app_globals = {}
# Hide Flask default message
@ -91,18 +94,10 @@ def main():
title=app.app_globals["title"],
description=app.app_globals["description"],
thumbnail=app.app_globals["thumbnail"],
vendor_prefix=(GRADIO_STATIC_ROOT if app.interface.share else "")
)
@app.route("/static/<path:path>")
def static(path):
path = os.path.join(STATIC_PATH_LIB, path)
if os.path.exists(path):
return send_file(path)
else:
abort(404)
@app.route("/config/", methods=["GET"])
def config():
return jsonify(app.app_globals["config"])

View File

@ -31,35 +31,36 @@
<title>Gradio</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
<!-- VENDOR -->
<link type="text/css" href="/static/css/vendor/tui-color-picker.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/tui-image-editor.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/jquery-ui.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/jexcel.min.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/jsuites.min.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/jsonTree.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/cropper.min.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/tui-color-picker.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/tui-image-editor.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/jquery-ui.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/jexcel.min.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/jsuites.min.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/jsonTree.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/cropper.min.css" rel="stylesheet">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="stylesheet" href="/static/css/gradio.css">
<link rel="stylesheet" href="/static/css/interfaces/input/image.css">
<link rel="stylesheet" href="/static/css/interfaces/input/sketchpad.css">
<link rel="stylesheet" href="/static/css/interfaces/input/textbox.css">
<link rel="stylesheet" href="/static/css/interfaces/input/radio.css">
<link rel="stylesheet" href="/static/css/interfaces/input/dropdown.css">
<link rel="stylesheet" href="/static/css/interfaces/input/checkbox_group.css">
<link rel="stylesheet" href="/static/css/interfaces/input/slider.css">
<link rel="stylesheet" href="/static/css/interfaces/input/webcam.css">
<link rel="stylesheet" href="/static/css/interfaces/input/microphone.css">
<link rel="stylesheet" href="/static/css/interfaces/input/file.css">
<link rel="stylesheet" href="/static/css/interfaces/output/image.css">
<link rel="stylesheet" href="/static/css/interfaces/output/label.css">
<link rel="stylesheet" href="/static/css/interfaces/output/key_values.css">
<link rel="stylesheet" href="/static/css/interfaces/output/textbox.css">
<link rel="stylesheet" href="/static/css/interfaces/output/highlighted_text.css">
<link rel="stylesheet" href="/static/css/interfaces/output/audio.css">
<link rel="stylesheet" href="/static/css/interfaces/output/json.css">
<link rel="stylesheet" href="/static/css/interfaces/output/html.css">
<link rel="stylesheet" href="/static/css/loading.css"/>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/gradio.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/image.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/sketchpad.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/textbox.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/radio.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/dropdown.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/checkbox_group.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/slider.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/webcam.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/microphone.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/file.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/image.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/label.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/key_values.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/textbox.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/highlighted_text.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/audio.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/json.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/html.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/loading.css') }}"/>
</head>
<body id="lib">
@ -68,55 +69,55 @@
<img src="static/img/logo_inline.png">
</a></div>
<!-- VENDOR -->
<script src="/static/js/vendor/jquery.min.js"></script>
<script src="/static/js/vendor/html2canvas.min.js"></script>
<script src="/static/js/vendor/jquery-ui.min.js"></script>
<script src="/static/js/vendor/jquery.ui.touch-punch.js"></script>
<script src="/static/js/vendor/jsonTree.js"></script>
<script src="/static/js/vendor/fabric.js"></script>
<script src="/static/js/vendor/tui-code-snippet.min.js"></script>
<script src="/static/js/vendor/FileSaver.min.js"></script>
<script src="/static/js/vendor/tui-color-picker.js"></script>
<script src="/static/js/vendor/tui-image-editor.js"></script>
<script src="/static/js/vendor/white-theme.js"></script>
<script src="/static/js/vendor/black-theme.js"></script>
<script src="/static/js/vendor/wavesurfer.min.js"></script>
<script src="/static/js/vendor/p5.min.js"></script>
<script src="/static/js/vendor/p5.sound.min.js"></script>
<script src="/static/js/vendor/p5.dom.min.js"></script>
<script src="/static/js/vendor/jexcel.min.js"></script>
<script src="/static/js/vendor/jsuites.min.js"></script>
<script src="/static/js/vendor/cropper.min.js"></script>
<script src="/static/js/vendor/sketchpad.js"></script>
<script src="/static/js/vendor/webcam.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jquery.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/html2canvas.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jquery-ui.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jquery.ui.touch-punch.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jsonTree.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/fabric.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/tui-code-snippet.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/FileSaver.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/tui-color-picker.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/tui-image-editor.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/white-theme.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/black-theme.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/wavesurfer.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/p5.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/p5.sound.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/p5.dom.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jexcel.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jsuites.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/cropper.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/sketchpad.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/webcam.min.js"></script>
<script src="/static/js/utils.js"></script>
<script src="/static/js/all_io.js"></script>
<script src="/static/js/interfaces/input/image.js"></script>
<script src="/static/js/interfaces/input/sketchpad.js"></script>
<script src="/static/js/interfaces/input/textbox.js"></script>
<script src="/static/js/interfaces/input/number.js"></script>
<script src="/static/js/interfaces/input/radio.js"></script>
<script src="/static/js/interfaces/input/checkbox_group.js"></script>
<script src="/static/js/interfaces/input/checkbox.js"></script>
<script src="/static/js/interfaces/input/dropdown.js"></script>
<script src="/static/js/interfaces/input/slider.js"></script>
<script src="/static/js/interfaces/input/dataframe.js"></script>
<script src="/static/js/interfaces/input/audio.js"></script>
<script src="/static/js/interfaces/input/file.js"></script>
<script src="/static/js/interfaces/input/webcam.js"></script>
<script src="/static/js/interfaces/input/microphone.js"></script>
<script src="/static/js/interfaces/output/image.js"></script>
<script src="/static/js/interfaces/output/label.js"></script>
<script src="/static/js/interfaces/output/key_values.js"></script>
<script src="/static/js/interfaces/output/textbox.js"></script>
<script src="/static/js/interfaces/output/highlighted_text.js"></script>
<script src="/static/js/interfaces/output/audio.js"></script>
<script src="/static/js/interfaces/output/json.js"></script>
<script src="/static/js/interfaces/output/html.js"></script>
<script src="/static/js/interfaces/output/dataframe.js"></script>
<script src="/static/js/interfaces/output/file.js"></script>
<script src="/static/js/gradio.js"></script>
<script src="{{ url_for('static', filename='js/utils.js') }}"></script>
<script src="{{ url_for('static', filename='js/all_io.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/image.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/sketchpad.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/textbox.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/number.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/radio.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/checkbox_group.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/checkbox.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/dropdown.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/slider.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/dataframe.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/audio.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/file.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/webcam.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/microphone.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/image.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/label.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/key_values.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/textbox.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/highlighted_text.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/audio.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/json.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/html.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/dataframe.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/file.js') }}"></script>
<script src="{{ url_for('static', filename='js/gradio.js') }}"></script>
<script>
$.getJSON("/config/", function(config) {
io = gradio_url(config, "/api/", "#interface_target", "/file/");

View File

@ -44,4 +44,4 @@ io = gr.Interface(
]
)
io.launch()
io.launch(share=True)

View File

@ -2,6 +2,7 @@ numpy
requests
Flask==1.1.1
Flask-Cors==3.0.8
flask-cachebuster
paramiko
scipy
IPython

View File

@ -121,6 +121,7 @@ class Interface:
self.analytics_enabled=analytics_enabled
self.launch_port = None
self.save_to = None
self.share = None
data = {'fn': fn,
'inputs': inputs,
@ -359,6 +360,7 @@ class Interface:
else:
print("Colab notebook detected. To show errors in colab notebook, set debug=True in launch()")
self.share = share
if share:
print("This share link will expire in 6 hours. If you need a "
"permanent link, email support@gradio.app")

View File

@ -6,6 +6,7 @@ import os
import socket
import threading
from flask import Flask, request, jsonify, abort, send_file, render_template
from flask_cachebuster import CacheBuster
from flask_cors import CORS
import threading
import pkg_resources
@ -31,12 +32,14 @@ GRADIO_API_SERVER = "https://api.gradio.app/v1/tunnel-request"
STATIC_TEMPLATE_LIB = pkg_resources.resource_filename("gradio", "templates/")
STATIC_PATH_LIB = pkg_resources.resource_filename("gradio", "static/")
GRADIO_STATIC_ROOT = "https://gradio.app"
app = Flask(__name__,
template_folder=STATIC_TEMPLATE_LIB,
static_folder=None) # TODO (aliabid94): replace with default static
# handler
static_folder=STATIC_PATH_LIB)
CORS(app)
cache_buster = CacheBuster(config={'extensions': ['.js', '.css'], 'hash_size': 5})
cache_buster.init_app(app)
app.app_globals = {}
# Hide Flask default message
@ -91,18 +94,10 @@ def main():
title=app.app_globals["title"],
description=app.app_globals["description"],
thumbnail=app.app_globals["thumbnail"],
vendor_prefix=(GRADIO_STATIC_ROOT if app.interface.share else "")
)
@app.route("/static/<path:path>")
def static(path):
path = os.path.join(STATIC_PATH_LIB, path)
if os.path.exists(path):
return send_file(path)
else:
abort(404)
@app.route("/config/", methods=["GET"])
def config():
return jsonify(app.app_globals["config"])

View File

@ -31,35 +31,36 @@
<title>Gradio</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
<!-- VENDOR -->
<link type="text/css" href="/static/css/vendor/tui-color-picker.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/tui-image-editor.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/jquery-ui.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/jexcel.min.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/jsuites.min.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/jsonTree.css" rel="stylesheet">
<link type="text/css" href="/static/css/vendor/cropper.min.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/tui-color-picker.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/tui-image-editor.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/jquery-ui.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/jexcel.min.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/jsuites.min.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/jsonTree.css" rel="stylesheet">
<link type="text/css" href="{{ vendor_prefix }}/static/css/vendor/cropper.min.css" rel="stylesheet">
<link rel="stylesheet" href="/static/css/style.css">
<link rel="stylesheet" href="/static/css/gradio.css">
<link rel="stylesheet" href="/static/css/interfaces/input/image.css">
<link rel="stylesheet" href="/static/css/interfaces/input/sketchpad.css">
<link rel="stylesheet" href="/static/css/interfaces/input/textbox.css">
<link rel="stylesheet" href="/static/css/interfaces/input/radio.css">
<link rel="stylesheet" href="/static/css/interfaces/input/dropdown.css">
<link rel="stylesheet" href="/static/css/interfaces/input/checkbox_group.css">
<link rel="stylesheet" href="/static/css/interfaces/input/slider.css">
<link rel="stylesheet" href="/static/css/interfaces/input/webcam.css">
<link rel="stylesheet" href="/static/css/interfaces/input/microphone.css">
<link rel="stylesheet" href="/static/css/interfaces/input/file.css">
<link rel="stylesheet" href="/static/css/interfaces/output/image.css">
<link rel="stylesheet" href="/static/css/interfaces/output/label.css">
<link rel="stylesheet" href="/static/css/interfaces/output/key_values.css">
<link rel="stylesheet" href="/static/css/interfaces/output/textbox.css">
<link rel="stylesheet" href="/static/css/interfaces/output/highlighted_text.css">
<link rel="stylesheet" href="/static/css/interfaces/output/audio.css">
<link rel="stylesheet" href="/static/css/interfaces/output/json.css">
<link rel="stylesheet" href="/static/css/interfaces/output/html.css">
<link rel="stylesheet" href="/static/css/loading.css"/>
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/gradio.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/image.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/sketchpad.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/textbox.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/radio.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/dropdown.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/checkbox_group.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/slider.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/webcam.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/microphone.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/input/file.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/image.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/label.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/key_values.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/textbox.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/highlighted_text.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/audio.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/json.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/interfaces/output/html.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='css/loading.css') }}"/>
</head>
<body id="lib">
@ -68,55 +69,55 @@
<img src="static/img/logo_inline.png">
</a></div>
<!-- VENDOR -->
<script src="/static/js/vendor/jquery.min.js"></script>
<script src="/static/js/vendor/html2canvas.min.js"></script>
<script src="/static/js/vendor/jquery-ui.min.js"></script>
<script src="/static/js/vendor/jquery.ui.touch-punch.js"></script>
<script src="/static/js/vendor/jsonTree.js"></script>
<script src="/static/js/vendor/fabric.js"></script>
<script src="/static/js/vendor/tui-code-snippet.min.js"></script>
<script src="/static/js/vendor/FileSaver.min.js"></script>
<script src="/static/js/vendor/tui-color-picker.js"></script>
<script src="/static/js/vendor/tui-image-editor.js"></script>
<script src="/static/js/vendor/white-theme.js"></script>
<script src="/static/js/vendor/black-theme.js"></script>
<script src="/static/js/vendor/wavesurfer.min.js"></script>
<script src="/static/js/vendor/p5.min.js"></script>
<script src="/static/js/vendor/p5.sound.min.js"></script>
<script src="/static/js/vendor/p5.dom.min.js"></script>
<script src="/static/js/vendor/jexcel.min.js"></script>
<script src="/static/js/vendor/jsuites.min.js"></script>
<script src="/static/js/vendor/cropper.min.js"></script>
<script src="/static/js/vendor/sketchpad.js"></script>
<script src="/static/js/vendor/webcam.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jquery.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/html2canvas.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jquery-ui.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jquery.ui.touch-punch.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jsonTree.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/fabric.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/tui-code-snippet.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/FileSaver.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/tui-color-picker.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/tui-image-editor.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/white-theme.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/black-theme.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/wavesurfer.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/p5.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/p5.sound.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/p5.dom.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jexcel.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/jsuites.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/cropper.min.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/sketchpad.js"></script>
<script src="{{ vendor_prefix }}/static/js/vendor/webcam.min.js"></script>
<script src="/static/js/utils.js"></script>
<script src="/static/js/all_io.js"></script>
<script src="/static/js/interfaces/input/image.js"></script>
<script src="/static/js/interfaces/input/sketchpad.js"></script>
<script src="/static/js/interfaces/input/textbox.js"></script>
<script src="/static/js/interfaces/input/number.js"></script>
<script src="/static/js/interfaces/input/radio.js"></script>
<script src="/static/js/interfaces/input/checkbox_group.js"></script>
<script src="/static/js/interfaces/input/checkbox.js"></script>
<script src="/static/js/interfaces/input/dropdown.js"></script>
<script src="/static/js/interfaces/input/slider.js"></script>
<script src="/static/js/interfaces/input/dataframe.js"></script>
<script src="/static/js/interfaces/input/audio.js"></script>
<script src="/static/js/interfaces/input/file.js"></script>
<script src="/static/js/interfaces/input/webcam.js"></script>
<script src="/static/js/interfaces/input/microphone.js"></script>
<script src="/static/js/interfaces/output/image.js"></script>
<script src="/static/js/interfaces/output/label.js"></script>
<script src="/static/js/interfaces/output/key_values.js"></script>
<script src="/static/js/interfaces/output/textbox.js"></script>
<script src="/static/js/interfaces/output/highlighted_text.js"></script>
<script src="/static/js/interfaces/output/audio.js"></script>
<script src="/static/js/interfaces/output/json.js"></script>
<script src="/static/js/interfaces/output/html.js"></script>
<script src="/static/js/interfaces/output/dataframe.js"></script>
<script src="/static/js/interfaces/output/file.js"></script>
<script src="/static/js/gradio.js"></script>
<script src="{{ url_for('static', filename='js/utils.js') }}"></script>
<script src="{{ url_for('static', filename='js/all_io.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/image.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/sketchpad.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/textbox.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/number.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/radio.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/checkbox_group.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/checkbox.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/dropdown.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/slider.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/dataframe.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/audio.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/file.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/webcam.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/input/microphone.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/image.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/label.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/key_values.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/textbox.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/highlighted_text.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/audio.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/json.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/html.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/dataframe.js') }}"></script>
<script src="{{ url_for('static', filename='js/interfaces/output/file.js') }}"></script>
<script src="{{ url_for('static', filename='js/gradio.js') }}"></script>
<script>
$.getJSON("/config/", function(config) {
io = gradio_url(config, "/api/", "#interface_target", "/file/");

View File

@ -18,6 +18,7 @@ setup(
'requests',
'Flask==1.1.1',
'Flask-Cors==3.0.8',
'flask-cachebuster',
'paramiko',
'scipy',
'IPython',