Skip to content

Commit

Permalink
build(deps): update platformdirs requirement from <4,>=3.1.1 to >=3.1…
Browse files Browse the repository at this point in the history
….1,<5 (#10603)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
  • Loading branch information
dependabot[bot] authored Nov 5, 2024
1 parent bbc01b4 commit 70fc4e6
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
13 changes: 13 additions & 0 deletions dvc/dirs.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,19 @@ def global_config_dir():


def site_cache_dir():
from platformdirs import PlatformDirs
from platformdirs.unix import Unix

if issubclass(Unix, PlatformDirs):
# Return the cache directory shared by users, e.g. `/var/tmp/$appname`
# NOTE: platformdirs>=5 changed `site_cache_dir` to return /var/cache/$appname.
# as the following path is considered insecure.
# For details, see: https://github.com/tox-dev/platformdirs/pull/239

# FIXME: keeping the old behavior temporarily to avoid dependency conflict.
# In the future, consider migrating to a more secure directory.
return f"/var/tmp/{APPNAME}" # noqa: S108

return os.getenv(env.DVC_SITE_CACHE_DIR) or platformdirs.site_cache_dir(
APPNAME, APPAUTHOR, opinion=True
)
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ dependencies = [
"omegaconf",
"packaging>=19",
"pathspec>=0.10.3",
"platformdirs<4,>=3.1.1",
"platformdirs<5,>=3.1.1",
"psutil>=5.8",
"pydot>=1.2.4",
"pygtrie>=2.3.2",
Expand Down
11 changes: 10 additions & 1 deletion tests/unit/test_dirs.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
from dvc.dirs import global_config_dir
import sys

import pytest

from dvc.dirs import global_config_dir, site_cache_dir
from dvc.env import DVC_GLOBAL_CONFIG_DIR


def test_global_config_dir_respects_env_var(monkeypatch):
path = "/some/random/path"
monkeypatch.setenv(DVC_GLOBAL_CONFIG_DIR, path)
assert global_config_dir() == path


@pytest.mark.skipif(sys.platform != "linux", reason="Only for Unix platforms")
def test_site_cache_dir_on_unix():
assert site_cache_dir() == "/var/tmp/dvc"

0 comments on commit 70fc4e6

Please sign in to comment.