One Python interface for open-data discovery, extraction, format normalization, and pipeline integration
- GitHub | PyPI | Documentation
- Created by Nitish Raj | GitHub @nitish-raj | PyPI @nitish-raj
- MIT 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.
- Live site: https://nitish-raj.github.io/datasluice/
- Preview locally:
just docs-serve(serves at http://localhost:8000) - Build:
just docs-build
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.
- Use Conventional Commits (
feat:,fix:,docs:, …) — see CONTRIBUTING.md for the full list. - Release Please maintains a release PR on
mainthat bumps the version and updates the changelog. - Merge the release PR → Release Please creates a Git tag and a GitHub Release.
- 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)
| File | Size | Uploaded | |
|---|---|---|---|
| datasluice-0.2.0.tar.gz | 3.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|