pax_global_header 0000666 0000000 0000000 00000000064 14630363143 0014515 g ustar 00root root 0000000 0000000 52 comment=dfc69386753e3793b6960301a00c90b71656bf6f
pooch-1.8.2/ 0000775 0000000 0000000 00000000000 14630363143 0012635 5 ustar 00root root 0000000 0000000 pooch-1.8.2/.codecov.yml 0000664 0000000 0000000 00000000331 14630363143 0015055 0 ustar 00root root 0000000 0000000 codecov:
notify:
require_ci_to_pass: no
coverage:
status:
patch:
default:
target: '80'
if_no_uploads: error
if_not_found: success
if_ci_failed: failure
comment: off
pooch-1.8.2/.coveragerc 0000664 0000000 0000000 00000000077 14630363143 0014762 0 ustar 00root root 0000000 0000000 [run]
omit =
*/tests/*
*/_version.py
*/__init__.py
pooch-1.8.2/.flake8 0000664 0000000 0000000 00000000136 14630363143 0014010 0 ustar 00root root 0000000 0000000 [flake8]
ignore = E203, E266, E501, W503, F401, E741
max-line-length = 88
max-doc-length = 79
pooch-1.8.2/.gitattributes 0000664 0000000 0000000 00000000325 14630363143 0015530 0 ustar 00root root 0000000 0000000 # Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Declare test data files that will always have LF line endings on checkout (even on Windows).
pooch/tests/data/** text eol=lf
pooch-1.8.2/.github/ 0000775 0000000 0000000 00000000000 14630363143 0014175 5 ustar 00root root 0000000 0000000 pooch-1.8.2/.github/dependabot.yml 0000664 0000000 0000000 00000000672 14630363143 0017032 0 ustar 00root root 0000000 0000000 # To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
pooch-1.8.2/.github/workflows/ 0000775 0000000 0000000 00000000000 14630363143 0016232 5 ustar 00root root 0000000 0000000 pooch-1.8.2/.github/workflows/docs.yml 0000664 0000000 0000000 00000015567 14630363143 0017723 0 ustar 00root root 0000000 0000000 # Build the documentation and deploy to GitHub Pages using GitHub Actions.
#
# NOTE: Pin actions to a specific commit to avoid having the authentication
# token stolen if the Action is compromised. See the comments and links here:
# https://github.com/pypa/gh-action-pypi-publish/issues/27
#
name: documentation
# Only build PRs, the main branch, and releases. Pushes to branches will only
# be built when a PR is opened. This avoids duplicated buids in PRs comming
# from branches in the origin repository (1 for PR and 1 for push).
on:
pull_request:
push:
branches:
- main
release:
types:
- published
# Use bash by default in all jobs
defaults:
run:
shell: bash
jobs:
#############################################################################
# Build the docs
build:
runs-on: ubuntu-latest
env:
REQUIREMENTS: env/requirements-build.txt env/requirements-docs.txt
steps:
# Cancel any previous run of the test job
# We pin the commit hash corresponding to v0.5.0, and not pinning the tag
# because we are giving full access through the github.token.
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
# Checks-out your repository under $GITHUB_WORKSPACE
- name: Checkout
uses: actions/checkout@v4
with:
# Need to fetch more than the last commit so that setuptools-scm can
# create the correct version string. If the number of commits since
# the last release is greater than this, the version still be wrong.
# Increase if necessary.
fetch-depth: 100
# The GitHub token is preserved by default but this job doesn't need
# to be able to push to GitHub.
persist-credentials: false
# Need the tags so that setuptools-scm can form a valid version number
- name: Fetch git tags
run: git fetch origin 'refs/tags/*:refs/tags/*'
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Collect requirements
run: |
echo "Install Dependente to capture dependencies:"
python -m pip install dependente==0.3.0
echo ""
echo "Capturing run-time dependencies:"
dependente --source install,extras > requirements-full.txt
echo ""
echo "Capturing dependencies from:"
for requirement in $REQUIREMENTS
do
echo " $requirement"
cat $requirement >> requirements-full.txt
done
echo ""
echo "Collected dependencies:"
cat requirements-full.txt
- name: Get the pip cache folder
id: pip-cache
run: |
echo "::set-output name=dir::$(pip cache dir)"
- name: Setup caching for pip packages
uses: actions/cache@v4
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('requirements-full.txt') }}
- name: Install requirements
run: |
python -m pip install --requirement requirements-full.txt
- name: List installed packages
run: python -m pip freeze
- name: Build source and wheel distributions
run: |
make build
echo ""
echo "Generated files:"
ls -lh dist/
- name: Install the package
run: python -m pip install dist/*.whl
- name: Build the documentation
run: make -C doc clean all
# Store the docs as a build artifact so we can deploy it later
- name: Upload HTML documentation as an artifact
uses: actions/upload-artifact@v4
with:
name: docs-${{ github.sha }}
path: doc/_build/html
#############################################################################
# Publish the documentation to gh-pages
publish:
runs-on: ubuntu-latest
needs: build
if: github.event_name == 'release' || github.event_name == 'push'
steps:
- name: Checkout
uses: actions/checkout@v4
# Fetch the built docs from the "build" job
- name: Download HTML documentation artifact
uses: actions/download-artifact@v4
with:
name: docs-${{ github.sha }}
path: doc/_build/html
- name: Checkout the gh-pages branch in a separate folder
uses: actions/checkout@v4
with:
ref: gh-pages
# Checkout to this folder instead of the current one
path: deploy
# Download the entire history
fetch-depth: 0
- name: Push the built HTML to gh-pages
run: |
# Detect if this is a release or from the main branch
if [[ "${{ github.event_name }}" == "release" ]]; then
# Get the tag name without the "refs/tags/" part
version="${GITHUB_REF#refs/*/}"
else
version=dev
fi
echo "Deploying version: $version"
# Make the new commit message. Needs to happen before cd into deploy
# to get the right commit hash.
message="Deploy $version from $(git rev-parse --short HEAD)"
cd deploy
# Need to have this file so that Github doesn't try to run Jekyll
touch .nojekyll
# Delete all the files and replace with our new set
echo -e "\nRemoving old files from previous builds of ${version}:"
rm -rvf ${version}
echo -e "\nCopying HTML files to ${version}:"
cp -Rvf ../doc/_build/html/ ${version}/
# If this is a new release, update the link from /latest to it
if [[ "${version}" != "dev" ]]; then
echo -e "\nSetup link from ${version} to 'latest'."
rm -f latest
ln -sf ${version} latest
fi
# Stage the commit
git add -A .
echo -e "\nChanges to be applied:"
git status
# Configure git to be the GitHub Actions account
git config user.email "github-actions[bot]@users.noreply.github.com"
git config user.name "github-actions[bot]"
# If this is a dev build and the last commit was from a dev build
# (detect if "dev" was in the previous commit message), reuse the
# same commit
if [[ "${version}" == "dev" && `git log -1 --format='%s'` == *"dev"* ]]; then
echo -e "\nAmending last commit:"
git commit --amend --reset-author -m "$message"
else
echo -e "\nMaking a new commit:"
git commit -m "$message"
fi
# Make the push quiet just in case there is anything that could leak
# sensitive information.
echo -e "\nPushing changes to gh-pages."
git push -fq origin gh-pages 2>&1 >/dev/null
echo -e "\nFinished uploading generated files."
pooch-1.8.2/.github/workflows/pypi.yml 0000664 0000000 0000000 00000010233 14630363143 0017735 0 ustar 00root root 0000000 0000000 # Publish archives to PyPI and TestPyPI using GitHub Actions.
#
# NOTE: Pin actions to a specific commit to avoid having the authentication
# token stolen if the Action is compromised. See the comments and links here:
# https://github.com/pypa/gh-action-pypi-publish/issues/27
#
name: pypi
on:
pull_request:
push:
branches:
- main
release:
types:
- published
# Use bash by default in all jobs
defaults:
run:
shell: bash
jobs:
#############################################################################
# Build and check wheels and source distrubutions
build:
runs-on: ubuntu-latest
steps:
# Checks-out your repository under $GITHUB_WORKSPACE
- name: Checkout
uses: actions/checkout@v4
with:
# Need to fetch more than the last commit so that setuptools_scm can
# create the correct version string. If the number of commits since
# the last release is greater than this, the version will still be
# wrong. Increase if necessary.
fetch-depth: 100
# The GitHub token is preserved by default but this job doesn't need
# to be able to push to GitHub.
persist-credentials: false
# Need the tags so that setuptools-scm can form a valid version number
- name: Fetch git tags
run: git fetch origin 'refs/tags/*:refs/tags/*'
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
- name: Install requirements
run: |
python -m pip install -r env/requirements-build.txt
python -m pip install twine
- name: List installed packages
run: python -m pip freeze
- name: Don't use local version numbers for TestPyPI uploads
if: github.event_name != 'release'
run: |
# Change setuptools-scm local_scheme to "no-local-version" so the
# local part of the version isn't included, making the version string
# compatible with Test PyPI.
sed --in-place "s/node-and-date/no-local-version/g" pyproject.toml
- name: Build source and wheel distributions
run: |
make build
echo ""
echo "Generated files:"
ls -lh dist/
- name: Check the archives
run: twine check dist/*
# Store the archives as a build artifact so we can deploy them later
- name: Upload archives as artifacts
# Only if not a pull request
if: success() && github.event_name != 'pull_request'
uses: actions/upload-artifact@v4
with:
name: pypi-${{ github.sha }}
path: dist
#############################################################################
# Publish built wheels and source archives to PyPI and test PyPI
publish:
runs-on: ubuntu-latest
needs: build
# Only publish from the origin repository, not forks
if: github.repository_owner == 'fatiando' && github.event_name != 'pull_request'
environment: pypi
permissions:
# This permission allows trusted publishing to PyPI (without an API token)
id-token: write
steps:
- name: Checkout
uses: actions/checkout@v4
with:
# The GitHub token is preserved by default but this job doesn't need
# to be able to push to GitHub.
persist-credentials: false
# Fetch the built archives from the "build" job
- name: Download built archives artifact
uses: actions/download-artifact@v4
with:
name: pypi-${{ github.sha }}
path: dist
- name: Publish to Test PyPI
# Only publish to TestPyPI when a PR is merged (pushed to main)
if: success() && github.event_name == 'push'
uses: pypa/gh-action-pypi-publish@v1.8.14
with:
repository_url: https://test.pypi.org/legacy/
# Allow existing releases on test PyPI without errors.
# NOT TO BE USED in PyPI!
skip_existing: true
- name: Publish to PyPI
# Only publish to PyPI when a release triggers the build
if: success() && github.event_name == 'release'
uses: pypa/gh-action-pypi-publish@v1.8.14
pooch-1.8.2/.github/workflows/style.yml 0000664 0000000 0000000 00000003000 14630363143 0020106 0 ustar 00root root 0000000 0000000 # Linting and style checks with GitHub Actions
#
# NOTE: Pin actions to a specific commit to avoid having the authentication
# token stolen if the Action is compromised. See the comments and links here:
# https://github.com/pypa/gh-action-pypi-publish/issues/27
#
name: checks
# Only build PRs and the main branch. Pushes to branches will only be built
# when a PR is opened.
on:
pull_request:
push:
branches:
- main
###############################################################################
jobs:
format:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install requirements
run: python -m pip install -r env/requirements-style.txt
- name: List installed packages
run: python -m pip freeze
- name: Check code format
run: make check-format
style:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install requirements
run: python -m pip install -r env/requirements-style.txt
- name: List installed packages
run: python -m pip freeze
- name: Check code style
run: make check-style lint
pooch-1.8.2/.github/workflows/test.yml 0000664 0000000 0000000 00000013103 14630363143 0017732 0 ustar 00root root 0000000 0000000 # Run tests and upload to Codecov with GitHub Actions
#
# NOTE: Pin actions to a specific commit to avoid having the authentication
# token stolen if the Action is compromised. See the comments and links here:
# https://github.com/pypa/gh-action-pypi-publish/issues/27
#
name: test
# Only build PRs, the main branch, and releases. Pushes to branches will only
# be built when a PR is opened. This avoids duplicated buids in PRs comming
# from branches in the origin repository (1 for PR and 1 for push).
on:
pull_request:
push:
branches:
- main
release:
types:
- published
# Use bash by default in all jobs
defaults:
run:
shell: bash
jobs:
#############################################################################
# Run tests and upload to codecov
test:
name: ${{ matrix.os }} python=${{ matrix.python }} dependencies=${{ matrix.dependencies }}
if: ${{ github.repository_owner == 'fatiando' || github.event_name != 'schedule' }}
runs-on: ${{ matrix.os }}
strategy:
# Otherwise, the workflow would stop if a single job fails. We want to
# run all of them to catch failures in different combinations.
fail-fast: false
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
dependencies:
- oldest
- latest
- optional
include:
- dependencies: oldest
python: "3.7"
- dependencies: latest
python: "3.11"
- dependencies: optional
python: "3.11"
# test on macos-13 (x86) using oldest dependencies and python 3.7
- os: macos-13
dependencies: oldest
python: "3.7"
exclude:
# don't test on macos-latest (arm64) with oldest dependencies
- os: macos-latest
dependencies: oldest
env:
REQUIREMENTS: env/requirements-build.txt env/requirements-test.txt
# Used to tag codecov submissions
OS: ${{ matrix.os }}
PYTHON: ${{ matrix.python }}
DEPENDENCIES: ${{ matrix.dependencies }}
steps:
# Cancel any previous run of the test job
# We pin the commit hash corresponding to v0.5.0, and not pinning the tag
# because we are giving full access through the github.token.
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
# Checks-out your repository under $GITHUB_WORKSPACE
- name: Checkout
uses: actions/checkout@v4
with:
# Need to fetch more than the last commit so that setuptools-scm can
# create the correct version string. If the number of commits since
# the last release is greater than this, the version still be wrong.
# Increase if necessary.
fetch-depth: 100
# The GitHub token is preserved by default but this job doesn't need
# to be able to push to GitHub.
persist-credentials: false
# Need the tags so that setuptools-scm can form a valid version number
- name: Fetch git tags
run: git fetch origin 'refs/tags/*:refs/tags/*'
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Collect requirements
run: |
echo "Install Dependente to capture dependencies:"
python -m pip install dependente==0.3.0
echo ""
dependente_args="--source install"
if [[ "${{ matrix.dependencies }}" == "oldest" ]]; then
dependente_args="--oldest --source install,extras"
fi
if [[ "${{ matrix.dependencies }}" == "optional" ]]; then
dependente_args="--source install,extras"
fi
echo "Capturing run-time dependencies:"
dependente $dependente_args > requirements-full.txt
echo ""
echo "Capturing dependencies from:"
for requirement in $REQUIREMENTS
do
echo " $requirement"
cat $requirement >> requirements-full.txt
done
echo ""
echo "Collected dependencies:"
cat requirements-full.txt
- name: Get the pip cache folder
id: pip-cache
run: |
echo "::set-output name=dir::$(pip cache dir)"
- name: Setup caching for pip packages
uses: actions/cache@v4
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: ${{ runner.os }}-pip-${{ hashFiles('requirements-full.txt') }}
- name: Install requirements
run: |
python -m pip install --requirement requirements-full.txt
- name: Build source and wheel distributions
run: |
make build
echo ""
echo "Generated files:"
ls -lh dist/
- name: Install the package
run: python -m pip install --no-deps dist/*.whl
- name: List installed packages
run: python -m pip freeze
- name: Run the tests
run: make test
- name: Convert coverage report to XML for codecov
run: coverage xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
files: ./coverage.xml
env_vars: OS,PYTHON,DEPENDENCIES
# Don't mark the job as failed if the upload fails for some reason.
# It does sometimes but shouldn't be the reason for running
# everything again unless something else is broken.
fail_ci_if_error: false
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
pooch-1.8.2/.gitignore 0000664 0000000 0000000 00000000252 14630363143 0014624 0 ustar 00root root 0000000 0000000 *.pyc
*~
*.so
*.pyd
.pytest_cache/
build/
dist/
.*.swp
.coverage
.cache
doc/_build
doc/api/generated
.ipynb_checkpoints
*.egg-info
MANIFEST
.coverage.*
pooch/_version.py
pooch-1.8.2/.pylintrc 0000664 0000000 0000000 00000030450 14630363143 0014504 0 ustar 00root root 0000000 0000000 [MASTER]
# A comma-separated list of package or module names from where C extensions may
# be loaded. Extensions are loading into the active Python interpreter and may
# run arbitrary code
extension-pkg-whitelist=
# Add files or directories to the blacklist. They should be base names, not
# paths.
ignore=CVS,_version.py
# Add files or directories matching the regex patterns to the blacklist. The
# regex matches against base names, not paths.
ignore-patterns=
# Python code to execute, usually for sys.path manipulation such as
# pygtk.require().
#init-hook=
# Use multiple processes to speed up Pylint.
jobs=1
# List of plugins (as comma separated values of python modules names) to load,
# usually to register additional checkers.
load-plugins=
# Pickle collected data for later comparisons.
persistent=yes
# Specify a configuration file.
#rcfile=
# Allow loading of arbitrary C extensions. Extensions are imported into the
# active Python interpreter and may run arbitrary code.
unsafe-load-any-extension=no
[MESSAGES CONTROL]
# Only show warnings with the listed confidence levels. Leave empty to show
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
confidence=
# Disable the message, report, category or checker with the given id(s). You
# can either give multiple identifiers separated by comma (,) or put this
# option multiple times (only on the command line, not in the configuration
# file where it should appear only once).You can also use "--disable=all" to
# disable everything first and then reenable specific checks. For example, if
# you want to run only the similarities checker, you can use "--disable=all
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
disable=raw-checker-failed,bad-inline-option,locally-disabled,file-ignored,suppressed-message,deprecated-pragma,attribute-defined-outside-init,similarities,,import-error
# Enable the message, report, category or checker with the given id(s). You can
# either give multiple identifier separated by comma (,) or put this option
# multiple time (only on the command line, not in the configuration file where
# it should appear only once). See also the "--disable" option for examples.
enable=
[REPORTS]
# Python expression which should return a note less than 10 (10 is the highest
# note). You have access to the variables errors warning, statement which
# respectively contain the number of errors / warnings messages and the total
# number of statements analyzed. This is used by the global evaluation report
# (RP0004).
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
# Template used to display messages. This is a python new-style format string
# used to format the message information. See doc for all details
#msg-template=
# Set the output format. Available formats are text, parseable, colorized, json
# and msvs (visual studio).You can also give a reporter class, eg
# mypackage.mymodule.MyReporterClass.
output-format=text
# Tells whether to display a full report or only the messages
reports=no
# Activate the evaluation score.
score=yes
[REFACTORING]
# Maximum number of nested blocks for function / method body
max-nested-blocks=5
[FORMAT]
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
expected-line-ending-format=
# Regexp for a line that is allowed to be longer than the limit.
ignore-long-lines=^\s*(# )??$
# Number of spaces of indent required inside a hanging or continued line.
indent-after-paren=4
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
# tab).
indent-string=' '
# Maximum number of characters on a single line.
max-line-length=100
# Maximum number of lines in a module
max-module-lines=2000
# Allow the body of a class to be on the same line as the declaration if body
# contains single statement.
single-line-class-stmt=no
# Allow the body of an if to be on the same line as the test if there is no
# else.
single-line-if-stmt=no
[VARIABLES]
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
additional-builtins=
# Tells whether unused global variables should be treated as a violation.
allow-global-unused-variables=yes
# List of strings which can identify a callback function by name. A callback
# name must start or end with one of those strings.
callbacks=cb_,_cb
# A regular expression matching the name of dummy variables (i.e. expectedly
# not used).
dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
# Argument names that match this expression will be ignored. Default to name
# with leading underscore
ignored-argument-names=_.*|^ignored_|^unused_
# Tells whether we should check for unused import in __init__ files.
init-import=no
# List of qualified module names which can have objects that can redefine
# builtins.
redefining-builtins-modules=six.moves,future.builtins
[SIMILARITIES]
# Ignore comments when computing similarities.
ignore-comments=yes
# Ignore docstrings when computing similarities.
ignore-docstrings=yes
# Ignore imports when computing similarities.
ignore-imports=yes
# Minimum lines number of a similarity.
min-similarity-lines=3
[LOGGING]
# Logging modules to check that the string format arguments are in logging
# function parameter format
logging-modules=logging
[SPELLING]
# Spelling dictionary name. Available dictionaries: none. To make it working
# install python-enchant package.
spelling-dict=
# List of comma separated words that should not be checked.
spelling-ignore-words=
# A path to a file that contains private dictionary; one word per line.
spelling-private-dict-file=
# Tells whether to store unknown words to indicated private dictionary in
# --spelling-private-dict-file option instead of raising a message.
spelling-store-unknown-words=no
[BASIC]
# Regular expression matching correct argument names
argument-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
# Regular expression matching correct attribute names
attr-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
# Bad variable names which should always be refused, separated by a comma
bad-names=foo,bar,baz,toto,tutu,tata
# Regular expression matching correct class attribute names
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
# Regular expression matching correct class names
class-rgx=[A-Z_][a-zA-Z0-9]+$
# Regular expression matching correct constant names
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
# Minimum line length for functions/classes that require docstrings, shorter
# ones are exempt.
docstring-min-length=-1
# Regular expression matching correct function names
function-rgx=(([a-z][a-z0-9_]{2,50})|(_[a-z0-9_]*))$
# Good variable names which should always be accepted, separated by a comma
good-names=i,j,k,w,e,s,n,x,y,z,cv,ax
# Include a hint for the correct naming format with invalid-name
include-naming-hint=no
# Regular expression matching correct inline iteration names
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
# Regular expression matching correct method names
method-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
# Regular expression matching correct module names
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
# Colon-delimited sets of names that determine each other's naming style when
# the name regexes allow several styles.
name-group=
# Regular expression which should only match function or class names that do
# not require a docstring.
no-docstring-rgx=^_
# List of decorators that produce properties, such as abc.abstractproperty. Add
# to this list to register other decorators that produce valid properties.
property-classes=abc.abstractproperty
# Regular expression matching correct variable names
variable-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
[TYPECHECK]
# List of decorators that produce context managers, such as
# contextlib.contextmanager. Add to this list to register other decorators that
# produce valid context managers.
contextmanager-decorators=contextlib.contextmanager
# List of members which are set dynamically and missed by pylint inference
# system, and so shouldn't trigger E1101 when accessed. Python regular
# expressions are accepted.
generated-members=
# Tells whether missing members accessed in mixin class should be ignored. A
# mixin class is detected if its name ends with "mixin" (case insensitive).
ignore-mixin-members=yes
# This flag controls whether pylint should warn about no-member and similar
# checks whenever an opaque object is returned when inferring. The inference
# can return multiple potential results while evaluating a Python object, but
# some branches might not be evaluated, which results in partial inference. In
# that case, it might be useful to still emit no-member and other checks for
# the rest of the inferred objects.
ignore-on-opaque-inference=yes
# List of class names for which member attributes should not be checked (useful
# for classes with dynamically set attributes). This supports the use of
# qualified names.
ignored-classes=optparse.Values,thread._local,_thread._local
# List of module names for which member attributes should not be checked
# (useful for modules/projects where namespaces are manipulated during runtime
# and thus existing member attributes cannot be deduced by static analysis. It
# supports qualified module names, as well as Unix pattern matching.
ignored-modules=
# Show a hint with possible names when a member name was not found. The aspect
# of finding the hint is based on edit distance.
missing-member-hint=yes
# The minimum edit distance a name should have in order to be considered a
# similar match for a missing member name.
missing-member-hint-distance=1
# The total number of similar names that should be taken in consideration when
# showing a hint for a missing member.
missing-member-max-choices=1
[MISCELLANEOUS]
# List of note tags to take in consideration, separated by a comma.
notes=FIXME,XXX,TODO
[DESIGN]
# Maximum number of arguments for function / method
max-args=10
# Maximum number of attributes for a class (see R0902).
max-attributes=10
# Maximum number of boolean expressions in a if statement
max-bool-expr=5
# Maximum number of branch for function / method body
max-branches=12
# Maximum number of locals for function / method body
max-locals=15
# Maximum number of parents for a class (see R0901).
max-parents=7
# Maximum number of public methods for a class (see R0904).
max-public-methods=20
# Maximum number of return / yield for function / method body
max-returns=6
# Maximum number of statements in function / method body
max-statements=50
# Minimum number of public methods for a class (see R0903).
min-public-methods=2
[IMPORTS]
# Allow wildcard imports from modules that define __all__.
allow-wildcard-with-all=no
# Analyse import fallback blocks. This can be used to support both Python 2 and
# 3 compatible code, which means that the block might have code that exists
# only in one or another interpreter, leading to false positives when analysed.
analyse-fallback-blocks=no
# Deprecated modules which should not be used, separated by a comma
deprecated-modules=optparse,tkinter.tix
# Create a graph of external dependencies in the given file (report RP0402 must
# not be disabled)
ext-import-graph=
# Create a graph of every (i.e. internal and external) dependencies in the
# given file (report RP0402 must not be disabled)
import-graph=
# Create a graph of internal dependencies in the given file (report RP0402 must
# not be disabled)
int-import-graph=
# Force import order to recognize a module as part of the standard
# compatibility libraries.
known-standard-library=
# Force import order to recognize a module as part of a third party library.
known-third-party=enchant
[CLASSES]
# List of method names used to declare (i.e. assign) instance attributes.
defining-attr-methods=__init__,__new__,setUp
# List of member names, which should be excluded from the protected access
# warning.
exclude-protected=_asdict,_fields,_replace,_source,_make
# List of valid names for the first argument in a class method.
valid-classmethod-first-arg=cls
# List of valid names for the first argument in a metaclass class method.
valid-metaclass-classmethod-first-arg=mcs
[EXCEPTIONS]
# Exceptions that will emit a warning when being caught. Defaults to
# "Exception"
overgeneral-exceptions=Exception
pooch-1.8.2/AUTHORS.md 0000664 0000000 0000000 00000006335 14630363143 0014313 0 ustar 00root root 0000000 0000000 # Project Authors
The following people have made contributions to the project (in alphabetical
order by last name) and are considered "The Pooch Developers":
* [Anderson Banihirwe](https://github.com/andersy005) - The US National Center for Atmospheric Research, USA (ORCID: [0000-0001-6583-571X](https://orcid.org/0000-0001-6583-571X))
* [Genevieve Buckley](https://github.com/GenevieveBuckley) - Monash University, Australia - (ORCID: [0000-0003-2763-492X](https://orcid.org/0000-0003-2763-492X))
* [Luke Gregor](https://github.com/lukegre) - Environmental Physics, ETH Zurich, Zurich, Switzerland (ORCID: [0000-0001-6071-1857](https://orcid.org/0000-0001-6071-1857))
* [Mathias Hauser](https://github.com/mathause) - Institute for Atmospheric and Climate Science, ETH Zurich, Zurich, Switzerland (ORCID: [0000-0002-0057-4878](https://orcid.org/0000-0002-0057-4878))
* [Mark Harfouche](https://github.com/hmaarrfk) - Ramona Optics Inc. - [0000-0002-4657-4603](https://orcid.org/0000-0002-4657-4603)
* [Danilo Horta](https://github.com/horta) - EMBL-EBI, UK
* [Hugo van Kemenade](https://github.com/hugovk) - Independent (Non-affiliated) (ORCID: [0000-0001-5715-8632](https://www.orcid.org/0000-0001-5715-8632))
* [Dominic Kempf](https://github.com/dokempf) - Scientific Software Center, Heidelberg University, Germany (ORCID: [0000-0002-6140-2332](https://www.orcid.org/0000-0002-6140-2332))
* [Kacper Kowalik](https://github.com/Xarthisius) - National Center for Supercomputing Applications, University of Illinois at Urbana-Champaign, USA (ORCID: [0000-0003-1709-3744](https://www.orcid.org/0000-0003-1709-3744))
* [John Leeman](https://github.com/jrleeman)
* [Björn Ludwig](https://github.com/BjoernLudwigPTB) - Physikalisch-Technische Bundesanstalt, Germany (ORCID: [0000-0002-5910-9137](https://www.orcid.org/0000-0002-5910-9137))
* [Daniel McCloy](https://github.com/drammock) - University of Washington, USA (ORCID: [0000-0002-7572-3241](https://orcid.org/0000-0002-7572-3241))
* [Juan Nunez-Iglesias](https://github.com/jni) - Monash University, Australia (ORCID: [0000-0002-7239-5828](https://orcid.org/0000-0002-7239-5828))
* [Rémi Rampin](https://github.com/remram44) - New York University, USA (ORCID: [0000-0002-0524-2282](https://www.orcid.org/0000-0002-0524-2282))
* [Clément Robert](https://github.com/neutrinoceros) - Institut de Planétologie et d'Astrophysique de Grenoble, France (ORCID: [0000-0001-8629-7068](https://orcid.org/0000-0001-8629-7068))
* [Daniel Shapero](https://github.com/danshapero) - Polar Science Center, University of Washington Applied Physics Lab, USA (ORCID: [0000-0002-3651-0649](https://www.orcid.org/0000-0002-3651-0649))
* [Santiago Soler](https://github.com/santisoler) - CONICET, Argentina; Instituto Geofísico Sismológico Volponi, Universidad Nacional de San Juan, Argentina (ORCID: [0000-0001-9202-5317](https://www.orcid.org/0000-0001-9202-5317))
* [Matthew Turk](https://github.com/matthewturk) - University of Illinois at Urbana-Champaign, USA (ORCID: [0000-0002-5294-0198](https://www.orcid.org/0000-0002-5294-0198))
* [Leonardo Uieda](https://github.com/leouieda) - Universidade de São Paulo, Brazil (ORCID: [0000-0001-6123-9515](https://www.orcid.org/0000-0001-6123-9515))
* [Antonio Valentino](https://github.com/avalentino)
pooch-1.8.2/CITATION.cff 0000664 0000000 0000000 00000003405 14630363143 0014531 0 ustar 00root root 0000000 0000000 cff-version: 1.2.0
title: 'Pooch: A friend to fetch your data files'
message: >-
If you use this software, please cite it using the
information in this file.
type: software
url: 'https://www.fatiando.org/pooch/'
repository-code: 'https://github.com/fatiando/pooch'
repository-artifact: 'https://pypi.org/project/pooch/'
license: BSD-3-Clause
preferred-citation:
type: article
title: 'Pooch: A friend to fetch your data files'
journal: Journal of Open Source Software
year: 2020
doi: 10.21105/joss.01943
volume: 5
issue: 45
start: 1943
license: CC-BY-4.0
authors:
- given-names: Leonardo
family-names: Uieda
affiliation: University of Liverpool
orcid: 'https://orcid.org/0000-0001-6123-9515'
- given-names: Santiago Rubén
family-names: Soler
affiliation: Universidad Nacional de San Juan
orcid: 'https://orcid.org/0000-0001-9202-5317'
- given-names: Rémi
family-names: Rampin
affiliation: New York University
orcid: 'https://orcid.org/0000-0002-0524-2282'
- given-names: Hugo
name-particle: van
family-names: Kemenade
orcid: 'https://orcid.org/0000-0001-5715-8632'
- given-names: Matthew
family-names: Turk
affiliation: School of Information Sciences
orcid: 'https://orcid.org/0000-0002-5294-0198'
- given-names: Daniel
family-names: Shapero
affiliation: University of Washington
orcid: 'https://orcid.org/0000-0002-3651-0649'
- given-names: Anderson
family-names: Banihirwe
affiliation: National Center for Atmospheric Research
orcid: 'https://orcid.org/0000-0001-6583-571X'
- given-names: John
family-names: Leeman
affiliation: Leeman Geophysical
orcid: 'https://orcid.org/0000-0002-3624-1821'
pooch-1.8.2/CITATION.rst 0000664 0000000 0000000 00000002352 14630363143 0014603 0 ustar 00root root 0000000 0000000 Citing Pooch
============
This is research software **made by scientists**. Citations help us justify the
effort that goes into building and maintaining this project.
If you used Pooch in your research, please consider citing our paper:
Uieda, L., Soler, S.R., Rampin, R., van Kemenade, H., Turk, M., Shapero,
D., Banihirwe, A., and Leeman, J. (2020). Pooch: A friend to fetch your
data files. Journal of Open Source Software, 5(45), 1943.
doi:10.21105/joss.01943
This is an open-access publication. The paper and the associated software
review can be freely accessed at: https://doi.org/10.21105/joss.01943
Here is a Bibtex entry to make things easier if you’re using Latex:
.. code:: bibtex
@article{uieda2020,
title = {{Pooch}: {A} friend to fetch your data files},
author = {Leonardo Uieda and Santiago Soler and R{\'{e}}mi Rampin and Hugo van Kemenade and Matthew Turk and Daniel Shapero and Anderson Banihirwe and John Leeman},
year = {2020},
doi = {10.21105/joss.01943},
url = {https://doi.org/10.21105/joss.01943},
month = jan,
publisher = {The Open Journal},
volume = {5},
number = {45},
pages = {1943},
journal = {Journal of Open Source Software}
}
pooch-1.8.2/CODE_OF_CONDUCT.md 0000664 0000000 0000000 00000000234 14630363143 0015433 0 ustar 00root root 0000000 0000000 # Contributor Code of Conduct
Please refer to our organization-wide
[Code of Conduct](https://github.com/fatiando/community/blob/main/CODE_OF_CONDUCT.md).
pooch-1.8.2/CONTRIBUTING.md 0000664 0000000 0000000 00000003056 14630363143 0015072 0 ustar 00root root 0000000 0000000 # Contributing Guidelines
:tada: **First off, thank you for considering contributing to our project!** :tada:
This is a community-driven project, so it's people like you that make it useful
and successful.
These are some of the many ways to contribute:
* :bug: Submitting bug reports and feature requests
* :memo: Writing tutorials or examples
* :mag: Fixing typos and improving to the documentation
* :bulb: Writing code for everyone to use
**Please refer to our [organization-wide guidelines][contrib]**
for general instructions on how to contribute to Fatiando projects.
## Ground Rules
The goal is to maintain a diverse community that's pleasant for everyone.
**Please be considerate and respectful of others**.
Everyone must abide by our [Code of Conduct][coc] and we encourage all to read
it carefully.
## Authorship and credit
We strive to adequately reward and credit all those who contribute to our
project in any way.
This can vary from an acknowledgment in the release notes to authorship in
scientific publications.
**Please refer to our [Authorship Guidelines][authorship]** for more
information.
## For maintainers
You'll find more information about project maintenance (releases, reviews, etc)
in our organization-wide [Maintainers Guide][maintenance].
[coc]: https://github.com/fatiando/community/blob/main/CODE_OF_CONDUCT.md
[contrib]: https://github.com/fatiando/community/blob/main/CONTRIBUTING.md
[maintenance]: https://github.com/fatiando/community/blob/main/MAINTENANCE.md
[authorship]: https://github.com/fatiando/community/blob/main/AUTHORSHIP.md
pooch-1.8.2/LICENSE.txt 0000664 0000000 0000000 00000002730 14630363143 0014462 0 ustar 00root root 0000000 0000000 Copyright (c) 2018 The Pooch Developers
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holders nor the names of any contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
pooch-1.8.2/MANIFEST.in 0000664 0000000 0000000 00000000464 14630363143 0014377 0 ustar 00root root 0000000 0000000 # Exclude these files from source distributions.
# setuptools_scm includes everything else by default.
prune .github
prune data
prune doc
prune env
prune paper
prune tools
exclude .*.yml
exclude .*rc
exclude Makefile
exclude .gitignore
exclude .gitattributes
exclude environment.yml
include pooch/tests/data
pooch-1.8.2/Makefile 0000664 0000000 0000000 00000003004 14630363143 0014272 0 ustar 00root root 0000000 0000000 # Build, package, test, and clean
PROJECT=pooch
TESTDIR=tmp-test-dir-with-unique-name
PYTEST_ARGS=--cov-config=../.coveragerc --cov-report=term-missing --cov=$(PROJECT) --doctest-modules -v --pyargs
LINT_FILES=$(PROJECT)
CHECK_STYLE=$(PROJECT) doc
help:
@echo "Commands:"
@echo ""
@echo " install install in editable mode"
@echo " test run the test suite (including doctests) and report coverage"
@echo " format automatically format the code"
@echo " check run code style and quality checks"
@echo " lint run pylint for a deeper (and slower) quality check"
@echo " build build source and wheel distributions"
@echo " clean clean up build and generated files"
@echo ""
build:
python -m build .
install:
python -m pip install --no-deps -e .
test:
# Run a tmp folder to make sure the tests are run on the installed version
mkdir -p $(TESTDIR)
cd $(TESTDIR); pytest $(PYTEST_ARGS) $(PROJECT)
cp $(TESTDIR)/.coverage* .
rm -r $(TESTDIR)
format:
black $(CHECK_STYLE)
burocrata --extension=py $(CHECK_STYLE)
check: check-format check-style
check-format:
black --check $(CHECK_STYLE)
burocrata --check --extension=py $(CHECK_STYLE)
check-style:
flake8 $(CHECK_STYLE)
lint:
pylint --jobs=0 $(LINT_FILES)
clean:
find . -name "*.pyc" -exec rm -v {} \;
find . -name "*.orig" -exec rm -v {} \;
find . -name ".coverage.*" -exec rm -v {} \;
rm -rvf build dist MANIFEST *.egg-info __pycache__ .coverage .cache .pytest_cache $(PROJECT)/_version.py
rm -rvf $(TESTDIR) dask-worker-space
pooch-1.8.2/README.md 0000664 0000000 0000000 00000021117 14630363143 0014116 0 ustar 00root root 0000000 0000000
Documentation (latest) • Documentation (main branch) • Contributing • Contact
Part of the Fatiando a Terra project
## About > Just want to download a file without messing with `requests` and `urllib`? > Trying to add sample datasets to your Python package? > **Pooch is here to help!** *Pooch* is a **Python library** that can manage data by **downloading files** from a server (only when needed) and storing them locally in a data **cache** (a folder on your computer). * Pure Python and minimal dependencies. * Download files over HTTP, FTP, and from data repositories like Zenodo and figshare. * Built-in post-processors to unzip/decompress the data after download. * Designed to be extended: create custom downloaders and post-processors. Are you a **scientist** or researcher? Pooch can help you too! * Host your data on a repository and download using the DOI. * Automatically download data using code instead of telling colleagues to do it themselves. * Make sure everyone running the code has the same version of the data files. ## Projects using Pooch [SciPy](https://github.com/scipy/scipy), [scikit-image](https://github.com/scikit-image/scikit-image), [xarray](https://github.com/pydata/xarray), [Ensaio](https://github.com/fatiando/ensaio), [GemPy](https://github.com/cgre-aachen/gempy), [MetPy](https://github.com/Unidata/MetPy), [napari](https://github.com/napari/napari), [Satpy](https://github.com/pytroll/satpy), [yt](https://github.com/yt-project/yt), [PyVista](https://github.com/pyvista/pyvista), [icepack](https://github.com/icepack/icepack), [histolab](https://github.com/histolab/histolab), [seaborn-image](https://github.com/SarthakJariwala/seaborn-image), [Open AR-Sandbox](https://github.com/cgre-aachen/open_AR_Sandbox), [climlab](https://github.com/climlab/climlab), [mne-python](https://github.com/mne-tools/mne-python), [GemGIS](https://github.com/cgre-aachen/gemgis), [SHTOOLS](https://github.com/SHTOOLS/SHTOOLS), [MOABB](https://github.com/NeuroTechX/moabb), [GeoViews](https://github.com/holoviz/geoviews), [ScopeSim](https://github.com/AstarVienna/ScopeSim), [Brainrender](https://github.com/brainglobe/brainrender), [pyxem](https://github.com/pyxem/pyxem), [cellfinder](https://github.com/brainglobe/cellfinder), [PVGeo](https://github.com/OpenGeoVis/PVGeo), [geosnap](https://github.com/oturns/geosnap), [BioCypher](https://github.com/biocypher/biocypher), [cf-xarray](https://github.com/xarray-contrib/cf-xarray), [Scirpy](https://github.com/scverse/scirpy), [rembg](https://github.com/danielgatis/rembg), [DASCore](https://github.com/DASDAE/dascore), [scikit-mobility](https://github.com/scikit-mobility/scikit-mobility), [Py-ART](https://github.com/ARM-DOE/pyart), [HyperSpy](https://github.com/hyperspy/hyperspy), [RosettaSciIO](https://github.com/hyperspy/rosettasciio), [eXSpy](https://github.com/hyperspy/exspy) > If you're using Pooch, **send us a pull request** adding your project to the list. ## Example For a **scientist downloading a data file** for analysis: ```python import pooch import pandas as pd # Download a file and save it locally, returning the path to it. # Running this again will not cause a download. Pooch will check the hash # (checksum) of the downloaded file against the given value to make sure # it's the right file (not corrupted or outdated). fname_bathymetry = pooch.retrieve( url="https://github.com/fatiando-data/caribbean-bathymetry/releases/download/v1/caribbean-bathymetry.csv.xz", known_hash="md5:a7332aa6e69c77d49d7fb54b764caa82", ) # Pooch can also download based on a DOI from certain providers. fname_gravity = pooch.retrieve( url="doi:10.5281/zenodo.5882430/southern-africa-gravity.csv.xz", known_hash="md5:1dee324a14e647855366d6eb01a1ef35", ) # Load the data with Pandas data_bathymetry = pd.read_csv(fname_bathymetry) data_gravity = pd.read_csv(fname_gravity) ``` For **package developers** including sample data in their projects: ```python """ Module mypackage/datasets.py """ import pkg_resources import pandas 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="main", # 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": "89y10phsdwhs09whljwc09whcowsdhcwodcydw"} ) # 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 packaged # and distributed with your software. GOODBOY.load_registry( pkg_resources.resource_stream("mypackage", "registry.txt") ) # Define functions that your users can call to get back the 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 storage. If it's not there, # we'll download it. fname = GOODBOY.fetch("gravity-data.csv") # Load it with numpy/pandas/etc data = pandas.read_csv(fname) return data ``` ## Getting involved 🗨️ **Contact us:** Find out more about how to reach us at [fatiando.org/contact](https://www.fatiando.org/contact/). 👩🏾💻 **Contributing to project development:** Please read our [Contributing Guide](https://github.com/fatiando/pooch/blob/main/CONTRIBUTING.md) to see how you can help and give feedback. 🧑🏾🤝🧑🏼 **Code of conduct:** This project is released with a [Code of Conduct](https://github.com/fatiando/community/blob/main/CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms. > **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, that you aren't skilled > enough to contribute. We assure you that the little voice in your head is > wrong. Most importantly, **there are many valuable ways to contribute besides > writing code**. > > *This disclaimer was adapted from the* > [MetPy project](https://github.com/Unidata/MetPy). ## 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`](https://github.com/fatiando/pooch/blob/main/LICENSE.txt). pooch-1.8.2/data/ 0000775 0000000 0000000 00000000000 14630363143 0013546 5 ustar 00root root 0000000 0000000 pooch-1.8.2/data/store.zip 0000664 0000000 0000000 00000001414 14630363143 0015426 0 ustar 00root root 0000000 0000000 PK M store/UT |{[|{[ux PK M store/subdir/UT |{[|{[ux PK Mm; ; store/subdir/tiny-data.txtUT |{[|{[ux # A tiny data file for test purposes only 1 2 3 4 5 6 PK Mm; ; store/tiny-data.txtUT |{[|{[ux # A tiny data file for test purposes only 1 2 3 4 5 6 PK M A store/UT |{[ux PK M A@ store/subdir/UT |{[ux PK Mm; ; store/subdir/tiny-data.txtUT |{[ux PK Mm; ; store/tiny-data.txtUT |{[ux PK X pooch-1.8.2/data/subdir/ 0000775 0000000 0000000 00000000000 14630363143 0015036 5 ustar 00root root 0000000 0000000 pooch-1.8.2/data/subdir/tiny-data.txt 0000664 0000000 0000000 00000000073 14630363143 0017471 0 ustar 00root root 0000000 0000000 # A tiny data file for test purposes only 1 2 3 4 5 6 pooch-1.8.2/data/tiny-data.txt 0000664 0000000 0000000 00000000073 14630363143 0016201 0 ustar 00root root 0000000 0000000 # A tiny data file for test purposes only 1 2 3 4 5 6 pooch-1.8.2/doc/ 0000775 0000000 0000000 00000000000 14630363143 0013402 5 ustar 00root root 0000000 0000000 pooch-1.8.2/doc/Makefile 0000664 0000000 0000000 00000003141 14630363143 0015041 0 ustar 00root root 0000000 0000000 # Makefile for Sphinx documentation # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build SPHINXAUTOGEN = sphinx-autogen BUILDDIR = _build # Internal variables. ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(SPHINXOPTS) . .PHONY: help clean html linkcheck doctest api all: html help: @echo "Please use \`make