From 671c633d8fc2c84d629be93bcaadd97271c93316 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 20 Sep 2024 12:20:59 -0700 Subject: [PATCH] fix: handle errors when creating cache directory in get_model_info --- aider/models.py | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/aider/models.py b/aider/models.py index 58cb6e285..85027ee15 100644 --- a/aider/models.py +++ b/aider/models.py @@ -514,21 +514,28 @@ def get_model_info(model): if not litellm._lazy_module: cache_dir = Path.home() / ".aider" / "caches" cache_file = cache_dir / "model_prices_and_context_window.json" - cache_dir.mkdir(parents=True, exist_ok=True) + + try: + cache_dir.mkdir(parents=True, exist_ok=True) + use_cache = True + except OSError: + # If we can't create the cache directory, we'll skip using the cache + use_cache = False - current_time = time.time() - cache_age = ( - current_time - cache_file.stat().st_mtime if cache_file.exists() else float("inf") - ) + if use_cache: + current_time = time.time() + cache_age = ( + current_time - cache_file.stat().st_mtime if cache_file.exists() else float("inf") + ) - if cache_age < 60 * 60 * 24: - try: - content = json.loads(cache_file.read_text()) - res = get_model_flexible(model, content) - if res: - return res - except Exception as ex: - print(str(ex)) + if cache_age < 60 * 60 * 24: + try: + content = json.loads(cache_file.read_text()) + res = get_model_flexible(model, content) + if res: + return res + except Exception as ex: + print(str(ex)) import requests @@ -536,7 +543,12 @@ def get_model_info(model): response = requests.get(model_info_url, timeout=5) if response.status_code == 200: content = response.json() - cache_file.write_text(json.dumps(content, indent=4)) + if use_cache: + try: + cache_file.write_text(json.dumps(content, indent=4)) + except OSError: + # If we can't write to the cache file, we'll just skip caching + pass res = get_model_flexible(model, content) if res: return res