Skip to main content

a lib for working with data

Project description

betterdata by gmanka

library for working with data. Features: automatic writing to disk when new data is added to an object, quick export to yml

navigation

installation^

pip install betterdata

usage^

from betterdata import Data

df = Data(
    data = {
        'key1': 'val1',
        'key2': 'val2',
    },
    file_path = 'data.yml'
)

after running this code it will automatically create file data.yml

key1: val1
key2: val2

if file already exists, then it will be overwritten

reading^

if you will not specify data argument, then data will be read from disk

from betterdata import Data

df = Data(
    file_path = 'data.yml'
)

print(df)
# {'key1': 'val1', 'key2': 'val2'}

if file does not exists then dict will be empty

from betterdata import Data
from pathlib import Path

Path('data.yml').unlink()

data = Data(
    file_path = 'data.yml'
)

print(data)
# {}

autosaves^

if you put something in the dictionary then it will also automatically written to disk

from betterdata import Data

data = Data(
    file_path = 'data.yml'
)

print(data)
# {}
print(Path('data.yml').exists())
# False

data['key1'] = 'val1'
data['key2'] = 'val2'

print(data)
# {'key1': 'val1', 'key2': 'val2'}
print(open('data.yml', 'r').read())
# key1: val1
# key2: val2

manual saves^

if you editing list in a dict then it will not automatically saved, but you can save it manually

from betterdata import Data
from pathlib import Path

Path('data.yml').unlink(missing_ok=True)
data = Data(
    file_path = 'data.yml'
)

print(data)
# {}
print(Path('data.yml').exists())
# False

data['list'] = [1, 2, 3]

print(data)
# {'list': [1, 2, 3]}
print(open('data.yml', 'r').read())
# list:
# - 1
# - 2
# - 3

data['list'].append('some very important data')

print(data)
# {'list': [1, 2, 3, 'some very important data']}
print(open('data.yml', 'r').read())
# list:
# - 1
# - 2
# - 3

# as you can see, appended data was not written on disk, so you can write it manually

data.to_file()

print(open('data.yml', 'r').read())
# list:
# - 1
# - 2
# - 3
# - some very important data

some syntax sugar^

from betterdata import Data

data = Data(
    {
        'key1': 'val1',
        'key2': 'val2',
    }
)

print(data)
# {'key1': 'val1', 'key2': 'val2'}

print(data['key1'])
# val1

print(data.key1)
# val1

print(data.to_str())
# key1: val1
# key2: val2

print('key2' in data)
# True

print('key3' in data)
# False

print(data['key3'])
# None

print(data.key3)
# AttributeError: 'Data' object has no attribute 'key3'

interactive input^

from betterdata import Data

data = Data()

data.interactive_input('key1')

it will interactively ask user to input value for key1

args:
item: str # key name
digits_to_int: bool = True # convert digits from str to int
kill_app_on_exit: bool = True # kill app if user select exit button
break_if_exist: bool = True # skip interactive input if key already in dict
sel: Sel = yes_no # you can specify Sel object from easyselect lib which will be used to confirm the value
text = None # change text which will be printed on the screen

license^

gnu gpl 3

Project details


Download files

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

Source Distribution

betterdata-23.0.2.tar.gz (180.5 kB view details)

Uploaded Source

Built Distribution

betterdata-23.0.2-py3-none-any.whl (3.6 kB view details)

Uploaded Python 3

File details

Details for the file betterdata-23.0.2.tar.gz.

File metadata

  • Download URL: betterdata-23.0.2.tar.gz
  • Upload date:
  • Size: 180.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for betterdata-23.0.2.tar.gz
Algorithm Hash digest
SHA256 100a5110ac1d3bf0c149dfb71d8be31cf15c4b34e76513873968628d236b4846
MD5 52f330d7a12755ea80b3a438310ac78c
BLAKE2b-256 4dd4c03a8da70c6b17d88022c3790a73ada24b76ba09ffe4ad989a3d328a8a6d

See more details on using hashes here.

File details

Details for the file betterdata-23.0.2-py3-none-any.whl.

File metadata

  • Download URL: betterdata-23.0.2-py3-none-any.whl
  • Upload date:
  • Size: 3.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for betterdata-23.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 47df2da14bcd7e66200db788b23fe5f7ebfbd80b6259b73021cdf080b0c8b749
MD5 ece7208b8a410a62c6b999e74a2902a9
BLAKE2b-256 628fd94f3c7cf7140df58f13b0fe29354ecf1b285d66344d619b47bb7656ecf0

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