Skip to content

A factory for simplekv-Store-based storage classes.

License

Notifications You must be signed in to change notification settings

Blue-Yonder-OSS/storefact

Folders and files

NameName
Last commit message
Last commit date
Jan 12, 2024
Aug 10, 2017
Jan 24, 2023
Jan 12, 2024
Aug 10, 2017
Aug 10, 2017
Jan 12, 2024
Jan 14, 2023
Aug 10, 2017
Aug 10, 2017
Jan 24, 2023
Jul 31, 2019
Aug 10, 2017
Nov 4, 2019
Aug 10, 2017
Jan 12, 2024
Jan 12, 2024

Repository files navigation

https://travis-ci.org/JDASoftwareGroup/storefact.svg?branch=master 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.

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)
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
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: memory:// and hmemory://.
  • Redis: redis://[[password@]host[:port]][/db] and hredis://[[password@]host[:port]][/db]
  • Filesystem: fs:// and hfs://
  • Amazon S3: s3://access_key:secret_key@endpoint/bucket[?create_if_missing=true] and hs3://access_key:secret_key@endpoint/bucket[?create_if_missing=true]
  • Azure Blob Storage (azure:// and hazure://):
    • with storage account key: azure://account_name:account_key@container[?create_if_missing=true][?max_connections=2]
    • with SAS token: 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: 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 h indicate extended allowed characters. This allows the usage of slashes and spaces in blob names. URL options with [] are optional and the [] need to be removed.

Documentation

The documentation can be found on readthedocs.

Development

To run the all tests run:

tox