* feat: multi-source model discovery (HF default, legacy cache, LM Studio) * Fix multi-source model discovery bugs - Fix lmstudio_model_dirs: add ~/.lmstudio/models as default path, remove dead sys.platform branch, add dedup via seen set - Fix _setup_cache_env: preserve legacy HF cache env vars when the legacy hub directory exists and is non-empty - Fix _scan_lmstudio_dir: use absolute path for id field so is_local_path() returns True - Remove LM Studio dirs from allowed_roots (scanned unconditionally) - Replace bare except passes with logger.warning in legacy cache blocks - Fix delete_cached_model to search both default and legacy HF caches - Make lmstudio_dirs non-optional in TS interface (matches Python schema) - Exclude lmstudio source from trainable model filter - Remove unused import sys * Scan HF default cache alongside legacy and active caches When _setup_cache_env overrides HF_HUB_CACHE to the legacy Unsloth path, the standard HF default cache (~/.cache/huggingface/hub) was never scanned, hiding models downloaded before Unsloth Studio was installed. Add hf_default_cache_dir() and _all_hf_cache_scans() helper that deduplicates and scans all three HF cache locations (active, legacy, default). Used in list_local_models, list_cached_gguf, list_cached_models, and delete_cached_model. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: Daniel Han <danielhanchen@gmail.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
69 lines
1.6 KiB
Python
69 lines
1.6 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-only
|
|
# Copyright 2026-present the Unsloth AI Inc. team. All rights reserved. See /studio/LICENSE.AGPL-3.0
|
|
|
|
"""
|
|
Path utilities for model and dataset handling
|
|
"""
|
|
|
|
from .path_utils import normalize_path, is_local_path, is_model_cached, get_cache_path
|
|
from .storage_roots import (
|
|
studio_root,
|
|
assets_root,
|
|
datasets_root,
|
|
dataset_uploads_root,
|
|
recipe_datasets_root,
|
|
outputs_root,
|
|
exports_root,
|
|
auth_root,
|
|
auth_db_path,
|
|
studio_db_path,
|
|
tmp_root,
|
|
seed_uploads_root,
|
|
unstructured_seed_cache_root,
|
|
unstructured_uploads_root,
|
|
oxc_validator_tmp_root,
|
|
tensorboard_root,
|
|
legacy_hf_cache_dir,
|
|
hf_default_cache_dir,
|
|
lmstudio_model_dirs,
|
|
ensure_dir,
|
|
ensure_studio_directories,
|
|
resolve_under_root,
|
|
resolve_output_dir,
|
|
resolve_export_dir,
|
|
resolve_tensorboard_dir,
|
|
resolve_dataset_path,
|
|
)
|
|
|
|
__all__ = [
|
|
"normalize_path",
|
|
"is_local_path",
|
|
"is_model_cached",
|
|
"get_cache_path",
|
|
"studio_root",
|
|
"assets_root",
|
|
"datasets_root",
|
|
"dataset_uploads_root",
|
|
"recipe_datasets_root",
|
|
"outputs_root",
|
|
"exports_root",
|
|
"auth_root",
|
|
"auth_db_path",
|
|
"studio_db_path",
|
|
"tmp_root",
|
|
"seed_uploads_root",
|
|
"unstructured_seed_cache_root",
|
|
"unstructured_uploads_root",
|
|
"oxc_validator_tmp_root",
|
|
"tensorboard_root",
|
|
"legacy_hf_cache_dir",
|
|
"hf_default_cache_dir",
|
|
"lmstudio_model_dirs",
|
|
"ensure_dir",
|
|
"ensure_studio_directories",
|
|
"resolve_under_root",
|
|
"resolve_output_dir",
|
|
"resolve_export_dir",
|
|
"resolve_tensorboard_dir",
|
|
"resolve_dataset_path",
|
|
]
|