Skip to content

Commit

Permalink
Merge branch 'main' into playground-auto-requirements
Browse files Browse the repository at this point in the history
  • Loading branch information
whitphx authored Oct 23, 2024
2 parents ec8d5da + b538bda commit c8142ef
Show file tree
Hide file tree
Showing 203 changed files with 4,396 additions and 11,623 deletions.
6 changes: 0 additions & 6 deletions .changeset/chatty-pants-check.md

This file was deleted.

6 changes: 6 additions & 0 deletions .changeset/cyan-sheep-greet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@gradio/chatbot": patch
"gradio": patch
---

fix:Fix avatar image placement in Chatbot
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@
"gradio": patch
---

feat:fix `@gradio/sanitize` exports
feat:more fix
5 changes: 5 additions & 0 deletions .changeset/dull-peaches-brush.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"gradio": patch
---

fix:added audioop-lts module to support pydub for python3.13+
5 changes: 0 additions & 5 deletions .changeset/happy-lies-study.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/honest-forks-pay.md

This file was deleted.

11 changes: 0 additions & 11 deletions .changeset/lazy-lemons-admire.md

This file was deleted.

6 changes: 0 additions & 6 deletions .changeset/moody-feet-dream.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/olive-lights-hide.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/sad-chicken-rule.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"gradio": patch
---

fix:update docstring for the the "variant" parameter in `gr.Button`
7 changes: 0 additions & 7 deletions .changeset/small-chicken-retire.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/sweet-cloths-send.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/warm-roses-begin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"gradio": patch
---

fix:Exclude python-multipart 0.0.13
8 changes: 8 additions & 0 deletions .changeset/young-feet-ask.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@gradio/preview": minor
"@self/app": minor
"@self/component-test": minor
"@self/storybook": minor
---

feat:fix storybook build
4 changes: 3 additions & 1 deletion .config/basevite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ export default defineConfig(({ mode }) => {
server: {
port: 9876
},

resolve: {
conditions: ["gradio"]
},
build: {
sourcemap: false,
target: "esnext",
Expand Down
2 changes: 1 addition & 1 deletion .config/playwright.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const base = defineConfig({
}
},
expect: { timeout: 10000 },
timeout: 10000,
timeout: 30000,
testMatch: /.*\.spec\.ts/,
testDir: "..",
workers: process.env.CI ? 1 : undefined,
Expand Down
21 changes: 10 additions & 11 deletions .github/actions/install-all-deps/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,20 +59,19 @@ runs:
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
# - uses: actions/cache@v4
# id: cache
# with:
# path: |
# venv/*
# client/python/venv
# restore-keys: |
# gradio-lib-${{inputs.python_version}}-${{inputs.os}}-latest-pip-
# key: "gradio-lib-${{inputs.python_version}}-${{inputs.os}}-latest-pip-${{ hashFiles('client/python/requirements.txt') }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('test/requirements.txt') }}-${{ hashFiles('client/python/test/requirements.txt') }}${{ inputs.test == 'true' && '-test' || ''}}"
- uses: actions/cache@v4
id: cache
with:
path: |
venv/**
client/python/venv
restore-keys: |
gradio-lib-${{inputs.python_version}}-${{inputs.os}}-latest-pip-
key: "gradio-lib-${{inputs.python_version}}-${{inputs.os}}-latest-pip-${{ hashFiles('client/python/requirements.txt') }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('test/requirements.txt') }}-${{ hashFiles('client/python/test/requirements.txt') }}${{ inputs.test == 'true' && '-test' || ''}}"
- name: Install ffmpeg
uses: FedericoCarboni/setup-ffmpeg@583042d32dd1cabb8bd09df03bde06080da5c87c # @v2
- name: Install test dependencies
if: inputs.test == 'true'
# && steps.cache.outputs.cache-hit != 'true'
if: inputs.test == 'true' && steps.cache.outputs.cache-hit != 'true'
shell: bash
run: |
. ${{ env.VENV_ACTIVATE }}
Expand Down
32 changes: 16 additions & 16 deletions .github/actions/install-frontend-deps/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,20 @@ inputs:
runs:
using: "composite"
steps:
# - uses: actions/cache@v4
# id: frontend-cache
# with:
# path: |
# gradio/templates/*
# key: gradio-lib-front-end-${{ hashFiles('js/**', 'client/js/**')}}
- uses: actions/cache@v4
id: frontend-core-cache
if: inputs.skip_build == 'false'
with:
path: |
gradio/templates/**
key: gradio-lib-front-end-${{ hashFiles('js/**', 'client/js/**')}}
- uses: actions/cache@v4
id: frontend-lite-cache
if: inputs.build_lite == 'true'
with:
path: |
js/lite/dist/**
key: gradio-lib-front-end-lite-${{ hashFiles('js/**', 'client/js/**', 'gradio/**')}}
- name: Install pnpm
uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # @v4
with:
Expand All @@ -33,20 +41,12 @@ runs:
- name: Build Css
shell: bash
run: pnpm css
- name: Create packages
shell: bash
run: pnpm package
- name: Build frontend
if: inputs.skip_build == 'false'
# && steps.frontend-cache.outputs.cache-hit != 'true'
if: inputs.skip_build == 'false' && steps.frontend-core-cache.outputs.cache-hit != 'true'
shell: bash
run: pnpm build
- name: generate types
if: inputs.skip_build == 'false' || inputs.build_lite == 'true'
shell: bash
run: pnpm package
- name: Build frontend lite
if: inputs.build_lite == 'true'
if: inputs.build_lite == 'true' && steps.frontend-lite-cache.outputs.cache-hit != 'true'
shell: bash
run: |
. venv/bin/activate
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ jobs:
run: |
. venv/bin/activate
pip install -U build hatch packaging>=23.2 # packaging>=23.2 is needed to build Lite due to https://github.com/pypa/hatch/issues/1381
pnpm package
pnpm --filter @gradio/client --filter @gradio/lite --filter @gradio/preview build
- name: create and publish versions
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/test-functional-lite.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ jobs:
python_version: "3.10"
test: true
- run: pnpm exec playwright install chromium firefox
- name: build essential packages
run: pnpm --filter @gradio/utils --filter @gradio/theme package
- name: Run Lite E2E tests
run: |
. venv/bin/activate
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/test-functional.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ jobs:
python -m pip install -r demo/outbreak_forecast/requirements.txt
python -m pip install -r demo/stream_video_out/requirements.txt
- run: pnpm exec playwright install chromium firefox
- name: build essential packages
run: pnpm --filter @gradio/utils --filter @gradio/theme package
- name: run browser tests
env:
GRADIO_SSR_MODE: ${{ matrix.ssr }}
Expand All @@ -67,7 +69,7 @@ jobs:
uses: actions/upload-artifact@v4
if: always()
with:
name: playwright-screenshots
name: playwright-screenshots-SSR-${{ matrix.ssr }}
path: |
./test-results
- name: run browser component tests
Expand All @@ -82,6 +84,6 @@ jobs:
uses: actions/upload-artifact@v4
if: always()
with:
name: reload-mode-playwright-screenshots
name: reload-mode-playwright-screenshots-SSR-${{ matrix.ssr }}
path: |
./test-results
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
# gradio

## 5.3.0

### Features

- [#9746](https://github.com/gradio-app/gradio/pull/9746) [`5015abb`](https://github.com/gradio-app/gradio/commit/5015abbd78434754931c2b09d9f603f212c4566d) - fix `@gradio/sanitize` exports. Thanks @pngwn!
- [#9756](https://github.com/gradio-app/gradio/pull/9756) [`92f337c`](https://github.com/gradio-app/gradio/commit/92f337cc85d545060ea343f1cee85c22b85f6444) - Fix website build issue. Thanks @aliabd!
- [#9781](https://github.com/gradio-app/gradio/pull/9781) [`7579e92`](https://github.com/gradio-app/gradio/commit/7579e92971e67be3ae81dd00a3acfbb58dd9ba27) - Allow smoother plot changes. Thanks @aliabid94!

### Fixes

- [#9770](https://github.com/gradio-app/gradio/pull/9770) [`47b5565`](https://github.com/gradio-app/gradio/commit/47b556523db3b63d6a9c2f9f69e8632bfa4ddff6) - Fix broken image select. Thanks @aliabid94!
- [#9754](https://github.com/gradio-app/gradio/pull/9754) [`36a5076`](https://github.com/gradio-app/gradio/commit/36a50769095081a0e77f04f513d47a2e9d4531ba) - Update client.py: raise error on 429 get_config. Thanks @Pendrokar!
- [#9780](https://github.com/gradio-app/gradio/pull/9780) [`a72e1a9`](https://github.com/gradio-app/gradio/commit/a72e1a97686601bf72c7df5e7e066a532bbb7f38) - Streaming Markdown in chatbot Component Fix. Thanks @dawoodkhan82!
- [#9767](https://github.com/gradio-app/gradio/pull/9767) [`16895e8`](https://github.com/gradio-app/gradio/commit/16895e862871839db762f6318622a5a64b9d5199) - Fixes #9742. Thanks @crypdick!
- [#9654](https://github.com/gradio-app/gradio/pull/9654) [`cd7dab7`](https://github.com/gradio-app/gradio/commit/cd7dab7ba5c81983f133dfa9e90ac6f92ac4fa1f) - Improve select event behaviour in gr.Dataframe. Thanks @hannahblair!
- [#9700](https://github.com/gradio-app/gradio/pull/9700) [`2932e06`](https://github.com/gradio-app/gradio/commit/2932e067d5716a0f3939bfa3f310db8cdcf565c1) - Fix API info bug. Thanks @freddyaboulton!
- [#9653](https://github.com/gradio-app/gradio/pull/9653) [`61cd768`](https://github.com/gradio-app/gradio/commit/61cd768490a12f5d63101d5434092bcd1cfc43a8) - Ensures tabs with visible set to false are not visible. Thanks @hannahblair!
- [#9758](https://github.com/gradio-app/gradio/pull/9758) [`38701a9`](https://github.com/gradio-app/gradio/commit/38701a99710f9484dade8a93c5bf3a43ea30a0d3) - Fix icons not showing in Safari. Thanks @hannahblair!
- [#9738](https://github.com/gradio-app/gradio/pull/9738) [`2ade59b`](https://github.com/gradio-app/gradio/commit/2ade59b95d4c3610a1a461cc95f020fbf9627305) - Export `Tabs` type from `@gradio/tabs` and fix the Playground to be compatible with the new Tabs API. Thanks @whitphx!
- [#9762](https://github.com/gradio-app/gradio/pull/9762) [`bcb7d15`](https://github.com/gradio-app/gradio/commit/bcb7d15a8aef1cf1b873ba3d039fbec91432c5b2) - Add a `.clear` event to the `gr.Chatbot` component. Thanks @abidlabs!
- [#9765](https://github.com/gradio-app/gradio/pull/9765) [`df34f58`](https://github.com/gradio-app/gradio/commit/df34f58c3db12abb3965af8ea83a1bbd25c22be7) - Fixes bug where SVG icons could not be used in Buttons/Chatbots. Thanks @freddyaboulton!

## 5.2.1

### Fixes
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ It just takes a few lines of Python to create your own demo, so let's get starte

### Installation

**Prerequisite**: Gradio 5 supports [Python 3.10 - 3.12](https://www.python.org/downloads/).
**Prerequisite**: Gradio 5 requires [Python 3.10 or higher](https://www.python.org/downloads/)


We recommend installing Gradio using `pip`, which is included by default in Python. Run this in your terminal or command prompt:
Expand Down
2 changes: 1 addition & 1 deletion build_pypi.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ aws s3 cp gradio/templates/frontend "s3://gradio/${new_version}/" --recursive --

rm -rf dist/*
rm -rf build/*
python3 -m build
python3 -m build -w
2 changes: 1 addition & 1 deletion client/js/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"skipLibCheck": true,

/* Bundler */
"moduleResolution": "bundler",
"moduleResolution": "Bundler",
"skipDefaultLibCheck": true,
"allowImportingTsExtensions": true,
"esModuleInterop": true,
Expand Down
6 changes: 6 additions & 0 deletions client/python/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# gradio_client

## 1.4.2

### Fixes

- [#9754](https://github.com/gradio-app/gradio/pull/9754) [`36a5076`](https://github.com/gradio-app/gradio/commit/36a50769095081a0e77f04f513d47a2e9d4531ba) - Update client.py: raise error on 429 get_config. Thanks @Pendrokar!

## 1.4.1

### Fixes
Expand Down
2 changes: 1 addition & 1 deletion client/python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ The Gradio client works with any Gradio Space, whether it be an image generator,

If you already have a recent version of `gradio`, then the `gradio_client` is included as a dependency.

Otherwise, the lightweight `gradio_client` package can be installed from pip (or pip3) and works with [Python 3.10 - 3.12]:
Otherwise, the lightweight `gradio_client` package can be installed from pip (or pip3) and works with Python versions 3.10 or higher:

```bash
$ pip install gradio_client
Expand Down
6 changes: 6 additions & 0 deletions client/python/gradio_client/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# gradio_client

## 1.4.2

### Fixes

- [#9754](https://github.com/gradio-app/gradio/pull/9754) [`36a5076`](https://github.com/gradio-app/gradio/commit/36a50769095081a0e77f04f513d47a2e9d4531ba) - Update client.py: raise error on 429 get_config. Thanks @Pendrokar!

## 1.4.1

### Fixes
Expand Down
2 changes: 1 addition & 1 deletion client/python/gradio_client/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "gradio_client",
"version": "1.4.1",
"version": "1.4.2",
"description": "",
"python": "true",
"main_changeset": true,
Expand Down
2 changes: 1 addition & 1 deletion demo/custom_css/run.ipynb
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"cells": [{"cell_type": "markdown", "id": "302934307671667531413257853548643485645", "metadata": {}, "source": ["# Gradio Demo: custom_css"]}, {"cell_type": "code", "execution_count": null, "id": "272996653310673477252411125948039410165", "metadata": {}, "outputs": [], "source": ["!pip install -q gradio "]}, {"cell_type": "code", "execution_count": null, "id": "288918539441861185822528903084949547379", "metadata": {}, "outputs": [], "source": ["import gradio as gr\n", "\n", "css = \"\"\"\n", "/* CSSKeyframesRule for animation */\n", "@keyframes animation {\n", " from {background-color: red;}\n", " to {background-color: blue;}\n", "}\n", "\n", ".cool-col {\n", " animation-name: animation;\n", " animation-duration: 4s;\n", " animation-iteration-count: infinite;\n", " border-radius: 10px;\n", " padding: 20px;\n", "}\n", "\n", "/* CSSStyleRule */\n", ".markdown {\n", " background-color: lightblue;\n", " padding: 20px;\n", "}\n", "\n", ".markdown p {\n", " color: royalblue;\n", "}\n", "\n", "/* CSSMediaRule */\n", "@media screen and (max-width: 600px) {\n", " .markdown {\n", " background: blue;\n", " }\n", " .markdown p {\n", " color: lightblue;\n", " }\n", "}\n", "\n", ".dark .markdown {\n", " background: pink;\n", "}\n", "\n", ".darktest h3 {\n", " color: black;\n", "}\n", "\n", ".dark .darktest h3 {\n", " color: yellow;\n", "}\n", "\n", "/* CSSFontFaceRule */\n", "@font-face {\n", " font-family: \"test-font\";\n", " src: url(\"https://mdn.github.io/css-examples/web-fonts/VeraSeBd.ttf\") format(\"truetype\");\n", "}\n", "\n", ".cool-col {\n", " font-family: \"test-font\";\n", "}\n", "\n", "/* CSSImportRule */\n", "@import url(\"https://fonts.googleapis.com/css2?family=Protest+Riot&display=swap\");\n", "\n", ".markdown {\n", " font-family: \"Protest Riot\", sans-serif;\n", "}\n", "\"\"\"\n", "\n", "with gr.Blocks(css=css) as demo:\n", " with gr.Column(elem_classes=\"cool-col\"):\n", " gr.Markdown(\"### Gradio Demo with Custom CSS\", elem_classes=\"darktest\")\n", " gr.Markdown(elem_classes=\"markdown\", value=\"Resize the browser window to see the CSS media query in action.\")\n", "\n", "if __name__ == \"__main__\":\n", " demo.launch()\n"]}], "metadata": {}, "nbformat": 4, "nbformat_minor": 5}
{"cells": [{"cell_type": "markdown", "id": "302934307671667531413257853548643485645", "metadata": {}, "source": ["# Gradio Demo: custom_css"]}, {"cell_type": "code", "execution_count": null, "id": "272996653310673477252411125948039410165", "metadata": {}, "outputs": [], "source": ["!pip install -q gradio "]}, {"cell_type": "code", "execution_count": null, "id": "288918539441861185822528903084949547379", "metadata": {}, "outputs": [], "source": ["import gradio as gr\n", "\n", "css = \"\"\"\n", "/* CSSKeyframesRule for animation */\n", "@keyframes animation {\n", " from {background-color: red;}\n", " to {background-color: blue;}\n", "}\n", "\n", ".cool-col {\n", " background-color: red;\n", " animation-name: animation;\n", " animation-duration: 4s;\n", " animation-delay: 2s;\n", " animation-iteration-count: infinite;\n", " border-radius: 10px;\n", " padding: 20px;\n", "}\n", "\n", "/* CSSStyleRule */\n", ".markdown {\n", " background-color: lightblue;\n", " padding: 20px;\n", "}\n", "\n", ".markdown p {\n", " color: royalblue;\n", "}\n", "\n", "/* CSSMediaRule */\n", "@media screen and (max-width: 600px) {\n", " .markdown {\n", " background: blue;\n", " }\n", " .markdown p {\n", " color: lightblue;\n", " }\n", "}\n", "\n", ".dark .markdown {\n", " background: pink;\n", "}\n", "\n", ".darktest h3 {\n", " color: black;\n", "}\n", "\n", ".dark .darktest h3 {\n", " color: yellow;\n", "}\n", "\n", "/* CSSFontFaceRule */\n", "@font-face {\n", " font-family: \"test-font\";\n", " src: url(\"https://mdn.github.io/css-examples/web-fonts/VeraSeBd.ttf\") format(\"truetype\");\n", "}\n", "\n", ".cool-col {\n", " font-family: \"test-font\";\n", "}\n", "\n", "/* CSSImportRule */\n", "@import url(\"https://fonts.googleapis.com/css2?family=Protest+Riot&display=swap\");\n", "\n", ".markdown {\n", " font-family: \"Protest Riot\", sans-serif;\n", "}\n", "\"\"\"\n", "\n", "with gr.Blocks(css=css) as demo:\n", " with gr.Column(elem_classes=\"cool-col\"):\n", " gr.Markdown(\"### Gradio Demo with Custom CSS\", elem_classes=\"darktest\")\n", " gr.Markdown(\n", " elem_classes=\"markdown\",\n", " value=\"Resize the browser window to see the CSS media query in action.\",\n", " )\n", "\n", "if __name__ == \"__main__\":\n", " demo.launch()\n"]}], "metadata": {}, "nbformat": 4, "nbformat_minor": 5}
7 changes: 6 additions & 1 deletion demo/custom_css/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
}
.cool-col {
background-color: red;
animation-name: animation;
animation-duration: 4s;
animation-delay: 2s;
animation-iteration-count: infinite;
border-radius: 10px;
padding: 20px;
Expand Down Expand Up @@ -68,7 +70,10 @@
with gr.Blocks(css=css) as demo:
with gr.Column(elem_classes="cool-col"):
gr.Markdown("### Gradio Demo with Custom CSS", elem_classes="darktest")
gr.Markdown(elem_classes="markdown", value="Resize the browser window to see the CSS media query in action.")
gr.Markdown(
elem_classes="markdown",
value="Resize the browser window to see the CSS media query in action.",
)

if __name__ == "__main__":
demo.launch()
1 change: 1 addition & 0 deletions demo/tabs_visibility/run.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"cells": [{"cell_type": "markdown", "id": "302934307671667531413257853548643485645", "metadata": {}, "source": ["# Gradio Demo: tabs_visibility"]}, {"cell_type": "code", "execution_count": null, "id": "272996653310673477252411125948039410165", "metadata": {}, "outputs": [], "source": ["!pip install -q gradio "]}, {"cell_type": "code", "execution_count": null, "id": "288918539441861185822528903084949547379", "metadata": {}, "outputs": [], "source": ["import gradio as gr\n", "\n", "with gr.Blocks() as demo:\n", " with gr.Tab(\"abc\"):\n", " gr.Textbox(label=\"abc\")\n", " with gr.Tab(\"def\", visible=False) as t:\n", " gr.Textbox(label=\"def\")\n", " with gr.Tab(\"ghi\"):\n", " gr.Textbox(label=\"ghi\")\n", " with gr.Tab(\"jkl\", visible=False) as t2:\n", " gr.Textbox(label=\"jkl\")\n", " with gr.Tab(\"mno\"):\n", " gr.Textbox(label=\"mno\")\n", " with gr.Tab(\"pqr\", visible=False) as t3:\n", " gr.Textbox(label=\"pqr\")\n", " with gr.Tab(\"stu\"):\n", " gr.Textbox(label=\"stu\")\n", " with gr.Tab(\"vwx\", visible=False) as t4:\n", " gr.Textbox(label=\"vwx\")\n", " with gr.Tab(\"yz\"):\n", " gr.Textbox(label=\"yz\")\n", " b = gr.Button(\"Make visible\")\n", "\n", " b.click(\n", " lambda: [\n", " gr.Tab(visible=True),\n", " gr.Tab(visible=True),\n", " gr.Tab(visible=True),\n", " gr.Tab(visible=True),\n", " ],\n", " inputs=None,\n", " outputs=[t, t2, t3, t4],\n", " )\n", "\n", "if __name__ == \"__main__\":\n", " demo.launch()\n"]}], "metadata": {}, "nbformat": 4, "nbformat_minor": 5}
Loading

0 comments on commit c8142ef

Please sign in to comment.