An incompatible library version disables the extension. (#447)

pull/450/head
Adi Eyal 2023-05-24 08:41:20 +02:00 committed by GitHub
parent 594966bdc9
commit a4877f2397
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 39 additions and 7 deletions

View File

@ -1,3 +1,4 @@
- 2.11.6 Disabling the extension if the correct version of dynamicprompts is not installed
- 2.11.5 Added kwargs to FrozenPromptGenerator to fix one of the unexpected keyword argument 'seeds' errors
- 2.11.4 Fixed type error in install.py for older versions of python
- 2.11.3 Added check to ensure that the correct version of dynamicprompts is installed. If not it outputs instructions for manual installation.

View File

@ -62,21 +62,34 @@ def check_versions() -> None:
launch.run_pip(f"install {requirement}", f"{requirement}")
def check_correct_dynamicprompts_installed():
def get_update_command() -> str:
requirements = get_requirements()
dynamicprompts_requirement = [
r for r in requirements if r.startswith("dynamicprompts")
][0]
return f"{sys.executable} -m pip install '{dynamicprompts_requirement}'"
def check_correct_dynamicprompts_installed() -> bool:
try:
import dynamicprompts
dynamicprompts_requirement_version = get_dynamic_prompts_version()
if dynamicprompts_requirement_version:
if dynamicprompts.__version__ != dynamicprompts_requirement_version:
if dynamicprompts.__version__ == dynamicprompts_requirement_version:
return True
else:
update_command = get_update_command()
print(
f"""*** WARNING: Something went wrong when updating to the latest dynamicprompts version. Please install it manually by running the following command:
{sys.executable} -m pip install dynamicprompts=={dynamicprompts_requirement_version}
{update_command}
""",
)
except Exception as e:
logger.exception(e)
return False
if __name__ == "__main__":
check_versions()

View File

@ -1 +1 @@
__version__ = "2.11.5"
__version__ = "2.11.6"

View File

@ -16,7 +16,7 @@ from modules import devices
from modules.processing import fix_seed
from modules.shared import opts
from install import check_correct_dynamicprompts_installed
from install import check_correct_dynamicprompts_installed, get_update_command
from sd_dynamic_prompts import __version__, callbacks
from sd_dynamic_prompts.element_ids import make_element_id
from sd_dynamic_prompts.generator_builder import GeneratorBuilder
@ -108,6 +108,9 @@ class Script(scripts.Script):
return scripts.AlwaysVisible
def ui(self, is_img2img):
correct_lib_version = check_correct_dynamicprompts_installed()
update_command = get_update_command()
html_path = base_dir / "helptext.html"
html = html_path.open().read()
html = Template(html).substitute(
@ -123,11 +126,17 @@ class Script(scripts.Script):
with gr.Accordion("Dynamic Prompts", open=False):
is_enabled = gr.Checkbox(
label="Dynamic Prompts enabled",
value=True,
value=correct_lib_version,
interactive=correct_lib_version,
elem_id=make_element_id("dynamic-prompts-enabled"),
)
with gr.Group():
if not correct_lib_version:
gr.HTML(
f"""<span class="warning sddp-warning">Dynamic Prompts is not installed correctly</span>. Please reinstall the dynamic prompts library by running the following command: <span class="sddp-info">{update_command}</span>""",
)
with gr.Group(visible=correct_lib_version):
is_combinatorial = gr.Checkbox(
label="Combinatorial generation",
value=False,

View File

@ -47,10 +47,19 @@
color: #50a080;
}
.sddp-warning {
color: red !important;
}
.sddp-info {
color: rgb(121, 240, 10) !important;
}
.tree-leaf { position: relative; }
.tree-leaf .tree-child-leaves { display: block; margin-left: 15px; }
.tree-leaf .hidden { display: none; }
.tree-leaf .tree-expando { background: #ddd; border-radius: 3px; cursor: pointer; float: left; height: 10px; line-height: 10px; position: relative; text-align: center; top: 5px; width: 10px; }
.tree-leaf .hidden { visibility: hidden; }
.tree-leaf .tree-expando:hover { background: #aaa; }
.tree-leaf .tree-leaf-text { cursor: pointer; float: left; margin-left: 5px; }