Skip to main content

Small utility library to provide easy access to files and key-value store in an application directory

Project description

Python App Data

The py-appdata aims to solve the issue of storing simple application data and accessing it in an easy way.

The core idea is to expose a simple interface that has two properties

  • A get/set interface to simple values
  • A simple way of saving and retrieving files from the application directory

Stores

The AppData class provides an interface to two storage-abstractions: A file system and a key-value store. This lets you easily save/retrieve files as well as setting/loading key/values which is a common app-data usage.

Get started

from appdata import appdata
from datetime import datetime, timezone

# defaults to app_data
appdata.set_file_store("my_app_data_dir")

# defaults to kv_store
appdata.set_key_value_store("my_store")

appdata["last_login"] = datetime.utcnow().replace(tzinfo=timezone.utc)

with appdata.write("some_file.txt") as f:
    f.write("Mjello")

Auto save

The AppData object will auto save as a default. This means, whenever the KeyValue-store has been altered, it will automatically flush. This can be disabled, but then you are in charge of flushing. This can either be via the context manager or directly via the save method.

from appdata import appdata

appdata.set_auto_save(False)

with appdata:
    appdata["kv1"] = "something"
    appdata["kv2"] = "something else"
    
# Or directly

appdata["kv3"] = "something completely else"
appdata.save()

Dataclass support

If you like type hints, you can register a dataclass instance as a proxy for the key-value store

from appdata import appdata
from datetime import datetime, timezone
from dataclasses import dataclass


# Define the dataclass
@dataclass
class KV:
    last_login: datetime = None


# Create an object to be referenced and register it to appdata
kv = KV()
appdata.register(kv)


# The KeyValue object now acts as a proxy, and can be used throughout your project
kv.last_login = datetime.utcnow().replace(tzinfo=timezone.utc)

Custom KeyValue Store

You can create a custom KeyValue store by extending the KeyValueStore base class, or the DictKeyValueStore if you want to use a dict internally, and serialize it in a special way. Remember to registering it to the AppData object.

from appdata import appdata
from appdata.kv_store import KeyValueStore

class MyKeyValueStore(KeyValueStore):
    
    ...


# defaults to app_data
appdata.set_key_value_store(MyKeyValueStore())

Custom File Store

You can create a custom file store by extending the FileStore class and registering it to the AppData object

from appdata import appdata
from appdata.file_store import FileStore

class MyFileStore(FileStore):
    
    ...


# defaults to app_data
appdata.set_file_store(MyFileStore())

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

py-appdata-0.0.5.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_appdata-0.0.5-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

Details for the file py-appdata-0.0.5.tar.gz.

File metadata

  • Download URL: py-appdata-0.0.5.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.7.13 Linux/5.13.0-1031-azure

File hashes

Hashes for py-appdata-0.0.5.tar.gz
Algorithm Hash digest
SHA256 27fab44288eaf4ad5a0d642a446ee92b57356a56ef1973a4840639a2b0be10de
MD5 2527d7dd4a63fdafa20f71b35092bd0b
BLAKE2b-256 b6d3f1696565b19ab95c06080007f4ee4a44459a33a93d13970e9e76b7dc7124

See more details on using hashes here.

File details

Details for the file py_appdata-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: py_appdata-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 4.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.7.13 Linux/5.13.0-1031-azure

File hashes

Hashes for py_appdata-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 94b7455223130e58707334074510e0e046867e3672d5f0a07bcaf691c440f73f
MD5 bd471cc6de6c8fac5ddf477e9eb6bf08
BLAKE2b-256 0c6389cfcac286e4e006dbc977866e822488584f0b086eee26cda0e99c38e2f4

See more details on using hashes here.

Supported by

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