Skip to main content

A factory for simplekv-Store-based storage classes. Takes configuration values and returns a simplekv-Store

Project description

.. image:: https://travis-ci.org/JDASoftwareGroup/storefact.svg?branch=master :target: https://travis-ci.org/JDASoftwareGroup/storefact .. image:: https://codecov.io/gh/JDASoftwareGroup/storefact/branch/master/graph/badge.svg :target: https://codecov.io/gh/JDASoftwareGroup/storefact .. image:: https://readthedocs.org/projects/storefact/badge/?version=latest :target: http://storefact.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status

=========================== Store factory for simplekv_

A factory for simplekv_-Store-based storage classes. Takes configuration values and returns a simplekv_-Store.

This allows one to easily deploy a blob-based store in production, but test with a filesystem-based store in development. The following simplekv_-Stores are supported in storefact:

  • DictStore
  • RedisStore
  • FilesystemStore
  • BotoStore (Amazon S3)
  • AzureBlockBlobStorage

Storefact is released as open source under the 3-clause BSD license.

.. _simplekv: https://github.com/mbr/simplekv

Installation

::

pip install storefact

Usage

There are two possibilities to use storefact.

  1. Use a dictionary with configuration data (e.g. loaded from an ini file)

.. code-block:: python

from storefact import get_store

params = {
    'account_name': 'test',
    'account_key': 'XXXsome_azure_account_keyXXX',
    'container': 'my-azure-container',
}
store = get_store('azure', **params)
store.put(u'key', b'value')
assert store.get(u'key') == b'value'
  1. Use an URL to specify the configuration

.. code-block:: python

from storefact import get_store_from_url, get_store

store = get_store_from_url('azure://test:XXXsome_azure_account_keyXXX@my-azure-container')
store.put(u'key', b'value')
assert store.get(u'key') == b'value'

URL and store types:

  • In memory: :code:memory:// and :code:hmemory://.
  • Redis: :code:redis://[[password@]host[:port]][/db] and :code:hredis://[[password@]host[:port]][/db]
  • Filesystem: :code:fs:// and :code:hfs://
  • Amazon S3: :code:s3://access_key:secret_key@endpoint/bucket[?create_if_missing=true] and :code:hs3://access_key:secret_key@endpoint/bucket[?create_if_missing=true]
  • Azure Blob Storage (:code:azure:// and :code:hazure://):
    • with storage account key: :code:azure://account_name:account_key@container[?create_if_missing=true][?max_connections=2]
    • with SAS token: :code:azure://account_name:shared_access_signature@container?use_sas&create_if_missing=false[?max_connections=2&socket_timeout=(20,100)]
    • with SAS and additional parameters: :code:azure://account_name:shared_access_signature@container?use_sas&create_if_missing=false[?max_connections=2&socket_timeout=(20,100)][?max_block_size=4*1024*1024&max_single_put_size=64*1024*1024][?default_endpoints_protocol=http&blob_endpoint=http://localhost:2121]

Storage URLs starting with a :code:h indicate extended allowed characters. This allows the usage of slashes and spaces in blob names. URL options with :code:[] are optional and the :code:[] need to be removed.

Documentation

The documentation can be found on readthedocs_.

.. _readthedocs: https://storefact.readthedocs.io/

Development

To run the all tests run::

tox

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

storefact-0.11.0.tar.gz (16.7 kB view hashes)

Uploaded source

Built Distribution

storefact-0.11.0-py2.py3-none-any.whl (11.5 kB view hashes)

Uploaded py2 py3

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