"""Store/retrieve SynD models from an S3 host."""
import minio
from synd.models.base import BaseSynDModel
from io import BytesIO
MODEL_HOST = "minios.jdrusso.dev"
MODEL_BUCKET = "models"
[docs]def make_minio_client(access_key: str, secret_key: str, model_host: str = MODEL_HOST, **client_kwargs) -> minio.Minio:
client = minio.Minio(model_host, access_key=access_key, secret_key=secret_key, **client_kwargs)
return client
[docs]def download_model(identifier: str, client: minio.Minio, bucket: str = MODEL_BUCKET) -> BaseSynDModel:
model = client.get_object(bucket, identifier)
return model
[docs]def upload_model(model, identifier: str, client: minio.Minio, bucket: str = MODEL_BUCKET):
serialized = model.serialize()
with BytesIO(serialized) as serialized_bytes:
client.put_object(bucket, identifier, data=serialized_bytes, length=len(serialized))