Package: bucketbase
BucketBaseBucketBase offers a comprehensive suite of base classes tailored for abstracting object storage solutions. It's designed to facilitate seamless integration with
different storage backends, including S3-compatible services (like Minio), in-memory storage for testing, and file-based storage for local development and
caching purposes. This flexibility makes it an ideal choice for projects that require a unified API for object storage across various environments.FeaturesS3 Compatible Storage Support:Use with any S3-compatible storage service like Minio, AWS S3, etc.In-memory Storage:Perfect for testing purposes, avoiding the need for an actual object storage service.File Storage:Ideal for local development and caching, simulating an object storage interface with local file system.Extensible:Implement theIBucketinterface to support additional storage backends.InstallationInstall BucketBase using pip:pipinstallbucketbasePyPi home page:https://pypi.org/project/bucketbase/Quick Start
To get started with BucketBase, first import the storage class you wish to use:frombucketbase.memory_bucketimportMemoryBucketfrombucketbase.minio_bucketimportMinioBucketfrombucketbase.fs_bucketimportFSBucket,AppendOnlyFSBucketUsing Memory StorageMemory storage is useful for tests or development environments where no persistence is required.bucket=MemoryBucket()bucket.put_object("test.txt","Hello, World!")print(bucket.get_object("test.txt"))# Outputs: b'Hello, World!'Using File StorageFile storage is useful for local development and caching.bucket=FSBucket("/path/to/storage")bucket.put_object("hello.txt","Hello, File Storage!")print(bucket.get_object("hello.txt"))# Outputs: b'Hello, File Storage!'Using Minio (S3 Compatible Storage)Ensure you have Minio server running and accessible.frombucketbase.minio_bucketimportMinioBucketbucket=MinioBucket(endpoint="localhost:9000",access_key="minioadmin",secret_key="minioadmin",secure=False)bucket.put_object("greet.txt","Hello, Minio!")print(bucket.get_object("greet.txt"))# Outputs: b'Hello, Minio!'Copy and Move objects by PrefixYou can copy and move objects between buckets by prefix.frombucketbase.minio_bucketimportMinioBucketbucket=MinioBucket(endpoint="localhost:9000",access_key="minioadmin",secret_key="minioadmin",secure=False)dest_bucket=MinioBucket(endpoint="localhost:9000",access_key="minioadmin",secret_key="minioadmin",secure=False,bucket_name="new_bucket")bucket.put_object("greet.txt","Hello, Minio!")bucket.copy_prefix(dst_bucket=dest_bucket,src_prefix="greet.",dst_prefix="copy_dir/")bucket.move_prefix(dst_bucket=dest_bucket,src_prefix="greet.",dst_prefix="move_dir/")Advanced UsageFor advanced usage, including error handling, listing objects, and more, refer to the IBucket interface and the specific implementation you are using. Each
storage option may have additional methods and features tailored to its backend.ContributingContributions are welcome! If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are warmly welcome.LicensingThe code in this project is licensed under MIT license.Changelog1.2.4Added Windows Long name error handling in MinioBucket.fget_object()1.2.3Fixed corner-case where IBucket.copy_prefix copies to rootRenamed arg dest_bucket -> dst_bucket1.2.2Added FSBucket.get_root()1.2.1Added IBucket.copy_prefix() & IBucket.move_prefix()minor refactoring and default params1.2.0 (breaking changes)rename all IBucket method args: object_name -> namerename args: list_of_objects -> names1.1.0 (breaking changes)IBucket rename: get_object_content() -> get_object()IBucket.fput_oject() rename arg: destination -> file_path1.0.1Added ShallowListing toinit.pyThis README.md provides a general overview of BucketBase, instructions for installation, a quick start guide for using its various storage options, and an
invitation for contributions. It's structured to be informative and straightforward, allowing users to quickly get started with the project.