Skip to main content
Pooch

Documentation | Documentation (dev version) | Contact | Part of the Fatiando a Terra project

Latest version on PyPI Latest version on conda-forge TravisCI build status Azure Pipelines build status Test coverage status Compatible Python versions. Chat room on Gitter

🚨🚨 Python 2.7 will only be supported until the Fall of 2019. 🚨🚨

TL;DR

"""
Module mypackage/datasets.py
"""
import pooch

# Get the version string from your project. You have one of these, right?
from . import version


# Create a new friend to manage your sample data storage
GOODBOY = pooch.create(
    # Folder where the data will be stored. For a sensible default, use the default
    # cache folder for your OS.
    path=pooch.os_cache("mypackage"),
    # Base URL of the remote data store. Will call .format on this string to insert
    # the version (see below).
    base_url="https://github.com/myproject/mypackage/raw/{version}/data/",
    # Pooches are versioned so that you can use multiple versions of a package
    # simultaneously. Use PEP440 compliant version number. The version will be
    # appended to the path.
    version=version,
    # If a version as a "+XX.XXXXX" suffix, we'll assume that this is a dev version
    # and replace the version with this string.
    version_dev="master",
    # An environment variable that overwrites the path.
    env="MYPACKAGE_DATA_DIR",
    # The cache file registry. A dictionary with all files managed by this pooch.
    # Keys are the file names (relative to *base_url*) and values are their
    # respective SHA256 hashes. Files will be downloaded automatically when needed
    # (see fetch_gravity_data).
    registry={"gravity-data.csv": "89y10phsdwhs09whljwc09whcowsdhcwodcy0dcuhw"}
)
# You can also load the registry from a file. Each line contains a file name and
# it's sha256 hash separated by a space. This makes it easier to manage large
# numbers of data files. The registry file should be in the same directory as this
# module.
GOODBOY.load_registry("registry.txt")


# Define functions that your users can call to get back some sample data in memory
def fetch_gravity_data():
    """
    Load some sample gravity data to use in your docs.
    """
    # Fetch the path to a file in the local storae. If it's not there, we'll
    # download it.
    fname = GOODBOY.fetch("gravity-data.csv")
    # Load it with numpy/pandas/etc
    data = ...
    return data

About

Does your Python package include sample datasets? Are you shipping them with the code? Are they getting too big?

Pooch will manage downloading your sample data files over HTTP from a server and storing them in a local directory:

  • Download a file only if it’s not in the local storage.

  • Check the SHA256 hash to make sure the file is not corrupted or needs updating.

  • If the hash is different from the registry, Pooch will download a new version of the file.

  • If the hash still doesn’t match, Pooch will raise an exception warning of possible data corruption.

Projects using Pooch

If you’re using Pooch, send us a pull request adding your project to the list.

Contacting Us

Contributing

Code of conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Contributing Guidelines

Please read our Contributing Guide to see how you can help and give feedback.

Imposter syndrome disclaimer

We want your help. No, really.

There may be a little voice inside your head that is telling you that you’re not ready to be an open source contributor; that your skills aren’t nearly good enough to contribute. What could you possibly offer?

We assure you that the little voice in your head is wrong.

Being a contributor doesn’t just mean writing code. Equality important contributions include: writing or proof-reading documentation, suggesting or implementing tests, or even giving feedback about the project (including giving feedback about the contribution process). If you’re coming to the project with fresh eyes, you might see the errors and assumptions that seasoned contributors have glossed over. If you can write any code at all, you can contribute code to open source. We are constantly trying out new skills, making mistakes, and learning from those mistakes. That’s how we all improve and we are happy to help others learn.

This disclaimer was adapted from the MetPy project.

License

This is free software: you can redistribute it and/or modify it under the terms of the BSD 3-clause License. A copy of this license is provided in LICENSE.txt.

Documentation for other versions

Release files for pooch 0.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pooch 0.5.2
File Size Uploaded
pooch-0.5.2.tar.gz 48.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pooch 0.5.2
File Interpreter ABI Platform
pooch-0.5.2-py3-none-any.whl Python 3 none any Details

Total release size: 79.5 kB

Release files / pooch-0.5.2.tar.gz

Download URL pooch-0.5.2.tar.gz
Size 48.5 kB
Tags Source
SHA-256 checksum
How to use checksums
3d1d815b6b7d0af851d6eb28e6a91d7c99e0c46a528389b37131c73661200908
BLAKE2b-256 checksum
How to use checksums
51bb0674594f2adb36353bc329839dbf83f8e6467898dd4a6815ebb2f1d29558
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.7

Release files / pooch-0.5.2-py3-none-any.whl

Download URL pooch-0.5.2-py3-none-any.whl
Size 31.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
37d224e2040cfc6050fe33ff98904e6d6266741c0b3ba860fcb1f499a6e2a264
BLAKE2b-256 checksum
How to use checksums
9a50442002c7818897b26e45a1288463b887476489ef1e40721f43d68d40b778
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.7
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page