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.2.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.2-py3-none-any.whl (231.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fsspeckit-0.27.2.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","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.2.tar.gz
Algorithm Hash digest
SHA256 73cc3741ae7337f5a054728fb02fc1d5033ea7388ccc7baf8f54c72bee8b7372
MD5 d8d61fb5444445751e522489107498db
BLAKE2b-256 65153ff38dd5ab4f69c94c39d80fe8b22f7949863c9a99f49f0db508aa9eff71

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fsspeckit-0.27.2-py3-none-any.whl
  • Upload date:
  • Size: 231.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 03c1a5ea365ef5a802ca9e3ba5860dc29c1e097a6be974ce8ee2595ae13f08d3
MD5 b59154b2a68e4081b76363fef3529016
BLAKE2b-256 25dec6fd6eb1655a3f7c09323872a3d994666d43313d7db579b36c6b117dcad7

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