38 lines
922 B
Python
38 lines
922 B
Python
|
import os
|
||
|
|
||
|
PLOTLY_DIR = os.environ.get(
|
||
|
"PLOTLY_DIR", os.path.join(os.path.expanduser("~"), ".plotly")
|
||
|
)
|
||
|
TEST_FILE = os.path.join(PLOTLY_DIR, ".permission_test")
|
||
|
|
||
|
|
||
|
def _permissions():
|
||
|
try:
|
||
|
if not os.path.exists(PLOTLY_DIR):
|
||
|
try:
|
||
|
os.mkdir(PLOTLY_DIR)
|
||
|
except Exception:
|
||
|
# in case of race
|
||
|
if not os.path.isdir(PLOTLY_DIR):
|
||
|
raise
|
||
|
with open(TEST_FILE, "w") as f:
|
||
|
f.write("testing\n")
|
||
|
try:
|
||
|
os.remove(TEST_FILE)
|
||
|
except Exception:
|
||
|
pass
|
||
|
return True
|
||
|
except Exception: # Do not trap KeyboardInterrupt.
|
||
|
return False
|
||
|
|
||
|
|
||
|
_file_permissions = None
|
||
|
|
||
|
|
||
|
def ensure_writable_plotly_dir():
|
||
|
# Cache permissions status
|
||
|
global _file_permissions
|
||
|
if _file_permissions is None:
|
||
|
_file_permissions = _permissions()
|
||
|
return _file_permissions
|