SickGear/lib/filelock/_util.py
Prinz23 a951b34b7f Update Cachecontrol 0.12.6 (167a605) → 0.12.11 (c05ef9e).
Add Filelock 3.9.0 (ce3e891).
Remove Lockfile no longer used by Cachecontrol.
2023-02-09 14:18:18 +00:00

20 lines
594 B
Python

from __future__ import annotations
import os
import stat
def raise_on_exist_ro_file(filename: str) -> None:
try:
file_stat = os.stat(filename) # use stat to do exists + can write to check without race condition
except OSError:
return None # swallow does not exist or other errors
if file_stat.st_mtime != 0: # if os.stat returns but modification is zero that's an invalid os.stat - ignore it
if not (file_stat.st_mode & stat.S_IWUSR):
raise PermissionError(f"Permission denied: {filename!r}")
__all__ = [
"raise_on_exist_ro_file",
]