Skip to main content

bucketbase

Project description

BucketBase

BucketBase 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.

Features

  • S3 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 the IBucket interface to support additional storage backends.

Installation

Install BucketBase using pip:

pip install bucketbase

PyPi home page: https://pypi.org/project/bucketbase/

Quick Start To get started with BucketBase, first import the storage class you wish to use:

from bucketbase.memory_bucket import MemoryBucket
from bucketbase.minio_bucket import MinioBucket
from bucketbase.fs_bucket import FSBucket, AppendOnlyFSBucket

Using Memory Storage

Memory 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 Storage

File 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.

from bucketbase.minio_bucket import MinioBucket

bucket = 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 Prefix

You can copy and move objects between buckets by prefix.

from bucketbase.minio_bucket import MinioBucket

bucket = 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 Usage

For 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.

Contributing

Contributions are welcome! If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are warmly welcome.

Licensing

The code in this project is licensed under MIT license.

Changelog

1.3.0
  • Added streaming capability: IBucket.put_object_stream() & IBucket.get_object_stream()
1.2.4
  • Added Windows Long name error handling in MinioBucket.fget_object()
1.2.3
  • Fixed corner-case where IBucket.copy_prefix copies to root
  • Renamed arg dest_bucket -> dst_bucket
1.2.2
  • Added FSBucket.get_root()
1.2.1
  • Added IBucket.copy_prefix() & IBucket.move_prefix()
  • minor refactoring and default params
1.2.0 (breaking changes)
  • rename all IBucket method args: object_name -> name
  • rename args: list_of_objects -> names
1.1.0 (breaking changes)
  • IBucket rename: get_object_content() -> get_object()
  • IBucket.fput_oject() rename arg: destination -> file_path
1.0.1
  • Added ShallowListing to init.py

This 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

bucketbase-1.3.2-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file bucketbase-1.3.2-py3-none-any.whl.

File metadata

  • Download URL: bucketbase-1.3.2-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.13

File hashes

Hashes for bucketbase-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ab06a15dbd1c066806c1520b3fb3e4db88c970b4d77460cb9c5e083bdfed3d36
MD5 cabe7e45e63c28cfe86c3bcc64a0d68a
BLAKE2b-256 bbfd5a18b23c4d0b3af62588e6ad761e20467549ce4339b472c8b3a262448655

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page