Spaces:
Runtime error
Runtime error
""" | |
Contains the functions that run when `gradio` is called from the command line. Specifically, allows | |
$ gradio app.py, to run app.py in reload mode where any changes in the app.py file or Gradio library reloads the demo. | |
$ gradio app.py my_demo, to use variable names other than "demo" | |
""" | |
import inspect | |
import os | |
import sys | |
from pathlib import Path | |
import gradio | |
from gradio import networking | |
def run_in_reload_mode(): | |
args = sys.argv[1:] | |
if len(args) == 0: | |
raise ValueError("No file specified.") | |
if len(args) == 1: | |
demo_name = "demo" | |
else: | |
demo_name = args[1] | |
original_path = args[0] | |
abs_original_path = Path(original_path).name | |
path = str(Path(original_path).resolve()) | |
path = path.replace("/", ".") | |
path = path.replace("\\", ".") | |
filename = Path(path).stem | |
gradio_folder = Path(inspect.getfile(gradio)).parent | |
port = networking.get_first_available_port( | |
networking.INITIAL_PORT_VALUE, | |
networking.INITIAL_PORT_VALUE + networking.TRY_NUM_PORTS, | |
) | |
print( | |
f"\nLaunching in *reload mode* on: http://{networking.LOCALHOST_NAME}:{port} (Press CTRL+C to quit)\n" | |
) | |
command = f"uvicorn {filename}:{demo_name}.app --reload --port {port} --log-level warning " | |
message = "Watching:" | |
message_change_count = 0 | |
if str(gradio_folder).strip(): | |
command += f'--reload-dir "{gradio_folder}" ' | |
message += f" '{gradio_folder}'" | |
message_change_count += 1 | |
abs_parent = Path(abs_original_path).parent | |
if str(abs_parent).strip(): | |
command += f'--reload-dir "{abs_parent}"' | |
if message_change_count == 1: | |
message += "," | |
message += f" '{abs_parent}'" | |
print(message + "\n") | |
os.system(command) | |