Skip to main content

DataSluice

One Python interface for open-data discovery, extraction, format normalization, and pipeline integration

PyPI version CI Documentation License


Installation

pip install datasluice

Optional extras for format and integration support:

pip install "datasluice[pandas,polars,parquet,xlsx]"
pip install "datasluice[all]"          # everything

Apache Airflow

Airflow integration is a separate distribution that imports from the airflow.providers.datasluice namespace:

pip install apache-airflow-providers-datasluice

Quick Start

from datasluice import DataSluice

# Point at any supported portal — the portal type is auto-detected
ds = DataSluice("https://www.data.gouv.fr")

# Search for datasets
results = ds.search("climate")
for dataset in results:
    print(dataset.title, len(dataset.resources))

# Inspect a dataset and list its resources
dataset = ds.get_dataset("some-dataset-id")
for resource in dataset.resources:
    print(resource.format, resource.url)

# Download a resource
path = ds.download(dataset.resources[0], "data/")
print(path)

CLI:

datasluice search "climate" --portal https://www.data.gouv.fr
datasluice inspect -p https://www.data.gouv.fr <dataset-id>
datasluice detect https://demo.ckan.org
datasluice download -p https://www.data.gouv.fr <dataset-id> --format csv

Features

  • Unified API — one interface for CKAN, data.gouv.fr, Socrata, and custom portals
  • Auto-detection — point at a URL and DataSluice figures out the portal type
  • Format normalization — CSV, JSON, XLSX, Parquet, and GeoJSON readers
  • Integrations — pandas, Polars, dlt, DuckDB, and Apache Airflow (separate provider)
  • CLI — search, inspect, download, and detect from the command line
  • Pipeline-ready — retry, rate-limiting, caching, and checksum verification built in

Documentation

Documentation is built with Zensical and deployed to GitHub Pages.

API documentation is auto-generated from docstrings using mkdocstrings.

Docs deploy automatically on push to main via GitHub Actions. To enable this, go to your repo's Settings > Pages and set the source to GitHub Actions.

Development

To set up for local development:

# Clone your fork
git clone git@github.com:your_username/datasluice.git
cd datasluice

# Install dependencies (including all optional deps for dev)
uv sync --all-extras

# Install just (task runner) — one-time setup
curl --proto '=https' --tlsv1.2 -sSf https://just.systems/install.sh | bash -s -- --to .venv/bin

# Install in editable mode with live updates
uv tool install --editable .

This installs the CLI globally but with live updates - any changes you make to the source code are immediately available when you run datasluice.

Install pre-commit hooks:

uv run pre-commit install

Run tests:

uv run pytest

Run quality checks (format, lint, type check, test):

just qa

Release Process

Releases are automated with Release Please. There is no manual version bumping or tagging.

  1. Use Conventional Commits (feat:, fix:, docs:, …) — see CONTRIBUTING.md for the full list.
  2. Release Please maintains a release PR on main that bumps the version and updates the changelog.
  3. Merge the release PR → Release Please creates a Git tag and a GitHub Release.
  4. The GitHub Release auto-triggers publishing to TestPyPI, then waits for approval before publishing to PyPI.

Contributing

Contributions are welcome! See CONTRIBUTING.md for setup, conventions, and the release workflow. Please follow the Code of Conduct.

Release files for datasluice 0.2.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 datasluice 0.2.0
File Size Uploaded
datasluice-0.2.0.tar.gz 3.1 MB Details

Built distribution (wheel)

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

Total release size: 3.3 MB

Release files / datasluice-0.2.0.tar.gz

Download URL datasluice-0.2.0.tar.gz
Size 3.1 MB
Tags Source
SHA-256 checksum
How to use checksums
ad7fcc6300d31fee9c2c3d7acd81fd7a078bbbe72646126a276401359115c4ca
BLAKE2b-256 checksum
How to use checksums
299c8075550cc084f6668f329a4d09c49983dc6ad4bfc923ac1dcf319257b48d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / datasluice-0.2.0-py3-none-any.whl

Download URL datasluice-0.2.0-py3-none-any.whl
Size 181.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cf939f2f08119dc903a1d797cbf0e3c0c9e5c5464028b528ed068d5267cbc985
BLAKE2b-256 checksum
How to use checksums
b6130fcb36ad0786304e7c29b3b524dc336ebd149d8771d678a4e338767c3840
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

0.3.5

2 release files

0.3.4

2 release files

0.3.0

2 release files

0.2.2

2 release files

This release

0.2.0 This release

2 release 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