Source code for laser_measles.demographics.cache

import shutil
from pathlib import Path

import diskcache
from appdirs import user_cache_dir


[docs] def load_cache(cache_dir: str | None = None) -> diskcache.Cache: """ Load the cache for the application. Args: cache_dir (str | None): The cache directory to use. If None, the default cache directory will be used. Returns: The cache object. """ resolve_cache_dir = cache_dir or get_cache_dir() return diskcache.Cache(resolve_cache_dir)
[docs] def get_cache_dir() -> str: """Get the cache directory for the application.""" return user_cache_dir("laser_measles")
[docs] def clear_cache(cache_dir: str | None = None) -> None: """Clear diskcache data from the application cache.""" # Clear diskcache with load_cache(cache_dir) as cache: cache.clear()
[docs] def clear_all_cache() -> None: """Clear all cached data from the application cache.""" clear_cache() cache_dir = get_cache_dir() if Path(cache_dir).exists(): shutil.rmtree(cache_dir)
[docs] def clear_cache_dir(dir: str) -> None: """Clear all cached data from a specific directory.""" resolve_dir = Path(get_cache_dir()) / dir if resolve_dir.exists(): shutil.rmtree(resolve_dir)
[docs] def get_all_cache_keys() -> list[str]: """Get all the cache keys for the application.""" with load_cache() as c: return list(c.iterkeys())