{ "info": { "author": "Alex Kessinger", "author_email": "voidfiles@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "SSShelf\n=======\n\n.. image:: https://img.shields.io/pypi/v/ssshelf.svg\n :target: https://pypi.python.org/pypi/ssshelf\n\n.. image:: https://travis-ci.org/voidfiles/ssshelf.svg?branch=master\n :target: https://travis-ci.org/voidfiles/ssshelf\n\n.. image:: https://codeclimate.com/github/voidfiles/ssshelf/badges/gpa.svg\n :target: https://codeclimate.com/github/voidfiles/ssshelf\n :alt: Code Climate\n\n.. image:: https://codeclimate.com/github/voidfiles/ssshelf/badges/coverage.svg\n :target: https://codeclimate.com/voidfiles/ssshelf/codeclimate/coverage\n :alt: Test Coverage\n\n\nAn S3 persistence manager. If you squint closely enough you could\neven call it a database.\n\nGoals\n-----\n\n- Lots of examples\n- Blob Storage as primary (S3, Ceph, Google Cloud Storage, etc.)\n\nConcerns\n--------\n\n- Eventual Consistency\n- Speed\n- Constraints\n\nExamples Using SSShelf\n----------------------\n\n- A URL Shortner ready for heroku https://github.com/voidfiles/ssshelf-url-shortener\n\nExample\n-------\n\n\n.. code-block:: python\n\n import asyncio\n from datetime import datetime\n import simpleflake\n import json\n\n from ssshelf.items import IManager\n from ssshelf.collections import Collection\n from ssshelf.utils import convert_datetime_to_str, json_dump\n from ssshelf.managers import CManager\n from ssshelf.storages.s3 import S3Storage\n\n\n class Bookmark(IManager):\n def get_pk(self, item):\n return str(item['pk'])\n\n def serialize_item(self, item):\n return bytes(json_dump(item), 'utf8')\n\n def deserialize_item(self, data):\n return json.loads(data)\n\n\n class AllBookmarks(Collection):\n def get_pk(self, item):\n return str(item['pk'])\n\n def key(self, item):\n return [\n [convert_datetime_to_str(item['created_at'])]\n ]\n\n\n class BookmarkManager(CManager):\n item_manager = Bookmark()\n every = AllBookmarks()\n\n async def demo():\n bookmark_manager = BookmarkManager(S3Storage())\n\n bookmark = {\n 'pk': simpleflake.simpleflake(),\n 'link': 'http://google.com',\n 'created_at': datetime.utcnow()\n }\n\n await bookmark_manager.add_item(bookmark)\n\n resp = await bookmark_manager.every.get_items()\n\n assert resp['items'][0]['link'] == 'http://google.com'\n\n loop = asyncio.get_event_loop()\n loop.run_until_complete(demo())", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/voidfiles/ssshelf", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "ssshelf", "package_url": "https://pypi.org/project/ssshelf/", "platform": "", "project_url": "https://pypi.org/project/ssshelf/", "project_urls": { "Homepage": "http://github.com/voidfiles/ssshelf" }, "release_url": "https://pypi.org/project/ssshelf/0.1.3/", "requires_dist": null, "requires_python": "", "summary": "A collection and persistance manager for blob stores like aws S3", "version": "0.1.3" }, "last_serial": 3237396, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "840fa69c414cc1c9415bb74ff802f55e", "sha256": "67482ec9ca9d5ea15a06fe6edfb5c631a71848584b0e22d1232c81bbd6f6375b" }, "downloads": -1, "filename": "ssshelf-0.0.1.tar.gz", "has_sig": false, "md5_digest": "840fa69c414cc1c9415bb74ff802f55e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6433, "upload_time": "2017-09-17T03:33:20", "url": "https://files.pythonhosted.org/packages/b4/e3/042ab4b124d18248f1726a1026510ca4d1e26599365ddfae7edcc6df7cfb/ssshelf-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "ebc893a29660709daa37cf73bdd44e1c", "sha256": "a1aa596f613a276e68a4b322940a9606000652699014d1e9dfed63b50921d303" }, "downloads": -1, "filename": "ssshelf-0.0.2.tar.gz", "has_sig": false, "md5_digest": "ebc893a29660709daa37cf73bdd44e1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6512, "upload_time": "2017-09-17T04:47:12", "url": "https://files.pythonhosted.org/packages/00/48/8045cf4aae6534309bd668276067e06c271b7e6e3603810886b4eecdf7c3/ssshelf-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "191735d9b55a81b3a3682c7b855e201f", "sha256": "ef5ea02d2cf3cf74a5429b456f29563660bad4ed1fb87ac75382b6ad3e1d0910" }, "downloads": -1, "filename": "ssshelf-0.0.3.tar.gz", "has_sig": false, "md5_digest": "191735d9b55a81b3a3682c7b855e201f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6500, "upload_time": "2017-09-17T22:37:02", "url": "https://files.pythonhosted.org/packages/8e/6c/b64a50416c38ff4f1caae09b2b91fbe3c3a7a62540f1cd8656a89c6dfc0d/ssshelf-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "07d4839fe9955e5d84eb761c84ba49a1", "sha256": "2830c81398088251a0d4c4a14276a37e888ab0e5685e9c0d9d4fb1fed05e7caa" }, "downloads": -1, "filename": "ssshelf-0.0.4.tar.gz", "has_sig": false, "md5_digest": "07d4839fe9955e5d84eb761c84ba49a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7435, "upload_time": "2017-09-20T02:31:36", "url": "https://files.pythonhosted.org/packages/be/d5/c079b85712984d5e81bf411ea61e725d3b9bb3f0e39c69be0121d80e9f53/ssshelf-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "d393fe504976004daee3362c3bcacc24", "sha256": "543e36ab30c48fe8d58f412fcb299b3916c6f5091ca72aa1bfbddb136ec0b8d7" }, "downloads": -1, "filename": "ssshelf-0.0.5.tar.gz", "has_sig": false, "md5_digest": "d393fe504976004daee3362c3bcacc24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7478, "upload_time": "2017-09-22T03:50:42", "url": "https://files.pythonhosted.org/packages/3b/30/816cfb0446a7e2d4989ae4810456d2e61264a85ebd409a24c5a33437c1ba/ssshelf-0.0.5.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "20539d7bf08b6962da9479d10a0234c9", "sha256": "e15a5e217b64800d4608e6da15cc6cacdaf05a7433d868e032f619ed9831ccfb" }, "downloads": -1, "filename": "ssshelf-0.1.0.tar.gz", "has_sig": false, "md5_digest": "20539d7bf08b6962da9479d10a0234c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8384, "upload_time": "2017-09-30T22:32:47", "url": "https://files.pythonhosted.org/packages/ce/6a/6d0c2f4c32d3766c3474198e763c6cdc19a2d3c7fa7643bf98de11566718/ssshelf-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "46111dd9e70a9eba2552ea2d60030229", "sha256": "fb4f33bfbaa11bdf74a5cf76983861e70b98a1646cb73d6db5c3454658b3a5be" }, "downloads": -1, "filename": "ssshelf-0.1.1.tar.gz", "has_sig": false, "md5_digest": "46111dd9e70a9eba2552ea2d60030229", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8397, "upload_time": "2017-09-30T22:36:34", "url": "https://files.pythonhosted.org/packages/60/ee/269c41950d971bcb2b87b4bbb678669e5de9956b851ec4c8891dbfbfce12/ssshelf-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "d27ced999b318444047c713a910a9364", "sha256": "18ef41dcd5de897258e631b311aa2c69169bcb622a5d3e99c599377f37402b05" }, "downloads": -1, "filename": "ssshelf-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d27ced999b318444047c713a910a9364", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8799, "upload_time": "2017-10-03T03:43:43", "url": "https://files.pythonhosted.org/packages/d6/ba/6c8672e430bdebcf4bad3624e782b4786640d8413ab0544f800adf39e254/ssshelf-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "0415aa8035c273d74b515f09e2aa0241", "sha256": "0889319c2f1bf13a817e7ccb5a9d5a3c123557592cff37752223dc4dfa306694" }, "downloads": -1, "filename": "ssshelf-0.1.3.tar.gz", "has_sig": false, "md5_digest": "0415aa8035c273d74b515f09e2aa0241", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8813, "upload_time": "2017-10-09T20:46:18", "url": "https://files.pythonhosted.org/packages/db/27/4d6be28bddc73974357353d1192abbacae9972e2a099dc6352c488cc5f8b/ssshelf-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0415aa8035c273d74b515f09e2aa0241", "sha256": "0889319c2f1bf13a817e7ccb5a9d5a3c123557592cff37752223dc4dfa306694" }, "downloads": -1, "filename": "ssshelf-0.1.3.tar.gz", "has_sig": false, "md5_digest": "0415aa8035c273d74b515f09e2aa0241", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8813, "upload_time": "2017-10-09T20:46:18", "url": "https://files.pythonhosted.org/packages/db/27/4d6be28bddc73974357353d1192abbacae9972e2a099dc6352c488cc5f8b/ssshelf-0.1.3.tar.gz" } ] }