Skip to main content

DexVerse dataset downloader for S3-compatible robot training datasets

Project description

DexVerse Downloader (dexverse)

S3-compatible batch downloader for robot-training datasets.

manifest → dexverse-dl → s5cmd → MinIO / S3 → original-path landing

The downloader never reorganizes your dataset directory. Local paths come from the manifest's relativePath (falling back to originalPath, then objectKey):

localPath = out / (file.relativePath || file.originalPath || file.objectKey)

Install

pip install "dexverse[s3,mock]"          # boto3 + fastapi mock server
# optional, recommended download kernel:
#   install s5cmd (https://github.com/peak/s5cmd) and put it on PATH

Development:

uv venv && . .venv/bin/activate          # Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"

Quick start — Local Manifest mode (Phase 0)

export AWS_ACCESS_KEY_ID="minio_access_key"
export AWS_SECRET_ACCESS_KEY="minio_secret_key"
export AWS_REGION="us-east-1"

dexverse-dl download --manifest ./manifest.json --out /data/dexverse

Result:

/data/dexverse/datasets/aaa_test/v1/episodes/episode_000001.hdf5

If s5cmd is not installed, fall back to the pure-Python backend:

dexverse-dl download --manifest ./manifest.json --out /data/dexverse --backend python

Quick start — Presigned-URL mode (no login, no S3 creds)

If your backend issues short-lived presigned URLs per file (self-authenticating HTTPS links), put them in the manifest and use the http backend. No login, no AWS_* credentials, no s5cmd:

dexverse-dl download --manifest ./manifest_presigned.json --out D:\DexVerse \
  --backend http --insecure

--insecure (-k) skips TLS verification for self-signed/internal endpoints like https://192.168.x.x:8443 — drop it when the endpoint has valid TLS.

Each manifest file just needs objectKey, relativePath, size, and presignedUrl:

{
  "taskId": "dl_presigned",
  "files": [{
    "objectKey": "datasets/.../20260429_180359.hdf5",
    "relativePath": "datasets/.../20260429_180359.hdf5",
    "size": 14994636,
    "presignedUrl": "https://host/bucket/datasets/.../20260429_180359.hdf5?X-Amz-Signature=..."
  }]
}

Presigned URLs expire (often 1h). Have the backend regenerate the manifest right before each download; expired URLs surface as per-file HTTP 403.

Quick start — Mock Backend mode (Phase 1)

# terminal 1 — run the mock server
dexverse-mock-server --host 0.0.0.0 --port 18080

# terminal 2 — login + download by taskId
dexverse-dl login --server http://localhost:18080 --token dev-token
dexverse-dl download --task dl_demo_001 --out /data/dexverse

CLI

dexverse-dl login   --server https://dexverse.xxx.com [--token TOKEN]
dexverse-dl download --manifest ./manifest.json --out /data/dexverse [--parallel 16] [--backend s5cmd|python]
dexverse-dl download --task dl_xxx --out /data/dexverse [--server URL]
dexverse-dl verify  --manifest PATH --out /data/dexverse [--deep]
dexverse-dl repair  --manifest PATH --out /data/dexverse [--backend python]

Python SDK

from dexverse import DexVerseClient, download_manifest

client = DexVerseClient(server="https://dexverse.xxx.com", token="xxx")
local_root = client.download_task(task_id="dl_xxx", out="/data/dexverse", parallel=16)

# or from a local manifest file
download_manifest(manifest_path="./manifest.json", out="/data/dexverse", backend="s5cmd")

Layout of the download root

State files live under <out>/.dexverse/ and never mix into the dataset tree:

/data/dexverse/
  .dexverse/tasks/<taskId>/
    manifest.json
    download.s5cmd
    download-state.json
    download.log
  datasets/aaa_test/v1/episodes/episode_000001.hdf5   # original paths preserved

Backends

backend engine notes
s5cmd peak/s5cmd binary default, high-throughput, needs binary
python boto3 fallback, no external binary required
http httpx presigned URLs only — no creds, no login

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

dexverse-0.1.0.tar.gz (41.9 kB view details)

Uploaded Source

Built Distribution

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

dexverse-0.1.0-py3-none-any.whl (31.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dexverse-0.1.0.tar.gz
  • Upload date:
  • Size: 41.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.8

File hashes

Hashes for dexverse-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1bffebc60f8786e554bc3c18d0b8c27bda907f3515c6f23ae81947d06821bfb2
MD5 647d963d42db365adaaa14a6abb13a50
BLAKE2b-256 fb110e639b98e093201052cf6dc1df5eed8bbbfc7f47511b9323af79d9a1fc02

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dexverse-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 31.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.8

File hashes

Hashes for dexverse-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 45b91032bac0e3a17d1648968faf2b37e0eedd2f9efe92605f4613b31d1c2b72
MD5 896e5d009c782e224ff883cc27801a5f
BLAKE2b-256 6302f1bffd0cc14184c26e2a258a894d37fbf4611b7a9405053e11bf8cc1c288

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