{ "info": { "author": "Daniel Garcia (cr0hn)", "author_email": "cr0hn@cr0hn.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Booby: data modeling and validation\n===================================\n\n.. image:: https://img.shields.io/pypi/v/booby.svg\n :target: https://pypi.python.org/pypi/booby\n :alt: Latest version\n\n.. image:: https://readthedocs.org/projects/booby/badge\n :target: http://booby.readthedocs.org/en/latest\n :alt: Docs\n\n.. image:: https://img.shields.io/badge/Licence-Apache2-brightgreen.svg\n :target: https://www.tldrlegal.com/l/apache2\n :alt: License\n\n.. image:: https://img.shields.io/pypi/dm/booby.svg\n :target: https://pypi.python.org/pypi/booby\n :alt: Number of PyPI downloads\n\n.. image:: https://secure.travis-ci.org/jaimegildesagredo/booby.svg?branch=master\n :target: http://travis-ci.org/jaimegildesagredo/booby\n :alt: Build status\n\n**This project is a fork of official project*** with some new features.\n\nBooby is a standalone data `modeling` and `validation` library written in Python. Booby is under active development (visit `this blog post `_ for more info and the roadmap) and licensed under the `Apache2 license `_, so feel free to `contribute `_ and `report errors and suggestions `_.\n\nUsage\n-----\n\nSee the sample code below to get an idea of the main features.\n\n.. code-block:: python\n\n from booby import Model, fields\n\n\n class Token(Model):\n key = fields.String()\n secret = fields.String()\n\n\n class Address(Model):\n line_1 = fields.String()\n line_2 = fields.String()\n\n\n class User(Model):\n login = fields.String(required=True)\n name = fields.String()\n email = fields.Email()\n site = fields.URL()\n token = fields.Embedded(Token, required=True)\n addresses = fields.Collection(Address)\n\n jack = User(\n login='jack',\n name='Jack',\n email='jack@example.com',\n url='http://mysite.com',\n token={\n 'key': 'vs7dfxxx',\n 'secret': 'ds5ds4xxx'\n },\n addresses=[\n {'line_1': 'Main Street'},\n {'line_1': 'Main St'}\n ]\n )\n\n if jack.is_valid:\n print jack.to_json(indent=2)\n else:\n print json.dumps(dict(jack.validation_errors))\n\n.. code-block:: json\n\n {\n \"email\": \"jack@example.com\",\n \"url\": \"http://mysite.com\",\n \"login\": \"jack\",\n \"token\": {\n \"secret\": \"ds5ds4xxx\",\n \"key\": \"vs7dfxxx\"\n },\n \"name\": \"Jack\",\n \"addresses\": [\n {\n \"line_1\": \"Main St\",\n \"line_2\": null\n },\n {\n \"line_1\": \"Main Street\",\n \"line_2\": null\n }\n ]\n }\n\nAdvanced\n--------\n\nBooby raises when you try to pass a property as input dict thata not exist as property. It's very annoying when you want to pass a big JSON and want that Booby take only their parameters that it understand.\n\nFor example:\n\n.. code-block:: python\n\n from booby import Model, fields\n\n class User(Model):\n login = fields.String(required=True)\n name = fields.String()\n\n input_info = dict(login=\"john\", name=\"doe\", address=\"other field\")\n\n jack = User(**input_info)\n\nThis code raise the exception:\n\n.. code-block:: bash\n\n > python example.py\n Traceback (most recent call last):\n File \"/Users/Dani/Projects/apitest/apitest/actions/analyze/console.py\", line 39, in launch_analyze_in_console\n postman_parser(json_info)\n File \"/Users/Dani/Projects/apitest/apitest/actions/analyze/postman.py\", line 52, in postman_parser\n end_points=postman_info.get(\"item\")))\n File \"/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py\", line 108, in __init__\n self._update(kwargs)\n File \"/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py\", line 163, in _update\n self[k] = v\n File \"/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py\", line 150, in __setitem__\n setattr(self, k, v)\n File \"/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/fields.py\", line 317, in __set__\n value = self._resolve(value)\n File \"/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/fields.py\", line 325, in _resolve\n item = self.model(**item)\n File \"/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py\", line 108, in __init__\n self._update(kwargs)\n File \"/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py\", line 163, in _update\n self[k] = v\n File \"/Users/Dani/.virtualenvs/apitest/lib/python3.5/site-packages/booby/models.py\", line 148, in __setitem__\n\n booby.errors.FieldError: address\n\nIf you want Booby ignore these properties that don't understand, you can define the Model class adding the property `__ignore_missing__`\n\n.. code-block:: python\n\n from booby import Model, fields\n\n class User(Model):\n __ignore_missing__ = True\n\n login = fields.String(required=True)\n name = fields.String()\n\n input_info = dict(login=\"john\", name=\"doe\", address=\"other field\")\n\n jack = User(**input_info)\n\n\nInstallation\n------------\n\nYou can install the last stable release of Booby from PyPI using pip or easy_install.\n\n.. code-block:: bash\n\n $ pip install booby\n\nAlso you can install the latest sources from Github.\n\n.. code-block:: bash\n\n $ pip install -e git+git://github.com/jaimegildesagredo/booby.git#egg=booby\n\nTests\n-----\n\nTo run the Booby test suite you should install the development requirements and then run nosetests.\n\n.. code-block:: bash\n\n $ pip install -r test-requirements.txt\n $ nosetests tests/unit\n $ nosetests tests/integration\n\nChanges\n-------\n\nSee `Changes `_.", "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/cr0hn/booby", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "booby-ng", "package_url": "https://pypi.org/project/booby-ng/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/booby-ng/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/cr0hn/booby" }, "release_url": "https://pypi.org/project/booby-ng/0.8.4/", "requires_dist": null, "requires_python": null, "summary": "Data modeling and validation Python library", "version": "0.8.4" }, "last_serial": 2516420, "releases": { "0.8.0": [ { "comment_text": "", "digests": { "md5": "d3fb9b30c7c1484154691ec54fd1f596", "sha256": "8a5dbfb13608999a7fd6a6de68215f6af5f9a5028a96cfc675229080ea5008a8" }, "downloads": -1, "filename": "booby-ng-0.8.0.tar.gz", "has_sig": false, "md5_digest": "d3fb9b30c7c1484154691ec54fd1f596", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13005, "upload_time": "2016-09-05T10:58:41", "url": "https://files.pythonhosted.org/packages/2d/8d/f146e2a34c88a29a1c978789955a9916b1a95351988021edbbfe3e8bea4f/booby-ng-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "9f3c7c79b6ea1b495311624a9d5d8241", "sha256": "367d56a4fcdc12161bb12beede670644a1da1d652560f36497aca3beb2baf4d7" }, "downloads": -1, "filename": "booby-ng-0.8.1.tar.gz", "has_sig": false, "md5_digest": "9f3c7c79b6ea1b495311624a9d5d8241", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13005, "upload_time": "2016-09-05T16:38:39", "url": "https://files.pythonhosted.org/packages/87/5a/8a0ea9853858153e57cf8769916ed55399435945c88af08286b1315f3300/booby-ng-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "2d4a0006b35f7179107d91af7aa9665b", "sha256": "206da0deda49c23c0626333afd7143d525c9676d20aa7077893d906b15300ec5" }, "downloads": -1, "filename": "booby-ng-0.8.2.tar.gz", "has_sig": false, "md5_digest": "2d4a0006b35f7179107d91af7aa9665b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13148, "upload_time": "2016-09-16T12:12:14", "url": "https://files.pythonhosted.org/packages/7e/e6/c650afb77b39eafc8d3cb8f656593dd85393582fb3656b0467b705998a55/booby-ng-0.8.2.tar.gz" } ], "0.8.2.post1": [ { "comment_text": "", "digests": { "md5": "2ba905b55c51fc1185dbb6b8b9f5c0a1", "sha256": "19d014d588be62e8c2c5848be624b7cd3a4f5d9617ed053f6050a85a557d659e" }, "downloads": -1, "filename": "booby-ng-0.8.2.post1.tar.gz", "has_sig": false, "md5_digest": "2ba905b55c51fc1185dbb6b8b9f5c0a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13160, "upload_time": "2016-09-16T21:18:52", "url": "https://files.pythonhosted.org/packages/45/48/fbe870b9a7cd4b728812b84f23f6d2abb782be5d98c17b01b850bc2a4ba7/booby-ng-0.8.2.post1.tar.gz" } ], "0.8.2.post2": [ { "comment_text": "", "digests": { "md5": "a6c8436f5e0646243c26bc5364a6041e", "sha256": "748ebd4212326f0d55598369dc78bc30807b07a2ae32c48176684240f1ffbf23" }, "downloads": -1, "filename": "booby-ng-0.8.2.post2.tar.gz", "has_sig": false, "md5_digest": "a6c8436f5e0646243c26bc5364a6041e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13158, "upload_time": "2016-09-16T21:22:46", "url": "https://files.pythonhosted.org/packages/5e/23/861bc03a9109ddab35a480449fd2202479a524a95c74b5286d5103fa0c8a/booby-ng-0.8.2.post2.tar.gz" } ], "0.8.2.post3": [ { "comment_text": "", "digests": { "md5": "5f4176604e0e89dca536402c556cd1c7", "sha256": "d56170461ca7cf53f05c90a3e8823c5ba6ecbaa93a93ee3201f15d261b06d305" }, "downloads": -1, "filename": "booby-ng-0.8.2.post3.tar.gz", "has_sig": false, "md5_digest": "5f4176604e0e89dca536402c556cd1c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13164, "upload_time": "2016-09-16T21:28:28", "url": "https://files.pythonhosted.org/packages/13/44/ec3be32cd8ccc211331d9533b70f5bd657597966f7d5c91586ac565490e7/booby-ng-0.8.2.post3.tar.gz" } ], "0.8.3": [ { "comment_text": "", "digests": { "md5": "d00ce7f69a72d6ed5ef6eb9df01ebdcb", "sha256": "89cdf3efa4807f8a9d589e4bceccca6e2de8a508e62ba0f7fa4b3de5836bd8cc" }, "downloads": -1, "filename": "booby-ng-0.8.3.tar.gz", "has_sig": false, "md5_digest": "d00ce7f69a72d6ed5ef6eb9df01ebdcb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14391, "upload_time": "2016-09-21T14:03:11", "url": "https://files.pythonhosted.org/packages/54/98/757e5527a52d5dbb44479890ccec16b96b09c37003d8b0ef54306148e934/booby-ng-0.8.3.tar.gz" } ], "0.8.3.post1": [ { "comment_text": "", "digests": { "md5": "2bedb1f56960c28910b5fa2a88e3e692", "sha256": "c436f24fb897ec7dc3e0d48c82b45c25083a226688597315e7983a4fc4d98403" }, "downloads": -1, "filename": "booby-ng-0.8.3.post1.tar.gz", "has_sig": false, "md5_digest": "2bedb1f56960c28910b5fa2a88e3e692", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14410, "upload_time": "2016-09-21T16:34:10", "url": "https://files.pythonhosted.org/packages/c2/93/1b45ee9647fa8d504497929f75512306970bbf6d996d38ae2d153a6d16b5/booby-ng-0.8.3.post1.tar.gz" } ], "0.8.4": [ { "comment_text": "", "digests": { "md5": "29542ec461fbfacffde760f101ff9b75", "sha256": "818737b5e5dcd498055aa3097b881cd65f10d62ad91e6e9106c9c79b13f3c272" }, "downloads": -1, "filename": "booby-ng-0.8.4.tar.gz", "has_sig": false, "md5_digest": "29542ec461fbfacffde760f101ff9b75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14407, "upload_time": "2016-12-13T14:24:20", "url": "https://files.pythonhosted.org/packages/87/5f/011f54140a02509bb23f506c8dd8816dc8e6c162ae82130c94c4c3cd9011/booby-ng-0.8.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "29542ec461fbfacffde760f101ff9b75", "sha256": "818737b5e5dcd498055aa3097b881cd65f10d62ad91e6e9106c9c79b13f3c272" }, "downloads": -1, "filename": "booby-ng-0.8.4.tar.gz", "has_sig": false, "md5_digest": "29542ec461fbfacffde760f101ff9b75", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14407, "upload_time": "2016-12-13T14:24:20", "url": "https://files.pythonhosted.org/packages/87/5f/011f54140a02509bb23f506c8dd8816dc8e6c162ae82130c94c4c3cd9011/booby-ng-0.8.4.tar.gz" } ] }