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