Skip to main content

daggydata

Upload datasets to Daggy from a script, a notebook or cron, with an API key: one file, several files, or a hive-partitioned folder, up to 25 GB. Bytes go straight to storage in parallel parts; only requests is needed, no cloud credentials.

pip install daggydata

The package installs the daggy command and imports as daggy.

Create an API key on the API keys page of the Daggy app, then:

export DAGGY_API_KEY=daggy_prod_...
daggy upload sales ./sales.parquet
daggy upload events ./events/ --overwrite --description "Clickstream"
import daggy  # reads DAGGY_API_KEY

ds = daggy.upload("sales", "./sales.parquet")
print(ds.name, ds.num_obs, "rows")

What gets uploaded

  • A file is uploaded under its name, with anything outside [A-Za-z0-9_.-] replaced (Q3 sales.csv → Q3_sales.csv).
  • A folder becomes one dataset. Hive folders like region=west/ become columns. Marker files (_SUCCESS, .crc, _temporary/) are skipped.
  • Formats: .parquet .pq .csv .tsv .txt .json .ndjson .jsonl, one format per upload, uncompressed.
  • --overwrite (overwrite=True) replaces an existing dataset; without it, an existing name is refused. Appends are not supported.
Limit Value
Size per upload 25 GiB
Files per upload 200
Open uploads at once 5
Time to finish an upload 20 hours
Paths in a folder [A-Za-z0-9_.=/-], at most 8 levels

Resuming

The session id is printed (logged, from Python) before any data is sent. If a run is killed or a part keeps failing, run it again with the id; only the missing parts are sent:

daggy upload sales ./sales.parquet --resume <session_id>
try:
    daggy.upload("sales", "./sales.parquet")
except daggy.UploadError as e:
    print(e.code, e.session_id, e.final_state)
    # final_state None or "uploading": daggy.upload(..., resume=e.session_id)

UploadError has status, code, message, session_id and final_state (None for a refused request or a failed part, otherwise failed, aborted or uploading). From Python, progress goes to the daggy logger: logging.basicConfig(level=logging.INFO) shows it.

Options

CLI Python
--overwrite overwrite=True replace an existing dataset
--description D description="D" dataset description (≤ 10,000 characters)
--resume SID resume="SID" finish an earlier upload
--workers N workers=N parallel part uploads (default 8)
--api URL api_url="URL" API address; default from the key (DAGGY_API_URL also works)
DAGGY_API_KEY api_key="..." the key

CLI exit codes: 0 done; 1 the upload ended failed/aborted or needs --resume; 2 bad usage, a refused request or a part that kept failing; 130 interrupted.

License

MIT

Metadata

Release files for daggydata 0.1.0

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

Source distribution (sdist)

Source distribution for daggydata 0.1.0
File Size Uploaded Provenance
daggydata-0.1.0.tar.gz 8.3 kB Without provenance Details

Built distribution (wheel)

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

Total release size: 18.9 kB

Release files / daggydata-0.1.0.tar.gz

Download URL daggydata-0.1.0.tar.gz
Size 8.3 kB
Tags Source
SHA-256 checksum
How to use checksums
27a744c8510d086814e11ea3c4d9c0c9d498d7d0fe179c25e69ff7f7b0c4c47e
BLAKE2b-256 checksum
How to use checksums
1701e5d0e35ecca38211428f1b1b848d70323f121b3e514331fda22219483f14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.4

Release files / daggydata-0.1.0-py3-none-any.whl

Download URL daggydata-0.1.0-py3-none-any.whl
Size 10.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8bb509298e6b72e2615af4e6a5532a30eaaa63af7f3fe577bcfd2b5df32d0392
BLAKE2b-256 checksum
How to use checksums
57a90c278b245ff8c54a6cf1a05a2bccfcdd278df4da7b8c0a31d2580f5f430b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.4

Security for daggydata 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

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