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.

Installation

pip install py-appdata

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.6.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.6-py3-none-any.whl (4.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: py-appdata-0.0.6.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.6.tar.gz
Algorithm Hash digest
SHA256 f5b2a35ed1efdfa438a2f6851901201752cb1df13153402c1fc716e793480bfa
MD5 ce38349be4603e3d40281fbb584f9c40
BLAKE2b-256 2e51abfd8d40b6c18bf1b26d15a870292064d648a70422d84e35b6707ffc5ae8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: py_appdata-0.0.6-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.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a0646529f0d9f182e03b7626715389034743228c24699fbdb50d1fa049a62b4a
MD5 588273c31e28b324e7193650299cf7c7
BLAKE2b-256 17b8e120fab7873179cf4e6165008d3163234be5109203fe1b810fb8973099fc

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