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')