Tipragot
628be439b8
Cela permet de ne pas avoir de problèmes de compatibilité car python est dans le git.
57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
"""Application data stored by virtualenv."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
import os
|
|
|
|
from platformdirs import user_data_dir
|
|
|
|
from .na import AppDataDisabled
|
|
from .read_only import ReadOnlyAppData
|
|
from .via_disk_folder import AppDataDiskFolder
|
|
from .via_tempdir import TempAppData
|
|
|
|
|
|
def _default_app_data_dir(env):
|
|
key = "VIRTUALENV_OVERRIDE_APP_DATA"
|
|
if key in env:
|
|
return env[key]
|
|
return user_data_dir(appname="virtualenv", appauthor="pypa")
|
|
|
|
|
|
def make_app_data(folder, **kwargs):
|
|
is_read_only = kwargs.pop("read_only")
|
|
env = kwargs.pop("env")
|
|
if kwargs: # py3+ kwonly
|
|
msg = "unexpected keywords: {}"
|
|
raise TypeError(msg)
|
|
|
|
if folder is None:
|
|
folder = _default_app_data_dir(env)
|
|
folder = os.path.abspath(folder)
|
|
|
|
if is_read_only:
|
|
return ReadOnlyAppData(folder)
|
|
|
|
if not os.path.isdir(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)
|
|
|
|
if os.access(folder, os.W_OK):
|
|
return AppDataDiskFolder(folder)
|
|
logging.debug("app data folder %s has no write access", folder)
|
|
return TempAppData()
|
|
|
|
|
|
__all__ = (
|
|
"AppDataDisabled",
|
|
"AppDataDiskFolder",
|
|
"ReadOnlyAppData",
|
|
"TempAppData",
|
|
"make_app_data",
|
|
)
|