Metadata-Version: 2.4
Name: cloudfs
Version: 0.2.0
Summary: An interface to interact with cloud storage as if it's a local filesystem.
License-Expression: Apache-2.0
License-File: LICENSE
Author: Allen Chou
Author-email: f1470891079@gmail.com
Requires-Python: >=3.11,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Provides-Extra: all
Provides-Extra: azure
Provides-Extra: google
Provides-Extra: s3
Requires-Dist: azure-storage-blob (>=12,<13) ; extra == "all"
Requires-Dist: azure-storage-blob (>=12,<13) ; extra == "azure"
Requires-Dist: boto3 (>=1.35,<2) ; extra == "all"
Requires-Dist: boto3 (>=1.35,<2) ; extra == "s3"
Requires-Dist: google-cloud-storage (>=3,<4) ; extra == "all"
Requires-Dist: google-cloud-storage (>=3,<4) ; extra == "google"
Description-Content-Type: text/markdown

# CloudFS

Cloud storage that works like your local filesystem.

CloudFS gives you a `pathlib.Path`-compatible interface for Google Cloud Storage, AWS S3, and Azure Blob Storage.

## Installation

```bash
pip install "cloudfs[google]"   # Google Cloud Storage
pip install "cloudfs[s3]"       # AWS S3
pip install "cloudfs[azure]"    # Azure Blob Storage
pip install "cloudfs[all]"      # All backends
```

## Quick Start

```python
from cloudfs import Path

# Works the same across all backends
p = Path("gs://my-bucket/data/report.csv")    # GCS
p = Path("s3://my-bucket/data/report.csv")    # S3
p = Path("az://my-container/data/report.csv") # Azure

p.write_text("Hello, CloudFS!")
print(p.read_text())            # Hello, CloudFS!
print(p.name)                   # report.csv
print(p.parent / "other.csv")  # gs://my-bucket/data/other.csv

for child in p.parent.iterdir():
    print(child)
```

## Documentation

Full documentation at **[allen2c.github.io/cloudfs](https://allen2c.github.io/cloudfs/)**.

## License

Apache 2.0

