datastoredict

A durabledict implementation for AppEngine.


License
MIT
Install
pip install datastoredict==1.0.7

Documentation

datastoredict

https://travis-ci.org/vendasta/datastoredict.svg?branch=master

Provides a durabledict implementation for Google AppEngine -- an in-memory dictionary backed by the AppEngine Datastore.

Usage

DatastoreDict requires an ndb model to store values. By default, the model contains a property called value.

from datastoredict import DatastoreDict

class MyModel(ndb.Model):
    """
    A datastore model for storing durabledict data.
    """
    value = ndb.PickleProperty()

DatastoreDict(model=MyModel)

You can provide a different property to store the value by instantiating DatastoreDict with the value_col argument.

from datastoredict import DatastoreDict

class MyModel(ndb.Model):
    """
    A datastore model for storing durabledict data.
    """
    custom_value = ndb.JsonProperty()

DatastoreDict(model=MyModel, value_col='custom_value')

Once you have a DatastoreDict instance, use it like a regular dictionary.

from datastoredict import DatastoreDict

class SettingsModel(ndb.Model):
    """
    A datastore model for storing durabledict data.
    """
    value = ndb.PickleProperty()

settings = DatastoreDict(model=SettingsModel)

# Assign and retrieve a value from the dict
settings['foo'] = 'bar'
settings['foo']
>>> 'bar'

# Assign and retrieve another value
settings['buzz'] = 'foogle'
settings['buzz']
>>> 'foogle'

# Delete a value and access receives a KeyError
del settings['foo']
settings['foo']
>>> KeyError

Development

Using virtualenv is recommended for development.

virtualenv .
source ./bin/activate

Development Dependencies

We use flake8 for checking both PEP-8 and common Python errors and invoke for continuous integration.

pip install -U flake8
pip install -U invoke

You can list available build tasks with inv -l.

Due to a limitation with Google Appengine, dependencies must be installed locally before running tests. The fetch_deps make command will install dependencies to the vendor directory.

inv fetch_deps

Publishing to PyPI

You need pip, setuptools and wheel to publish to PyPI.

inv publish