diff --git a/.gitignore b/.gitignore index fe1242c1f7..09fc0ddab9 100644 --- a/.gitignore +++ b/.gitignore @@ -20,4 +20,5 @@ demo/models/* dist/* *.h5 docs.json -*.bak \ No newline at end of file +*.bak +demo/tmp.zip \ No newline at end of file diff --git a/demo/filter_records.py b/demo/filter_records.py index efebe01a5f..ef7998809f 100644 --- a/demo/filter_records.py +++ b/demo/filter_records.py @@ -1,4 +1,4 @@ -# Demo (Dataframe, Dropdown) -> (Dataframe) +# Demo: (Dataframe, Dropdown) -> (Dataframe) import gradio as gr import numpy as np diff --git a/demo/screenshots/webcam.py/1.png b/demo/screenshots/webcam/1.png similarity index 100% rename from demo/screenshots/webcam.py/1.png rename to demo/screenshots/webcam/1.png diff --git a/demo/stock_forecast.py b/demo/stock_forecast.py index 3fe4db4f07..7f0a694d27 100644 --- a/demo/stock_forecast.py +++ b/demo/stock_forecast.py @@ -1,4 +1,4 @@ -# (Radio, CheckboxGroup, Slider, Dropdown) -> (Image) +# Demo: (Radio, CheckboxGroup, Slider, Dropdown) -> (Image) import gradio as gr import random diff --git a/demo/webcam.py b/demo/webcam.py index d84dd6c664..24f0fabb18 100644 --- a/demo/webcam.py +++ b/demo/webcam.py @@ -1,7 +1,9 @@ +# Demo: (Image) -> (HighlightedText, KeyValues, HTML) + import gradio as gr import numpy as np def snap(image): - return image + return np.flipud(image) gr.Interface(snap, gr.inputs.Image(shape=(100,100), image_mode="L", source="webcam"), "image").launch() diff --git a/demo/zip_to_json.py b/demo/zip_to_json.py index a4bb665742..8a625a20fd 100644 --- a/demo/zip_to_json.py +++ b/demo/zip_to_json.py @@ -1,3 +1,5 @@ +# Demo: (File) -> (JSON) + import gradio as gr from zipfile import ZipFile diff --git a/demo/zip_two_files.py b/demo/zip_two_files.py index 49c5402164..164390b224 100644 --- a/demo/zip_two_files.py +++ b/demo/zip_two_files.py @@ -1,3 +1,5 @@ +# Demo: (File, File) -> (File) + import gradio as gr from zipfile import ZipFile diff --git a/gradio/generate_docs.py b/generate_docs.py similarity index 63% rename from gradio/generate_docs.py rename to generate_docs.py index 30a798666b..c169fc2849 100644 --- a/gradio/generate_docs.py +++ b/generate_docs.py @@ -3,6 +3,31 @@ from gradio.inputs import InputComponent from gradio.outputs import OutputComponent from gradio.interface import Interface import inspect +from os import listdir +from os.path import join +import re + +in_demos, out_demos = {}, {} +demo_regex = "# Demo: \((.*)\) -> \((.*)\)" +for demo in listdir("demo"): + if demo.endswith(".py"): + screenshots = listdir(join("demo/screenshots", demo[:-3])) + demoset = [demo, screenshots] + with open(join("demo", demo)) as demo_file: + first_line = demo_file.readline() + match = re.match(demo_regex, first_line) + inputs = match.group(1).split(", ") + outputs = match.group(2).split(", ") + for i in inputs: + if i not in in_demos: + in_demos[i] = [] + elif demoset not in in_demos[i]: + in_demos[i].append(demoset) + for o in outputs: + if o not in out_demos: + out_demos[o] = [] + elif demoset not in out_demos[o]: + out_demos[o].append(demoset) def get_params(func): params_str = inspect.getdoc(func) @@ -33,7 +58,7 @@ def get_params(func): param_set.insert(0, (params.args[neg_index],)) return param_set, params_doc -def document(cls_set): +def document(cls_set, demos): docset = [] for cls in cls_set: inp = {} @@ -45,11 +70,14 @@ def document(cls_set): inp["type"] = doc.split("\n")[-1].split("type: ")[-1] inp["params"], inp["params_doc"] = get_params(cls.__init__) inp["shortcuts"] = list(cls.get_shortcut_implementations().items()) + cls_name = cls.__name__ + if cls_name in demos: + inp["demos"] = demos.get(cls_name, []) docset.append(inp) return docset -inputs = document(InputComponent.__subclasses__()) -outputs = document(OutputComponent.__subclasses__()) +inputs = document(InputComponent.__subclasses__(), in_demos) +outputs = document(OutputComponent.__subclasses__(), out_demos) interface_params = get_params(Interface.__init__) interface = { "doc": inspect.getdoc(Interface), @@ -67,6 +95,6 @@ with open("docs.json", "w") as docs: "inputs": inputs, "outputs": outputs, "interface": interface, - "launch": launch + "launch": launch, }, docs) diff --git a/gradio/networking.py b/gradio/networking.py index 82b5021a14..ce749b97bb 100644 --- a/gradio/networking.py +++ b/gradio/networking.py @@ -151,13 +151,11 @@ def serve_files_in_background(interface, port, directory_to_serve=None, server_n if self.path == "/api/predict/": # Make the prediction. self._set_headers() - print("in") data_string = self.rfile.read( int(self.headers["Content-Length"])) msg = json.loads(data_string) raw_input = msg["data"] prediction, durations = interface.process(raw_input) - print("prediction") output = {"data": prediction, "durations": durations} self.wfile.write(json.dumps(output).encode())