Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/virtualenv/run/app_data.py @ 0:26e78fe6e8c4 draft
"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author | shellac |
---|---|
date | Sat, 02 May 2020 07:14:21 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/env/lib/python3.7/site-packages/virtualenv/run/app_data.py Sat May 02 07:14:21 2020 -0400 @@ -0,0 +1,83 @@ +import logging +import os +from argparse import Action, ArgumentError +from tempfile import mkdtemp + +from appdirs import user_data_dir + +from virtualenv.util.lock import ReentrantFileLock +from virtualenv.util.path import safe_delete + + +class AppData(object): + def __init__(self, folder): + self.folder = ReentrantFileLock(folder) + self.transient = False + + def __repr__(self): + return "{}".format(self.folder.path) + + def clean(self): + logging.debug("clean app data folder %s", self.folder.path) + safe_delete(self.folder.path) + + def close(self): + """""" + + +class TempAppData(AppData): + def __init__(self): + super(TempAppData, self).__init__(folder=mkdtemp()) + self.transient = True + logging.debug("created temporary app data folder %s", self.folder.path) + + def close(self): + logging.debug("remove temporary app data folder %s", self.folder.path) + safe_delete(self.folder.path) + + +class AppDataAction(Action): + def __call__(self, parser, namespace, values, option_string=None): + folder = self._check_folder(values) + if folder is None: + raise ArgumentError("app data path {} is not valid".format(values)) + setattr(namespace, self.dest, AppData(folder)) + + @staticmethod + def _check_folder(folder): + folder = os.path.abspath(folder) + if not os.path.exists(folder): + try: + os.makedirs(folder) + logging.debug("created app data folder %s", folder) + except OSError as exception: + logging.info("could not create app data folder %s due to %r", folder, exception) + return None + write_enabled = os.access(folder, os.W_OK) + if write_enabled: + return folder + logging.debug("app data folder %s has no write access", folder) + return None + + @staticmethod + def default(): + for folder in AppDataAction._app_data_candidates(): + folder = AppDataAction._check_folder(folder) + if folder is not None: + return AppData(folder) + return None + + @staticmethod + def _app_data_candidates(): + key = str("VIRTUALENV_OVERRIDE_APP_DATA") + if key in os.environ: + yield os.environ[key] + else: + yield user_data_dir(appname="virtualenv", appauthor="pypa") + + +__all__ = ( + "AppData", + "TempAppData", + "AppDataAction", +)