From 3fa0052d36a3ecdde7dc44908073bb7158d07a95 Mon Sep 17 00:00:00 2001 From: Abubakar Abid Date: Sun, 24 Feb 2019 23:43:46 -0800 Subject: [PATCH] added ngrok check for linux --- Test Notebook.ipynb | 60 +++++++----------- build/lib/gradio/networking.py | 2 +- ...-any.whl => gradio-0.2.1-py3-none-any.whl} | Bin 727283 -> 727286 bytes gradio.egg-info/PKG-INFO | 2 +- gradio/networking.py | 2 +- setup.py | 2 +- 6 files changed, 28 insertions(+), 40 deletions(-) rename dist/{gradio-0.2.0-py3-none-any.whl => gradio-0.2.1-py3-none-any.whl} (98%) diff --git a/Test Notebook.ipynb b/Test Notebook.ipynb index 0c590b94ce..41604eaa58 100644 --- a/Test Notebook.ipynb +++ b/Test Notebook.ipynb @@ -2,14 +2,13 @@ "cells": [ { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Model available publicly for 8 hours at: http://22c0b84e.ngrok.io/interface.html\n", "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n" ] @@ -24,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -34,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": { "scrolled": true }, @@ -53,7 +52,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -61,43 +60,32 @@ "output_type": "stream", "text": [ "NOTE: Gradio is in beta stage, please report all bugs to: a12d@stanford.edu\n", - "Model available locally at: http://localhost:7862/interface.html\n", - "Model available publicly for 8 hours at: https://81712345.ngrok.io/interface.html\n" + "Model available locally at: http://localhost:7861/interface.html\n", + "Model available publicly for 8 hours at: http://3dc1c1d4.ngrok.io/interface.html\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ - "127.0.0.1 - - [24/Feb/2019 23:05:10] \"GET /interface.html HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:10] \"GET /js/all-io.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:10] \"GET /css/bootstrap.min.css HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:10] \"GET /css/draw-a-digit.css HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:10] \"GET /js/bootstrap.min.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:10] \"GET /js/bootstrap-notify.min.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:10] \"GET /js/textbox-input.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:10] \"GET /js/textbox-output.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:28] \"GET /interface.html HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:29] \"GET /js/all-io.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:29] \"GET /css/bootstrap.min.css HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:30] \"GET /css/draw-a-digit.css HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:30] \"GET /js/bootstrap.min.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:30] \"GET /js/bootstrap-notify.min.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:30] \"GET /js/textbox-input.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:30] \"GET /js/textbox-output.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:05:31] code 404, message File not found\n", - "127.0.0.1 - - [24/Feb/2019 23:05:31] \"GET /favicon.ico HTTP/1.1\" 404 -\n", - "127.0.0.1 - - [24/Feb/2019 23:06:15] \"GET /interface.html HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:06:24] \"GET /interface.html HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:06:24] \"GET /js/all-io.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:06:24] \"GET /js/bootstrap.min.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:06:24] \"GET /css/bootstrap.min.css HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:06:24] \"GET /js/bootstrap-notify.min.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:06:25] \"GET /css/draw-a-digit.css HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:06:25] \"GET /js/textbox-input.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:06:25] \"GET /js/textbox-output.js HTTP/1.1\" 200 -\n", - "127.0.0.1 - - [24/Feb/2019 23:06:26] code 404, message File not found\n", - "127.0.0.1 - - [24/Feb/2019 23:06:26] \"GET /favicon.ico HTTP/1.1\" 404 -\n" + "127.0.0.1 - - [24/Feb/2019 23:32:47] \"GET /interface.html HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:47] \"GET /css/bootstrap.min.css HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:47] \"GET /css/draw-a-digit.css HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:48] \"GET /js/all-io.js HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:48] \"GET /js/bootstrap.min.js HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:48] \"GET /js/bootstrap-notify.min.js HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:48] \"GET /js/textbox-input.js HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:48] \"GET /js/textbox-output.js HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:50] \"GET /interface.html HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:51] \"GET /js/all-io.js HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:51] \"GET /css/bootstrap.min.css HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:51] \"GET /css/draw-a-digit.css HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:51] \"GET /js/bootstrap.min.js HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:51] \"GET /js/bootstrap-notify.min.js HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:52] \"GET /js/textbox-output.js HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:52] \"GET /js/textbox-input.js HTTP/1.1\" 200 -\n", + "127.0.0.1 - - [24/Feb/2019 23:32:52] code 404, message File not found\n", + "127.0.0.1 - - [24/Feb/2019 23:32:52] \"GET /favicon.ico HTTP/1.1\" 404 -\n" ] } ], diff --git a/build/lib/gradio/networking.py b/build/lib/gradio/networking.py index f5015aefdd..2ace36072b 100644 --- a/build/lib/gradio/networking.py +++ b/build/lib/gradio/networking.py @@ -134,7 +134,7 @@ def download_ngrok(): def setup_ngrok(local_port, api_url=NGROK_TUNNELS_API_URL): - if not(os.path.isfile('ngrok.exe')): + if not(os.path.isfile('ngrok.exe') or os.path.isfile('ngrok')): download_ngrok() if sys.platform == 'win32': subprocess.Popen(['ngrok', 'http', str(local_port)]) diff --git a/dist/gradio-0.2.0-py3-none-any.whl b/dist/gradio-0.2.1-py3-none-any.whl similarity index 98% rename from dist/gradio-0.2.0-py3-none-any.whl rename to dist/gradio-0.2.1-py3-none-any.whl index f30762c7664358f072e748a13199d19ab672be20..1bf896e7983760222fb36775d684acb9a4884ec3 100644 GIT binary patch delta 6185 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 delta 6198 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