gui.utils.path_setup

 1import sys
 2from pathlib import Path
 3
 4_FROZEN = getattr(sys, 'frozen', False)
 5
 6if _FROZEN:
 7    # Dentro de un bundle PyInstaller: sys._MEIPASS apunta a los recursos empaquetados
 8    PROJECT_ROOT = Path(sys.executable).parent.resolve()
 9    SRC_DIR      = Path(sys._MEIPASS)  # type: ignore[attr-defined]
10    COURSES_DIR  = Path.home() / 'Temario'
11else:
12    PROJECT_ROOT = Path(__file__).parent.parent.parent.parent.resolve()
13    SRC_DIR      = PROJECT_ROOT / 'src'
14    COURSES_DIR  = PROJECT_ROOT / 'courses'   # directorio por defecto (fallback)
15
16
17def setup_path() -> None:
18    if _FROZEN:
19        return  # PyInstaller ya gestiona sys.path
20    src = str(SRC_DIR)
21    if src not in sys.path:
22        sys.path.insert(0, src)
23
24
25# Delega en slides_config (módulo compartido CLI+GUI en src/)
26setup_path()
27from lib.slides_config import (  # noqa: E402
28    get_courses_dir,
29    save_courses_dir,
30    CONFIG_PATH,
31)
32
33
34def get_courses() -> list[Path]:
35    courses_dir = get_courses_dir() or COURSES_DIR
36    if not courses_dir.exists():
37        return []
38    return sorted(d for d in courses_dir.iterdir() if d.is_dir())
39
40
41def get_yamls(course_dir: Path) -> list[Path]:
42    content = course_dir / 'content'
43    if not content.exists():
44        return []
45    return sorted(content.glob('*.yaml'))
def setup_path() -> None:
18def setup_path() -> None:
19    if _FROZEN:
20        return  # PyInstaller ya gestiona sys.path
21    src = str(SRC_DIR)
22    if src not in sys.path:
23        sys.path.insert(0, src)
def get_courses() -> list[pathlib.Path]:
35def get_courses() -> list[Path]:
36    courses_dir = get_courses_dir() or COURSES_DIR
37    if not courses_dir.exists():
38        return []
39    return sorted(d for d in courses_dir.iterdir() if d.is_dir())
def get_yamls(course_dir: pathlib.Path) -> list[pathlib.Path]:
42def get_yamls(course_dir: Path) -> list[Path]:
43    content = course_dir / 'content'
44    if not content.exists():
45        return []
46    return sorted(content.glob('*.yaml'))