opendalfs
opendalfs is a Python-based interface for file systems that enables interaction with different storage services by Apache OpenDAL. Through opendalfs, users can utilize fsspec's standard API to operate on all storage services supported by OpenDAL.
URL Protocols
opendalfs registers multiple fsspec protocols in the form of opendal+<service>, for example:
import fsspec
f = fsspec.open(
"opendal+s3://my-bucket/path/to/file",
mode="rb",
endpoint="http://localhost:9000",
access_key_id="minioadmin",
secret_access_key="minioadmin",
)
The URL host is mapped to the service container (e.g. bucket for s3/gcs, container for azblob), and the URL path is used as the object key.
For other OpenDAL services, register protocols at runtime:
import opendalfs
opendalfs.register_opendal_service("oss")
Installation
Basic Installation
pip install opendalfs
Development Installation
Install uv and just, then run:
just install
Development Setup
This project uses:
- Python 3.12+ for the Python interface
- ruff for code formatting and linting
- ty for type checking
- pytest for testing
Run the local checks and unit tests with:
just check
just unit
For development setup and guidelines, see our Contributing Guide.
Benchmarks
The benchmark script compares Arrow direct, opendalfs (fsspec), and s3fs (fsspec) on MinIO.
just install
just bench --sizes 16,32,64 --files 4 --workers 4
Configure MinIO access via OPENDAL_S3_ENDPOINT, OPENDAL_S3_BUCKET,
OPENDAL_S3_REGION, OPENDAL_S3_ACCESS_KEY_ID, and
OPENDAL_S3_SECRET_ACCESS_KEY. Compose, tests, and benchmarks read the same
values.
The benchmark target starts MinIO from the root docker-compose.yml. Stop it
when you finish:
just bench-down
For profiling, you can install a tool with uv (for example py-spy) and run:
uv tool install py-spy
uv tool run py-spy record -o bench.svg -- python bench/bench_read_write.py --sizes 16,32,64 --files 4 --workers 4
High write concurrency can stall on some systems. If runs time out, reduce
--fsspec-workers.
Status
See Tracking issues of 0.1.0 version for opendalfs
Contributing
opendalfs is an exciting project currently under active development. Whether you're looking to use it in your projects or contribute to its growth, there are several ways you can get involved:
- Follow the Contributing Guide to contribute
- Create new Issue for bug reports or feature requests
- Join discussions in Discussions
Getting Help
- Submit issues for bug reports
- Ask questions in discussions
License
Licensed under Apache License, Version 2.0.
Metadata
Release files for opendalfs 0.1.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 | |
|---|---|---|---|
| opendalfs-0.1.0.tar.gz | 75.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| opendalfs-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 91.4 kB
Release files / opendalfs-0.1.0.tar.gz
| Download URL | opendalfs-0.1.0.tar.gz |
|---|---|
| Size | 75.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5ceaeccc0852ef10c8ef2ce20e5927dbc18083909c06550ad36f81bcacb5774d
|
|
BLAKE2b-256 checksum How to use checksums |
0d23fdb4d34f08ac68a27b2d553256e13b15ce139916d36bab33f9a0e71e8770
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logRelease files / opendalfs-0.1.0-py3-none-any.whl
| Download URL | opendalfs-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8b180c9dae767053023ea4923250ce66d40a9bcad2e6f947df5ec8152208365b
|
|
BLAKE2b-256 checksum How to use checksums |
ec7dbaac5ab7f0fcd4d4f06484531e30dbee2eaf924cc0bf007572bc54bbc14a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency log