mirror of
https://github.com/bec-project/bec_widgets.git
synced 2026-03-04 16:02:51 +01:00
fix(advanced_dock_area): replace sanitize_namespace with slugify
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
from typing import Callable, Literal, Mapping, Sequence
|
||||
from typing import Literal, Mapping, Sequence
|
||||
|
||||
import slugify
|
||||
|
||||
from bec_lib import bec_logger
|
||||
from qtpy.QtCore import QTimer, Signal
|
||||
@@ -21,7 +23,6 @@ from bec_widgets import BECWidget, SafeProperty, SafeSlot
|
||||
from bec_widgets.cli.rpc.rpc_widget_handler import widget_handler
|
||||
from bec_widgets.utils import BECDispatcher
|
||||
from bec_widgets.utils.colors import apply_theme
|
||||
from bec_widgets.utils.name_utils import sanitize_namespace
|
||||
from bec_widgets.utils.toolbars.actions import (
|
||||
ExpandableMenuAction,
|
||||
MaterialIconAction,
|
||||
@@ -81,6 +82,7 @@ from bec_widgets.widgets.services.bec_queue.bec_queue import BECQueue
|
||||
from bec_widgets.widgets.services.bec_status_box.bec_status_box import BECStatusBox
|
||||
from bec_widgets.widgets.utility.logpanel import LogPanel
|
||||
from bec_widgets.widgets.utility.visual.dark_mode_button.dark_mode_button import DarkModeButton
|
||||
from tests.unit_tests.test_modular_toolbar import separator_action
|
||||
|
||||
logger = bec_logger.logger
|
||||
|
||||
@@ -130,7 +132,7 @@ class AdvancedDockArea(DockAreaWidget):
|
||||
self._profile_namespace_hint = profile_namespace
|
||||
self._profile_namespace_auto = auto_profile_namespace
|
||||
self._profile_namespace_resolved: str | None | object = _PROFILE_NAMESPACE_UNSET
|
||||
self._instance_id = sanitize_namespace(instance_id) if instance_id else None
|
||||
self._instance_id = slugify.slugify(instance_id, separator="_") if instance_id else None
|
||||
self._auto_save_upon_exit = auto_save_upon_exit
|
||||
self._profile_management_enabled = enable_profile_management
|
||||
self._restore_initial_profile = restore_initial_profile
|
||||
@@ -558,7 +560,7 @@ class AdvancedDockArea(DockAreaWidget):
|
||||
if not candidate:
|
||||
candidate = self.__class__.__name__
|
||||
|
||||
resolved = sanitize_namespace(candidate) if candidate else None
|
||||
resolved = slugify.slugify(candidate, separator="_") if candidate else None
|
||||
if not resolved:
|
||||
resolved = "general"
|
||||
self._profile_namespace_resolved = resolved # type: ignore[assignment]
|
||||
|
||||
@@ -10,12 +10,12 @@ Policy:
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
from functools import lru_cache
|
||||
from pathlib import Path
|
||||
from typing import Literal
|
||||
|
||||
import slugify
|
||||
from bec_lib import bec_logger
|
||||
from bec_lib.client import BECClient
|
||||
from bec_lib.plugin_helper import plugin_package_name, plugin_repo_path
|
||||
@@ -137,7 +137,7 @@ def _profiles_dir(segment: str, namespace: str | None) -> str:
|
||||
str: Absolute directory path for the requested segment/namespace pair.
|
||||
"""
|
||||
base = os.path.join(_settings_profiles_root(), segment)
|
||||
ns = sanitize_namespace(namespace)
|
||||
ns = slugify.slugify(namespace, separator="_") if namespace else None
|
||||
path = os.path.join(base, ns) if ns else base
|
||||
os.makedirs(path, exist_ok=True)
|
||||
return path
|
||||
@@ -154,7 +154,7 @@ def _user_path_candidates(name: str, namespace: str | None) -> list[str]:
|
||||
Returns:
|
||||
list[str]: Ordered list of candidate user profile paths (.ini files).
|
||||
"""
|
||||
ns = sanitize_namespace(namespace)
|
||||
ns = slugify.slugify(namespace, separator="_") if namespace else None
|
||||
primary = os.path.join(_profiles_dir("user", ns), f"{name}.ini")
|
||||
if not ns:
|
||||
return [primary]
|
||||
@@ -173,7 +173,7 @@ def _default_path_candidates(name: str, namespace: str | None) -> list[str]:
|
||||
Returns:
|
||||
list[str]: Ordered list of candidate default profile paths (.ini files).
|
||||
"""
|
||||
ns = sanitize_namespace(namespace)
|
||||
ns = slugify.slugify(namespace, separator="_") if namespace else None
|
||||
primary = os.path.join(_profiles_dir("default", ns), f"{name}.ini")
|
||||
if not ns:
|
||||
return [primary]
|
||||
@@ -452,7 +452,7 @@ def list_profiles(namespace: str | None = None) -> list[str]:
|
||||
Returns:
|
||||
list[str]: Sorted unique profile names.
|
||||
"""
|
||||
ns = sanitize_namespace(namespace)
|
||||
ns = slugify.slugify(namespace, separator="_") if namespace else None
|
||||
|
||||
def _collect_from(directory: str) -> set[str]:
|
||||
if not os.path.isdir(directory):
|
||||
@@ -553,11 +553,11 @@ def _last_profile_key(namespace: str | None, instance: str | None = None) -> str
|
||||
Returns:
|
||||
str: Scoped key string.
|
||||
"""
|
||||
ns = sanitize_namespace(namespace)
|
||||
ns = slugify.slugify(namespace, separator="_") if namespace else None
|
||||
key = SETTINGS_KEYS["last_profile"]
|
||||
if ns:
|
||||
key = f"{key}/{ns}"
|
||||
inst = sanitize_namespace(instance) if instance else ""
|
||||
inst = slugify.slugify(instance, separator="_") if instance else ""
|
||||
if inst:
|
||||
key = f"{key}@{inst}"
|
||||
return key
|
||||
|
||||
Reference in New Issue
Block a user