From 4845db4e324dd5194ea82cc5f772237242a89a92 Mon Sep 17 00:00:00 2001
From: Ftps <63702646+Tps-F@users.noreply.github.com>
Date: Wed, 15 Mar 2023 20:29:50 +0900
Subject: Update ui_extensions.py
Add git submodule and Fix WinError
---
modules/ui_extensions.py | 21 +++++----------------
1 file changed, 5 insertions(+), 16 deletions(-)
(limited to 'modules/ui_extensions.py')
diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py
index df75a925..b24b67fc 100644
--- a/modules/ui_extensions.py
+++ b/modules/ui_extensions.py
@@ -141,22 +141,11 @@ def install_extension_from_url(dirname, url):
try:
shutil.rmtree(tmpdir, True)
-
- repo = git.Repo.clone_from(url, tmpdir)
- repo.remote().fetch()
-
- try:
- os.rename(tmpdir, target_dir)
- except OSError as err:
- # TODO what does this do on windows? I think it'll be a different error code but I don't have a system to check it
- # Shouldn't cause any new issues at least but we probably want to handle it there too.
- if err.errno == errno.EXDEV:
- # Cross device link, typical in docker or when tmp/ and extensions/ are on different file systems
- # Since we can't use a rename, do the slower but more versitile shutil.move()
- shutil.move(tmpdir, target_dir)
- else:
- # Something else, not enough free space, permissions, etc. rethrow it so that it gets handled.
- raise(err)
+ with git.Repo.clone_from(url, tmpdir) as repo:
+ repo.remote().fetch()
+ for submodule in repo.submodules:
+ submodule.update()
+ os.rename(tmpdir, target_dir)
import launch
launch.run_extension_installer(target_dir)
--
cgit v1.2.3
From 79ed567b12c73231b712eb97106a565330968e34 Mon Sep 17 00:00:00 2001
From: Ftps <63702646+Tps-F@users.noreply.github.com>
Date: Wed, 15 Mar 2023 22:42:53 +0900
Subject: remove unused library
I'm sorry I forgot.
---
modules/ui_extensions.py | 2 --
1 file changed, 2 deletions(-)
(limited to 'modules/ui_extensions.py')
diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py
index b24b67fc..3d9c4261 100644
--- a/modules/ui_extensions.py
+++ b/modules/ui_extensions.py
@@ -1,6 +1,5 @@
import json
import os.path
-import shutil
import sys
import time
import traceback
@@ -10,7 +9,6 @@ import git
import gradio as gr
import html
import shutil
-import errno
from modules import extensions, shared, paths
from modules.call_queue import wrap_gradio_gpu_call
--
cgit v1.2.3
From 147d2922ff573f757b8940446b925c2e658e40ac Mon Sep 17 00:00:00 2001
From: Ftps <63702646+Tps-F@users.noreply.github.com>
Date: Thu, 16 Mar 2023 12:35:48 +0900
Subject: Cross device link
---
modules/ui_extensions.py | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
(limited to 'modules/ui_extensions.py')
diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py
index 3d9c4261..d9def96e 100644
--- a/modules/ui_extensions.py
+++ b/modules/ui_extensions.py
@@ -9,6 +9,7 @@ import git
import gradio as gr
import html
import shutil
+import errno
from modules import extensions, shared, paths
from modules.call_queue import wrap_gradio_gpu_call
@@ -143,7 +144,16 @@ def install_extension_from_url(dirname, url):
repo.remote().fetch()
for submodule in repo.submodules:
submodule.update()
- os.rename(tmpdir, target_dir)
+ try:
+ os.rename(tmpdir, target_dir)
+ except OSError as err:
+ if err.errno == errno.EXDEV:
+ # Cross device link, typical in docker or when tmp/ and extensions/ are on different file systems
+ # Since we can't use a rename, do the slower but more versitile shutil.move()
+ shutil.move(tmpdir, target_dir)
+ else:
+ # Something else, not enough free space, permissions, etc. rethrow it so that it gets handled.
+ raise err
import launch
launch.run_extension_installer(target_dir)
--
cgit v1.2.3
From 252f15e046b06cdcf07caa2ec97a15462950b92a Mon Sep 17 00:00:00 2001
From: pieresimakp <69743585+pieresimakp@users.noreply.github.com>
Date: Thu, 23 Mar 2023 23:43:00 +0800
Subject: added search textbox to filter available extensions
---
modules/ui_extensions.py | 42 +++++++++++++++++++++++++++++++-----------
1 file changed, 31 insertions(+), 11 deletions(-)
(limited to 'modules/ui_extensions.py')
diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py
index df75a925..5ddb3fdb 100644
--- a/modules/ui_extensions.py
+++ b/modules/ui_extensions.py
@@ -167,12 +167,12 @@ def install_extension_from_url(dirname, url):
shutil.rmtree(tmpdir, True)
-def install_extension_from_index(url, hide_tags, sort_column):
+def install_extension_from_index(url, hide_tags, sort_column, filter_text):
ext_table, message = install_extension_from_url(None, url)
- code, _ = refresh_available_extensions_from_data(hide_tags, sort_column)
+ code, _ = refresh_available_extensions_from_data(hide_tags, sort_column, filter_text)
- return code, ext_table, message
+ return code, ext_table, message, ''
def refresh_available_extensions(url, hide_tags, sort_column):
@@ -186,11 +186,17 @@ def refresh_available_extensions(url, hide_tags, sort_column):
code, tags = refresh_available_extensions_from_data(hide_tags, sort_column)
- return url, code, gr.CheckboxGroup.update(choices=tags), ''
+ return url, code, gr.CheckboxGroup.update(choices=tags), '', ''
-def refresh_available_extensions_for_tags(hide_tags, sort_column):
- code, _ = refresh_available_extensions_from_data(hide_tags, sort_column)
+def refresh_available_extensions_for_tags(hide_tags, sort_column, filter_text):
+ code, _ = refresh_available_extensions_from_data(hide_tags, sort_column, filter_text)
+
+ return code, ''
+
+
+def search_extensions(filter_text, hide_tags, sort_column):
+ code, _ = refresh_available_extensions_from_data(hide_tags, sort_column, filter_text)
return code, ''
@@ -205,7 +211,7 @@ sort_ordering = [
]
-def refresh_available_extensions_from_data(hide_tags, sort_column):
+def refresh_available_extensions_from_data(hide_tags, sort_column, filter_text=""):
extlist = available_extensions["extensions"]
installed_extension_urls = {normalize_git_url(extension.remote): extension.name for extension in extensions.extensions}
@@ -244,6 +250,11 @@ def refresh_available_extensions_from_data(hide_tags, sort_column):
hidden += 1
continue
+ if filter_text and filter_text.strip():
+ if filter_text.lower() not in html.escape(name).lower() and filter_text.lower() not in html.escape(description).lower():
+ hidden += 1
+ continue
+
install_code = f""""""
tags_text = ", ".join([f"{x}" for x in extension_tags])
@@ -312,30 +323,39 @@ def create_ui():
hide_tags = gr.CheckboxGroup(value=["ads", "localization", "installed"], label="Hide extensions with tags", choices=["script", "ads", "localization", "installed"])
sort_column = gr.Radio(value="newest first", label="Order", choices=["newest first", "oldest first", "a-z", "z-a", "internal order", ], type="index")
+ with gr.Row():
+ search_extensions_text = gr.Text(label="Search").style(container=False)
+
install_result = gr.HTML()
available_extensions_table = gr.HTML()
refresh_available_extensions_button.click(
fn=modules.ui.wrap_gradio_call(refresh_available_extensions, extra_outputs=[gr.update(), gr.update(), gr.update()]),
inputs=[available_extensions_index, hide_tags, sort_column],
- outputs=[available_extensions_index, available_extensions_table, hide_tags, install_result],
+ outputs=[available_extensions_index, available_extensions_table, hide_tags, install_result, search_extensions_text],
)
install_extension_button.click(
fn=modules.ui.wrap_gradio_call(install_extension_from_index, extra_outputs=[gr.update(), gr.update()]),
- inputs=[extension_to_install, hide_tags, sort_column],
+ inputs=[extension_to_install, hide_tags, sort_column, search_extensions_text],
outputs=[available_extensions_table, extensions_table, install_result],
)
+ search_extensions_text.change(
+ fn=modules.ui.wrap_gradio_call(search_extensions, extra_outputs=[gr.update()]),
+ inputs=[search_extensions_text, hide_tags, sort_column],
+ outputs=[available_extensions_table, install_result],
+ )
+
hide_tags.change(
fn=modules.ui.wrap_gradio_call(refresh_available_extensions_for_tags, extra_outputs=[gr.update()]),
- inputs=[hide_tags, sort_column],
+ inputs=[hide_tags, sort_column, search_extensions_text],
outputs=[available_extensions_table, install_result]
)
sort_column.change(
fn=modules.ui.wrap_gradio_call(refresh_available_extensions_for_tags, extra_outputs=[gr.update()]),
- inputs=[hide_tags, sort_column],
+ inputs=[hide_tags, sort_column, search_extensions_text],
outputs=[available_extensions_table, install_result]
)
--
cgit v1.2.3
From af2db25c84c9a226ab34959e868fc18740418b4b Mon Sep 17 00:00:00 2001
From: AUTOMATIC <16777216c@gmail.com>
Date: Tue, 21 Mar 2023 08:49:08 +0300
Subject: enable queue by default more stylistic changes
---
modules/ui_extensions.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'modules/ui_extensions.py')
diff --git a/modules/ui_extensions.py b/modules/ui_extensions.py
index df75a925..50173e68 100644
--- a/modules/ui_extensions.py
+++ b/modules/ui_extensions.py
@@ -244,7 +244,7 @@ def refresh_available_extensions_from_data(hide_tags, sort_column):
hidden += 1
continue
- install_code = f""""""
+ install_code = f""""""
tags_text = ", ".join([f"{x}" for x in extension_tags])
--
cgit v1.2.3