Skip to content

Commit

Permalink
Only create local data directories if necessary (#370)
Browse files Browse the repository at this point in the history
Creating a local data directory with Pooch checks that the local
directory is writable. This is important if downloading data, but if
the files already exist is unnecessary. Doing so makes it impossible
to store data for Pooch in readable but non-writable directories. 
In particular, the directories in which some build systems install
Python may not be writable.
  • Loading branch information
shoyer authored Oct 3, 2023
1 parent d2d0202 commit 8aa2fc3
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions pooch/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,15 +217,17 @@ def retrieve(
path = os_cache("pooch")
if fname is None:
fname = unique_file_name(url)
# Create the local data directory if it doesn't already exist and make the
# path absolute.
# Make the path absolute.
path = cache_location(path, env=None, version=None)
make_local_storage(path)

full_path = path.resolve() / fname
action, verb = download_action(full_path, known_hash)

if action in ("download", "update"):
# We need to write data, so create the local data directory if it
# doesn't already exist.
make_local_storage(path)

get_logger().info(
"%s data from '%s' to file '%s'.",
verb,
Expand Down Expand Up @@ -560,9 +562,6 @@ def fetch(self, fname, processor=None, downloader=None, progressbar=False):
"""
self._assert_file_in_registry(fname)

# Create the local data directory if it doesn't already exist
make_local_storage(str(self.abspath))

url = self.get_url(fname)
full_path = self.abspath / fname
known_hash = self.registry[fname]
Expand All @@ -574,6 +573,10 @@ def fetch(self, fname, processor=None, downloader=None, progressbar=False):
)

if action in ("download", "update"):
# We need to write data, so create the local data directory if it
# doesn't already exist.
make_local_storage(str(self.abspath))

get_logger().info(
"%s file '%s' from '%s' to '%s'.",
verb,
Expand Down

0 comments on commit 8aa2fc3

Please sign in to comment.