Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/adwaith-rajesh/object-bucket

A fun and easy way to store python objects.
https://github.com/adwaith-rajesh/object-bucket

Last synced: 1 day ago
JSON representation

A fun and easy way to store python objects.

Awesome Lists containing this project

README

        

![Testing](https://github.com/Adwaith-Rajesh/object-bucket/workflows/Testing/badge.svg)
![Pypi-Upload](https://github.com/Adwaith-Rajesh/object-bucket/workflows/Pypi-Upload/badge.svg)
# Object Bucket
An easy and fun way to store python objects.

____

## Table of contents
- [Description](#DESCRIPTION)
- [Installation](#INSTALLATION)
- [Usage](#USAGE)

___
## Description
Object Bucket is a python package that allows you to store python objects permanently in a more user friendly way.

___
## Installation

The object-bucket package can be installed by using pip.
```bash
pip install object-bucket
```

___
## Usage

- ### Creating new bucket.
```python
from object_bucket import Bucket

test_bucket = Bucket("name-of-the-bucket")
```
- Adding droplets to the bucket, droplets are considered as objects that you want to save permanently.

```python
test_obj = [1, 2, 3, 4]
test_bucket.add_droplet("droplet-name", test_obj)
```
Trying to add a droplet with the same name will cause an error.

- Adding multiple droplets.
To add multiple droplets you have to have a dictionary that contains all the names and objects of the droplet.
To add the dictionary you can use the ```add_droplets``` method.
```python
droplets = {
"one": 1,
"two": 2,
"three": [2, 3, 4]
}

test_bucket.add_droplets(droplets)
```

- ### Modifying a droplet
```python
new_obj = {1: "a"}
test_bucket.modify_droplet("droplet-name", new_obj)
```
Trying to modify a droplet that does not exists will cause an error.

- ### Saving a bucket
All the things mentioned above will not be added or saved permanently, to do so it is necessary to save the bucket.
```python
test_bucket.save_bucket()
```
- ### Retrieving values from a bucket.
```python
from object_bucket import Bucket
test_bucket = Bucket("name-of-the-bucket")
a = test.bucker.get_droplet("droplet-name")
print(a) # {1: "a"}

```
Trying to get a droplet that does not exists will cause an error.

- Get all the runtime droplets
```python
drop1 = [1, 2, 3, 4]
drop2 = "Hello"
drop3 = {1: "a", 2: "b"}
test_bucket.add_droplet("drop1", drop1)
test_bucket.add_droplet("drop2", drop2)
test_bucket.add_droplet("drop3", drop3)

# to get all the droplets
a = test_bucket.get_all_droplets()
print(a)

# output
{"drop1": [1, 2, 3, 4], "drop2": "Hello", "drop3": {1: "a", 2: "b"}}
```
- Deleting a bucket
To delete the bucket and to clear the runtime storage of all the droplets.
```python
test_bucket.delete_bucket()
```
- You can also delete a bucket using ```remove_bucket``` function
```python
from object_bucket import remove_bucket
remove_bucket("name-of_bucket_to_be_removed")
```

## Using the context manager.
It might be a hastle to remember to save to bucket, so you can use the context manager to avoid using the ```save_bucket``` method.

**Note**: Using ```Bucket().delete_bucket``` inside the context manager is useless as at the end the file will be saved automatically.

```python
from object_bucket import Bucket

with Bucket("name-of-the-bucket") as b:
# code to execute
b.add_droplet("name", 1)
# ...etc
b.delete_bucket() # wont work as the file will be again saved,
# but the runtime contents will be cleared
```

## Some more stuff

- You can use the if statement to check whether a bucket is empty or not
```python
from object_bucket import Bucket
t = Bucket("name")
if t:
print("Hello") # -> does not print anything as bucket is empty

t.add_droplet("demo", 1)
if t:
print("Hello 2") # -> prints "hello 2" as the bucket has at least one droplet
```

- To get the number of droplets in a bucket you can use the ```len``` method
```python
from object_bucket import Bucket
t = Bucket("name")
print(len(t)) # -> 0
t.add_droplet("demo", [1, 2, 3])
print(len(t)) # -> 1
```