{ "info": { "author": "Victor \"Nate\" Graf", "author_email": "nategraf1@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", "Topic :: Database", "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Thin Redis Object Layer (TROL)\n==============================\n**A library for light and predictable python object mappings to Redis**\n\n.. image:: https://readthedocs.org/projects/redis-thin-object-layer/badge/?version=latest\n :target: https://redis-thin-object-layer.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\nDocumentation\n-------------\nDocumentation is generated through sphinx and hosted at `Read the Docs`_! \n\n.. _Read the Docs: http://redis-thin-object-layer.readthedocs.io/en/latest/\n\nWhy did you build this?\n-----------------------\nI wanted an object oriented way to interact with redis that would provide exacting control over database layout,\npredicatble and fast queries, and good documentation. (hopefully I got that last one right, but I'm not the one to\njudge)\n\nThe first goal of trol is a statically defined, human-readble database structure defined by python classes. This allows\nthe dev to look at the database at runtime and read it as easily as the code which defined it. The dev should be able to\nmodify the database and know exactly what effect it will have on the program. As a result of this, trol explicitly does\nnot provide indexing or store supporting datastructures not defined by the programer.\n\nThe second goal of trol is fast and predictable querying. Any python access, function, or modification should result and\nin one or zero network transfers. One result of this is a structure which encourages the dev to create a database where\neveything is defined in location and uniquely identifieable without searching.\n\nHow do I use it?\n----------------\n``pip install trol`` and start defining your schema::\n\n >>> import trol\n >>> import redis\n ...\n >>> class MyDatabase(trol.Database):\n ... redis = redis.Redis()\n ...\n ... favorite_breweries = trol.SortedSet('favbreweries', typ=trol.Model)\n ... \n ... class Brewery(trol.Model):\n ... def __init__(self, short_name):\n ... self.id = short_name\n ...\n ... location = trol.Property()\n ... name = trol.Property(typ=str)\n ... beers = trol.Set(typ=trol.Model)\n ...\n ... class Beer(trol.Model):\n ... def __init__(self, name, batch_number):\n ... self.name = name\n ... self.batch_number = batch_number\n ...\n ... @property\n ... def id(self):\n ... return self.name + '@' + str(self.batch_number)\n ...\n ... style = trol.Property()\n ... rating = trol.Property(typ=int)\n ...\n >>> brewery = MyDatabase.Brewery('frmt')\n >>> brewery.location = (47.6490476, -122.3467747)\n >>> brewery.name = \"Fremont Brewing Company\"\n >>> lush = MyDatabase.Beer('Lush IPA', 120)\n >>> lush.style = \"Indian Pale Ale\"\n >>> lush.rating = 5\n >>> universale = MyDatabase.Beer('Universale', 245)\n >>> universale.style = \"American Pale Ale\"\n >>> universale.rating = 5\n >>> brewery.beers.add(lush, universale)\n 2\n >>> MyDatabase.favorite_breweries.add(brewery, 10)\n 1\n >>> set(MyDatabase.redis.keys()) == {\n ... b'favbreweries',\n ... b'Brewery:frmt:name',\n ... b'Brewery:frmt:location',\n ... b'Brewery:frmt:beers',\n ... b'Beer:Lush IPA@120:style',\n ... b'Beer:Lush IPA@120:rating',\n ... b'Beer:Universale@245:style',\n ... b'Beer:Universale@245:rating'\n ... }\n True\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/nategraf/trol", "keywords": "redis,object,mapper,thin,rom,redisco,cache", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "trol", "package_url": "https://pypi.org/project/trol/", "platform": "", "project_url": "https://pypi.org/project/trol/", "project_urls": { "Homepage": "https://github.com/nategraf/trol" }, "release_url": "https://pypi.org/project/trol/0.4.0/", "requires_dist": [ "redis" ], "requires_python": ">=3", "summary": "A light and predictable Redis object mapper", "version": "0.4.0" }, "last_serial": 4832826, "releases": { "0.0.dev0": [ { "comment_text": "", "digests": { "md5": "4ff13d92144109daebabbe882a80efee", "sha256": "6eeff249d9a699840a4e723cd022ed6bd0b58a421f83728ede1ef3166ca7904f" }, "downloads": -1, "filename": "trol-0.0.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "4ff13d92144109daebabbe882a80efee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 22136, "upload_time": "2019-02-18T00:31:59", "url": "https://files.pythonhosted.org/packages/8c/86/88675d2fd70af26d2f8d4bbce5a19427d37cba2a5aaacb6db7350b3c5939/trol-0.0.dev0-py3-none-any.whl" } ], "0.1": [ { "comment_text": "", "digests": { "md5": "8f12f552e1369eceebc5f1f95b4dfe0a", "sha256": "745362d205ce72fd32765739c587e7ac077caa9c768a736f158f9666bc584bee" }, "downloads": -1, "filename": "trol-0.1.tar.gz", "has_sig": false, "md5_digest": "8f12f552e1369eceebc5f1f95b4dfe0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18064, "upload_time": "2017-10-03T05:21:35", "url": "https://files.pythonhosted.org/packages/c8/6c/b4021b00eb98b3dbdc2b621b26f91d8c81468ad861165d670a542fea7623/trol-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "783828d22e78938f5c9a5781671c6079", "sha256": "cf541080434b89ded796d9f080b4cc12792280a2b346482a287a6ce3a7882b2c" }, "downloads": -1, "filename": "trol-0.1.1.tar.gz", "has_sig": false, "md5_digest": "783828d22e78938f5c9a5781671c6079", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18133, "upload_time": "2017-10-03T06:35:44", "url": "https://files.pythonhosted.org/packages/f3/f2/d9d0bdfa80fbaaea0f84fbebc5a6f9a09dd577ff33ca80caa203e117db2b/trol-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "f1dff6861b97855c2d093e0c76a2c5a6", "sha256": "c626c340bd9edbf1e35abc3009fd8d27f70becfd8a51ebe4b2e57a0036ab33a7" }, "downloads": -1, "filename": "trol-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f1dff6861b97855c2d093e0c76a2c5a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18177, "upload_time": "2017-10-05T02:17:46", "url": "https://files.pythonhosted.org/packages/09/88/5c090a419fd1cc6f677a18caee6ee3ebc5d9e4e15ffa01b72c51ff8b0214/trol-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "e548bca30b2be262b6e19bbf08e222ff", "sha256": "6e1355cfa590c69e42c0361cab9d4597508428558c9892d0c2c4851c74b9ce1d" }, "downloads": -1, "filename": "trol-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e548bca30b2be262b6e19bbf08e222ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18467, "upload_time": "2017-10-09T03:11:02", "url": "https://files.pythonhosted.org/packages/4a/93/b5cf3792585f55fff328773a3a126b5fb43e07b8ac90193a7cd9723a091d/trol-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "1de709060c34ef58754e7f5eb8110e53", "sha256": "73a2798055e6f33170bb3f831a4eed02faae829a72ceaf8c6c869a62dedbcfdf" }, "downloads": -1, "filename": "trol-0.2.1.tar.gz", "has_sig": false, "md5_digest": "1de709060c34ef58754e7f5eb8110e53", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18448, "upload_time": "2017-10-11T15:53:39", "url": "https://files.pythonhosted.org/packages/0a/a1/3567aa31f55a03dea3153f8734bd8d6907879db53b3efdc74a8960953fcc/trol-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "2e2ba561a6e57df009d49915c6092f88", "sha256": "d1afc754c25ddadee4f722098746d74dffd0ea91d8408258f7fb107bb5a05f20" }, "downloads": -1, "filename": "trol-0.2.2.tar.gz", "has_sig": false, "md5_digest": "2e2ba561a6e57df009d49915c6092f88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18463, "upload_time": "2017-10-12T05:18:42", "url": "https://files.pythonhosted.org/packages/b6/5b/46acd71ab2ce45f334db8773698fbc4669beace9c09fc2ed3b5d4ab3017d/trol-0.2.2.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "2fe6dbe10ce0770198280f0afc841ba1", "sha256": "1a1815b30d6987f4d91839ddb33ed406db5f6f2d84ff73a32f577eb93227c0fe" }, "downloads": -1, "filename": "trol-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2fe6dbe10ce0770198280f0afc841ba1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 22099, "upload_time": "2019-02-12T16:56:11", "url": "https://files.pythonhosted.org/packages/35/c8/6b26ca0f835d53de535c00f58387427ba4f595d0c86bdf7242afb1fd3ddb/trol-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fac8f3c01692e8068c5dfd6e967f4743", "sha256": "882bebba8597582c8cc6e29b9446b77a5bd2741970aa08f6d84b7ec4e61b37c9" }, "downloads": -1, "filename": "trol-0.3.1.tar.gz", "has_sig": false, "md5_digest": "fac8f3c01692e8068c5dfd6e967f4743", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 23028, "upload_time": "2019-02-12T16:56:13", "url": "https://files.pythonhosted.org/packages/d6/53/050df44c898bbdb9677aef435d99b56e388188aec084f006485f6bc47c7e/trol-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "26dd83a3ee2472de75562b178c0fb93f", "sha256": "5ef9390c01f23e553e9ff5850ce79f5f6177160218e2b6d4c39eee5847e2a31c" }, "downloads": -1, "filename": "trol-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "26dd83a3ee2472de75562b178c0fb93f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 22100, "upload_time": "2019-02-14T04:18:28", "url": "https://files.pythonhosted.org/packages/76/74/44ed32af524eba451f0b62a74248ae363f8f25cac2c0c8b4cdf0275c6b62/trol-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ad29b611d03549a0636e74160bb115c3", "sha256": "49ba9ab11ffd33b2c635ea52e0edd116a1b716af905cc5d9de0c2374f49bcaf2" }, "downloads": -1, "filename": "trol-0.3.2.tar.gz", "has_sig": false, "md5_digest": "ad29b611d03549a0636e74160bb115c3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 23031, "upload_time": "2019-02-14T04:18:29", "url": "https://files.pythonhosted.org/packages/f6/77/43b8dc4ffa5b871b343e194639a9f6baaf3e9578d1622eb31a0f2af73c2e/trol-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "c8827c66234dcc8f37c74a696a21dcdc", "sha256": "7feba5497388040829a117188cc3b399eb34a6f380cbdcd59e67ad4c77de1cce" }, "downloads": -1, "filename": "trol-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c8827c66234dcc8f37c74a696a21dcdc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 22094, "upload_time": "2019-02-14T04:22:32", "url": "https://files.pythonhosted.org/packages/93/23/d7a299d031f8d096fa3a6289f30c56b044f0bfcad70c1a79e953cd6d57f5/trol-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f7274df32627dd3683fe9ff855fd4cf7", "sha256": "58d9199d01e1c0093f1dbea7c6c150ed2edb041d4e824683edfb671bf3e22f50" }, "downloads": -1, "filename": "trol-0.3.3.tar.gz", "has_sig": false, "md5_digest": "f7274df32627dd3683fe9ff855fd4cf7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 23014, "upload_time": "2019-02-14T04:22:34", "url": "https://files.pythonhosted.org/packages/93/d6/c6dca7d9b5f5e63e339dd5c6d719e036f7c0f01ebd9d2ecc7be7daab63cb/trol-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "4a12b18389641019934e6a440555859b", "sha256": "bb14ceeaf6bc0945579b55eb0e9f7c46dc351380562f59cef59d8fdea8c72be5" }, "downloads": -1, "filename": "trol-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4a12b18389641019934e6a440555859b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 22366, "upload_time": "2019-02-15T23:56:39", "url": "https://files.pythonhosted.org/packages/ac/74/16cb7af29bcd7fb53b79c4e3b7c7ed98b13ddf5487d051ef8b5da3cf27b9/trol-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a3a86ee71f085318dd674a4a8dc7ea25", "sha256": "41a671b795c9afd561cf59e6ae4382833bd04d65d377957c7a9ff8b4baffdba5" }, "downloads": -1, "filename": "trol-0.3.4.tar.gz", "has_sig": false, "md5_digest": "a3a86ee71f085318dd674a4a8dc7ea25", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 23219, "upload_time": "2019-02-15T23:56:40", "url": "https://files.pythonhosted.org/packages/af/65/5206f2457ed063eadd35adb90e07b6e0d541420a186f5666d2f07e4750c5/trol-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "324baa7ad7710f8c19203b82da20654e", "sha256": "7d12980e8a11927f5696d876af7d12ace5116fb3c16788701f5734f78c17abe1" }, "downloads": -1, "filename": "trol-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "324baa7ad7710f8c19203b82da20654e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 22335, "upload_time": "2019-02-16T00:13:15", "url": "https://files.pythonhosted.org/packages/8a/a1/7b7838c38174518fa410882b772e1d385f1ba0989428820f1b7b17310562/trol-0.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53d1d9a32cc16759ae5820f407305158", "sha256": "004ab33967a034f57907b7d48ed7a94ab3ffa07cd91f5bbfe14473eda009901e" }, "downloads": -1, "filename": "trol-0.3.5.tar.gz", "has_sig": false, "md5_digest": "53d1d9a32cc16759ae5820f407305158", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 23185, "upload_time": "2019-02-16T00:13:17", "url": "https://files.pythonhosted.org/packages/07/86/d4255314d0a2a9b10b609f857f6f2096f6e51f1c3ae0f5f13fd1bc732805/trol-0.3.5.tar.gz" } ], "0.3.6": [ { "comment_text": "", "digests": { "md5": "54363db1ba56eb9bc2bee017ebca4dea", "sha256": "58302a89b01d5fb7280f10735e6a9b2e7dc6adafdbb4290dc5f275ae4debc817" }, "downloads": -1, "filename": "trol-0.3.6-py3-none-any.whl", "has_sig": false, "md5_digest": "54363db1ba56eb9bc2bee017ebca4dea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 22335, "upload_time": "2019-02-17T22:27:04", "url": "https://files.pythonhosted.org/packages/43/60/404f66dd97fa236b4e761c161059702c4d264b1712307f9c12fbb3883d05/trol-0.3.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4d1598ab6d7cf497da57a58635572582", "sha256": "519de1269522a11b6df485ce23451d578c9277d5bfa4ca2f003b023925dc847a" }, "downloads": -1, "filename": "trol-0.3.6.tar.gz", "has_sig": false, "md5_digest": "4d1598ab6d7cf497da57a58635572582", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 23734, "upload_time": "2019-02-17T22:27:05", "url": "https://files.pythonhosted.org/packages/fd/5e/c00e9ef9578e6180f479f4817d5767cd073fea718e5bba8ae5108e8562a0/trol-0.3.6.tar.gz" } ], "0.3.7": [ { "comment_text": "", "digests": { "md5": "d934b8afe47b1bc9bbbe633dff82fb23", "sha256": "24cbb140356c5079beea1a2a6594fd8c1b4366acf656426ce99746cb7acb10ee" }, "downloads": -1, "filename": "trol-0.3.7-py3-none-any.whl", "has_sig": false, "md5_digest": "d934b8afe47b1bc9bbbe633dff82fb23", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 22326, "upload_time": "2019-02-18T00:27:29", "url": "https://files.pythonhosted.org/packages/30/42/9c081e2925542badc5069b1151c54b872e74d2970a1a9c273241c8ed4638/trol-0.3.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7665ff3c555124ed3774b72f18db9a39", "sha256": "a115b294448a0a74da61f5a3c27769b13df62dd5c6d0b3c71f7aea2c4f23c850" }, "downloads": -1, "filename": "trol-0.3.7.tar.gz", "has_sig": false, "md5_digest": "7665ff3c555124ed3774b72f18db9a39", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 23739, "upload_time": "2019-02-18T00:27:30", "url": "https://files.pythonhosted.org/packages/44/41/14caed26f350079805f813401f7189792506d38b45a1beb744e7f2c2d460/trol-0.3.7.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "4ae05ef11c31c01804c00fb0d55f3220", "sha256": "ba32eb9ae80c3c1f0d8ca287a8702d28ebce52f1125176214a93755cb5bd3ebe" }, "downloads": -1, "filename": "trol-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4ae05ef11c31c01804c00fb0d55f3220", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 22861, "upload_time": "2019-02-18T00:40:08", "url": "https://files.pythonhosted.org/packages/6e/ab/fd07a1035e083c4013cc646b1224b9638267abfd9da624a054980fcd3bf0/trol-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "41428bca62adc2f01b5e6155f283a213", "sha256": "4bec4a079487cf7c8929df9e9939a4d3800a252f3acf5293c21be4b1a134d367" }, "downloads": -1, "filename": "trol-0.4.0.tar.gz", "has_sig": false, "md5_digest": "41428bca62adc2f01b5e6155f283a213", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 23756, "upload_time": "2019-02-18T00:40:10", "url": "https://files.pythonhosted.org/packages/0d/e8/2a18df68fc1578d0b8ba85dd97d0a13f0fd8077c936f5f12fdd3db2213c1/trol-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4ae05ef11c31c01804c00fb0d55f3220", "sha256": "ba32eb9ae80c3c1f0d8ca287a8702d28ebce52f1125176214a93755cb5bd3ebe" }, "downloads": -1, "filename": "trol-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4ae05ef11c31c01804c00fb0d55f3220", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 22861, "upload_time": "2019-02-18T00:40:08", "url": "https://files.pythonhosted.org/packages/6e/ab/fd07a1035e083c4013cc646b1224b9638267abfd9da624a054980fcd3bf0/trol-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "41428bca62adc2f01b5e6155f283a213", "sha256": "4bec4a079487cf7c8929df9e9939a4d3800a252f3acf5293c21be4b1a134d367" }, "downloads": -1, "filename": "trol-0.4.0.tar.gz", "has_sig": false, "md5_digest": "41428bca62adc2f01b5e6155f283a213", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 23756, "upload_time": "2019-02-18T00:40:10", "url": "https://files.pythonhosted.org/packages/0d/e8/2a18df68fc1578d0b8ba85dd97d0a13f0fd8077c936f5f12fdd3db2213c1/trol-0.4.0.tar.gz" } ] }