Provides a layer for storing key / value paires.
Project description
Introduction
This package provides a layer for storing key / value paires. The storage can be configured dinamically by providing a IConfig adapter of the context on which the dict storage is used.
Examples
The adapter defaults to using a non-persistent dict:
>>> from ftw.dictstorage.interfaces import IDictStorage >>> context = layer['example_context'] >>> print context <ftw.dictstorage.testing.ExampleContext object at ...> >>> storage = IDictStorage(context) >>> storage['key'] = 'value' >>> print storage['key'] value >>> print storage.storage {'key': 'value'} >>> print IDictStorage(context).storage {}
For configuring a custom storage, implement your own IConfig which uses custom IDictStorage:
>>> from ftw.dictstorage.interfaces import IConfig >>> from ftw.dictstorage.base import DictStorage >>> from zope.component import provideAdapter, adapts >>> from zope.interface import Interface, alsoProvides, implements >>> context = layer['example_context'] >>> class IMyContext(Interface): ... pass >>> alsoProvides(context, IMyContext) >>> class ContextStorageConfig(object): ... implements(IConfig) ... adapts(IMyContext) ... ... def __init__(self, context): ... self.context = context ... ... def get_storage(self): ... if not hasattr(self.context, '_dictstorage'): ... self.context._dictstorage = {} ... return self.context._dictstorage >>> provideAdapter(ContextStorageConfig) >>> class ContextDictStorage(DictStorage): ... implements(IDictStorage) ... adapts(IMyContext, IConfig) ... ... def __init__(self, context, config): ... self.context = context ... self.config = config ... self._storage = config.get_storage() ... ... @property ... def storage(self): ... return self._storage ... >>> provideAdapter(ContextDictStorage) >>> storage = IDictStorage(context) >>> storage['foo'] = 'bar' >>> print storage['foo'] bar >>> print context._dictstorage {'foo': 'bar'} >>> print IDictStorage(context)['foo'] bar
If you use sqlalchemy,
Links
Main github project repository: https://github.com/4teamwork/ftw.dictstorage
Issue tracker: https://github.com/4teamwork/ftw.dictstorage/issues
Package on pypi: http://pypi.python.org/pypi/ftw.dictstorage
Continuous integration: https://jenkins.4teamwork.ch/search/?q=ftw.dictstorage
Copyright
This package is copyright by 4teamwork.
ftw.dictstorage is licensed under GNU General Public License, version 2.
Changelog
1.2 (2012-06-05)
Declare zope dependencies. [jone]
Update README. [jone]
1.1 (2012-03-28)
Remove “self” from IDictStorage interface definitions. This makes it possible to validate a implementation with verifyClass. [jone]
1.0 (2011-11-17)
added test-buildout for plone 4.1 [eschmutz]
1.0a4 (2011-07-12)
Fixed signature of some class methods [lgraf]
1.0a3
1.0a2
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.