Skip to main content

Official Python client for fetching finwave datasets over the dataset-API handshake.

Project description

wavefront

The official Python client for Finwave datasets.

Finwave serves frozen, versioned wildlife photo-identification and detector datasets behind a small handshake API. wavefront turns that into one call.

pip install finwave-wavefront

Quick start

import wavefront

# the API key is read from $FW_API_TOKEN (or passed as api_key=...)
ds = wavefront.fetch("a7673931-9810-4c52-9654-1c9b1fafb63d", format="yolo")

print(ds.path)          # extracted, ready to train on
print(ds.classes)       # ['fluke']
print(ds.num_images)    # 497
print(ds.fingerprint)   # content hash — record it next to any model you train

ds is path-like, so it drops straight into a trainer:

from ultralytics import YOLO
YOLO("yolo11n.pt").train(data=f"{ds.path}/data.yaml")

Pre-flight without downloading

m = wavefront.manifest("a7673931-9810-4c52-9654-1c9b1fafb63d")
print(m.name, m.sample_count, m.available_formats)   # Flukes v1 497 ['Yolo']

A reusable client

from wavefront import Client
client = Client(api_key="...", base_url="https://finwave.io")
ds = client.fetch(dataset_id, format="yolo", dest="./data/flukes")

Command line

export FW_API_TOKEN=...
wavefront manifest a7673931-9810-4c52-9654-1c9b1fafb63d
wavefront fetch    a7673931-9810-4c52-9654-1c9b1fafb63d --format yolo --dest ./data/flukes

How it works

  1. GET /manifest — cheap metadata + which export formats are ready.
  2. GET ?format=… — a handshake that mints a short-lived signed download URL.
  3. Download that URL → a zip → extract → a Dataset.

Downloads are cached by content fingerprint, so re-fetching a frozen version is a no-op. The key needs the dataset-download scope.

Authentication

Provide the key explicitly (fetch(..., api_key=...)) or set FW_API_TOKEN. For compatibility, WAVEFRONT_API_KEY, FINWAVE_DATASET_API_KEY and DATASET_API_KEY are also accepted (in that order).

Errors

All errors subclass wavefront.WavefrontError:

Exception When
AuthError key missing / rejected (401/403)
DatasetNotFoundError no such version, or not visible to the key (404)
FormatNotAvailableError the version exists but that export hasn't been generated yet (.available lists what is)
APIError any other non-success response

License

MIT © Alexander Barnhill / Operational Ecology. A partnership artifact between finwave and Operational Ecology.

Project details


Download files

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

Source Distribution

finwave_wavefront-0.1.0.tar.gz (24.0 kB view details)

Uploaded Source

Built Distribution

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

finwave_wavefront-0.1.0-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file finwave_wavefront-0.1.0.tar.gz.

File metadata

  • Download URL: finwave_wavefront-0.1.0.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for finwave_wavefront-0.1.0.tar.gz
Algorithm Hash digest
SHA256 40362eef0cc57c261f9a107134ccb849a4d33769d1d7fc3cd1e1648a5528b9e3
MD5 62a3a9b1df430bb11ed34c27a8e58137
BLAKE2b-256 c4f5203c4d61f837668e3738f5370cdd7c62e239e5c0bcb0ba4a68bccb4edfdb

See more details on using hashes here.

File details

Details for the file finwave_wavefront-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: finwave_wavefront-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for finwave_wavefront-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e95a9c0960ddb8e5fdb46ed2a6c9c4b1f98b21d45ea56853108682b074fe9535
MD5 8db24e1608ca0a833134d214104545b7
BLAKE2b-256 202408239d34f7f5bd042d2a1e6276a6172790759c5f814fc5049575d069bc28

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page