chmod rm when rm fails (#4755)
This commit is contained in:
parent
59d8d1eb62
commit
88f9424df7
@ -6,6 +6,7 @@ import json
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import stat
|
||||
from pathlib import Path
|
||||
|
||||
from reflex import constants
|
||||
@ -15,6 +16,19 @@ from reflex.config import environment, get_config
|
||||
join = os.linesep.join
|
||||
|
||||
|
||||
def chmod_rm(path: Path):
|
||||
"""Remove a file or directory with chmod.
|
||||
|
||||
Args:
|
||||
path: The path to the file or directory.
|
||||
"""
|
||||
path.chmod(stat.S_IWRITE)
|
||||
if path.is_dir():
|
||||
shutil.rmtree(path)
|
||||
elif path.is_file():
|
||||
path.unlink()
|
||||
|
||||
|
||||
def rm(path: str | Path):
|
||||
"""Remove a file or directory.
|
||||
|
||||
@ -23,7 +37,8 @@ def rm(path: str | Path):
|
||||
"""
|
||||
path = Path(path)
|
||||
if path.is_dir():
|
||||
shutil.rmtree(path)
|
||||
# In Python 3.12, onerror is deprecated in favor of onexc
|
||||
shutil.rmtree(path, onerror=lambda _func, _path, _info: chmod_rm(path))
|
||||
elif path.is_file():
|
||||
path.unlink()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user