Metadata-Version: 2.5
Name: storage-kernel-factory
Version: 0.1.0a1
Summary: Dynamic provider factory for Storage Kernel.
License-Expression: MIT
License-File: LICENSE
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: storage-kernel-contracts<0.2.0,>=0.1.0a1
Requires-Dist: storage-kernel-core<0.2.0,>=0.1.0a1
Provides-Extra: all
Requires-Dist: storage-kernel-provider-aws-s3<0.2.0,>=0.1.0a1; extra == 'all'
Requires-Dist: storage-kernel-provider-gcp-storage<0.2.0,>=0.1.0a1; extra == 'all'
Requires-Dist: storage-kernel-provider-local-filesystem<0.2.0,>=0.1.0a1; extra == 'all'
Requires-Dist: storage-kernel-provider-sftp<0.2.0,>=0.1.0a1; extra == 'all'
Provides-Extra: aws-s3
Requires-Dist: storage-kernel-provider-aws-s3<0.2.0,>=0.1.0a1; extra == 'aws-s3'
Provides-Extra: gcp-storage
Requires-Dist: storage-kernel-provider-gcp-storage<0.2.0,>=0.1.0a1; extra == 'gcp-storage'
Provides-Extra: local-filesystem
Requires-Dist: storage-kernel-provider-local-filesystem<0.2.0,>=0.1.0a1; extra == 'local-filesystem'
Provides-Extra: sftp
Requires-Dist: storage-kernel-provider-sftp<0.2.0,>=0.1.0a1; extra == 'sftp'
Description-Content-Type: text/markdown

# storage-kernel-factory

Dynamic provider factory for Storage Kernel.

The factory normalizes provider aliases and imports provider packages only when a
client is requested. It does not force every provider to be installed by
applications.

## Install

```bash
uv add storage-kernel-factory storage-kernel-provider-local-filesystem
```

## Usage

```python
from storage_kernel.contracts import StorageLocation
from storage_kernel.factory import CreateStorageClientConfig, create_storage_client

storage = await create_storage_client(
    CreateStorageClientConfig(
        provider_name="filesystem",
        location=StorageLocation(directory=".storage"),
    )
)
```

`provider_name` is mandatory. `provider_class` optionally accepts a class that
follows `StorageClientClass`; instances are rejected. The created client always
receives the shared observability and error-normalization behavior, even when
the custom class does not inherit a kernel base class.

Use extras such as `storage-kernel-factory[aws-s3]` when published packages are
available.
