X-Git-Url: https://git.madduck.net/etc/vim.git/blobdiff_plain/f2ea461e9e9fa5c47bb61fd72d512c748928badc..7af3abd38392588ac737bae09f6b15d80fe344b1:/src/black/cache.py diff --git a/src/black/cache.py b/src/black/cache.py index 017a2a9..552c248 100644 --- a/src/black/cache.py +++ b/src/black/cache.py @@ -6,7 +6,7 @@ from pathlib import Path import tempfile from typing import Dict, Iterable, Set, Tuple -from appdirs import user_cache_dir +from platformdirs import user_cache_dir from black.mode import Mode @@ -20,7 +20,23 @@ CacheInfo = Tuple[Timestamp, FileSize] Cache = Dict[str, CacheInfo] -CACHE_DIR = Path(user_cache_dir("black", version=__version__)) +def get_cache_dir() -> Path: + """Get the cache directory used by black. + + Users can customize this directory on all systems using `BLACK_CACHE_DIR` + environment variable. By default, the cache directory is the user cache directory + under the black application. + + This result is immediately set to a constant `black.cache.CACHE_DIR` as to avoid + repeated calls. + """ + # NOTE: Function mostly exists as a clean way to test getting the cache directory. + default_cache_dir = user_cache_dir("black", version=__version__) + cache_dir = Path(os.environ.get("BLACK_CACHE_DIR", default_cache_dir)) + return cache_dir + + +CACHE_DIR = get_cache_dir() def read_cache(mode: Mode) -> Cache: @@ -35,7 +51,7 @@ def read_cache(mode: Mode) -> Cache: with cache_file.open("rb") as fobj: try: cache: Cache = pickle.load(fobj) - except (pickle.UnpicklingError, ValueError): + except (pickle.UnpicklingError, ValueError, IndexError): return {} return cache