{ "info": { "author": "Evan Borgstrom", "author_email": "evan@borgstrom.ca", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python", "Topic :: Database", "Topic :: Internet", "Topic :: Software Development :: Libraries" ], "description": "DynamoDB + Marshmallow == Dynamallow\n====================================\n\n.. image:: https://img.shields.io/travis/borgstrom/dynamallow.svg\n :target: https://travis-ci.org/borgstrom/dynamallow\n\n.. image:: https://img.shields.io/codecov/c/github/borgstrom/dynamallow.svg\n :target: https://codecov.io/github/borgstrom/dynamallow\n\n.. image:: https://img.shields.io/pypi/v/dynamallow.svg\n :target: https://pypi.python.org/pypi/dynamallow\n :alt: Latest PyPI version\n\n.. image:: https://img.shields.io/pypi/dm/dynamallow.svg\n :target: https://pypi.python.org/pypi/dynamallow\n :alt: Number of PyPI downloads\n\n----\n\n*This package is a work in progress -- Feedback / Suggestions / Etc welcomed!*\n\nTwo awesome things, better together!\n\nDynamallow is a Python library that provides integration between the `Boto v3 DynamoDB API`_ and `Marshmallow`_.\nTogether they provide a simple, ORM inspired, interface to the `DynamoDB`_ service with a fully defined, strongly typed\nschema.\n\n.. code-block:: python\n\n from dynamallow import MarshModel\n from marshmallow import fields\n\n class Book(MarshModel):\n class Table:\n name = 'prod-books'\n hash_key = 'isbn'\n read = 25\n write = 5\n\n class Schema:\n isbn = fields.String(validate=validate_isbn)\n title = fields.String()\n author = fields.String()\n publisher = fields.String()\n year = fields.Number()\n\n\n # Store new documents directly from dictionaries\n Book.put({\n \"isbn\": \"12345678910\",\n \"title\": \"Foo\",\n \"author\": \"Mr. Bar\",\n \"publisher\": \"Publishorama\"\n })\n\n # Work with the classes as objects\n # You can pass attributes from the schema to the constructor\n foo = Book(isbn=\"12345678910\", title=\"Foo\", author=\"Mr. Bar\",\n publisher=\"Publishorama\")\n foo.save()\n\n # Or assign attributes\n foo = Book()\n foo.isbn = \"12345678910\"\n foo.title = \"Foo\"\n foo.author = \"Mr. Bar\"\n foo.publisher = \"Publishorama\"\n foo.save()\n\n # In all cases they go through Schema validation, calls to\n # .put or .save can result in ValidationError being raised.\n\n # You can then fetch, query and scan your tables.\n\n # Get on the hash key, and/or range key\n Book.get(isbn=\"12345678910\")\n\n # Query based on the keys\n Book.query(isbn__begins_with=\"12345\")\n\n # Scan based on attributes\n Book.scan(author=\"Mr. Bar\")\n Book.scan(author__ne=\"Mr. Bar\")\n\n\nDocumentation\n=============\n\nFull documentation can be found online at:\n\nhttp://borgstrom.github.io/dynamallow/\n\n\nTODO\n====\n\n* Indexes -- Currently there is no support for indexes.\n* Schema Migrations\n* Partial updates on ``save()``\n\n\n.. _Boto v3 DynamoDB API: http://boto3.readthedocs.io/en/latest/guide/dynamodb.html\n.. _Marshmallow: https://marshmallow.readthedocs.io/en/latest/\n.. _DynamoDB: http://aws.amazon.com/dynamodb/", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/borgstrom/dynamallow", "keywords": null, "license": "Apache License Version 2.0", "maintainer": null, "maintainer_email": null, "name": "dynamallow", "package_url": "https://pypi.org/project/dynamallow/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/dynamallow/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/borgstrom/dynamallow" }, "release_url": "https://pypi.org/project/dynamallow/0.0.3/", "requires_dist": null, "requires_python": null, "summary": "Python ORM style interface to Amazon (AWS) DynamoDB using Schematics or Marshmallow for Schema validation", "version": "0.0.3" }, "last_serial": 2365227, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "eb27c01499e7a662294d211342b071fe", "sha256": "86482b1bf4310d0a2bf9d40c931d565116cac13ac563b67c88d4c18005d70c7b" }, "downloads": -1, "filename": "dynamallow-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eb27c01499e7a662294d211342b071fe", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11186, "upload_time": "2016-06-13T03:49:49", "url": "https://files.pythonhosted.org/packages/88/34/62b7c68600998b0b9814265760d7f0369bb9a1507af43bdde72a38713750/dynamallow-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "82f8c7a82ca5fceded03de8417c66bf3", "sha256": "11c27cbcb4e1533b26ffbcac9daa75e35457d41fb98cada0260ba3a7e437f564" }, "downloads": -1, "filename": "dynamallow-0.0.1.tar.gz", "has_sig": false, "md5_digest": "82f8c7a82ca5fceded03de8417c66bf3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8150, "upload_time": "2016-06-13T03:49:54", "url": "https://files.pythonhosted.org/packages/24/30/7185bb1ee170a7cda659b6a888632635028885f79af18f9629ee2e675fd9/dynamallow-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "a9f1c30d2eb38e8bcb4780b0a3ae643c", "sha256": "1f178e15ca4521f72299bae1c0afdd11df54972536144cd702051c4794cab940" }, "downloads": -1, "filename": "dynamallow-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a9f1c30d2eb38e8bcb4780b0a3ae643c", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12921, "upload_time": "2016-09-26T20:32:19", "url": "https://files.pythonhosted.org/packages/eb/50/5265c707bfc4f4ea9b4ff0bc80578f9f23e2c6e9b347d3e8297e33b7e706/dynamallow-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8a943eb6ddda4b676a83df4625dcd440", "sha256": "3eda5ea9e09134a7bffc34ce4a1288e32b1a6feafdb0d3da6549d8ba3eb8a929" }, "downloads": -1, "filename": "dynamallow-0.0.2.tar.gz", "has_sig": false, "md5_digest": "8a943eb6ddda4b676a83df4625dcd440", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9255, "upload_time": "2016-09-26T20:32:15", "url": "https://files.pythonhosted.org/packages/d0/7a/349c260fc6e0b977560322f10eb9e836eb2e06a9af80264fa4be76059cfd/dynamallow-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "0920ab97f5bb180b9abc6f89593591aa", "sha256": "271fe5c68b39d20d126284649deb4c5a0c59ff8f938492b6d41059c37fc01077" }, "downloads": -1, "filename": "dynamallow-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0920ab97f5bb180b9abc6f89593591aa", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15187, "upload_time": "2016-09-26T23:28:22", "url": "https://files.pythonhosted.org/packages/f4/d4/575cc74cba280993f85d6e61f1fed9aaee7ceb1911e7e2d6974abd273892/dynamallow-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3cde0cb76ebd64a1d1167f4c1072fa30", "sha256": "9e15ac0f310df0074823199df0f2c8b0b01202fc3a59d1c0a8b999848194206c" }, "downloads": -1, "filename": "dynamallow-0.0.3.tar.gz", "has_sig": false, "md5_digest": "3cde0cb76ebd64a1d1167f4c1072fa30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10298, "upload_time": "2016-09-26T23:28:19", "url": "https://files.pythonhosted.org/packages/98/2b/19e2d7fb39a6552843aa0c9a818fc633f1b6136f4ca8974b81a2fef61118/dynamallow-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0920ab97f5bb180b9abc6f89593591aa", "sha256": "271fe5c68b39d20d126284649deb4c5a0c59ff8f938492b6d41059c37fc01077" }, "downloads": -1, "filename": "dynamallow-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0920ab97f5bb180b9abc6f89593591aa", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15187, "upload_time": "2016-09-26T23:28:22", "url": "https://files.pythonhosted.org/packages/f4/d4/575cc74cba280993f85d6e61f1fed9aaee7ceb1911e7e2d6974abd273892/dynamallow-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3cde0cb76ebd64a1d1167f4c1072fa30", "sha256": "9e15ac0f310df0074823199df0f2c8b0b01202fc3a59d1c0a8b999848194206c" }, "downloads": -1, "filename": "dynamallow-0.0.3.tar.gz", "has_sig": false, "md5_digest": "3cde0cb76ebd64a1d1167f4c1072fa30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10298, "upload_time": "2016-09-26T23:28:19", "url": "https://files.pythonhosted.org/packages/98/2b/19e2d7fb39a6552843aa0c9a818fc633f1b6136f4ca8974b81a2fef61118/dynamallow-0.0.3.tar.gz" } ] }