import os import random import gc import time # Borrowed from https://github.com/rogerbinns/apsw/blob/master/apsw/tests.py#L224 # Used to delete sqlite files on Windows, since Windows file locking # behaves differently to other operating systems # This should only be used for test or non-production code, such as in reset_state. def delete_file(name: str) -> None: try: os.remove(name) except Exception: pass chars = list("abcdefghijklmn") random.shuffle(chars) newname = name + "-n-" + "".join(chars) count = 0 while os.path.exists(name): count += 1 try: os.rename(name, newname) except Exception: if count > 30: n = list("abcdefghijklmnopqrstuvwxyz") random.shuffle(n) final_name = "".join(n) try: os.rename( name, "chroma-to-clean" + final_name + ".deletememanually" ) except Exception: pass break time.sleep(0.1) gc.collect()