Skip to main content

Dew Drop: A command line tool for the Dewey Data API

A simple Python 3 client for the Dewey Data API that can be used to fetch product information and download files.

usage: dewdrop [-h] [-k KEY] [-v] [--params PARAMS] [--debug] [--sleep SLEEP]
               {meta,describe,download,list} ...

Fetch data from Dewey Data.

positional arguments:
  {meta,describe,download,list}
    meta                Fetch metadata for product.
    describe            Fetch description of product.
    download            Download files for product.
    list                List files for product.

options:
  -h, --help            show this help message and exit
  -k KEY, --key KEY     API key.
  -v, --verbose         Enable log.
  --params PARAMS       Additional parameters.
  --debug               Enable debug mode.
  --sleep SLEEP         Delay between requests

NOTE: I have no affiliation with Dewey Data and this is not an official Dewey Data client. If you're looking for an official Python client, try deweypy.

Installation

The package requires Python 3.10 or later and can be installed from PyPI:

pip install dewdrop

Identifying products

Every command takes a product identifier. In the Dewey web app, each table has an API URL that looks like this:

https://api.deweydata.io/api/v1/external/data/prj_xxxxxxxx__fldr_yyyyyyyyyyyyyyyy

Either the full URL or the identifier at the end of it (here, prj_xxxxxxxx__fldr_yyyyyyyyyyyyyyyy) can be used with dewdrop. Note that the identifier includes the project (prj_) as well as the folder (fldr_).

Commands

meta

Get metadata (file count, total size, partitioning) for a product:

dewdrop meta prj_xxxxxxxx__fldr_yyyyyyyyyyyyyyyy

By default, the API key is read from the DEWEY_API_KEY environment variable. To set it manually, use the key option:

dewdrop -k YOUR_API_KEY meta prj_xxxxxxxx__fldr_yyyyyyyyyyyyyyyy

describe

Get the description of a product, which includes the dataset name, the data partner, the version timestamp, and DOI information when available:

dewdrop describe prj_xxxxxxxx__fldr_yyyyyyyyyyyyyyyy

list

List all file info for a product.

dewdrop list prj_xxxxxxxx__fldr_yyyyyyyyyyyyyyyy

The file information will be written to standard output. You can, of course, redirect this to a file if you want to save it:

dewdrop list prj_xxxxxxxx__fldr_yyyyyyyyyyyyyyyy > file_info.tsv

See dewdrop list --help for full options.

download

Download all files for a product.

dewdrop download prj_xxxxxxxx__fldr_yyyyyyyyyyyyyyyy destination-folder-path

Files will be placed in destination-folder-path, which will be created if it does not exist. Additionally, the file information will be written to standard output as with the list command.

By default, the downloaded files will be organized by the partition_key value that the API returns with each file. To ignore this, specify the option --no-partition. See dewdrop download --help for full options.

Files that already exist in the destination with the size reported by the API are skipped, so an interrupted download can be resumed by re-running the same command. Use --clobber to download everything again. If two different files in a listing would be written to the same path, the download stops with an error rather than overwriting either of them.

Request parameters

Additional parameters can be passed to the API using the --params option. This is useful when downloading partitioned products. The option expects a JSON object, which can be difficult to enter as a string on the command line. One option is to put the parameters in a JSON file and pass the file contents to the argument like this:

dewdrop --params "$(<params.json)" download prj_xxxxxxxx__fldr_yyyyyyyyyyyyyyyy destination-folder-path

Where a params.json file to download data for 2022 might look like this:

{
"partition_key_after":  "2022-01-01",
"partition_key_before": "2022-12-31"
}

Both bounds are inclusive.

Checking output

Each file is downloaded to a temporary .part file, its size is compared to the size reported by the API, and only then is it moved into place. A mismatch is retried and, if it persists, reported as an error. To confirm the file count after a download finishes, compare the total_files value from meta with:

find destination-folder-path -type f | wc -l

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dewdrop-0.4.0.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dewdrop-0.4.0-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file dewdrop-0.4.0.tar.gz.

File metadata

  • Download URL: dewdrop-0.4.0.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dewdrop-0.4.0.tar.gz
Algorithm Hash digest
SHA256 e852ade5364d4232474caa44355119b21f483a107f2fd21c1bdfe48661096399
MD5 a520726ed558bb689beb569c015666d5
BLAKE2b-256 847fb1b04ed63c819e5646335911f84bf875bf072265a319945c5561e82bcc63

See more details on using hashes here.

File details

Details for the file dewdrop-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: dewdrop-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.6 {"installer":{"name":"uv","version":"0.12.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dewdrop-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 49d8bcd7d6884fcc3cba12ca43d043ec4f7124de4c4899869172969e9250a383
MD5 53b5d6ea2e867e8f51ba8965a55fd882
BLAKE2b-256 80d5d871a237af221ca3b9042bfbfc7290b3c3862187725b514a20572c047e75

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 files

0.3.0

2 files

0.2.0

2 files

0.1.2

2 files

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