Merge pull request #10820 from akx/report-error
Add & use modules.errors.print_error
This commit is contained in:
commit
d9bd7ada76
@ -1,9 +1,8 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
from basicsr.utils.download_util import load_file_from_url
|
from basicsr.utils.download_util import load_file_from_url
|
||||||
|
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.upscaler import Upscaler, UpscalerData
|
from modules.upscaler import Upscaler, UpscalerData
|
||||||
from ldsr_model_arch import LDSR
|
from ldsr_model_arch import LDSR
|
||||||
from modules import shared, script_callbacks
|
from modules import shared, script_callbacks
|
||||||
@ -51,10 +50,8 @@ class UpscalerLDSR(Upscaler):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
return LDSR(model, yaml)
|
return LDSR(model, yaml)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Error importing LDSR:", file=sys.stderr)
|
print_error("Error importing LDSR", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def do_upscale(self, img, path):
|
def do_upscale(self, img, path):
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import os.path
|
import os.path
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
|
||||||
|
|
||||||
import PIL.Image
|
import PIL.Image
|
||||||
import numpy as np
|
import numpy as np
|
||||||
@ -12,6 +11,8 @@ from basicsr.utils.download_util import load_file_from_url
|
|||||||
import modules.upscaler
|
import modules.upscaler
|
||||||
from modules import devices, modelloader, script_callbacks
|
from modules import devices, modelloader, script_callbacks
|
||||||
from scunet_model_arch import SCUNet as net
|
from scunet_model_arch import SCUNet as net
|
||||||
|
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.shared import opts
|
from modules.shared import opts
|
||||||
|
|
||||||
|
|
||||||
@ -38,8 +39,7 @@ class UpscalerScuNET(modules.upscaler.Upscaler):
|
|||||||
scaler_data = modules.upscaler.UpscalerData(name, file, self, 4)
|
scaler_data = modules.upscaler.UpscalerData(name, file, self, 4)
|
||||||
scalers.append(scaler_data)
|
scalers.append(scaler_data)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error loading ScuNET model: {file}", file=sys.stderr)
|
print_error(f"Error loading ScuNET model: {file}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
if add_model2:
|
if add_model2:
|
||||||
scaler_data2 = modules.upscaler.UpscalerData(self.model_name2, self.model_url2, self)
|
scaler_data2 = modules.upscaler.UpscalerData(self.model_name2, self.model_url2, self)
|
||||||
scalers.append(scaler_data2)
|
scalers.append(scaler_data2)
|
||||||
|
@ -16,6 +16,7 @@ from secrets import compare_digest
|
|||||||
import modules.shared as shared
|
import modules.shared as shared
|
||||||
from modules import sd_samplers, deepbooru, sd_hijack, images, scripts, ui, postprocessing
|
from modules import sd_samplers, deepbooru, sd_hijack, images, scripts, ui, postprocessing
|
||||||
from modules.api import models
|
from modules.api import models
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.shared import opts
|
from modules.shared import opts
|
||||||
from modules.processing import StableDiffusionProcessingTxt2Img, StableDiffusionProcessingImg2Img, process_images
|
from modules.processing import StableDiffusionProcessingTxt2Img, StableDiffusionProcessingImg2Img, process_images
|
||||||
from modules.textual_inversion.textual_inversion import create_embedding, train_embedding
|
from modules.textual_inversion.textual_inversion import create_embedding, train_embedding
|
||||||
@ -109,7 +110,6 @@ def api_middleware(app: FastAPI):
|
|||||||
from rich.console import Console
|
from rich.console import Console
|
||||||
console = Console()
|
console = Console()
|
||||||
except Exception:
|
except Exception:
|
||||||
import traceback
|
|
||||||
rich_available = False
|
rich_available = False
|
||||||
|
|
||||||
@app.middleware("http")
|
@app.middleware("http")
|
||||||
@ -140,11 +140,12 @@ def api_middleware(app: FastAPI):
|
|||||||
"errors": str(e),
|
"errors": str(e),
|
||||||
}
|
}
|
||||||
if not isinstance(e, HTTPException): # do not print backtrace on known httpexceptions
|
if not isinstance(e, HTTPException): # do not print backtrace on known httpexceptions
|
||||||
print(f"API error: {request.method}: {request.url} {err}")
|
message = f"API error: {request.method}: {request.url} {err}"
|
||||||
if rich_available:
|
if rich_available:
|
||||||
|
print(message)
|
||||||
console.print_exception(show_locals=True, max_frames=2, extra_lines=1, suppress=[anyio, starlette], word_wrap=False, width=min([console.width, 200]))
|
console.print_exception(show_locals=True, max_frames=2, extra_lines=1, suppress=[anyio, starlette], word_wrap=False, width=min([console.width, 200]))
|
||||||
else:
|
else:
|
||||||
traceback.print_exc()
|
print_error(message, exc_info=True)
|
||||||
return JSONResponse(status_code=vars(e).get('status_code', 500), content=jsonable_encoder(err))
|
return JSONResponse(status_code=vars(e).get('status_code', 500), content=jsonable_encoder(err))
|
||||||
|
|
||||||
@app.middleware("http")
|
@app.middleware("http")
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
import html
|
import html
|
||||||
import sys
|
|
||||||
import threading
|
import threading
|
||||||
import traceback
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from modules import shared, progress
|
from modules import shared, progress
|
||||||
|
from modules.errors import print_error
|
||||||
|
|
||||||
queue_lock = threading.Lock()
|
queue_lock = threading.Lock()
|
||||||
|
|
||||||
@ -56,16 +55,14 @@ def wrap_gradio_call(func, extra_outputs=None, add_stats=False):
|
|||||||
try:
|
try:
|
||||||
res = list(func(*args, **kwargs))
|
res = list(func(*args, **kwargs))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# When printing out our debug argument list, do not print out more than a MB of text
|
# When printing out our debug argument list,
|
||||||
max_debug_str_len = 131072 # (1024*1024)/8
|
# do not print out more than a 100 KB of text
|
||||||
|
max_debug_str_len = 131072
|
||||||
print("Error completing request", file=sys.stderr)
|
message = "Error completing request"
|
||||||
argStr = f"Arguments: {args} {kwargs}"
|
arg_str = f"Arguments: {args} {kwargs}"[:max_debug_str_len]
|
||||||
print(argStr[:max_debug_str_len], file=sys.stderr)
|
if len(arg_str) > max_debug_str_len:
|
||||||
if len(argStr) > max_debug_str_len:
|
arg_str += f" (Argument list truncated at {max_debug_str_len}/{len(arg_str)} characters)"
|
||||||
print(f"(Argument list truncated at {max_debug_str_len}/{len(argStr)} characters)", file=sys.stderr)
|
print_error(f"{message}\n{arg_str}", exc_info=True)
|
||||||
|
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
shared.state.job = ""
|
shared.state.job = ""
|
||||||
shared.state.job_count = 0
|
shared.state.job_count = 0
|
||||||
@ -108,4 +105,3 @@ def wrap_gradio_call(func, extra_outputs=None, add_stats=False):
|
|||||||
return tuple(res)
|
return tuple(res)
|
||||||
|
|
||||||
return f
|
return f
|
||||||
|
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
import cv2
|
import cv2
|
||||||
import torch
|
import torch
|
||||||
@ -8,6 +6,7 @@ import torch
|
|||||||
import modules.face_restoration
|
import modules.face_restoration
|
||||||
import modules.shared
|
import modules.shared
|
||||||
from modules import shared, devices, modelloader
|
from modules import shared, devices, modelloader
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.paths import models_path
|
from modules.paths import models_path
|
||||||
|
|
||||||
# codeformer people made a choice to include modified basicsr library to their project which makes
|
# codeformer people made a choice to include modified basicsr library to their project which makes
|
||||||
@ -105,8 +104,8 @@ def setup_model(dirname):
|
|||||||
restored_face = tensor2img(output, rgb2bgr=True, min_max=(-1, 1))
|
restored_face = tensor2img(output, rgb2bgr=True, min_max=(-1, 1))
|
||||||
del output
|
del output
|
||||||
torch.cuda.empty_cache()
|
torch.cuda.empty_cache()
|
||||||
except Exception as error:
|
except Exception:
|
||||||
print(f'\tFailed inference for CodeFormer: {error}', file=sys.stderr)
|
print_error('Failed inference for CodeFormer', exc_info=True)
|
||||||
restored_face = tensor2img(cropped_face_t, rgb2bgr=True, min_max=(-1, 1))
|
restored_face = tensor2img(cropped_face_t, rgb2bgr=True, min_max=(-1, 1))
|
||||||
|
|
||||||
restored_face = restored_face.astype('uint8')
|
restored_face = restored_face.astype('uint8')
|
||||||
@ -135,7 +134,6 @@ def setup_model(dirname):
|
|||||||
shared.face_restorers.append(codeformer)
|
shared.face_restorers.append(codeformer)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Error setting up CodeFormer:", file=sys.stderr)
|
print_error("Error setting up CodeFormer", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
# sys.path = stored_sys_path
|
# sys.path = stored_sys_path
|
||||||
|
@ -3,8 +3,6 @@ Supports saving and restoring webui and extensions from a known working set of c
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
import json
|
import json
|
||||||
import time
|
import time
|
||||||
import tqdm
|
import tqdm
|
||||||
@ -14,6 +12,7 @@ from collections import OrderedDict
|
|||||||
import git
|
import git
|
||||||
|
|
||||||
from modules import shared, extensions
|
from modules import shared, extensions
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.paths_internal import script_path, config_states_dir
|
from modules.paths_internal import script_path, config_states_dir
|
||||||
|
|
||||||
|
|
||||||
@ -53,8 +52,7 @@ def get_webui_config():
|
|||||||
if os.path.exists(os.path.join(script_path, ".git")):
|
if os.path.exists(os.path.join(script_path, ".git")):
|
||||||
webui_repo = git.Repo(script_path)
|
webui_repo = git.Repo(script_path)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error reading webui git info from {script_path}:", file=sys.stderr)
|
print_error(f"Error reading webui git info from {script_path}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
webui_remote = None
|
webui_remote = None
|
||||||
webui_commit_hash = None
|
webui_commit_hash = None
|
||||||
@ -134,8 +132,7 @@ def restore_webui_config(config):
|
|||||||
if os.path.exists(os.path.join(script_path, ".git")):
|
if os.path.exists(os.path.join(script_path, ".git")):
|
||||||
webui_repo = git.Repo(script_path)
|
webui_repo = git.Repo(script_path)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error reading webui git info from {script_path}:", file=sys.stderr)
|
print_error(f"Error reading webui git info from {script_path}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
return
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -143,8 +140,7 @@ def restore_webui_config(config):
|
|||||||
webui_repo.git.reset(webui_commit_hash, hard=True)
|
webui_repo.git.reset(webui_commit_hash, hard=True)
|
||||||
print(f"* Restored webui to commit {webui_commit_hash}.")
|
print(f"* Restored webui to commit {webui_commit_hash}.")
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error restoring webui to commit {webui_commit_hash}:", file=sys.stderr)
|
print_error(f"Error restoring webui to commit{webui_commit_hash}")
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
|
|
||||||
def restore_extension_config(config):
|
def restore_extension_config(config):
|
||||||
|
@ -1,7 +1,23 @@
|
|||||||
import sys
|
import sys
|
||||||
|
import textwrap
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
|
|
||||||
|
def print_error(
|
||||||
|
message: str,
|
||||||
|
*,
|
||||||
|
exc_info: bool = False,
|
||||||
|
) -> None:
|
||||||
|
"""
|
||||||
|
Print an error message to stderr, with optional traceback.
|
||||||
|
"""
|
||||||
|
for line in message.splitlines():
|
||||||
|
print("***", line, file=sys.stderr)
|
||||||
|
if exc_info:
|
||||||
|
print(textwrap.indent(traceback.format_exc(), " "), file=sys.stderr)
|
||||||
|
print("---")
|
||||||
|
|
||||||
|
|
||||||
def print_error_explanation(message):
|
def print_error_explanation(message):
|
||||||
lines = message.strip().split("\n")
|
lines = message.strip().split("\n")
|
||||||
max_len = max([len(x) for x in lines])
|
max_len = max([len(x) for x in lines])
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import threading
|
import threading
|
||||||
import traceback
|
|
||||||
|
|
||||||
from modules import shared
|
from modules import shared
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.gitpython_hack import Repo
|
from modules.gitpython_hack import Repo
|
||||||
from modules.paths_internal import extensions_dir, extensions_builtin_dir, script_path # noqa: F401
|
from modules.paths_internal import extensions_dir, extensions_builtin_dir, script_path # noqa: F401
|
||||||
|
|
||||||
@ -55,8 +54,7 @@ class Extension:
|
|||||||
if os.path.exists(os.path.join(self.path, ".git")):
|
if os.path.exists(os.path.join(self.path, ".git")):
|
||||||
repo = Repo(self.path)
|
repo = Repo(self.path)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error reading github repository info from {self.path}:", file=sys.stderr)
|
print_error(f"Error reading github repository info from {self.path}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
if repo is None or repo.bare:
|
if repo is None or repo.bare:
|
||||||
self.remote = None
|
self.remote = None
|
||||||
@ -71,8 +69,8 @@ class Extension:
|
|||||||
self.commit_hash = commit.hexsha
|
self.commit_hash = commit.hexsha
|
||||||
self.version = self.commit_hash[:8]
|
self.version = self.commit_hash[:8]
|
||||||
|
|
||||||
except Exception as ex:
|
except Exception:
|
||||||
print(f"Failed reading extension data from Git repository ({self.name}): {ex}", file=sys.stderr)
|
print_error(f"Failed reading extension data from Git repository ({self.name})", exc_info=True)
|
||||||
self.remote = None
|
self.remote = None
|
||||||
|
|
||||||
self.have_info_from_repo = True
|
self.have_info_from_repo = True
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
import facexlib
|
import facexlib
|
||||||
import gfpgan
|
import gfpgan
|
||||||
|
|
||||||
import modules.face_restoration
|
import modules.face_restoration
|
||||||
from modules import paths, shared, devices, modelloader
|
from modules import paths, shared, devices, modelloader
|
||||||
|
from modules.errors import print_error
|
||||||
|
|
||||||
model_dir = "GFPGAN"
|
model_dir = "GFPGAN"
|
||||||
user_path = None
|
user_path = None
|
||||||
@ -112,5 +111,4 @@ def setup_model(dirname):
|
|||||||
|
|
||||||
shared.face_restorers.append(FaceRestorerGFPGAN())
|
shared.face_restorers.append(FaceRestorerGFPGAN())
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Error setting up GFPGAN:", file=sys.stderr)
|
print_error("Error setting up GFPGAN", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
@ -2,8 +2,6 @@ import datetime
|
|||||||
import glob
|
import glob
|
||||||
import html
|
import html
|
||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
import inspect
|
import inspect
|
||||||
|
|
||||||
import modules.textual_inversion.dataset
|
import modules.textual_inversion.dataset
|
||||||
@ -12,6 +10,7 @@ import tqdm
|
|||||||
from einops import rearrange, repeat
|
from einops import rearrange, repeat
|
||||||
from ldm.util import default
|
from ldm.util import default
|
||||||
from modules import devices, processing, sd_models, shared, sd_samplers, hashes, sd_hijack_checkpoint
|
from modules import devices, processing, sd_models, shared, sd_samplers, hashes, sd_hijack_checkpoint
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.textual_inversion import textual_inversion, logging
|
from modules.textual_inversion import textual_inversion, logging
|
||||||
from modules.textual_inversion.learn_schedule import LearnRateScheduler
|
from modules.textual_inversion.learn_schedule import LearnRateScheduler
|
||||||
from torch import einsum
|
from torch import einsum
|
||||||
@ -325,17 +324,14 @@ def load_hypernetwork(name):
|
|||||||
if path is None:
|
if path is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
hypernetwork = Hypernetwork()
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
hypernetwork = Hypernetwork()
|
||||||
hypernetwork.load(path)
|
hypernetwork.load(path)
|
||||||
|
return hypernetwork
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error loading hypernetwork {path}", file=sys.stderr)
|
print_error(f"Error loading hypernetwork {path}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return hypernetwork
|
|
||||||
|
|
||||||
|
|
||||||
def load_hypernetworks(names, multipliers=None):
|
def load_hypernetworks(names, multipliers=None):
|
||||||
already_loaded = {}
|
already_loaded = {}
|
||||||
@ -770,7 +766,7 @@ Last saved image: {html.escape(last_saved_image)}<br/>
|
|||||||
</p>
|
</p>
|
||||||
"""
|
"""
|
||||||
except Exception:
|
except Exception:
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
print_error("Exception in training hypernetwork", exc_info=True)
|
||||||
finally:
|
finally:
|
||||||
pbar.leave = False
|
pbar.leave = False
|
||||||
pbar.close()
|
pbar.close()
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
import pytz
|
import pytz
|
||||||
import io
|
import io
|
||||||
@ -18,6 +16,7 @@ import json
|
|||||||
import hashlib
|
import hashlib
|
||||||
|
|
||||||
from modules import sd_samplers, shared, script_callbacks, errors
|
from modules import sd_samplers, shared, script_callbacks, errors
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.paths_internal import roboto_ttf_file
|
from modules.paths_internal import roboto_ttf_file
|
||||||
from modules.shared import opts
|
from modules.shared import opts
|
||||||
|
|
||||||
@ -464,8 +463,7 @@ class FilenameGenerator:
|
|||||||
replacement = fun(self, *pattern_args)
|
replacement = fun(self, *pattern_args)
|
||||||
except Exception:
|
except Exception:
|
||||||
replacement = None
|
replacement = None
|
||||||
print(f"Error adding [{pattern}] to filename", file=sys.stderr)
|
print_error(f"Error adding [{pattern}] to filename", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
if replacement == NOTHING_AND_SKIP_PREVIOUS_TEXT:
|
if replacement == NOTHING_AND_SKIP_PREVIOUS_TEXT:
|
||||||
continue
|
continue
|
||||||
@ -697,8 +695,7 @@ def read_info_from_image(image):
|
|||||||
Negative prompt: {json_info["uc"]}
|
Negative prompt: {json_info["uc"]}
|
||||||
Steps: {json_info["steps"]}, Sampler: {sampler}, CFG scale: {json_info["scale"]}, Seed: {json_info["seed"]}, Size: {image.width}x{image.height}, Clip skip: 2, ENSD: 31337"""
|
Steps: {json_info["steps"]}, Sampler: {sampler}, CFG scale: {json_info["scale"]}, Seed: {json_info["seed"]}, Size: {image.width}x{image.height}, Clip skip: 2, ENSD: 31337"""
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Error parsing NovelAI image generation parameters:", file=sys.stderr)
|
print_error("Error parsing NovelAI image generation parameters", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
return geninfo, items
|
return geninfo, items
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
import re
|
import re
|
||||||
@ -12,6 +11,7 @@ from torchvision import transforms
|
|||||||
from torchvision.transforms.functional import InterpolationMode
|
from torchvision.transforms.functional import InterpolationMode
|
||||||
|
|
||||||
from modules import devices, paths, shared, lowvram, modelloader, errors
|
from modules import devices, paths, shared, lowvram, modelloader, errors
|
||||||
|
from modules.errors import print_error
|
||||||
|
|
||||||
blip_image_eval_size = 384
|
blip_image_eval_size = 384
|
||||||
clip_model_name = 'ViT-L/14'
|
clip_model_name = 'ViT-L/14'
|
||||||
@ -216,8 +216,7 @@ class InterrogateModels:
|
|||||||
res += f", {match}"
|
res += f", {match}"
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Error interrogating", file=sys.stderr)
|
print_error("Error interrogating", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
res += "<error>"
|
res += "<error>"
|
||||||
|
|
||||||
self.unload()
|
self.unload()
|
||||||
|
@ -8,6 +8,7 @@ import json
|
|||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
|
|
||||||
from modules import cmd_args
|
from modules import cmd_args
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.paths_internal import script_path, extensions_dir
|
from modules.paths_internal import script_path, extensions_dir
|
||||||
|
|
||||||
args, _ = cmd_args.parser.parse_known_args()
|
args, _ = cmd_args.parser.parse_known_args()
|
||||||
@ -188,7 +189,7 @@ def run_extension_installer(extension_dir):
|
|||||||
|
|
||||||
print(run(f'"{python}" "{path_installer}"', errdesc=f"Error running install.py for extension {extension_dir}", custom_env=env))
|
print(run(f'"{python}" "{path_installer}"', errdesc=f"Error running install.py for extension {extension_dir}", custom_env=env))
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e, file=sys.stderr)
|
print_error(str(e))
|
||||||
|
|
||||||
|
|
||||||
def list_extensions(settings_file):
|
def list_extensions(settings_file):
|
||||||
@ -198,8 +199,8 @@ def list_extensions(settings_file):
|
|||||||
if os.path.isfile(settings_file):
|
if os.path.isfile(settings_file):
|
||||||
with open(settings_file, "r", encoding="utf8") as file:
|
with open(settings_file, "r", encoding="utf8") as file:
|
||||||
settings = json.load(file)
|
settings = json.load(file)
|
||||||
except Exception as e:
|
except Exception:
|
||||||
print(e, file=sys.stderr)
|
print_error("Could not load settings", exc_info=True)
|
||||||
|
|
||||||
disabled_extensions = set(settings.get('disabled_extensions', []))
|
disabled_extensions = set(settings.get('disabled_extensions', []))
|
||||||
disable_all_extensions = settings.get('disable_all_extensions', 'none')
|
disable_all_extensions = settings.get('disable_all_extensions', 'none')
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
|
from modules.errors import print_error
|
||||||
|
|
||||||
localizations = {}
|
localizations = {}
|
||||||
|
|
||||||
@ -31,7 +30,6 @@ def localization_js(current_localization_name: str) -> str:
|
|||||||
with open(fn, "r", encoding="utf8") as file:
|
with open(fn, "r", encoding="utf8") as file:
|
||||||
data = json.load(file)
|
data = json.load(file)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error loading localization from {fn}:", file=sys.stderr)
|
print_error(f"Error loading localization from {fn}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
return f"window.localization = {json.dumps(data)}"
|
return f"window.localization = {json.dumps(data)}"
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
import math
|
import math
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
@ -23,7 +24,6 @@ import modules.images as images
|
|||||||
import modules.styles
|
import modules.styles
|
||||||
import modules.sd_models as sd_models
|
import modules.sd_models as sd_models
|
||||||
import modules.sd_vae as sd_vae
|
import modules.sd_vae as sd_vae
|
||||||
import logging
|
|
||||||
from ldm.data.util import AddMiDaS
|
from ldm.data.util import AddMiDaS
|
||||||
from ldm.models.diffusion.ddpm import LatentDepth2ImageDiffusion
|
from ldm.models.diffusion.ddpm import LatentDepth2ImageDiffusion
|
||||||
|
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from basicsr.utils.download_util import load_file_from_url
|
from basicsr.utils.download_util import load_file_from_url
|
||||||
from realesrgan import RealESRGANer
|
from realesrgan import RealESRGANer
|
||||||
|
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.upscaler import Upscaler, UpscalerData
|
from modules.upscaler import Upscaler, UpscalerData
|
||||||
from modules.shared import cmd_opts, opts
|
from modules.shared import cmd_opts, opts
|
||||||
from modules import modelloader
|
from modules import modelloader
|
||||||
@ -36,8 +35,7 @@ class UpscalerRealESRGAN(Upscaler):
|
|||||||
self.scalers.append(scaler)
|
self.scalers.append(scaler)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Error importing Real-ESRGAN:", file=sys.stderr)
|
print_error("Error importing Real-ESRGAN", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
self.enable = False
|
self.enable = False
|
||||||
self.scalers = []
|
self.scalers = []
|
||||||
|
|
||||||
@ -76,9 +74,8 @@ class UpscalerRealESRGAN(Upscaler):
|
|||||||
info.local_data_path = load_file_from_url(url=info.data_path, model_dir=self.model_download_path, progress=True)
|
info.local_data_path = load_file_from_url(url=info.data_path, model_dir=self.model_download_path, progress=True)
|
||||||
|
|
||||||
return info
|
return info
|
||||||
except Exception as e:
|
except Exception:
|
||||||
print(f"Error making Real-ESRGAN models list: {e}", file=sys.stderr)
|
print_error("Error making Real-ESRGAN models list", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def load_models(self, _):
|
def load_models(self, _):
|
||||||
@ -135,5 +132,4 @@ def get_realesrgan_models(scaler):
|
|||||||
]
|
]
|
||||||
return models
|
return models
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Error making Real-ESRGAN models list:", file=sys.stderr)
|
print_error("Error making Real-ESRGAN models list", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
import pickle
|
import pickle
|
||||||
import collections
|
import collections
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
import numpy
|
import numpy
|
||||||
@ -11,6 +9,8 @@ import _codecs
|
|||||||
import zipfile
|
import zipfile
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
from modules.errors import print_error
|
||||||
|
|
||||||
# PyTorch 1.13 and later have _TypedStorage renamed to TypedStorage
|
# PyTorch 1.13 and later have _TypedStorage renamed to TypedStorage
|
||||||
TypedStorage = torch.storage.TypedStorage if hasattr(torch.storage, 'TypedStorage') else torch.storage._TypedStorage
|
TypedStorage = torch.storage.TypedStorage if hasattr(torch.storage, 'TypedStorage') else torch.storage._TypedStorage
|
||||||
|
|
||||||
@ -136,17 +136,20 @@ def load_with_extra(filename, extra_handler=None, *args, **kwargs):
|
|||||||
check_pt(filename, extra_handler)
|
check_pt(filename, extra_handler)
|
||||||
|
|
||||||
except pickle.UnpicklingError:
|
except pickle.UnpicklingError:
|
||||||
print(f"Error verifying pickled file from {filename}:", file=sys.stderr)
|
print_error(
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
f"Error verifying pickled file from {filename}\n"
|
||||||
print("-----> !!!! The file is most likely corrupted !!!! <-----", file=sys.stderr)
|
"-----> !!!! The file is most likely corrupted !!!! <-----\n"
|
||||||
print("You can skip this check with --disable-safe-unpickle commandline argument, but that is not going to help you.\n\n", file=sys.stderr)
|
"You can skip this check with --disable-safe-unpickle commandline argument, but that is not going to help you.\n\n",
|
||||||
|
exc_info=True,
|
||||||
|
)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error verifying pickled file from {filename}:", file=sys.stderr)
|
print_error(
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
f"Error verifying pickled file from {filename}\n"
|
||||||
print("\nThe file may be malicious, so the program is not going to read it.", file=sys.stderr)
|
f"The file may be malicious, so the program is not going to read it.\n"
|
||||||
print("You can skip this check with --disable-safe-unpickle commandline argument.\n\n", file=sys.stderr)
|
f"You can skip this check with --disable-safe-unpickle commandline argument.\n\n",
|
||||||
|
exc_info=True,
|
||||||
|
)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return unsafe_torch_load(filename, *args, **kwargs)
|
return unsafe_torch_load(filename, *args, **kwargs)
|
||||||
@ -190,4 +193,3 @@ with safe.Extra(handler):
|
|||||||
unsafe_torch_load = torch.load
|
unsafe_torch_load = torch.load
|
||||||
torch.load = load
|
torch.load = load
|
||||||
global_extra_handler = None
|
global_extra_handler = None
|
||||||
|
|
||||||
|
@ -1,16 +1,15 @@
|
|||||||
import sys
|
|
||||||
import traceback
|
|
||||||
from collections import namedtuple
|
|
||||||
import inspect
|
import inspect
|
||||||
|
from collections import namedtuple
|
||||||
from typing import Optional, Dict, Any
|
from typing import Optional, Dict, Any
|
||||||
|
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
from gradio import Blocks
|
from gradio import Blocks
|
||||||
|
|
||||||
|
from modules.errors import print_error
|
||||||
|
|
||||||
|
|
||||||
def report_exception(c, job):
|
def report_exception(c, job):
|
||||||
print(f"Error executing callback {job} for {c.script}", file=sys.stderr)
|
print_error(f"Error executing callback {job} for {c.script}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
|
|
||||||
class ImageSaveParams:
|
class ImageSaveParams:
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
import importlib.util
|
import importlib.util
|
||||||
|
|
||||||
|
from modules.errors import print_error
|
||||||
|
|
||||||
|
|
||||||
def load_module(path):
|
def load_module(path):
|
||||||
module_spec = importlib.util.spec_from_file_location(os.path.basename(path), path)
|
module_spec = importlib.util.spec_from_file_location(os.path.basename(path), path)
|
||||||
@ -27,5 +27,4 @@ def preload_extensions(extensions_dir, parser):
|
|||||||
module.preload(parser)
|
module.preload(parser)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error running preload() for {preload_script}", file=sys.stderr)
|
print_error(f"Error running preload() for {preload_script}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
import gradio as gr
|
import gradio as gr
|
||||||
|
|
||||||
from modules import shared, paths, script_callbacks, extensions, script_loading, scripts_postprocessing
|
from modules import shared, paths, script_callbacks, extensions, script_loading, scripts_postprocessing
|
||||||
|
from modules.errors import print_error
|
||||||
|
|
||||||
AlwaysVisible = object()
|
AlwaysVisible = object()
|
||||||
|
|
||||||
@ -264,8 +264,7 @@ def load_scripts():
|
|||||||
register_scripts_from_module(script_module)
|
register_scripts_from_module(script_module)
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error loading script: {scriptfile.filename}", file=sys.stderr)
|
print_error(f"Error loading script: {scriptfile.filename}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
sys.path = syspath
|
sys.path = syspath
|
||||||
@ -280,11 +279,9 @@ def load_scripts():
|
|||||||
|
|
||||||
def wrap_call(func, filename, funcname, *args, default=None, **kwargs):
|
def wrap_call(func, filename, funcname, *args, default=None, **kwargs):
|
||||||
try:
|
try:
|
||||||
res = func(*args, **kwargs)
|
return func(*args, **kwargs)
|
||||||
return res
|
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error calling: {filename}/{funcname}", file=sys.stderr)
|
print_error(f"Error calling: {filename}/{funcname}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
return default
|
return default
|
||||||
|
|
||||||
@ -450,8 +447,7 @@ class ScriptRunner:
|
|||||||
script_args = p.script_args[script.args_from:script.args_to]
|
script_args = p.script_args[script.args_from:script.args_to]
|
||||||
script.process(p, *script_args)
|
script.process(p, *script_args)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error running process: {script.filename}", file=sys.stderr)
|
print_error(f"Error running process: {script.filename}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
def before_process_batch(self, p, **kwargs):
|
def before_process_batch(self, p, **kwargs):
|
||||||
for script in self.alwayson_scripts:
|
for script in self.alwayson_scripts:
|
||||||
@ -459,8 +455,7 @@ class ScriptRunner:
|
|||||||
script_args = p.script_args[script.args_from:script.args_to]
|
script_args = p.script_args[script.args_from:script.args_to]
|
||||||
script.before_process_batch(p, *script_args, **kwargs)
|
script.before_process_batch(p, *script_args, **kwargs)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error running before_process_batch: {script.filename}", file=sys.stderr)
|
print_error(f"Error running before_process_batch: {script.filename}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
def process_batch(self, p, **kwargs):
|
def process_batch(self, p, **kwargs):
|
||||||
for script in self.alwayson_scripts:
|
for script in self.alwayson_scripts:
|
||||||
@ -468,8 +463,7 @@ class ScriptRunner:
|
|||||||
script_args = p.script_args[script.args_from:script.args_to]
|
script_args = p.script_args[script.args_from:script.args_to]
|
||||||
script.process_batch(p, *script_args, **kwargs)
|
script.process_batch(p, *script_args, **kwargs)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error running process_batch: {script.filename}", file=sys.stderr)
|
print_error(f"Error running process_batch: {script.filename}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
def postprocess(self, p, processed):
|
def postprocess(self, p, processed):
|
||||||
for script in self.alwayson_scripts:
|
for script in self.alwayson_scripts:
|
||||||
@ -477,8 +471,7 @@ class ScriptRunner:
|
|||||||
script_args = p.script_args[script.args_from:script.args_to]
|
script_args = p.script_args[script.args_from:script.args_to]
|
||||||
script.postprocess(p, processed, *script_args)
|
script.postprocess(p, processed, *script_args)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error running postprocess: {script.filename}", file=sys.stderr)
|
print_error(f"Error running postprocess: {script.filename}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
def postprocess_batch(self, p, images, **kwargs):
|
def postprocess_batch(self, p, images, **kwargs):
|
||||||
for script in self.alwayson_scripts:
|
for script in self.alwayson_scripts:
|
||||||
@ -486,8 +479,7 @@ class ScriptRunner:
|
|||||||
script_args = p.script_args[script.args_from:script.args_to]
|
script_args = p.script_args[script.args_from:script.args_to]
|
||||||
script.postprocess_batch(p, *script_args, images=images, **kwargs)
|
script.postprocess_batch(p, *script_args, images=images, **kwargs)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error running postprocess_batch: {script.filename}", file=sys.stderr)
|
print_error(f"Error running postprocess_batch: {script.filename}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
def postprocess_image(self, p, pp: PostprocessImageArgs):
|
def postprocess_image(self, p, pp: PostprocessImageArgs):
|
||||||
for script in self.alwayson_scripts:
|
for script in self.alwayson_scripts:
|
||||||
@ -495,24 +487,21 @@ class ScriptRunner:
|
|||||||
script_args = p.script_args[script.args_from:script.args_to]
|
script_args = p.script_args[script.args_from:script.args_to]
|
||||||
script.postprocess_image(p, pp, *script_args)
|
script.postprocess_image(p, pp, *script_args)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error running postprocess_batch: {script.filename}", file=sys.stderr)
|
print_error(f"Error running postprocess_image: {script.filename}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
def before_component(self, component, **kwargs):
|
def before_component(self, component, **kwargs):
|
||||||
for script in self.scripts:
|
for script in self.scripts:
|
||||||
try:
|
try:
|
||||||
script.before_component(component, **kwargs)
|
script.before_component(component, **kwargs)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error running before_component: {script.filename}", file=sys.stderr)
|
print_error(f"Error running before_component: {script.filename}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
def after_component(self, component, **kwargs):
|
def after_component(self, component, **kwargs):
|
||||||
for script in self.scripts:
|
for script in self.scripts:
|
||||||
try:
|
try:
|
||||||
script.after_component(component, **kwargs)
|
script.after_component(component, **kwargs)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error running after_component: {script.filename}", file=sys.stderr)
|
print_error(f"Error running after_component: {script.filename}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
def reload_sources(self, cache):
|
def reload_sources(self, cache):
|
||||||
for si, script in list(enumerate(self.scripts)):
|
for si, script in list(enumerate(self.scripts)):
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
import math
|
import math
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
import psutil
|
import psutil
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
@ -11,6 +9,7 @@ from ldm.util import default
|
|||||||
from einops import rearrange
|
from einops import rearrange
|
||||||
|
|
||||||
from modules import shared, errors, devices, sub_quadratic_attention
|
from modules import shared, errors, devices, sub_quadratic_attention
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.hypernetworks import hypernetwork
|
from modules.hypernetworks import hypernetwork
|
||||||
|
|
||||||
import ldm.modules.attention
|
import ldm.modules.attention
|
||||||
@ -140,8 +139,7 @@ if shared.cmd_opts.xformers or shared.cmd_opts.force_enable_xformers:
|
|||||||
import xformers.ops
|
import xformers.ops
|
||||||
shared.xformers_available = True
|
shared.xformers_available = True
|
||||||
except Exception:
|
except Exception:
|
||||||
print("Cannot import xformers", file=sys.stderr)
|
print_error("Cannot import xformers", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
|
|
||||||
def get_available_vram():
|
def get_available_vram():
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
import os
|
import os
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
import torch
|
import torch
|
||||||
@ -16,6 +14,7 @@ from torch.utils.tensorboard import SummaryWriter
|
|||||||
|
|
||||||
from modules import shared, devices, sd_hijack, processing, sd_models, images, sd_samplers, sd_hijack_checkpoint
|
from modules import shared, devices, sd_hijack, processing, sd_models, images, sd_samplers, sd_hijack_checkpoint
|
||||||
import modules.textual_inversion.dataset
|
import modules.textual_inversion.dataset
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.textual_inversion.learn_schedule import LearnRateScheduler
|
from modules.textual_inversion.learn_schedule import LearnRateScheduler
|
||||||
|
|
||||||
from modules.textual_inversion.image_embedding import embedding_to_b64, embedding_from_b64, insert_image_data_embed, extract_image_data_embed, caption_image_overlay
|
from modules.textual_inversion.image_embedding import embedding_to_b64, embedding_from_b64, insert_image_data_embed, extract_image_data_embed, caption_image_overlay
|
||||||
@ -207,8 +206,7 @@ class EmbeddingDatabase:
|
|||||||
|
|
||||||
self.load_from_file(fullfn, fn)
|
self.load_from_file(fullfn, fn)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error loading embedding {fn}:", file=sys.stderr)
|
print_error(f"Error loading embedding {fn}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
def load_textual_inversion_embeddings(self, force_reload=False):
|
def load_textual_inversion_embeddings(self, force_reload=False):
|
||||||
@ -632,8 +630,7 @@ Last saved image: {html.escape(last_saved_image)}<br/>
|
|||||||
filename = os.path.join(shared.cmd_opts.embeddings_dir, f'{embedding_name}.pt')
|
filename = os.path.join(shared.cmd_opts.embeddings_dir, f'{embedding_name}.pt')
|
||||||
save_embedding(embedding, optimizer, checkpoint, embedding_name, filename, remove_cached_checksum=True)
|
save_embedding(embedding, optimizer, checkpoint, embedding_name, filename, remove_cached_checksum=True)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
print_error("Error training embedding", exc_info=True)
|
||||||
pass
|
|
||||||
finally:
|
finally:
|
||||||
pbar.leave = False
|
pbar.leave = False
|
||||||
pbar.close()
|
pbar.close()
|
||||||
|
@ -2,7 +2,6 @@ import json
|
|||||||
import mimetypes
|
import mimetypes
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import traceback
|
|
||||||
from functools import reduce
|
from functools import reduce
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
@ -14,6 +13,7 @@ from PIL import Image, PngImagePlugin # noqa: F401
|
|||||||
from modules.call_queue import wrap_gradio_gpu_call, wrap_queued_call, wrap_gradio_call
|
from modules.call_queue import wrap_gradio_gpu_call, wrap_queued_call, wrap_gradio_call
|
||||||
|
|
||||||
from modules import sd_hijack, sd_models, localization, script_callbacks, ui_extensions, deepbooru, sd_vae, extra_networks, ui_common, ui_postprocessing, progress, ui_loadsave
|
from modules import sd_hijack, sd_models, localization, script_callbacks, ui_extensions, deepbooru, sd_vae, extra_networks, ui_common, ui_postprocessing, progress, ui_loadsave
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.ui_components import FormRow, FormGroup, ToolButton, FormHTML
|
from modules.ui_components import FormRow, FormGroup, ToolButton, FormHTML
|
||||||
from modules.paths import script_path, data_path
|
from modules.paths import script_path, data_path
|
||||||
|
|
||||||
@ -231,9 +231,8 @@ def connect_reuse_seed(seed: gr.Number, reuse_seed: gr.Button, generation_info:
|
|||||||
res = all_seeds[index if 0 <= index < len(all_seeds) else 0]
|
res = all_seeds[index if 0 <= index < len(all_seeds) else 0]
|
||||||
|
|
||||||
except json.decoder.JSONDecodeError:
|
except json.decoder.JSONDecodeError:
|
||||||
if gen_info_string != '':
|
if gen_info_string:
|
||||||
print("Error parsing JSON generation info:", file=sys.stderr)
|
print_error(f"Error parsing JSON generation info: {gen_info_string}")
|
||||||
print(gen_info_string, file=sys.stderr)
|
|
||||||
|
|
||||||
return [res, gr_show(False)]
|
return [res, gr_show(False)]
|
||||||
|
|
||||||
@ -1753,8 +1752,7 @@ def create_ui():
|
|||||||
try:
|
try:
|
||||||
results = modules.extras.run_modelmerger(*args)
|
results = modules.extras.run_modelmerger(*args)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Error loading/saving model file:", file=sys.stderr)
|
print_error("Error loading/saving model file", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
modules.sd_models.list_models() # to remove the potentially missing models from the list
|
modules.sd_models.list_models() # to remove the potentially missing models from the list
|
||||||
return [*[gr.Dropdown.update(choices=modules.sd_models.checkpoint_tiles()) for _ in range(4)], f"Error merging checkpoints: {e}"]
|
return [*[gr.Dropdown.update(choices=modules.sd_models.checkpoint_tiles()) for _ in range(4)], f"Error merging checkpoints: {e}"]
|
||||||
return results
|
return results
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
import json
|
import json
|
||||||
import os.path
|
import os.path
|
||||||
import sys
|
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import traceback
|
|
||||||
|
|
||||||
import git
|
import git
|
||||||
|
|
||||||
@ -14,6 +12,7 @@ import shutil
|
|||||||
import errno
|
import errno
|
||||||
|
|
||||||
from modules import extensions, shared, paths, config_states
|
from modules import extensions, shared, paths, config_states
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.paths_internal import config_states_dir
|
from modules.paths_internal import config_states_dir
|
||||||
from modules.call_queue import wrap_gradio_gpu_call
|
from modules.call_queue import wrap_gradio_gpu_call
|
||||||
|
|
||||||
@ -46,8 +45,7 @@ def apply_and_restart(disable_list, update_list, disable_all):
|
|||||||
try:
|
try:
|
||||||
ext.fetch_and_reset_hard()
|
ext.fetch_and_reset_hard()
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error getting updates for {ext.name}:", file=sys.stderr)
|
print_error(f"Error getting updates for {ext.name}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
shared.opts.disabled_extensions = disabled
|
shared.opts.disabled_extensions = disabled
|
||||||
shared.opts.disable_all_extensions = disable_all
|
shared.opts.disable_all_extensions = disable_all
|
||||||
@ -113,8 +111,7 @@ def check_updates(id_task, disable_list):
|
|||||||
if 'FETCH_HEAD' not in str(e):
|
if 'FETCH_HEAD' not in str(e):
|
||||||
raise
|
raise
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error checking updates for {ext.name}:", file=sys.stderr)
|
print_error(f"Error checking updates for {ext.name}", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
|
|
||||||
shared.state.nextjob()
|
shared.state.nextjob()
|
||||||
|
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
import copy
|
import copy
|
||||||
import random
|
import random
|
||||||
import sys
|
|
||||||
import traceback
|
|
||||||
import shlex
|
import shlex
|
||||||
|
|
||||||
import modules.scripts as scripts
|
import modules.scripts as scripts
|
||||||
import gradio as gr
|
import gradio as gr
|
||||||
|
|
||||||
from modules import sd_samplers
|
from modules import sd_samplers
|
||||||
|
from modules.errors import print_error
|
||||||
from modules.processing import Processed, process_images
|
from modules.processing import Processed, process_images
|
||||||
from modules.shared import state
|
from modules.shared import state
|
||||||
|
|
||||||
@ -136,8 +135,7 @@ class Script(scripts.Script):
|
|||||||
try:
|
try:
|
||||||
args = cmdargs(line)
|
args = cmdargs(line)
|
||||||
except Exception:
|
except Exception:
|
||||||
print(f"Error parsing line {line} as commandline:", file=sys.stderr)
|
print_error(f"Error parsing line {line} as commandline", exc_info=True)
|
||||||
print(traceback.format_exc(), file=sys.stderr)
|
|
||||||
args = {"prompt": line}
|
args = {"prompt": line}
|
||||||
else:
|
else:
|
||||||
args = {"prompt": line}
|
args = {"prompt": line}
|
||||||
|
Loading…
Reference in New Issue
Block a user