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 | |