From ddcad3cc51a17250ddf10030f42b98b1ae027b91 Mon Sep 17 00:00:00 2001 From: oobabooga <112222186+oobabooga@users.noreply.github.com> Date: Fri, 6 Mar 2026 00:57:32 -0300 Subject: [PATCH] Follow-up to e2548f69: add missing paths module, fix gallery extension --- extensions/gallery/script.py | 5 +++-- modules/paths.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 modules/paths.py diff --git a/extensions/gallery/script.py b/extensions/gallery/script.py index 8b242fb6..3633ae46 100644 --- a/extensions/gallery/script.py +++ b/extensions/gallery/script.py @@ -2,6 +2,7 @@ from pathlib import Path import gradio as gr +import modules.shared as shared from modules.html_generator import get_image_cache from modules.shared import gradio @@ -72,13 +73,13 @@ def generate_html(): global cards cards = [] # Iterate through files in image folder - for file in sorted(Path("user_data/characters").glob("*")): + for file in sorted((shared.user_data_dir / "characters").glob("*")): if file.suffix in [".json", ".yml", ".yaml"]: character = file.stem container_html = '
' image_html = "
" - for path in [Path(f"user_data/characters/{character}.{extension}") for extension in ['png', 'jpg', 'jpeg']]: + for path in [shared.user_data_dir / "characters" / f"{character}.{extension}" for extension in ['png', 'jpg', 'jpeg']]: if path.exists(): image_html = f'' break diff --git a/modules/paths.py b/modules/paths.py new file mode 100644 index 00000000..36fdc4f2 --- /dev/null +++ b/modules/paths.py @@ -0,0 +1,28 @@ +import sys +from pathlib import Path + + +def resolve_user_data_dir(): + """ + Resolve the user_data directory path. Order of precedence: + 1. --user-data-dir CLI flag (pre-parsed from sys.argv before argparse) + 2. Auto-detect: if ./user_data doesn't exist but ../user_data does, use ../user_data + 3. Default: 'user_data' + """ + script_dir = Path(__file__).resolve().parent.parent + + # Check sys.argv for --user-data-dir before argparse runs + for i, arg in enumerate(sys.argv): + if arg == '--user-data-dir' and i + 1 < len(sys.argv): + return Path(sys.argv[i + 1]) + elif arg.startswith('--user-data-dir='): + return Path(arg.split('=', 1)[1]) + + # Auto-detect: check if user_data exists locally vs one folder up + local_path = script_dir / 'user_data' + parent_path = script_dir.parent / 'user_data' + + if not local_path.exists() and parent_path.exists(): + return parent_path + + return Path('user_data')