How to use the pooch.utils.temporary_file function in pooch

To help you get started, we’ve selected a few pooch examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github fatiando / pooch / pooch / core.py View on Github external
"""
    Stream the file and check that its hash matches the known one.

    The file is first downloaded to a temporary file name in the cache folder.
    It will be moved to the desired file name only if the hash matches the
    known hash. Otherwise, the temporary file is deleted.

    """
    # Ensure the parent directory exists in case the file is in a subdirectory.
    # Otherwise, move will cause an error.
    if not fname.parent.exists():
        os.makedirs(str(fname.parent))

    # Stream the file to a temporary so that we can safely check its hash
    # before overwriting the original.
    with temporary_file(path=str(fname.parent)) as tmp:
        downloader(url, tmp, pooch)
        hash_matches(tmp, known_hash, strict=True, source=str(fname.name))
        shutil.move(tmp, str(fname))