39 lines
1.1 KiB
Python
39 lines
1.1 KiB
Python
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()
|