from typing import IO, Any import boto3 from botocore.response import StreamingBody class S3Client: def __init__(self, *, region_name: str, session: boto3.Session): self.client = session.client("s3", region_name=region_name) def download_fileobj( self, bucket: str, key: str, file_obj: IO[Any] | StreamingBody ) -> None: self.client.download_fileobj( Bucket=bucket, Key=key, Fileobj=file_obj, ) def upload_fileobj( self, bucket: str, key: str, file_obj: IO[Any] | StreamingBody ) -> None: self.client.upload_fileobj( Bucket=bucket, Key=key, Fileobj=file_obj, )