Metadata-Version: 2.4
Name: files-sdk-local
Version: 0.1.0a2
Summary: Local filesystem adapter for files-sdk — zero deps, ideal for dev/test
Project-URL: Homepage, https://github.com/menelsystems/files-sdk-py
Project-URL: Repository, https://github.com/menelsystems/files-sdk-py
Project-URL: Issues, https://github.com/menelsystems/files-sdk-py/issues
Author-email: Carter Himmel <carter@menelsystems.com>
License-Expression: MIT
License-File: LICENSE
Keywords: dev,files,filesystem,local,storage
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: files-sdk
Description-Content-Type: text/markdown

# files-sdk-local

Local filesystem adapter for [files-sdk](../files-sdk). Zero extra dependencies.
Ideal for dev, tests, demos, and offline tooling.

```python
from files_sdk import Files
from files_sdk_local import LocalAdapter

files = Files(adapter=LocalAdapter(root="/tmp/my-store"))
files.upload("hello.txt", b"hi")
print(files.download("hello.txt").text())
```

## Notes
- Objects live at `<root>/<key>`. Subdirectories are auto-created.
- Sidecar metadata at `<root>/.files-sdk-meta/<key>.json` records content-type and user metadata.
- `signed_upload_url()` is NOT supported (no signing authority on local fs) — raises `FilesError(code="invalid_input")`. The class attribute `supports_signed_upload = False` lets the conformance suite skip cleanly.
- `url(key, public=False)` returns `file://...`. With `public=True` and `public_url_base=` (or env `FILES_SDK_LOCAL_PUBLIC_URL_BASE`) it returns `<base>/<key>` — useful when a webserver serves `root` over HTTP.
- Keys are sanitized: anything that resolves outside `root` raises `FilesError(code="invalid_input")`.
