Coverage for src/flag_gems/utils/code_cache.py: 88%
26 statements
« prev ^ index » next coverage.py v7.6.9, created at 2026-03-20 02:31 +0800
« prev ^ index » next coverage.py v7.6.9, created at 2026-03-20 02:31 +0800
1import functools
2import os
3import shutil
4from pathlib import Path
7@functools.lru_cache(maxsize=None) # this is the same as functools.cache in Python 3.9+
8def cache_dir_path() -> Path:
9 """Return the cache directory for generated files in flaggems."""
10 _cache_dir = os.environ.get("FLAGGEMS_CACHE_DIR")
11 if _cache_dir is None:
12 _cache_dir = Path.home() / ".flaggems"
13 else:
14 _cache_dir = Path(_cache_dir)
15 return _cache_dir
18def cache_dir() -> Path:
19 """Return cache directory for generated files in flaggems. Create it if it does not exist."""
20 _cache_dir = cache_dir_path()
21 os.makedirs(_cache_dir, exist_ok=True)
22 return _cache_dir
25def code_cache_dir() -> Path:
26 _code_cache_dir = cache_dir() / "code_cache"
27 os.makedirs(_code_cache_dir, exist_ok=True)
28 return _code_cache_dir
31def config_cache_dir() -> Path:
32 _config_cache_dir = cache_dir() / "config_cache"
33 os.makedirs(_config_cache_dir, exist_ok=True)
34 return _config_cache_dir
37def clear_cache():
38 """Clear the cache directory for code cache."""
39 _cache_dir = cache_dir_path()
40 shutil.rmtree(_cache_dir)