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:
def
get_courses() -> list[pathlib.Path]:
def
get_yamls(course_dir: pathlib.Path) -> list[pathlib.Path]: