Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 60efbc4618 | |||
| a56190cdb1 |
@@ -22,7 +22,7 @@ jobs:
|
|||||||
- name: Install Ruff
|
- name: Install Ruff
|
||||||
run: pip install ruff==0.3.3
|
run: pip install ruff==0.3.3
|
||||||
- name: Run Ruff
|
- name: Run Ruff
|
||||||
run: ruff check .
|
run: ruff .
|
||||||
lint-js:
|
lint-js:
|
||||||
name: eslint
|
name: eslint
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
<div>
|
<div>
|
||||||
<a href="{api_docs}" target="_blank">API</a>
|
<a href="{api_docs}">API</a>
|
||||||
•
|
•
|
||||||
<a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui">GitHub</a>
|
<a href="https://github.com/AUTOMATIC1111/stable-diffusion-webui">GitHub</a>
|
||||||
•
|
•
|
||||||
|
|||||||
@@ -249,6 +249,8 @@ class Api:
|
|||||||
self.add_api_route("/sdapi/v1/server-kill", self.kill_webui, methods=["POST"])
|
self.add_api_route("/sdapi/v1/server-kill", self.kill_webui, methods=["POST"])
|
||||||
self.add_api_route("/sdapi/v1/server-restart", self.restart_webui, methods=["POST"])
|
self.add_api_route("/sdapi/v1/server-restart", self.restart_webui, methods=["POST"])
|
||||||
self.add_api_route("/sdapi/v1/server-stop", self.stop_webui, methods=["POST"])
|
self.add_api_route("/sdapi/v1/server-stop", self.stop_webui, methods=["POST"])
|
||||||
|
self.add_api_route("/sdapi/v1/server-reload-ui", self.reload_webui, methods=["POST"])
|
||||||
|
self.add_api_route("/sdapi/v1/server-reload-script-bodies", self.reload_script_bodies, methods=["POST"])
|
||||||
|
|
||||||
self.default_script_arg_txt2img = []
|
self.default_script_arg_txt2img = []
|
||||||
self.default_script_arg_img2img = []
|
self.default_script_arg_img2img = []
|
||||||
@@ -926,3 +928,10 @@ class Api:
|
|||||||
shared.state.server_command = "stop"
|
shared.state.server_command = "stop"
|
||||||
return Response("Stopping.")
|
return Response("Stopping.")
|
||||||
|
|
||||||
|
def reload_webui(self):
|
||||||
|
shared.state.request_restart()
|
||||||
|
return Response("Reloading.")
|
||||||
|
|
||||||
|
def reload_script_bodies(self):
|
||||||
|
scripts.reload_script_body_only()
|
||||||
|
return Response("Reload script bodies.")
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ def check_versions():
|
|||||||
|
|
||||||
def initialize():
|
def initialize():
|
||||||
from modules import initialize_util
|
from modules import initialize_util
|
||||||
initialize_util.allow_add_middleware_after_start()
|
|
||||||
initialize_util.fix_torch_version()
|
initialize_util.fix_torch_version()
|
||||||
initialize_util.fix_pytorch_lightning()
|
initialize_util.fix_pytorch_lightning()
|
||||||
initialize_util.fix_asyncio_event_loop_policy()
|
initialize_util.fix_asyncio_event_loop_policy()
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ import sys
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
from modules.timer import startup_timer
|
from modules.timer import startup_timer
|
||||||
from modules import patches
|
|
||||||
from functools import wraps
|
|
||||||
|
|
||||||
|
|
||||||
def gradio_server_name():
|
def gradio_server_name():
|
||||||
@@ -193,8 +191,11 @@ def configure_opts_onchange():
|
|||||||
|
|
||||||
def setup_middleware(app):
|
def setup_middleware(app):
|
||||||
from starlette.middleware.gzip import GZipMiddleware
|
from starlette.middleware.gzip import GZipMiddleware
|
||||||
|
|
||||||
|
app.middleware_stack = None # reset current middleware to allow modifying user provided list
|
||||||
app.add_middleware(GZipMiddleware, minimum_size=1000)
|
app.add_middleware(GZipMiddleware, minimum_size=1000)
|
||||||
configure_cors_middleware(app)
|
configure_cors_middleware(app)
|
||||||
|
app.build_middleware_stack() # rebuild middleware stack on-the-fly
|
||||||
|
|
||||||
|
|
||||||
def configure_cors_middleware(app):
|
def configure_cors_middleware(app):
|
||||||
@@ -212,38 +213,3 @@ def configure_cors_middleware(app):
|
|||||||
cors_options["allow_origin_regex"] = cmd_opts.cors_allow_origins_regex
|
cors_options["allow_origin_regex"] = cmd_opts.cors_allow_origins_regex
|
||||||
app.add_middleware(CORSMiddleware, **cors_options)
|
app.add_middleware(CORSMiddleware, **cors_options)
|
||||||
|
|
||||||
|
|
||||||
def allow_add_middleware_after_start():
|
|
||||||
from starlette.applications import Starlette
|
|
||||||
|
|
||||||
def add_middleware_wrapper(func):
|
|
||||||
"""Patch Starlette.add_middleware to allow for middleware to be added after the app has started
|
|
||||||
|
|
||||||
Starlette.add_middleware raises RuntimeError("Cannot add middleware after an application has started") if middleware_stack is not None.
|
|
||||||
We can force add new middleware by first setting middleware_stack to None, then adding the middleware.
|
|
||||||
When middleware_stack is None, it will rebuild the middleware_stack on the next request (Lazily build middleware stack).
|
|
||||||
|
|
||||||
If packages are updated in the future, things may break, so we have two ways to add middleware after the app has started:
|
|
||||||
the first way is to just set middleware_stack to None and then retry
|
|
||||||
the second manually insert the middleware into the user_middleware list without calling add_middleware
|
|
||||||
"""
|
|
||||||
|
|
||||||
@wraps(func)
|
|
||||||
def wrapper(self, *args, **kwargs):
|
|
||||||
res = None
|
|
||||||
try:
|
|
||||||
res = func(self, *args, **kwargs)
|
|
||||||
except RuntimeError as _:
|
|
||||||
try:
|
|
||||||
self.middleware_stack = None
|
|
||||||
res = func(self, *args, **kwargs)
|
|
||||||
except RuntimeError as e:
|
|
||||||
print(f'Warning: "{e}", Retrying...')
|
|
||||||
from starlette.middleware import Middleware
|
|
||||||
self.user_middleware.insert(0, Middleware(*args, **kwargs))
|
|
||||||
self.middleware_stack = None # ensure middleware_stack in the event of concurrent requests
|
|
||||||
return res
|
|
||||||
|
|
||||||
return wrapper
|
|
||||||
|
|
||||||
patches.patch(__name__, obj=Starlette, field="add_middleware", replacement=add_middleware_wrapper(Starlette.add_middleware))
|
|
||||||
|
|||||||
@@ -43,7 +43,9 @@ def check_python_version():
|
|||||||
supported_minors = [7, 8, 9, 10, 11]
|
supported_minors = [7, 8, 9, 10, 11]
|
||||||
|
|
||||||
if not (major == 3 and minor in supported_minors):
|
if not (major == 3 and minor in supported_minors):
|
||||||
errors.print_error_explanation(f"""
|
import modules.errors
|
||||||
|
|
||||||
|
modules.errors.print_error_explanation(f"""
|
||||||
INCOMPATIBLE PYTHON VERSION
|
INCOMPATIBLE PYTHON VERSION
|
||||||
|
|
||||||
This program is tested with 3.10.6 Python, but you have {major}.{minor}.{micro}.
|
This program is tested with 3.10.6 Python, but you have {major}.{minor}.{micro}.
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ def ui_reorder_categories():
|
|||||||
|
|
||||||
def callbacks_order_settings():
|
def callbacks_order_settings():
|
||||||
options = {
|
options = {
|
||||||
"callbacks_order_explanation": OptionHTML("""
|
"sd_vae_explanation": OptionHTML("""
|
||||||
For categories below, callbacks added to dropdowns happen before others, in order listed.
|
For categories below, callbacks added to dropdowns happen before others, in order listed.
|
||||||
"""),
|
"""),
|
||||||
|
|
||||||
|
|||||||
@@ -29,10 +29,6 @@ class ScriptPostprocessingCodeFormer(scripts_postprocessing.ScriptPostprocessing
|
|||||||
res = Image.fromarray(restored_img)
|
res = Image.fromarray(restored_img)
|
||||||
|
|
||||||
if codeformer_visibility < 1.0:
|
if codeformer_visibility < 1.0:
|
||||||
if pp.image.size != res.size:
|
|
||||||
res = res.resize(pp.image.size)
|
|
||||||
if pp.image.mode != res.mode:
|
|
||||||
res = res.convert(pp.image.mode)
|
|
||||||
res = Image.blend(pp.image, res, codeformer_visibility)
|
res = Image.blend(pp.image, res, codeformer_visibility)
|
||||||
|
|
||||||
pp.image = res
|
pp.image = res
|
||||||
|
|||||||
@@ -26,10 +26,6 @@ class ScriptPostprocessingGfpGan(scripts_postprocessing.ScriptPostprocessing):
|
|||||||
res = Image.fromarray(restored_img)
|
res = Image.fromarray(restored_img)
|
||||||
|
|
||||||
if gfpgan_visibility < 1.0:
|
if gfpgan_visibility < 1.0:
|
||||||
if pp.image.size != res.size:
|
|
||||||
res = res.resize(pp.image.size)
|
|
||||||
if pp.image.mode != res.mode:
|
|
||||||
res = res.convert(pp.image.mode)
|
|
||||||
res = Image.blend(pp.image, res, gfpgan_visibility)
|
res = Image.blend(pp.image, res, gfpgan_visibility)
|
||||||
|
|
||||||
pp.image = res
|
pp.image = res
|
||||||
|
|||||||
Reference in New Issue
Block a user