Kennedy Johnson
Add LaunchPadAI undergraduate internship advisor panel.
de852c2
Raw
History Blame Contribute Delete
994 Bytes
"""
Bundled avatar image registry.
Provides helpers for resolving and listing the avatar images shipped in
``app/assets/avatars/``.
"""
import logging
from functools import lru_cache
from pathlib import Path
logger = logging.getLogger(__name__)
_AVATARS_DIR = Path(__file__).resolve().parent.parent / "assets" / "avatars"
def get_bundled_avatar_path(name: str) -> Path | None:
"""Return the filesystem path for a bundled avatar, or *None* if the
file does not exist."""
if not _AVATARS_DIR.is_dir():
return None
candidate = _AVATARS_DIR / name
if candidate.is_file():
return candidate
return None
@lru_cache(maxsize=1)
def list_bundled_avatars() -> tuple[str, ...]:
"""Return the filenames of all bundled avatar images."""
if not _AVATARS_DIR.is_dir():
return ()
avatars = tuple(sorted(f.name for f in _AVATARS_DIR.iterdir() if f.is_file()))
logger.info("Found %d bundled avatar images.", len(avatars))
return avatars