Fixed TAGS_CACHE

This commit is contained in:
Paul Gauthier 2023-05-30 13:54:56 -07:00
parent 5801bd9ca4
commit 77d20b6819

View file

@ -8,7 +8,6 @@ import tiktoken
from aider import prompts from aider import prompts
# from aider.dump import dump # from aider.dump import dump
@ -46,15 +45,17 @@ def fname_to_components(fname, with_colon):
return res return res
class RepoMap: class RepoMap:
ctags_cmd = ["ctags", "--fields=+S", "--extras=-F", "--output-format=json"] ctags_cmd = ["ctags", "--fields=+S", "--extras=-F", "--output-format=json"]
TAGS_CACHE = {} TAGS_CACHE = None
def __init__(self, use_ctags=None, root=None, main_model="gpt-4"): def __init__(self, use_ctags=None, root=None, main_model="gpt-4"):
if not root: if not root:
root = os.getcwd() root = os.getcwd()
self.root = root self.root = root
self.TAGS_CACHE = dict()
if use_ctags is None: if use_ctags is None:
self.use_ctags = self.check_for_ctags() self.use_ctags = self.check_for_ctags()
else: else:
@ -135,8 +136,8 @@ def fname_to_components(fname, with_colon):
# Check if the file is in the cache and if the modification time has not changed # Check if the file is in the cache and if the modification time has not changed
file_mtime = os.path.getmtime(filename) file_mtime = os.path.getmtime(filename)
cache_key = filename cache_key = filename
if cache_key in TAGS_CACHE and TAGS_CACHE[cache_key]["mtime"] == file_mtime: if cache_key in self.TAGS_CACHE and self.TAGS_CACHE[cache_key]["mtime"] == file_mtime:
return TAGS_CACHE[cache_key]["tags"] return self.TAGS_CACHE[cache_key]["tags"]
cmd = self.ctags_cmd + [filename] cmd = self.ctags_cmd + [filename]
output = subprocess.check_output(cmd).decode("utf-8") output = subprocess.check_output(cmd).decode("utf-8")
@ -165,7 +166,7 @@ def fname_to_components(fname, with_colon):
tags.append(res) tags.append(res)
# Update the cache # Update the cache
TAGS_CACHE[cache_key] = {"mtime": file_mtime, "tags": tags} self.TAGS_CACHE[cache_key] = {"mtime": file_mtime, "tags": tags}
return tags return tags
def check_for_ctags(self): def check_for_ctags(self):