API Reference — Storage Adapters
freeze_to() / thaw_from() / audit_remote()
# Freeze direto para cloud
permafrost.freeze_to(
df: pd.DataFrame,
remote_uri: str, # "s3://bucket/arquivo.permafrost"
adapter: StorageAdapter | None = None, # auto-detectado se None
tmp_dir: str = "/tmp",
keep_local: bool = False,
**freeze_kwargs, # repassados para freeze()
) -> dict
# Thaw da cloud
permafrost.thaw_from(
remote_uri: str,
adapter: StorageAdapter | None = None,
tmp_dir: str = "/tmp",
keep_local: bool = False,
**thaw_kwargs, # repassados para thaw()
) -> pd.DataFrame
# Audit sem download total (range requests)
permafrost.audit_remote(
remote_uri: str,
adapter: StorageAdapter | None = None,
) -> dict
storage_from_uri()
adapter = permafrost.storage_from_uri(
uri: str, # "s3://bucket/", "gs://bucket/", "azure://cont/", "/local/"
**kwargs, # repassados para o constructor do adapter
) -> StorageAdapter
LocalAdapter
from permafrost import LocalAdapter
adapter = LocalAdapter(base_dir="/tmp/storage/")
adapter.upload("local.permafrost", "/tmp/storage/arquivo.permafrost")
adapter.download("/tmp/storage/arquivo.permafrost", "local_copia.permafrost")
adapter.exists("/tmp/storage/arquivo.permafrost") # bool
adapter.delete("/tmp/storage/arquivo.permafrost") # bool
adapter.list("/tmp/storage/") # list[str]
adapter.read_header_bytes("/tmp/storage/arq.permafrost", n_bytes=4096)
adapter.read_footer_bytes("/tmp/storage/arq.permafrost", n_bytes=8192)
adapter.write_bytes(data: bytes, "/tmp/storage/arq.permafrost")
S3Adapter
from permafrost import S3Adapter
s3 = S3Adapter(
region="us-east-1", # opcional
endpoint_url="http://localhost:9000", # MinIO/S3-compatible
storage_class="GLACIER_DEEP_ARCHIVE", # padrão: STANDARD
)
# Todos os métodos do LocalAdapter +
s3.set_lifecycle(
bucket="meu-bucket",
prefix="cold/",
transition_days=30,
target_class="GLACIER_DEEP_ARCHIVE",
)
Range requests automáticos: read_header_bytes() e read_footer_bytes()
usam HTTP Range requests — não baixam o arquivo inteiro.
GCSAdapter
from permafrost import GCSAdapter
gcs = GCSAdapter(project="meu-projeto")
# Autenticação: GOOGLE_APPLICATION_CREDENTIALS ou ADC