Skip to main content

Enhanced utilities and extensions for fsspec, storage_options and obstore with multi-format I/O support.

Project description

fsspeckit

Enhanced utilities and extensions for fsspec filesystems with multi-format I/O support.

Overview

fsspeckit is a toolkit that extends fsspec with:

  • Multi-cloud storage configuration - easy setup for AWS S3, Google Cloud Storage, Azure Storage, GitHub, and GitLab
  • Enhanced caching - improved caching filesystem with monitoring and path preservation
  • Extended I/O operations - read/write operations for JSON, CSV, Parquet with Polars/PyArrow integration
  • Dataset operations - Parquet processing with DuckDB and PyArrow backends, including merge and maintenance
  • SQL filter translation - write filters once and run them across PyArrow and Polars
  • Domain-specific packages - organized into logical packages for discoverability

Start here

New to fsspeckit? Work through the Local Dataset Lifecycle tutorial. It is a single, copyable, offline script that covers the canonical workflow: configure a local filesystem, write a Parquet dataset, read it back, verify the result, and clean up a named sandbox. No cloud credentials required.

For the full documentation, see the docs site.

Package structure

fsspeckit is organized into domain-specific packages:

  • fsspeckit.core - core filesystem APIs and backend-neutral planning logic
  • fsspeckit.storage_options - multi-cloud storage configuration classes
  • fsspeckit.datasets - dataset-level operations (DuckDB and PyArrow helpers)
  • fsspeckit.sql - SQL-to-filter translation helpers
  • fsspeckit.common - cross-cutting utilities (logging, parallelism, synchronization, and path safety)
  • fsspeckit.utils - backwards-compatible facade that re-exports from domain packages

Note: The fsspeckit.utils module is maintained for backwards compatibility. New code should import directly from the domain packages for better discoverability.

Installation

# Basic installation
pip install fsspeckit

# Dataset operations (PyArrow, DuckDB, schema utilities)
pip install "fsspeckit[datasets]"

# Cloud providers
pip install "fsspeckit[aws]"     # AWS S3 support
pip install "fsspeckit[gcp]"     # Google Cloud Storage
pip install "fsspeckit[azure]"   # Azure Storage

For the complete extras matrix, see Installation and optional extras.

Quick start

This is the canonical local dataset lifecycle. For the full narrative version, see the tutorial.

from pathlib import Path
import shutil

import pyarrow as pa

from fsspeckit import filesystem
from fsspeckit.datasets.pyarrow import PyarrowDatasetIO

# Named sandbox directory
sandbox = Path("fsspeckit_tutorial_sandbox")
dataset_path = sandbox / "sensors"
sandbox.mkdir(parents=True, exist_ok=True)

# Local filesystem and explicit schema
fs = filesystem("file", dirfs=False)
schema = pa.schema([
    pa.field("sensor_id", pa.int64()),
    pa.field("reading", pa.float64()),
    pa.field("recorded_at", pa.string()),
])

# Write, then read back and verify
io = PyarrowDatasetIO(filesystem=fs)
records = pa.table(
    {"sensor_id": [1, 2, 3], "reading": [21.4, 22.1, 19.8],
     "recorded_at": ["2026-07-10T08:00", "2026-07-10T08:05", "2026-07-10T08:10"]},
    schema=schema,
)
result = io.write_dataset(records, str(dataset_path), schema=schema, mode="overwrite")
table = io.read_parquet(str(dataset_path))
assert table.num_rows == result.total_rows

# Clean up only the sandbox
shutil.rmtree(sandbox)

Canonical imports

Import from the domain packages that own each feature:

# Filesystem creation
from fsspeckit import filesystem

# Dataset operations
from fsspeckit.datasets.pyarrow import PyarrowDatasetIO
from fsspeckit.datasets.duckdb import DuckDBDatasetIO

# Storage configuration
from fsspeckit.storage_options import AwsStorageOptions, GcsStorageOptions

# SQL filter translation
from fsspeckit.sql.filters import sql2pyarrow_filter, sql2polars_filter

# Common utilities
from fsspeckit.common import run_parallel

For the full import hierarchy and deprecation mappings, see the Public API Inventory and Legacy Imports.

Examples

The examples directory contains runnable demonstrations of datasets, SQL filters, common utilities, caching, and more. Most examples use local or generated data. Cloud operations require the applicable extra, credentials, and a real provider resource. They support the tutorial rather than replace it.

Migration

If you are moving from older module layouts, see the Migration Guide. All fsspeckit.utils imports continue to work unchanged.

Contributing

Contributions are welcome. Please submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Ask DeepWiki

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

fsspeckit-0.27.1.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

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

fsspeckit-0.27.1-py3-none-any.whl (228.7 kB view details)

Uploaded Python 3

File details

Details for the file fsspeckit-0.27.1.tar.gz.

File metadata

  • Download URL: fsspeckit-0.27.1.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.31 {"installer":{"name":"uv","version":"0.11.31","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fsspeckit-0.27.1.tar.gz
Algorithm Hash digest
SHA256 f66912cde98c0e32eb266515d5571487fb948347bff806c4a7b0e8408b2a2a79
MD5 1db50f347217e336e55f5537cd225995
BLAKE2b-256 09dd484007561e23bc07a551fe2c7b371cfa3b6bcea6ca7a91ae5cb64c3e0c0e

See more details on using hashes here.

File details

Details for the file fsspeckit-0.27.1-py3-none-any.whl.

File metadata

  • Download URL: fsspeckit-0.27.1-py3-none-any.whl
  • Upload date:
  • Size: 228.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.31 {"installer":{"name":"uv","version":"0.11.31","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fsspeckit-0.27.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a29da58ffd77d9442b1d58f4be8e08e6e62bbda799e2b35cc016f73ac5f8c5e4
MD5 17034a0ba2bc7b0356a4a162cbee40c9
BLAKE2b-256 bc73d47756ec70f4886b4a41e80fd569cc6eb1f168db0845f5004230076a517f

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