Загрузить файлы в «venv/Lib/site-packages/pip/_vendor/platformdirs»
This commit is contained in:
21
venv/Lib/site-packages/pip/_vendor/platformdirs/LICENSE
Normal file
21
venv/Lib/site-packages/pip/_vendor/platformdirs/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2010-202x The platformdirs developers
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
631
venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py
Normal file
631
venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py
Normal file
@@ -0,0 +1,631 @@
|
|||||||
|
"""
|
||||||
|
Utilities for determining application-specific dirs.
|
||||||
|
|
||||||
|
See <https://github.com/platformdirs/platformdirs> for details and usage.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
|
from .api import PlatformDirsABC
|
||||||
|
from .version import __version__
|
||||||
|
from .version import __version_tuple__ as __version_info__
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Literal
|
||||||
|
|
||||||
|
if sys.platform == "win32":
|
||||||
|
from pip._vendor.platformdirs.windows import Windows as _Result
|
||||||
|
elif sys.platform == "darwin":
|
||||||
|
from pip._vendor.platformdirs.macos import MacOS as _Result
|
||||||
|
else:
|
||||||
|
from pip._vendor.platformdirs.unix import Unix as _Result
|
||||||
|
|
||||||
|
|
||||||
|
def _set_platform_dir_class() -> type[PlatformDirsABC]:
|
||||||
|
if os.getenv("ANDROID_DATA") == "/data" and os.getenv("ANDROID_ROOT") == "/system":
|
||||||
|
if os.getenv("SHELL") or os.getenv("PREFIX"):
|
||||||
|
return _Result
|
||||||
|
|
||||||
|
from pip._vendor.platformdirs.android import _android_folder # noqa: PLC0415
|
||||||
|
|
||||||
|
if _android_folder() is not None:
|
||||||
|
from pip._vendor.platformdirs.android import Android # noqa: PLC0415
|
||||||
|
|
||||||
|
return Android # return to avoid redefinition of a result
|
||||||
|
|
||||||
|
return _Result
|
||||||
|
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
# Work around mypy issue: https://github.com/python/mypy/issues/10962
|
||||||
|
PlatformDirs = _Result
|
||||||
|
else:
|
||||||
|
PlatformDirs = _set_platform_dir_class() #: Currently active platform
|
||||||
|
AppDirs = PlatformDirs #: Backwards compatibility with appdirs
|
||||||
|
|
||||||
|
|
||||||
|
def user_data_dir(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
roaming: bool = False, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param roaming: See `roaming <platformdirs.api.PlatformDirsABC.roaming>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: data directory tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
roaming=roaming,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_data_dir
|
||||||
|
|
||||||
|
|
||||||
|
def site_data_dir(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
multipath: bool = False, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param multipath: See `roaming <platformdirs.api.PlatformDirsABC.multipath>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: data directory shared by users
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
multipath=multipath,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).site_data_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_config_dir(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
roaming: bool = False, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param roaming: See `roaming <platformdirs.api.PlatformDirsABC.roaming>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: config directory tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
roaming=roaming,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_config_dir
|
||||||
|
|
||||||
|
|
||||||
|
def site_config_dir(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
multipath: bool = False, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param multipath: See `roaming <platformdirs.api.PlatformDirsABC.multipath>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: config directory shared by the users
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
multipath=multipath,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).site_config_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_cache_dir(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
opinion: bool = True, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param opinion: See `roaming <platformdirs.api.PlatformDirsABC.opinion>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: cache directory tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
opinion=opinion,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_cache_dir
|
||||||
|
|
||||||
|
|
||||||
|
def site_cache_dir(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
opinion: bool = True, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param opinion: See `opinion <platformdirs.api.PlatformDirsABC.opinion>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: cache directory tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
opinion=opinion,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).site_cache_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_state_dir(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
roaming: bool = False, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param roaming: See `roaming <platformdirs.api.PlatformDirsABC.roaming>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: state directory tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
roaming=roaming,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_state_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_log_dir(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
opinion: bool = True, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param opinion: See `roaming <platformdirs.api.PlatformDirsABC.opinion>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: log directory tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
opinion=opinion,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_log_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_documents_dir() -> str:
|
||||||
|
""":returns: documents directory tied to the user"""
|
||||||
|
return PlatformDirs().user_documents_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_downloads_dir() -> str:
|
||||||
|
""":returns: downloads directory tied to the user"""
|
||||||
|
return PlatformDirs().user_downloads_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_pictures_dir() -> str:
|
||||||
|
""":returns: pictures directory tied to the user"""
|
||||||
|
return PlatformDirs().user_pictures_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_videos_dir() -> str:
|
||||||
|
""":returns: videos directory tied to the user"""
|
||||||
|
return PlatformDirs().user_videos_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_music_dir() -> str:
|
||||||
|
""":returns: music directory tied to the user"""
|
||||||
|
return PlatformDirs().user_music_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_desktop_dir() -> str:
|
||||||
|
""":returns: desktop directory tied to the user"""
|
||||||
|
return PlatformDirs().user_desktop_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_runtime_dir(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
opinion: bool = True, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param opinion: See `opinion <platformdirs.api.PlatformDirsABC.opinion>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: runtime directory tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
opinion=opinion,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_runtime_dir
|
||||||
|
|
||||||
|
|
||||||
|
def site_runtime_dir(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
opinion: bool = True, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> str:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param opinion: See `opinion <platformdirs.api.PlatformDirsABC.opinion>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: runtime directory shared by users
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
opinion=opinion,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).site_runtime_dir
|
||||||
|
|
||||||
|
|
||||||
|
def user_data_path(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
roaming: bool = False, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> Path:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param roaming: See `roaming <platformdirs.api.PlatformDirsABC.roaming>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: data path tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
roaming=roaming,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_data_path
|
||||||
|
|
||||||
|
|
||||||
|
def site_data_path(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
multipath: bool = False, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> Path:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param multipath: See `multipath <platformdirs.api.PlatformDirsABC.multipath>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: data path shared by users
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
multipath=multipath,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).site_data_path
|
||||||
|
|
||||||
|
|
||||||
|
def user_config_path(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
roaming: bool = False, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> Path:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param roaming: See `roaming <platformdirs.api.PlatformDirsABC.roaming>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: config path tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
roaming=roaming,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_config_path
|
||||||
|
|
||||||
|
|
||||||
|
def site_config_path(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
multipath: bool = False, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> Path:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param multipath: See `roaming <platformdirs.api.PlatformDirsABC.multipath>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: config path shared by the users
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
multipath=multipath,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).site_config_path
|
||||||
|
|
||||||
|
|
||||||
|
def site_cache_path(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
opinion: bool = True, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> Path:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param opinion: See `opinion <platformdirs.api.PlatformDirsABC.opinion>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: cache directory tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
opinion=opinion,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).site_cache_path
|
||||||
|
|
||||||
|
|
||||||
|
def user_cache_path(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
opinion: bool = True, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> Path:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param opinion: See `roaming <platformdirs.api.PlatformDirsABC.opinion>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: cache path tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
opinion=opinion,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_cache_path
|
||||||
|
|
||||||
|
|
||||||
|
def user_state_path(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
roaming: bool = False, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> Path:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param roaming: See `roaming <platformdirs.api.PlatformDirsABC.roaming>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: state path tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
roaming=roaming,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_state_path
|
||||||
|
|
||||||
|
|
||||||
|
def user_log_path(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
opinion: bool = True, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> Path:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param opinion: See `roaming <platformdirs.api.PlatformDirsABC.opinion>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: log path tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
opinion=opinion,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_log_path
|
||||||
|
|
||||||
|
|
||||||
|
def user_documents_path() -> Path:
|
||||||
|
""":returns: documents a path tied to the user"""
|
||||||
|
return PlatformDirs().user_documents_path
|
||||||
|
|
||||||
|
|
||||||
|
def user_downloads_path() -> Path:
|
||||||
|
""":returns: downloads path tied to the user"""
|
||||||
|
return PlatformDirs().user_downloads_path
|
||||||
|
|
||||||
|
|
||||||
|
def user_pictures_path() -> Path:
|
||||||
|
""":returns: pictures path tied to the user"""
|
||||||
|
return PlatformDirs().user_pictures_path
|
||||||
|
|
||||||
|
|
||||||
|
def user_videos_path() -> Path:
|
||||||
|
""":returns: videos path tied to the user"""
|
||||||
|
return PlatformDirs().user_videos_path
|
||||||
|
|
||||||
|
|
||||||
|
def user_music_path() -> Path:
|
||||||
|
""":returns: music path tied to the user"""
|
||||||
|
return PlatformDirs().user_music_path
|
||||||
|
|
||||||
|
|
||||||
|
def user_desktop_path() -> Path:
|
||||||
|
""":returns: desktop path tied to the user"""
|
||||||
|
return PlatformDirs().user_desktop_path
|
||||||
|
|
||||||
|
|
||||||
|
def user_runtime_path(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
opinion: bool = True, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> Path:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param opinion: See `opinion <platformdirs.api.PlatformDirsABC.opinion>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: runtime path tied to the user
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
opinion=opinion,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).user_runtime_path
|
||||||
|
|
||||||
|
|
||||||
|
def site_runtime_path(
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
opinion: bool = True, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> Path:
|
||||||
|
"""
|
||||||
|
:param appname: See `appname <platformdirs.api.PlatformDirsABC.appname>`.
|
||||||
|
:param appauthor: See `appauthor <platformdirs.api.PlatformDirsABC.appauthor>`.
|
||||||
|
:param version: See `version <platformdirs.api.PlatformDirsABC.version>`.
|
||||||
|
:param opinion: See `opinion <platformdirs.api.PlatformDirsABC.opinion>`.
|
||||||
|
:param ensure_exists: See `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
:returns: runtime path shared by users
|
||||||
|
"""
|
||||||
|
return PlatformDirs(
|
||||||
|
appname=appname,
|
||||||
|
appauthor=appauthor,
|
||||||
|
version=version,
|
||||||
|
opinion=opinion,
|
||||||
|
ensure_exists=ensure_exists,
|
||||||
|
).site_runtime_path
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"AppDirs",
|
||||||
|
"PlatformDirs",
|
||||||
|
"PlatformDirsABC",
|
||||||
|
"__version__",
|
||||||
|
"__version_info__",
|
||||||
|
"site_cache_dir",
|
||||||
|
"site_cache_path",
|
||||||
|
"site_config_dir",
|
||||||
|
"site_config_path",
|
||||||
|
"site_data_dir",
|
||||||
|
"site_data_path",
|
||||||
|
"site_runtime_dir",
|
||||||
|
"site_runtime_path",
|
||||||
|
"user_cache_dir",
|
||||||
|
"user_cache_path",
|
||||||
|
"user_config_dir",
|
||||||
|
"user_config_path",
|
||||||
|
"user_data_dir",
|
||||||
|
"user_data_path",
|
||||||
|
"user_desktop_dir",
|
||||||
|
"user_desktop_path",
|
||||||
|
"user_documents_dir",
|
||||||
|
"user_documents_path",
|
||||||
|
"user_downloads_dir",
|
||||||
|
"user_downloads_path",
|
||||||
|
"user_log_dir",
|
||||||
|
"user_log_path",
|
||||||
|
"user_music_dir",
|
||||||
|
"user_music_path",
|
||||||
|
"user_pictures_dir",
|
||||||
|
"user_pictures_path",
|
||||||
|
"user_runtime_dir",
|
||||||
|
"user_runtime_path",
|
||||||
|
"user_state_dir",
|
||||||
|
"user_state_path",
|
||||||
|
"user_videos_dir",
|
||||||
|
"user_videos_path",
|
||||||
|
]
|
||||||
55
venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py
Normal file
55
venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
"""Main entry point."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from pip._vendor.platformdirs import PlatformDirs, __version__
|
||||||
|
|
||||||
|
PROPS = (
|
||||||
|
"user_data_dir",
|
||||||
|
"user_config_dir",
|
||||||
|
"user_cache_dir",
|
||||||
|
"user_state_dir",
|
||||||
|
"user_log_dir",
|
||||||
|
"user_documents_dir",
|
||||||
|
"user_downloads_dir",
|
||||||
|
"user_pictures_dir",
|
||||||
|
"user_videos_dir",
|
||||||
|
"user_music_dir",
|
||||||
|
"user_runtime_dir",
|
||||||
|
"site_data_dir",
|
||||||
|
"site_config_dir",
|
||||||
|
"site_cache_dir",
|
||||||
|
"site_runtime_dir",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
"""Run the main entry point."""
|
||||||
|
app_name = "MyApp"
|
||||||
|
app_author = "MyCompany"
|
||||||
|
|
||||||
|
print(f"-- platformdirs {__version__} --") # noqa: T201
|
||||||
|
|
||||||
|
print("-- app dirs (with optional 'version')") # noqa: T201
|
||||||
|
dirs = PlatformDirs(app_name, app_author, version="1.0")
|
||||||
|
for prop in PROPS:
|
||||||
|
print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201
|
||||||
|
|
||||||
|
print("\n-- app dirs (without optional 'version')") # noqa: T201
|
||||||
|
dirs = PlatformDirs(app_name, app_author)
|
||||||
|
for prop in PROPS:
|
||||||
|
print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201
|
||||||
|
|
||||||
|
print("\n-- app dirs (without optional 'appauthor')") # noqa: T201
|
||||||
|
dirs = PlatformDirs(app_name)
|
||||||
|
for prop in PROPS:
|
||||||
|
print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201
|
||||||
|
|
||||||
|
print("\n-- app dirs (with disabled 'appauthor')") # noqa: T201
|
||||||
|
dirs = PlatformDirs(app_name, appauthor=False)
|
||||||
|
for prop in PROPS:
|
||||||
|
print(f"{prop}: {getattr(dirs, prop)}") # noqa: T201
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
249
venv/Lib/site-packages/pip/_vendor/platformdirs/android.py
Normal file
249
venv/Lib/site-packages/pip/_vendor/platformdirs/android.py
Normal file
@@ -0,0 +1,249 @@
|
|||||||
|
"""Android."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from functools import lru_cache
|
||||||
|
from typing import TYPE_CHECKING, cast
|
||||||
|
|
||||||
|
from .api import PlatformDirsABC
|
||||||
|
|
||||||
|
|
||||||
|
class Android(PlatformDirsABC):
|
||||||
|
"""
|
||||||
|
Follows the guidance `from here <https://android.stackexchange.com/a/216132>`_.
|
||||||
|
|
||||||
|
Makes use of the `appname <platformdirs.api.PlatformDirsABC.appname>`, `version
|
||||||
|
<platformdirs.api.PlatformDirsABC.version>`, `ensure_exists <platformdirs.api.PlatformDirsABC.ensure_exists>`.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_data_dir(self) -> str:
|
||||||
|
""":return: data directory tied to the user, e.g. ``/data/user/<userid>/<packagename>/files/<AppName>``"""
|
||||||
|
return self._append_app_name_and_version(cast("str", _android_folder()), "files")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def site_data_dir(self) -> str:
|
||||||
|
""":return: data directory shared by users, same as `user_data_dir`"""
|
||||||
|
return self.user_data_dir
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_config_dir(self) -> str:
|
||||||
|
"""
|
||||||
|
:return: config directory tied to the user, e.g. \
|
||||||
|
``/data/user/<userid>/<packagename>/shared_prefs/<AppName>``
|
||||||
|
"""
|
||||||
|
return self._append_app_name_and_version(cast("str", _android_folder()), "shared_prefs")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def site_config_dir(self) -> str:
|
||||||
|
""":return: config directory shared by the users, same as `user_config_dir`"""
|
||||||
|
return self.user_config_dir
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_cache_dir(self) -> str:
|
||||||
|
""":return: cache directory tied to the user, e.g.,``/data/user/<userid>/<packagename>/cache/<AppName>``"""
|
||||||
|
return self._append_app_name_and_version(cast("str", _android_folder()), "cache")
|
||||||
|
|
||||||
|
@property
|
||||||
|
def site_cache_dir(self) -> str:
|
||||||
|
""":return: cache directory shared by users, same as `user_cache_dir`"""
|
||||||
|
return self.user_cache_dir
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_state_dir(self) -> str:
|
||||||
|
""":return: state directory tied to the user, same as `user_data_dir`"""
|
||||||
|
return self.user_data_dir
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_log_dir(self) -> str:
|
||||||
|
"""
|
||||||
|
:return: log directory tied to the user, same as `user_cache_dir` if not opinionated else ``log`` in it,
|
||||||
|
e.g. ``/data/user/<userid>/<packagename>/cache/<AppName>/log``
|
||||||
|
"""
|
||||||
|
path = self.user_cache_dir
|
||||||
|
if self.opinion:
|
||||||
|
path = os.path.join(path, "log") # noqa: PTH118
|
||||||
|
return path
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_documents_dir(self) -> str:
|
||||||
|
""":return: documents directory tied to the user e.g. ``/storage/emulated/0/Documents``"""
|
||||||
|
return _android_documents_folder()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_downloads_dir(self) -> str:
|
||||||
|
""":return: downloads directory tied to the user e.g. ``/storage/emulated/0/Downloads``"""
|
||||||
|
return _android_downloads_folder()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_pictures_dir(self) -> str:
|
||||||
|
""":return: pictures directory tied to the user e.g. ``/storage/emulated/0/Pictures``"""
|
||||||
|
return _android_pictures_folder()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_videos_dir(self) -> str:
|
||||||
|
""":return: videos directory tied to the user e.g. ``/storage/emulated/0/DCIM/Camera``"""
|
||||||
|
return _android_videos_folder()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_music_dir(self) -> str:
|
||||||
|
""":return: music directory tied to the user e.g. ``/storage/emulated/0/Music``"""
|
||||||
|
return _android_music_folder()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_desktop_dir(self) -> str:
|
||||||
|
""":return: desktop directory tied to the user e.g. ``/storage/emulated/0/Desktop``"""
|
||||||
|
return "/storage/emulated/0/Desktop"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_runtime_dir(self) -> str:
|
||||||
|
"""
|
||||||
|
:return: runtime directory tied to the user, same as `user_cache_dir` if not opinionated else ``tmp`` in it,
|
||||||
|
e.g. ``/data/user/<userid>/<packagename>/cache/<AppName>/tmp``
|
||||||
|
"""
|
||||||
|
path = self.user_cache_dir
|
||||||
|
if self.opinion:
|
||||||
|
path = os.path.join(path, "tmp") # noqa: PTH118
|
||||||
|
return path
|
||||||
|
|
||||||
|
@property
|
||||||
|
def site_runtime_dir(self) -> str:
|
||||||
|
""":return: runtime directory shared by users, same as `user_runtime_dir`"""
|
||||||
|
return self.user_runtime_dir
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=1)
|
||||||
|
def _android_folder() -> str | None: # noqa: C901
|
||||||
|
""":return: base folder for the Android OS or None if it cannot be found"""
|
||||||
|
result: str | None = None
|
||||||
|
# type checker isn't happy with our "import android", just don't do this when type checking see
|
||||||
|
# https://stackoverflow.com/a/61394121
|
||||||
|
if not TYPE_CHECKING:
|
||||||
|
try:
|
||||||
|
# First try to get a path to android app using python4android (if available)...
|
||||||
|
from android import mActivity # noqa: PLC0415
|
||||||
|
|
||||||
|
context = cast("android.content.Context", mActivity.getApplicationContext()) # noqa: F821
|
||||||
|
result = context.getFilesDir().getParentFile().getAbsolutePath()
|
||||||
|
except Exception: # noqa: BLE001
|
||||||
|
result = None
|
||||||
|
if result is None:
|
||||||
|
try:
|
||||||
|
# ...and fall back to using plain pyjnius, if python4android isn't available or doesn't deliver any useful
|
||||||
|
# result...
|
||||||
|
from jnius import autoclass # noqa: PLC0415
|
||||||
|
|
||||||
|
context = autoclass("android.content.Context")
|
||||||
|
result = context.getFilesDir().getParentFile().getAbsolutePath()
|
||||||
|
except Exception: # noqa: BLE001
|
||||||
|
result = None
|
||||||
|
if result is None:
|
||||||
|
# and if that fails, too, find an android folder looking at path on the sys.path
|
||||||
|
# warning: only works for apps installed under /data, not adopted storage etc.
|
||||||
|
pattern = re.compile(r"/data/(data|user/\d+)/(.+)/files")
|
||||||
|
for path in sys.path:
|
||||||
|
if pattern.match(path):
|
||||||
|
result = path.split("/files")[0]
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
result = None
|
||||||
|
if result is None:
|
||||||
|
# one last try: find an android folder looking at path on the sys.path taking adopted storage paths into
|
||||||
|
# account
|
||||||
|
pattern = re.compile(r"/mnt/expand/[a-fA-F0-9-]{36}/(data|user/\d+)/(.+)/files")
|
||||||
|
for path in sys.path:
|
||||||
|
if pattern.match(path):
|
||||||
|
result = path.split("/files")[0]
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
result = None
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=1)
|
||||||
|
def _android_documents_folder() -> str:
|
||||||
|
""":return: documents folder for the Android OS"""
|
||||||
|
# Get directories with pyjnius
|
||||||
|
try:
|
||||||
|
from jnius import autoclass # noqa: PLC0415
|
||||||
|
|
||||||
|
context = autoclass("android.content.Context")
|
||||||
|
environment = autoclass("android.os.Environment")
|
||||||
|
documents_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DOCUMENTS).getAbsolutePath()
|
||||||
|
except Exception: # noqa: BLE001
|
||||||
|
documents_dir = "/storage/emulated/0/Documents"
|
||||||
|
|
||||||
|
return documents_dir
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=1)
|
||||||
|
def _android_downloads_folder() -> str:
|
||||||
|
""":return: downloads folder for the Android OS"""
|
||||||
|
# Get directories with pyjnius
|
||||||
|
try:
|
||||||
|
from jnius import autoclass # noqa: PLC0415
|
||||||
|
|
||||||
|
context = autoclass("android.content.Context")
|
||||||
|
environment = autoclass("android.os.Environment")
|
||||||
|
downloads_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DOWNLOADS).getAbsolutePath()
|
||||||
|
except Exception: # noqa: BLE001
|
||||||
|
downloads_dir = "/storage/emulated/0/Downloads"
|
||||||
|
|
||||||
|
return downloads_dir
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=1)
|
||||||
|
def _android_pictures_folder() -> str:
|
||||||
|
""":return: pictures folder for the Android OS"""
|
||||||
|
# Get directories with pyjnius
|
||||||
|
try:
|
||||||
|
from jnius import autoclass # noqa: PLC0415
|
||||||
|
|
||||||
|
context = autoclass("android.content.Context")
|
||||||
|
environment = autoclass("android.os.Environment")
|
||||||
|
pictures_dir: str = context.getExternalFilesDir(environment.DIRECTORY_PICTURES).getAbsolutePath()
|
||||||
|
except Exception: # noqa: BLE001
|
||||||
|
pictures_dir = "/storage/emulated/0/Pictures"
|
||||||
|
|
||||||
|
return pictures_dir
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=1)
|
||||||
|
def _android_videos_folder() -> str:
|
||||||
|
""":return: videos folder for the Android OS"""
|
||||||
|
# Get directories with pyjnius
|
||||||
|
try:
|
||||||
|
from jnius import autoclass # noqa: PLC0415
|
||||||
|
|
||||||
|
context = autoclass("android.content.Context")
|
||||||
|
environment = autoclass("android.os.Environment")
|
||||||
|
videos_dir: str = context.getExternalFilesDir(environment.DIRECTORY_DCIM).getAbsolutePath()
|
||||||
|
except Exception: # noqa: BLE001
|
||||||
|
videos_dir = "/storage/emulated/0/DCIM/Camera"
|
||||||
|
|
||||||
|
return videos_dir
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=1)
|
||||||
|
def _android_music_folder() -> str:
|
||||||
|
""":return: music folder for the Android OS"""
|
||||||
|
# Get directories with pyjnius
|
||||||
|
try:
|
||||||
|
from jnius import autoclass # noqa: PLC0415
|
||||||
|
|
||||||
|
context = autoclass("android.content.Context")
|
||||||
|
environment = autoclass("android.os.Environment")
|
||||||
|
music_dir: str = context.getExternalFilesDir(environment.DIRECTORY_MUSIC).getAbsolutePath()
|
||||||
|
except Exception: # noqa: BLE001
|
||||||
|
music_dir = "/storage/emulated/0/Music"
|
||||||
|
|
||||||
|
return music_dir
|
||||||
|
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"Android",
|
||||||
|
]
|
||||||
299
venv/Lib/site-packages/pip/_vendor/platformdirs/api.py
Normal file
299
venv/Lib/site-packages/pip/_vendor/platformdirs/api.py
Normal file
@@ -0,0 +1,299 @@
|
|||||||
|
"""Base API."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import os
|
||||||
|
from abc import ABC, abstractmethod
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from collections.abc import Iterator
|
||||||
|
from typing import Literal
|
||||||
|
|
||||||
|
|
||||||
|
class PlatformDirsABC(ABC): # noqa: PLR0904
|
||||||
|
"""Abstract base class for platform directories."""
|
||||||
|
|
||||||
|
def __init__( # noqa: PLR0913, PLR0917
|
||||||
|
self,
|
||||||
|
appname: str | None = None,
|
||||||
|
appauthor: str | Literal[False] | None = None,
|
||||||
|
version: str | None = None,
|
||||||
|
roaming: bool = False, # noqa: FBT001, FBT002
|
||||||
|
multipath: bool = False, # noqa: FBT001, FBT002
|
||||||
|
opinion: bool = True, # noqa: FBT001, FBT002
|
||||||
|
ensure_exists: bool = False, # noqa: FBT001, FBT002
|
||||||
|
) -> None:
|
||||||
|
"""
|
||||||
|
Create a new platform directory.
|
||||||
|
|
||||||
|
:param appname: See `appname`.
|
||||||
|
:param appauthor: See `appauthor`.
|
||||||
|
:param version: See `version`.
|
||||||
|
:param roaming: See `roaming`.
|
||||||
|
:param multipath: See `multipath`.
|
||||||
|
:param opinion: See `opinion`.
|
||||||
|
:param ensure_exists: See `ensure_exists`.
|
||||||
|
|
||||||
|
"""
|
||||||
|
self.appname = appname #: The name of application.
|
||||||
|
self.appauthor = appauthor
|
||||||
|
"""
|
||||||
|
The name of the app author or distributing body for this application.
|
||||||
|
|
||||||
|
Typically, it is the owning company name. Defaults to `appname`. You may pass ``False`` to disable it.
|
||||||
|
|
||||||
|
"""
|
||||||
|
self.version = version
|
||||||
|
"""
|
||||||
|
An optional version path element to append to the path.
|
||||||
|
|
||||||
|
You might want to use this if you want multiple versions of your app to be able to run independently. If used,
|
||||||
|
this would typically be ``<major>.<minor>``.
|
||||||
|
|
||||||
|
"""
|
||||||
|
self.roaming = roaming
|
||||||
|
"""
|
||||||
|
Whether to use the roaming appdata directory on Windows.
|
||||||
|
|
||||||
|
That means that for users on a Windows network setup for roaming profiles, this user data will be synced on
|
||||||
|
login (see
|
||||||
|
`here <https://technet.microsoft.com/en-us/library/cc766489(WS.10).aspx>`_).
|
||||||
|
|
||||||
|
"""
|
||||||
|
self.multipath = multipath
|
||||||
|
"""
|
||||||
|
An optional parameter which indicates that the entire list of data dirs should be returned.
|
||||||
|
|
||||||
|
By default, the first item would only be returned.
|
||||||
|
|
||||||
|
"""
|
||||||
|
self.opinion = opinion #: A flag to indicating to use opinionated values.
|
||||||
|
self.ensure_exists = ensure_exists
|
||||||
|
"""
|
||||||
|
Optionally create the directory (and any missing parents) upon access if it does not exist.
|
||||||
|
|
||||||
|
By default, no directories are created.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
def _append_app_name_and_version(self, *base: str) -> str:
|
||||||
|
params = list(base[1:])
|
||||||
|
if self.appname:
|
||||||
|
params.append(self.appname)
|
||||||
|
if self.version:
|
||||||
|
params.append(self.version)
|
||||||
|
path = os.path.join(base[0], *params) # noqa: PTH118
|
||||||
|
self._optionally_create_directory(path)
|
||||||
|
return path
|
||||||
|
|
||||||
|
def _optionally_create_directory(self, path: str) -> None:
|
||||||
|
if self.ensure_exists:
|
||||||
|
Path(path).mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
|
def _first_item_as_path_if_multipath(self, directory: str) -> Path:
|
||||||
|
if self.multipath:
|
||||||
|
# If multipath is True, the first path is returned.
|
||||||
|
directory = directory.partition(os.pathsep)[0]
|
||||||
|
return Path(directory)
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_data_dir(self) -> str:
|
||||||
|
""":return: data directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def site_data_dir(self) -> str:
|
||||||
|
""":return: data directory shared by users"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_config_dir(self) -> str:
|
||||||
|
""":return: config directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def site_config_dir(self) -> str:
|
||||||
|
""":return: config directory shared by the users"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_cache_dir(self) -> str:
|
||||||
|
""":return: cache directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def site_cache_dir(self) -> str:
|
||||||
|
""":return: cache directory shared by users"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_state_dir(self) -> str:
|
||||||
|
""":return: state directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_log_dir(self) -> str:
|
||||||
|
""":return: log directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_documents_dir(self) -> str:
|
||||||
|
""":return: documents directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_downloads_dir(self) -> str:
|
||||||
|
""":return: downloads directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_pictures_dir(self) -> str:
|
||||||
|
""":return: pictures directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_videos_dir(self) -> str:
|
||||||
|
""":return: videos directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_music_dir(self) -> str:
|
||||||
|
""":return: music directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_desktop_dir(self) -> str:
|
||||||
|
""":return: desktop directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def user_runtime_dir(self) -> str:
|
||||||
|
""":return: runtime directory tied to the user"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
@abstractmethod
|
||||||
|
def site_runtime_dir(self) -> str:
|
||||||
|
""":return: runtime directory shared by users"""
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_data_path(self) -> Path:
|
||||||
|
""":return: data path tied to the user"""
|
||||||
|
return Path(self.user_data_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def site_data_path(self) -> Path:
|
||||||
|
""":return: data path shared by users"""
|
||||||
|
return Path(self.site_data_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_config_path(self) -> Path:
|
||||||
|
""":return: config path tied to the user"""
|
||||||
|
return Path(self.user_config_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def site_config_path(self) -> Path:
|
||||||
|
""":return: config path shared by the users"""
|
||||||
|
return Path(self.site_config_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_cache_path(self) -> Path:
|
||||||
|
""":return: cache path tied to the user"""
|
||||||
|
return Path(self.user_cache_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def site_cache_path(self) -> Path:
|
||||||
|
""":return: cache path shared by users"""
|
||||||
|
return Path(self.site_cache_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_state_path(self) -> Path:
|
||||||
|
""":return: state path tied to the user"""
|
||||||
|
return Path(self.user_state_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_log_path(self) -> Path:
|
||||||
|
""":return: log path tied to the user"""
|
||||||
|
return Path(self.user_log_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_documents_path(self) -> Path:
|
||||||
|
""":return: documents a path tied to the user"""
|
||||||
|
return Path(self.user_documents_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_downloads_path(self) -> Path:
|
||||||
|
""":return: downloads path tied to the user"""
|
||||||
|
return Path(self.user_downloads_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_pictures_path(self) -> Path:
|
||||||
|
""":return: pictures path tied to the user"""
|
||||||
|
return Path(self.user_pictures_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_videos_path(self) -> Path:
|
||||||
|
""":return: videos path tied to the user"""
|
||||||
|
return Path(self.user_videos_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_music_path(self) -> Path:
|
||||||
|
""":return: music path tied to the user"""
|
||||||
|
return Path(self.user_music_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_desktop_path(self) -> Path:
|
||||||
|
""":return: desktop path tied to the user"""
|
||||||
|
return Path(self.user_desktop_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_runtime_path(self) -> Path:
|
||||||
|
""":return: runtime path tied to the user"""
|
||||||
|
return Path(self.user_runtime_dir)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def site_runtime_path(self) -> Path:
|
||||||
|
""":return: runtime path shared by users"""
|
||||||
|
return Path(self.site_runtime_dir)
|
||||||
|
|
||||||
|
def iter_config_dirs(self) -> Iterator[str]:
|
||||||
|
""":yield: all user and site configuration directories."""
|
||||||
|
yield self.user_config_dir
|
||||||
|
yield self.site_config_dir
|
||||||
|
|
||||||
|
def iter_data_dirs(self) -> Iterator[str]:
|
||||||
|
""":yield: all user and site data directories."""
|
||||||
|
yield self.user_data_dir
|
||||||
|
yield self.site_data_dir
|
||||||
|
|
||||||
|
def iter_cache_dirs(self) -> Iterator[str]:
|
||||||
|
""":yield: all user and site cache directories."""
|
||||||
|
yield self.user_cache_dir
|
||||||
|
yield self.site_cache_dir
|
||||||
|
|
||||||
|
def iter_runtime_dirs(self) -> Iterator[str]:
|
||||||
|
""":yield: all user and site runtime directories."""
|
||||||
|
yield self.user_runtime_dir
|
||||||
|
yield self.site_runtime_dir
|
||||||
|
|
||||||
|
def iter_config_paths(self) -> Iterator[Path]:
|
||||||
|
""":yield: all user and site configuration paths."""
|
||||||
|
for path in self.iter_config_dirs():
|
||||||
|
yield Path(path)
|
||||||
|
|
||||||
|
def iter_data_paths(self) -> Iterator[Path]:
|
||||||
|
""":yield: all user and site data paths."""
|
||||||
|
for path in self.iter_data_dirs():
|
||||||
|
yield Path(path)
|
||||||
|
|
||||||
|
def iter_cache_paths(self) -> Iterator[Path]:
|
||||||
|
""":yield: all user and site cache paths."""
|
||||||
|
for path in self.iter_cache_dirs():
|
||||||
|
yield Path(path)
|
||||||
|
|
||||||
|
def iter_runtime_paths(self) -> Iterator[Path]:
|
||||||
|
""":yield: all user and site runtime paths."""
|
||||||
|
for path in self.iter_runtime_dirs():
|
||||||
|
yield Path(path)
|
||||||
Reference in New Issue
Block a user