Spaces:
Sleeping
Sleeping
Upload with huggingface_hub
Browse files
README.md
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: gradio
|
| 7 |
sdk_version: 3.15.0
|
| 8 |
-
app_file:
|
| 9 |
pinned: false
|
| 10 |
---
|
| 11 |
-
|
| 12 |
-
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
|
|
|
|
| 1 |
+
|
| 2 |
---
|
| 3 |
+
title: progress_main
|
| 4 |
+
emoji: 🔥
|
| 5 |
+
colorFrom: indigo
|
| 6 |
+
colorTo: indigo
|
| 7 |
sdk: gradio
|
| 8 |
sdk_version: 3.15.0
|
| 9 |
+
app_file: run.py
|
| 10 |
pinned: false
|
| 11 |
---
|
|
|
|
|
|
requirements.txt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
tqdm
|
| 2 |
+
datasets
|
| 3 |
+
https://gradio-main-build.s3.amazonaws.com/d77b0702d1a0d2caeebf76305cffedfa3492dc3a/gradio-3.15.0-py3-none-any.whl
|
run.ipynb
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"cells": [{"cell_type": "markdown", "id": 302934307671667531413257853548643485645, "metadata": {}, "source": ["# Gradio Demo: progress"]}, {"cell_type": "code", "execution_count": null, "id": 272996653310673477252411125948039410165, "metadata": {}, "outputs": [], "source": ["!pip install -q gradio tqdm datasets"]}, {"cell_type": "code", "execution_count": null, "id": 288918539441861185822528903084949547379, "metadata": {}, "outputs": [], "source": ["import gradio as gr\n", "import random\n", "import time\n", "import tqdm\n", "from datasets import load_dataset\n", "import shutil\n", "from uuid import uuid4\n", "\n", "with gr.Blocks() as demo:\n", " with gr.Row():\n", " text = gr.Textbox()\n", " textb = gr.Textbox()\n", " with gr.Row():\n", " load_set_btn = gr.Button(\"Load Set\")\n", " load_nested_set_btn = gr.Button(\"Load Nested Set\")\n", " load_random_btn = gr.Button(\"Load Random\")\n", " clean_imgs_btn = gr.Button(\"Clean Images\")\n", " wait_btn = gr.Button(\"Wait\")\n", " do_all_btn = gr.Button(\"Do All\")\n", " track_tqdm_btn = gr.Button(\"Bind TQDM\")\n", " bind_internal_tqdm_btn = gr.Button(\"Bind Internal TQDM\")\n", "\n", " text2 = gr.Textbox()\n", "\n", " # track list\n", " def load_set(text, text2, progress=gr.Progress()):\n", " imgs = [None] * 24\n", " for img in progress.tqdm(imgs, desc=\"Loading from list\"):\n", " time.sleep(0.1)\n", " return \"done\"\n", " load_set_btn.click(load_set, [text, textb], text2)\n", "\n", " # track nested list\n", " def load_nested_set(text, text2, progress=gr.Progress()):\n", " imgs = [[None] * 8] * 3\n", " for img_set in progress.tqdm(imgs, desc=\"Nested list\"):\n", " time.sleep(2)\n", " for img in progress.tqdm(img_set, desc=\"inner list\"):\n", " time.sleep(0.1)\n", " return \"done\"\n", " load_nested_set_btn.click(load_nested_set, [text, textb], text2)\n", "\n", " # track iterable of unknown length\n", " def load_random(data, progress=gr.Progress()):\n", " def yielder():\n", " for i in range(0, random.randint(15, 20)):\n", " time.sleep(0.1)\n", " yield None\n", " for img in progress.tqdm(yielder()):\n", " pass\n", " return \"done\"\n", " load_random_btn.click(load_random, {text, textb}, text2)\n", " \n", " # manual progress\n", " def clean_imgs(text, progress=gr.Progress()):\n", " progress(0.2, desc=\"Collecting Images\")\n", " time.sleep(1)\n", " progress(0.5, desc=\"Cleaning Images\")\n", " time.sleep(1.5)\n", " progress(0.8, desc=\"Sending Images\")\n", " time.sleep(1.5)\n", " return \"done\"\n", " clean_imgs_btn.click(clean_imgs, text, text2)\n", "\n", " # no progress\n", " def wait(text):\n", " time.sleep(4)\n", " return \"done\"\n", " wait_btn.click(wait, text, text2)\n", "\n", " # multiple progressions\n", " def do_all(data, progress=gr.Progress()):\n", " load_set(data[text], data[textb], progress)\n", " load_random(data, progress)\n", " clean_imgs(data[text], progress)\n", " progress(None)\n", " wait(text)\n", " return \"done\"\n", " do_all_btn.click(do_all, {text, textb}, text2)\n", "\n", " def track_tqdm(data, progress=gr.Progress(track_tqdm=True)):\n", " for i in tqdm.tqdm(range(5), desc=\"outer\"):\n", " for j in tqdm.tqdm(range(4), desc=\"inner\"):\n", " time.sleep(1)\n", " return \"done\"\n", " track_tqdm_btn.click(track_tqdm, {text, textb}, text2)\n", "\n", " def bind_internal_tqdm(data, progress=gr.Progress(track_tqdm=True)):\n", " outdir = \"__tmp/\" + str(uuid4())\n", " dataset = load_dataset(\"beans\", split=\"train\", cache_dir=outdir)\n", " shutil.rmtree(outdir)\n", " return \"done\"\n", " bind_internal_tqdm_btn.click(bind_internal_tqdm, {text, textb}, text2)\n", "\n", "\n", "if __name__ == \"__main__\":\n", " demo.queue(concurrency_count=20).launch()\n"]}], "metadata": {}, "nbformat": 4, "nbformat_minor": 5}
|
run.py
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
import random
|
| 3 |
+
import time
|
| 4 |
+
import tqdm
|
| 5 |
+
from datasets import load_dataset
|
| 6 |
+
import shutil
|
| 7 |
+
from uuid import uuid4
|
| 8 |
+
|
| 9 |
+
with gr.Blocks() as demo:
|
| 10 |
+
with gr.Row():
|
| 11 |
+
text = gr.Textbox()
|
| 12 |
+
textb = gr.Textbox()
|
| 13 |
+
with gr.Row():
|
| 14 |
+
load_set_btn = gr.Button("Load Set")
|
| 15 |
+
load_nested_set_btn = gr.Button("Load Nested Set")
|
| 16 |
+
load_random_btn = gr.Button("Load Random")
|
| 17 |
+
clean_imgs_btn = gr.Button("Clean Images")
|
| 18 |
+
wait_btn = gr.Button("Wait")
|
| 19 |
+
do_all_btn = gr.Button("Do All")
|
| 20 |
+
track_tqdm_btn = gr.Button("Bind TQDM")
|
| 21 |
+
bind_internal_tqdm_btn = gr.Button("Bind Internal TQDM")
|
| 22 |
+
|
| 23 |
+
text2 = gr.Textbox()
|
| 24 |
+
|
| 25 |
+
# track list
|
| 26 |
+
def load_set(text, text2, progress=gr.Progress()):
|
| 27 |
+
imgs = [None] * 24
|
| 28 |
+
for img in progress.tqdm(imgs, desc="Loading from list"):
|
| 29 |
+
time.sleep(0.1)
|
| 30 |
+
return "done"
|
| 31 |
+
load_set_btn.click(load_set, [text, textb], text2)
|
| 32 |
+
|
| 33 |
+
# track nested list
|
| 34 |
+
def load_nested_set(text, text2, progress=gr.Progress()):
|
| 35 |
+
imgs = [[None] * 8] * 3
|
| 36 |
+
for img_set in progress.tqdm(imgs, desc="Nested list"):
|
| 37 |
+
time.sleep(2)
|
| 38 |
+
for img in progress.tqdm(img_set, desc="inner list"):
|
| 39 |
+
time.sleep(0.1)
|
| 40 |
+
return "done"
|
| 41 |
+
load_nested_set_btn.click(load_nested_set, [text, textb], text2)
|
| 42 |
+
|
| 43 |
+
# track iterable of unknown length
|
| 44 |
+
def load_random(data, progress=gr.Progress()):
|
| 45 |
+
def yielder():
|
| 46 |
+
for i in range(0, random.randint(15, 20)):
|
| 47 |
+
time.sleep(0.1)
|
| 48 |
+
yield None
|
| 49 |
+
for img in progress.tqdm(yielder()):
|
| 50 |
+
pass
|
| 51 |
+
return "done"
|
| 52 |
+
load_random_btn.click(load_random, {text, textb}, text2)
|
| 53 |
+
|
| 54 |
+
# manual progress
|
| 55 |
+
def clean_imgs(text, progress=gr.Progress()):
|
| 56 |
+
progress(0.2, desc="Collecting Images")
|
| 57 |
+
time.sleep(1)
|
| 58 |
+
progress(0.5, desc="Cleaning Images")
|
| 59 |
+
time.sleep(1.5)
|
| 60 |
+
progress(0.8, desc="Sending Images")
|
| 61 |
+
time.sleep(1.5)
|
| 62 |
+
return "done"
|
| 63 |
+
clean_imgs_btn.click(clean_imgs, text, text2)
|
| 64 |
+
|
| 65 |
+
# no progress
|
| 66 |
+
def wait(text):
|
| 67 |
+
time.sleep(4)
|
| 68 |
+
return "done"
|
| 69 |
+
wait_btn.click(wait, text, text2)
|
| 70 |
+
|
| 71 |
+
# multiple progressions
|
| 72 |
+
def do_all(data, progress=gr.Progress()):
|
| 73 |
+
load_set(data[text], data[textb], progress)
|
| 74 |
+
load_random(data, progress)
|
| 75 |
+
clean_imgs(data[text], progress)
|
| 76 |
+
progress(None)
|
| 77 |
+
wait(text)
|
| 78 |
+
return "done"
|
| 79 |
+
do_all_btn.click(do_all, {text, textb}, text2)
|
| 80 |
+
|
| 81 |
+
def track_tqdm(data, progress=gr.Progress(track_tqdm=True)):
|
| 82 |
+
for i in tqdm.tqdm(range(5), desc="outer"):
|
| 83 |
+
for j in tqdm.tqdm(range(4), desc="inner"):
|
| 84 |
+
time.sleep(1)
|
| 85 |
+
return "done"
|
| 86 |
+
track_tqdm_btn.click(track_tqdm, {text, textb}, text2)
|
| 87 |
+
|
| 88 |
+
def bind_internal_tqdm(data, progress=gr.Progress(track_tqdm=True)):
|
| 89 |
+
outdir = "__tmp/" + str(uuid4())
|
| 90 |
+
dataset = load_dataset("beans", split="train", cache_dir=outdir)
|
| 91 |
+
shutil.rmtree(outdir)
|
| 92 |
+
return "done"
|
| 93 |
+
bind_internal_tqdm_btn.click(bind_internal_tqdm, {text, textb}, text2)
|
| 94 |
+
|
| 95 |
+
|
| 96 |
+
if __name__ == "__main__":
|
| 97 |
+
demo.queue(concurrency_count=20).launch()
|