Metadata-Version: 2.4
Name: swarmauri_gitfilter_minio
Version: 0.11.0.dev1
Summary: MinIO git filter for Peagen
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: swarmauri,sdk,standards,gitfilter,minio
Author: Jacob Stewart
Author-email: jacob@swarmauri.com
Requires-Python: >=3.10,<3.15
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: minio
Requires-Dist: peagen
Requires-Dist: swarmauri_base
Requires-Dist: swarmauri_core
Requires-Dist: swarmauri_standard
Description-Content-Type: text/markdown

![Swarmauri Logo](https://raw.githubusercontent.com/swarmauri/swarmauri-sdk/master/assets/swarmauri_sdk_brand.png)

<p align="center">
    <a href="https://pepy.tech/project/swarmauri_gitfilter_minio/">
        <img src="https://static.pepy.tech/badge/swarmauri_gitfilter_minio/month" alt="PyPI - Downloads"/></a>
    <a href="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/standards/swarmauri_gitfilter_minio/">
        <img alt="Hits" src="https://hits.sh/github.com/swarmauri/swarmauri-sdk/tree/master/pkgs/standards/swarmauri_gitfilter_minio.svg"/></a>
    <a href="https://pypi.org/project/swarmauri_gitfilter_minio/">
        <img src="https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13%20%7C%203.14-blue" alt="PyPI - Python Version"/></a>
    <a href="https://pypi.org/project/swarmauri_gitfilter_minio/">
        <img src="https://img.shields.io/pypi/l/swarmauri_gitfilter_minio" alt="PyPI - License"/></a>
    <a href="https://pypi.org/project/swarmauri_gitfilter_minio/">
        <img src="https://img.shields.io/pypi/v/swarmauri_gitfilter_minio?label=swarmauri_gitfilter_minio&color=green" alt="PyPI - swarmauri_gitfilter_minio"/></a>
    <a href="https://discord.gg/N4UpBuQv8T">
        <img src="https://img.shields.io/badge/Discord-Join%20Chat-5865F2?logo=discord&logoColor=white" alt="Discord"/></a></p>

# Swarmauri Git Filter Minio

`swarmauri_gitfilter_minio` packages the `MinioFilter` plugin used by
[`peagen`](https://pypi.org/project/peagen/) and other Swarmauri tooling to keep
large Git objects in MinIO (or any S3-compatible) storage instead of the local
repository. The filter implements both `StorageAdapterBase` and
`GitFilterBase`, so you can call it directly from Python code or register it as
a Git clean/smudge filter.

### Highlights

- Accepts `minio://` (HTTP) and `minios://` (HTTPS) URIs and automatically
  ensures the referenced bucket exists.
- Inherits `GitFilterBase`, giving you `clean` and `smudge` helpers that hash
  content, upload it to remote storage, and hydrate it back into your working
  tree on checkout.
- Provides convenience methods such as `upload_dir`, `iter_prefix`, and
  `download_prefix` for whole directory trees in addition to single-file
  transfers.
- Surfaces a `root_uri` property that reflects the bucket and optional prefix
  derived from the connection string.

## Installation

Choose the workflow that matches your project:

```bash
# pip
pip install swarmauri_gitfilter_minio

# Poetry
poetry add swarmauri_gitfilter_minio

# uv
uv add swarmauri_gitfilter_minio
```

## Configuration

`MinioFilter.from_uri()` consults `peagen.toml` for credentials under
`[storage.filters.minio]` and falls back to the `MINIO_ACCESS_KEY` and
`MINIO_SECRET_KEY` environment variables when the configuration is absent. When
instantiated, the filter lazily creates the bucket identified by the URI and
stores objects beneath an optional prefix.

## Usage

```python
from swarmauri_gitfilter_minio import MinioFilter

# Create a filter from a connection string. The scheme `minios://` will use
# HTTPS while `minio://` uses plain HTTP.
filt = MinioFilter.from_uri("minio://localhost:9000/my-bucket/prefix")

# Upload a file and retrieve its URI
with open("README.md", "rb") as fh:
    uri = filt.upload("docs/README.md", fh)

# Download the file back into memory
buffer = filt.download("docs/README.md")
data = buffer.read()
```

`MinioFilter` also exposes helpers such as `upload_dir`, `iter_prefix`, and
`download_prefix` for working with entire directory trees.

## Want to help?

If you want to contribute to swarmauri-sdk, read up on our
[guidelines for contributing](https://github.com/swarmauri/swarmauri-sdk/blob/master/CONTRIBUTING.md)
that will help you get started.



