{ "info": { "author": "Oliver Berger", "author_email": "diefans@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3.5" ], "description": "objective\n=========\n\nAs a result of frustration working with colander, I decided to create something similar...\n\nObjective is a de/serialization tool with following features:\n\n- declarative definition of objectives.\n- no confusion about how to define something, it is always the same.\n- reuse definitions by inheritance.\n- optional validation.\n- make it simple to override certain parts.\n\n\n\nUsage\n-----\n\n\n\nSimple mapping and validation\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n.. code-block:: python\n\n import objective\n import datetime\n\n\n now = datetime.datetime(2001, 9, 11)\n\n\n class UserObjective(objective.Mapping):\n\n name = objective.Item(objective.Unicode, missing=objective.Ignore)\n email = objective.Item(objective.Unicode, validator=objective.Email())\n password = objective.Item(objective.Unicode)\n since = objective.Item(objective.UtcDateTime, missing=now)\n\n\n serialized = {\n 'email': 'foo@example.com',\n 'password': 'foobar'\n }\n\n\n deserialized = UserObjective.deserialize(serialized)\n\n\n assert deserialized == {\n 'password': u'foobar',\n 'email': u'foo@example.com',\n 'since': datetime.datetime(2001, 9, 11, 0, 0)\n }\n\n\n bad_serialized = {\n 'name': 'foobar'\n }\n\n\n try:\n deserialized = UserObjective().deserialize(bad_serialized)\n\n except objective.Invalid as e:\n\n assert isinstance(e, objective.exc.InvalidChildren)\n assert {(x.node.__name__, x.__class__, x.value) for x in e.children} == {\n ('password', objective.exc.MissingValue, objective.values.Undefined),\n ('email', objective.exc.InvalidValue, 'baz')\n }\n\n\nMapping complex structures\n\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\n\n.. code-block:: python\n\n import objective\n\n\n class ProductRequestObjective(objective.BunchMapping):\n @objective.Item()\n class body(objective.Mapping):\n name = objective.Item(objective.Unicode)\n root = objective.Item(objective.Unicode)\n\n @objective.Item()\n class semantics(objective.List):\n items = objective.Item(objective.Unicode)\n\n @objective.Item()\n class match(objective.Mapping):\n _id = objective.Item(objective.Field)\n\n\nIssues, thoughts, ideas\n-----------------------\n\nobjective is far from complete. There are tons of possible validators I can imagine.\n\nI tried my best (mostly in terms of time) to test.\n\nIf you find bugs or you have a great idea, I am totally open to implement it.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/diefans/objective", "keywords": "serialization deserialization serialize deserialize declarative object objective schema validation", "license": "", "maintainer": "", "maintainer_email": "", "name": "objective", "package_url": "https://pypi.org/project/objective/", "platform": "", "project_url": "https://pypi.org/project/objective/", "project_urls": { "Homepage": "https://github.com/diefans/objective" }, "release_url": "https://pypi.org/project/objective/0.0.13/", "requires_dist": [ "python-dateutil", "pytz", "validate-email" ], "requires_python": "", "summary": "declarative de/serialization of python structures", "version": "0.0.13" }, "last_serial": 4152259, "releases": { "0.0.10": [ { "comment_text": "", "digests": { "md5": "84e022f4f92f62ca3d11cd1554cabb54", "sha256": "e825e16063a8ba38b8a14e7224eb9164013515fc10f4ec38dc6bae1c8851392c" }, "downloads": -1, "filename": "objective-0.0.10.tar.gz", "has_sig": false, "md5_digest": "84e022f4f92f62ca3d11cd1554cabb54", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8580, "upload_time": "2016-09-29T14:25:05", "url": "https://files.pythonhosted.org/packages/92/92/37d634f14105b3e7e9d0c13ef3180bb684a2fa45f53aaeb5dcbefbafb775/objective-0.0.10.tar.gz" } ], "0.0.11": [ { "comment_text": "", "digests": { "md5": "a8f3cba5390668eb0ee80d150d3e9196", "sha256": "cc9e16dddec9f1ea536fc2ec31700736e8e584725e83d09b0cdbe02ded115c69" }, "downloads": -1, "filename": "objective-0.0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a8f3cba5390668eb0ee80d150d3e9196", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10210, "upload_time": "2017-10-20T09:27:54", "url": "https://files.pythonhosted.org/packages/56/99/a768e2cded6d217da549a8e0d7033e17bce9546bd582ae5397c71aff7184/objective-0.0.11-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e7535bdc3f5bc25efcf64bf0128539e2", "sha256": "c1882c47083f58499aa376c6918b9e5cffaf181adbbe662b10f87578c418f634" }, "downloads": -1, "filename": "objective-0.0.11.tar.gz", "has_sig": false, "md5_digest": "e7535bdc3f5bc25efcf64bf0128539e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8593, "upload_time": "2017-10-20T09:27:55", "url": "https://files.pythonhosted.org/packages/1c/25/7af83ebbd5a85159fa319366231eed27b07f796d11f0eb325db6bf442781/objective-0.0.11.tar.gz" } ], "0.0.12": [ { "comment_text": "", "digests": { "md5": "cf6042da081fcb19d2c993a64905e544", "sha256": "e0f20bea05d2e2faec2820d4db56f9c9327c6f7873590c56934e92a0175f6b3e" }, "downloads": -1, "filename": "objective-0.0.12-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cf6042da081fcb19d2c993a64905e544", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10243, "upload_time": "2017-11-02T12:45:01", "url": "https://files.pythonhosted.org/packages/44/ff/93b956d719edd8c2d2d9b21195db992d4f7a9061a107a9a395e774708518/objective-0.0.12-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8615bc5978f5c4c926eecbc0882903d9", "sha256": "be3342e6fd58291755afbd0b826b7c690694b6394a30531abcdf4b1cd78ca215" }, "downloads": -1, "filename": "objective-0.0.12.tar.gz", "has_sig": false, "md5_digest": "8615bc5978f5c4c926eecbc0882903d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8637, "upload_time": "2017-11-02T12:45:02", "url": "https://files.pythonhosted.org/packages/19/2a/88e68c9bd201073f13fde54f31990ba76c45f1ad9267749f602b49d21749/objective-0.0.12.tar.gz" } ], "0.0.13": [ { "comment_text": "", "digests": { "md5": "5e37f217c092eab5a0a2c2d870fa3082", "sha256": "6cbad75e6ccdb6a4cb187cd24caba3932e1adcd7719c8679ad166c378aadd775" }, "downloads": -1, "filename": "objective-0.0.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5e37f217c092eab5a0a2c2d870fa3082", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10249, "upload_time": "2018-08-09T09:33:31", "url": "https://files.pythonhosted.org/packages/b6/bc/c45a0aeef506a76704d6027a93506cf894f290b4b0d4749f2567ec8ae5b9/objective-0.0.13-py2.py3-none-any.whl" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "b2e9a836ab0b57b61f3de79a8556920d", "sha256": "096005944fdef29502aa2801fc70e675fa04a9c6c06f0d7d6cbe9639a001883d" }, "downloads": -1, "filename": "objective-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b2e9a836ab0b57b61f3de79a8556920d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 8868, "upload_time": "2015-05-31T16:45:17", "url": "https://files.pythonhosted.org/packages/e9/01/8507394efb9ed9b9e6341543cc49b6ee048cfbb88f9422e20ee7da5786f9/objective-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9c49c6b3e1884ed9408137b9237b0ca0", "sha256": "2f5e8c3f11697b74b1de456ca23def3465eb76502373cfc0157f770ca711f732" }, "downloads": -1, "filename": "objective-0.0.5.tar.gz", "has_sig": false, "md5_digest": "9c49c6b3e1884ed9408137b9237b0ca0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7274, "upload_time": "2015-05-31T16:45:21", "url": "https://files.pythonhosted.org/packages/db/cf/46d49ad1601daf8752eabdad77dc7d5a9b8b341718135ea922425edfd9cb/objective-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "736ca5ae19202494d77f72b89a133589", "sha256": "daf82e5f25fcddcdd483fb8c7507ebdb63bcb4a0eb5d6ba64f3afe513f73c97b" }, "downloads": -1, "filename": "objective-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "736ca5ae19202494d77f72b89a133589", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9047, "upload_time": "2016-03-23T09:36:20", "url": "https://files.pythonhosted.org/packages/97/f1/229322378d159bea50ee054e7fff9e04d5f846439efe2753f12e4e3f820b/objective-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "46633e3bffff745d3f5c859b095fa959", "sha256": "6ff8e5f747d7664cdc86df2a1fc8d0e59a69daaa2f59a54aef73af45f431cc0e" }, "downloads": -1, "filename": "objective-0.0.6.tar.gz", "has_sig": false, "md5_digest": "46633e3bffff745d3f5c859b095fa959", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7564, "upload_time": "2016-03-23T09:36:33", "url": "https://files.pythonhosted.org/packages/4e/55/ffa79c5653e1ad6a5403b89f7da0fedeb68012666d05c87d8d2283026ee4/objective-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "e3dae7238dd01d0dbf031bf941cb3b0d", "sha256": "ec7d92a416ff45a9ea3f052da138a1ce71a041439327da2290bc75ef0b60ebb9" }, "downloads": -1, "filename": "objective-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e3dae7238dd01d0dbf031bf941cb3b0d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9070, "upload_time": "2016-03-23T11:37:40", "url": "https://files.pythonhosted.org/packages/da/c7/0ea5079d3674ffe476d9d4deedd17af19445459eea867f81c800aba6ab59/objective-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "192df1aaeb3dc76c6ef7e738e252d30c", "sha256": "e3f668f285c7e17569a3bf058a3b01b1c7b5cb108a985582517a67aa28a81327" }, "downloads": -1, "filename": "objective-0.0.7.tar.gz", "has_sig": false, "md5_digest": "192df1aaeb3dc76c6ef7e738e252d30c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7582, "upload_time": "2016-03-23T11:37:45", "url": "https://files.pythonhosted.org/packages/4a/18/775862baec862ff5bc562dd67e04912eaeb9fbb83cb789745d377143fd89/objective-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "82b56d3419e3465a39b1f09630c6da52", "sha256": "3380b0deb95d919a0b2a9b4e28b6bd5c681d4f460714e94e3d5e5845ef37065c" }, "downloads": -1, "filename": "objective-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "82b56d3419e3465a39b1f09630c6da52", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9368, "upload_time": "2016-03-23T13:59:21", "url": "https://files.pythonhosted.org/packages/6c/1c/634ee7f7df4955ba5eebd13ec87464944c785c0274d72b65f331c8d41e17/objective-0.0.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "15ee7c8ce876373c484379afe34e99de", "sha256": "9c733601429f71e17661b5af3a5665170457d02a545b720c5d937c4d6a3b9e44" }, "downloads": -1, "filename": "objective-0.0.8.tar.gz", "has_sig": false, "md5_digest": "15ee7c8ce876373c484379afe34e99de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7941, "upload_time": "2016-03-23T13:59:27", "url": "https://files.pythonhosted.org/packages/dc/73/231d6532fb011213d4e3a07c651df86ad58b79fa2257d7df459d54b69e2a/objective-0.0.8.tar.gz" } ], "0.0.9": [ { "comment_text": "", "digests": { "md5": "6beda75601964d845aeaecb22516ad3e", "sha256": "7a1f5647b35ac62f5b86c23ee79621be3bbcc69111da776661121276b15dd2cc" }, "downloads": -1, "filename": "objective-0.0.9.tar.gz", "has_sig": false, "md5_digest": "6beda75601964d845aeaecb22516ad3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8313, "upload_time": "2016-07-18T11:46:48", "url": "https://files.pythonhosted.org/packages/e2/dd/92515f0f66e52b4f90799e8bc0991daee83ae3a56cb5055602127868acd7/objective-0.0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5e37f217c092eab5a0a2c2d870fa3082", "sha256": "6cbad75e6ccdb6a4cb187cd24caba3932e1adcd7719c8679ad166c378aadd775" }, "downloads": -1, "filename": "objective-0.0.13-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5e37f217c092eab5a0a2c2d870fa3082", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10249, "upload_time": "2018-08-09T09:33:31", "url": "https://files.pythonhosted.org/packages/b6/bc/c45a0aeef506a76704d6027a93506cf894f290b4b0d4749f2567ec8ae5b9/objective-0.0.13-py2.py3-none-any.whl" } ] }