{ "info": { "author": "Mark Vartanyan", "author_email": "kolypto@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "[![Build Status](https://api.travis-ci.org/kolypto/py-flask-jsontools.png?branch=master)](https://travis-ci.org/kolypto/py-flask-jsontools)\n[![Pythons](https://img.shields.io/badge/python-2.7%20%7C%203.4%E2%80%933.7%20%7C%20pypy-blue.svg)](.travis.yml)\n\n\nFlask JsonTools\n===============\n\nJSON API tools for Flask\n\nTable of Contents\n=================\n\n* View Utilities\n * @jsonapi\n * JsonResponse\n * make_json_response()\n* FlaskJsonClient\n* Class-Based Views\n * MethodView\n * RestfulView \n\n\n\nView Utilities\n==============\n\n@jsonapi\n--------\n\nDecorate a view function that talks JSON.\n\nSuch function can return:\n\n* tuples of `(response, status[, headers])`: to set custom status code and optionally - headers\n* Instances of [`JsonResponse`](#jsonresponse)\n* The result of helper function [`make_json_response`](#make_json_response)\n\nExample:\n\n```python\nfrom flask.ext.jsontools import jsonapi\n\n@app.route('/users')\n@jsonapi\ndef list_users():\n return [\n {'id': 1, 'login': 'kolypto'},\n #...\n ]\n\n@app.route('/user/', methods=['DELETE'])\ndef delete_user(id):\n return {'error': 'Access denied'}, 403\n```\n\n### JsonResponse\n\nExtends [`flask.Request`](http://flask.pocoo.org/docs/api/#incoming-request-data) and encodes the response with JSON.\nViews decorated with [`@jsonapi`](#jsonapi) return these objects.\n\nArguments:\n\n* `response`: response data\n* `status`: status code. Optional, defaults to 200\n* `headers`: additional headers dict. Optional.\n* `**kwargs`: additional argumets for [`Response`](http://flask.pocoo.org/docs/api/#response-objects)\n\nMethods:\n\n* `preprocess_response_data(response)`: Override to get custom response behavior.\n* `get_json()`: Get the original response data.\n* `__getitem__(key)`: Get an item from the response data\n\nThe extra methods allows to reuse views:\n\n```python\nfrom flask.ext.jsontools import jsonapi\n\n@app.route('/user', methods=['GET'])\n@jsonapi\ndef list_users():\n return [ { 1: 'first', 2: 'second' } ]\n\n@app.route('/user/', methods=['GET'])\n@jsonapi\ndef get_user(id):\n return list_users().get_json()[id] # Long form\n return list_users()[id] # Shortcut\n```\n\n### make_json_response()\nHelper function that actually preprocesses view return value into [`JsonResponse`](#jsonresponse).\n\nAccepts `rv` as any of:\n\n* tuple of `(response, status[, headers])`\n* Object to encode as JSON\n\n\n\n\n\n\nFlaskJsonClient\n===============\n\nFlaskJsonClient is a JSON-aware test client: it can post JSON and parse JSON responses into [`JsonResponse`](#jsonresponse).\n\n```python\nfrom myapplication import Application\nfrom flask.ext.jsontools import FlaskJsonClient\n\ndef JsonTest(unittest.TestCase):\n def setUp(self):\n self.app = Application(__name__)\n self.app.test_client_class = FlaskJsonClient\n\n def testCreateUser(self):\n with self.app.test_client() as c:\n rv = c.post('/user/', json={'name': 'kolypto'})\n # rv is JsonResponse\n rv.status_code\n rv.get_json()['user'] # Long form for the previous\n rv['user'] # Shortcut for the previous\n```\n\n\n\n\n\nFormatting Utils\n================\n\nDynamicJSONEncoder\n-----------\n\nIn python, de-facto standard for encoding objects of custom classes is the `__json__()` method which returns \nthe representation of the object.\n\n`DynamicJSONEncoder` is the implementation of this protocol: if an object has the `__json__()` method, its result if used for\nthe representation.\n\nYou'll definitely want to subclass it to support other types, e.g. dates and times:\n\n```python\nfrom flask.ext.jsontools import DynamicJSONEncoder\n\nclass ApiJSONEncoder(DynamicJSONEncoder):\n def default(self, o):\n # Custom formats\n if isinstance(o, datetime.datetime):\n return o.isoformat(' ')\n if isinstance(o, datetime.date):\n return o.isoformat()\n if isinstance(o, set):\n return list(o)\n\n # Fallback\n return super(ApiJSONEncoder, self).default(o)\n```\n\nNow, just install the encoder to your Flask:\n\n```python\nfrom flask import Flask\n\napp = Flask(__name__)\napp.json_encoder = DynamicJSONEncoder\n```\n\n\n\nJsonSerializableBase\n--------------------\n\nSerializing SqlAlchemy models to JSON is a headache: if an attribute is present on an instance, this does not mean\nit's loaded from the database.\n\n`JsonSerializableBase` is a mixin for SqlAlchemy Declarative Base that adds a magic `__json__()` method, compatible with\n[`DynamicJSONEncoder`](#dynamicjsonencoder). When serializing, it makes sure that entity serialization will *never* issue additional requests.\n\nExample:\n\n```python\nfrom sqlalchemy.ext.declarative import declarative_base\nfrom flask.ext.jsontools import JsonSerializableBase\n\nBase = declarative_base(cls=(JsonSerializableBase,))\n\nclass User(Base):\n #...\n```\n\nNow, you can safely respond with SqlAlchemy models in your JSON views, and jsontools will handle the rest :)\n\n\n\n\n\n\nClass-Based Views\n=================\n\nModule `flask.ext.jsontools.views` contains a couple of classes that allow to build class-based views\nwhich dispatch to different methods.\n\nIn contrast to [MethodView](http://flask.pocoo.org/docs/api/#flask.views.MethodView), this gives much higher flexibility.\n\nMethodView\n----------\n\nUsing `MethodView` class for methods, decorate them with `@methodview()`, which takes the following arguments:\n\n* `methods=()`: Iterable of HTTP methods to use with this method.\n* `ifnset=None`: Conditional matching. List of route parameter names that should *not* be set for this method to match.\n* `ifset=None`: Conditional matching. List of route parameter names that should be set for this method to match.\n\nThis allows to map HTTP methods to class methods, and in addition define when individual methods should match.\n\nQuick example:\n\n```python\nfrom flask.ext.jsontools import jsonapi, MethodView, methodview\n\nclass UserView(MethodView):\n # Canonical way to specify decorators for class-based views\n decorators = (jsonapi, )\n\n @methodview\n def list(self):\n \"\"\" List users \"\"\"\n return db.query(User).all()\n\n @methodview\n def get(self, user_id):\n \"\"\" Load a user by id \"\"\"\n return db.query(User).get(user_id)\n\nuserview = CrudView.as_view('user')\napp.add_url_rule('/user/', view_func=userview)\napp.add_url_rule('/user/', view_func=userview)\n```\n\nNow, `GET` HTTP method is routed to two different methods depending on conditions.\nKeep defining more methods to get good routing :)\n\nTo simplify the last step of creating the view, there's a helper:\n\n```python\nUserView.route_as_view(app, 'user', ('/user/', '/user/'))\n```\n\nRestfulView\n-----------\n\nSince `MethodView` is mostly useful to expose APIs over collections of entities, there is a RESTful helper which\nautomatically decorates some special methods with `@methodview`.\n\n| View method | HTTP method | URL |\n|-------------|-------------|---------|\n| list() | GET | `/` |\n| create() | POST | `/` |\n| get() | GET | `/` |\n| replace() | PUT | `/` |\n| update() | POST | `/` |\n| delete() | DELETE | `/` |\n\nBy subclassing `RestfulView` and implementing some of these methods, \nyou'll get a complete API endpoint with a single class.\n\nIt's also required to define the list of primary key fields by defining the `primary_key` property:\n\n```python\nfrom flask.ext.jsontools import jsonapi, RestfulView\n\nclass User(RestfulView):\n decorators = (jsonapi, )\n primary_key = ('id',)\n\n #region Operation on the collection\n\n def list():\n return db.query(User).all()\n\n def create():\n db.save(user)\n return user\n\n #endregion\n\n #region Operation on entities\n\n def get(id):\n return db.query(User).get(id)\n\n def replace(id):\n db.save(user, id)\n\n def update(id):\n db.save(user)\n\n def delete(id):\n db.delete(user)\n\n #endregion\n```\n\nWhen a class like this is defined, its metaclass goes through the methods and decorates them with `@methodview`.\nThis way, `list()` gets `@methodview('GET', ifnset=('id',))`, and `get()` gets `@methodview('GET', ifset=('id',))`.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kolypto/py-flask-jsontools", "keywords": "flask,json", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "flask-jsontools", "package_url": "https://pypi.org/project/flask-jsontools/", "platform": "any", "project_url": "https://pypi.org/project/flask-jsontools/", "project_urls": { "Homepage": "https://github.com/kolypto/py-flask-jsontools" }, "release_url": "https://pypi.org/project/flask-jsontools/0.1.5/", "requires_dist": [ "flask (>=0.10.1)", "future (>=0.17.1)" ], "requires_python": "", "summary": "JSON API tools for Flask", "version": "0.1.5" }, "last_serial": 5568196, "releases": { "0.0.1-0": [ { "comment_text": "built for Linux-3.13.0-30-generic-x86_64-with-glibc2.4", "digests": { "md5": "25eac550cb0fee89c2cedc799f048d78", "sha256": "34c190c07a24dc5bc0e246aa706bab51acce77b8ecd2cd186f7c4f6b8b5d3b0d" }, "downloads": -1, "filename": "flask_jsontools-0.0.1-0.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "25eac550cb0fee89c2cedc799f048d78", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 5480, "upload_time": "2014-07-21T15:48:59", "url": "https://files.pythonhosted.org/packages/d7/12/e2aebeb08750c899f502eadd9d6c1c7cb7d1eac4f610b63b24beefaf261f/flask_jsontools-0.0.1-0.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "82a9eaaa6892ad695265d141b94c4248", "sha256": "bee92b90ae4d20178d3b8dc2f94dc0fb82b4a588d12c17127855add186134385" }, "downloads": -1, "filename": "flask_jsontools-0.0.1-0.tar.gz", "has_sig": false, "md5_digest": "82a9eaaa6892ad695265d141b94c4248", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5139, "upload_time": "2014-07-21T15:48:56", "url": "https://files.pythonhosted.org/packages/15/15/111c73518a9577cb8cf9bf38b8356fffd1cd19ec3b050a9e4723c115b2f3/flask_jsontools-0.0.1-0.tar.gz" } ], "0.0.2-0": [ { "comment_text": "built for Linux-3.13.0-30-generic-x86_64-with-glibc2.4", "digests": { "md5": "2232d5b6c26dc61f7fc316788497fb0c", "sha256": "710c577bd388b97f25e128f8ea89c1a552948c95ca41355dd5a1f914ebb7a526" }, "downloads": -1, "filename": "flask_jsontools-0.0.2-0.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "2232d5b6c26dc61f7fc316788497fb0c", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 6567, "upload_time": "2014-07-21T16:25:29", "url": "https://files.pythonhosted.org/packages/79/cd/90e3dbe4683798255e35f78b92a9bd6b6984ed02e65f9c44eb8c0659874b/flask_jsontools-0.0.2-0.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "6c5eca4f68208cbe3b82efe3d8374430", "sha256": "1c12b349ae3be921ca7bcc1c056c9706db94641bd0077cd74ed2c87d2cef68ba" }, "downloads": -1, "filename": "flask_jsontools-0.0.2-0.tar.gz", "has_sig": false, "md5_digest": "6c5eca4f68208cbe3b82efe3d8374430", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6113, "upload_time": "2014-07-21T16:25:25", "url": "https://files.pythonhosted.org/packages/68/a5/6fc20a6e7930cae3336889a5d26bdf3011cd0cc3bb563ef27c84fb1c724a/flask_jsontools-0.0.2-0.tar.gz" } ], "0.0.3-0": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "8b6c4eb2c4f09a18b979c5e7a874e2be", "sha256": "567a63414b89666371540f6a05381e5532a2ae98dffac4929bb267d09bdec8ee" }, "downloads": -1, "filename": "flask_jsontools-0.0.3-0.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "8b6c4eb2c4f09a18b979c5e7a874e2be", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 5829, "upload_time": "2014-07-23T10:10:56", "url": "https://files.pythonhosted.org/packages/47/b2/4061c4f0fb7a40b52f874ed1159f7cd901cfd2954fdf8fc40950b6d56892/flask_jsontools-0.0.3-0.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "edf6b3bfb123ad6e55825f4ad8a8370b", "sha256": "7a9ac3cac84561e0fee7f910a3575453dcf67d3a450cc0b36a00c3c12fec4f28" }, "downloads": -1, "filename": "flask_jsontools-0.0.3-0.tar.gz", "has_sig": false, "md5_digest": "edf6b3bfb123ad6e55825f4ad8a8370b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5623, "upload_time": "2014-07-23T10:10:52", "url": "https://files.pythonhosted.org/packages/69/9a/e3e998da4b0a1300454341260d56f7eada9535ae9a45b1890187d9b0fe82/flask_jsontools-0.0.3-0.tar.gz" } ], "0.0.3-1": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "c2944d4553a28dcc1f518487ffd4e196", "sha256": "56a83d71a46330c587b4d8379deb4225880ceae6feb53bc57304a6872d24be3c" }, "downloads": -1, "filename": "flask_jsontools-0.0.3-1.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "c2944d4553a28dcc1f518487ffd4e196", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 5482, "upload_time": "2014-07-23T11:09:51", "url": "https://files.pythonhosted.org/packages/40/50/42d17aa50321db64fcb1c8181e9eb5593d1e94c965fba45eb782782cba89/flask_jsontools-0.0.3-1.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "3d68ba713e14ca4731831c90fd1b0e36", "sha256": "1d663323a66c9b5bb42586e4075d3c6bbd2f3cb549096508c7dc35348cfa3ca4" }, "downloads": -1, "filename": "flask_jsontools-0.0.3-1.tar.gz", "has_sig": false, "md5_digest": "3d68ba713e14ca4731831c90fd1b0e36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5625, "upload_time": "2014-07-23T11:09:48", "url": "https://files.pythonhosted.org/packages/5e/5d/02feae03893f71191ae2411e4dc996833fbfc03c2e96fd66ab9433b2ee87/flask_jsontools-0.0.3-1.tar.gz" } ], "0.0.4-0": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "ca245b62580f111d79f4353ad543f36b", "sha256": "7a16ef510ccbdd57e8941bfe9e6d9c680205151e7210e705c04f9c4a69eb5cbb" }, "downloads": -1, "filename": "flask_jsontools-0.0.4-0.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "ca245b62580f111d79f4353ad543f36b", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 5834, "upload_time": "2014-07-23T14:36:40", "url": "https://files.pythonhosted.org/packages/e7/62/24e8d28c0b1b395490aab12560c23823a9648cc0200141942777149c54f4/flask_jsontools-0.0.4-0.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "55543064ba4ceb6136dce24e280c24ab", "sha256": "41db91136c72fba2eb07a281b601244278515407c3bef52d639287bf73a29fd5" }, "downloads": -1, "filename": "flask_jsontools-0.0.4-0.tar.gz", "has_sig": false, "md5_digest": "55543064ba4ceb6136dce24e280c24ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5638, "upload_time": "2014-07-23T14:36:38", "url": "https://files.pythonhosted.org/packages/16/5b/304153f0e9729e9366381122b2288350df7235a9b41bebaecc2f257e5a35/flask_jsontools-0.0.4-0.tar.gz" } ], "0.0.5-0": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "6a6b50784e834be7502b2c391c6a0d4e", "sha256": "60892af3cc7072c986a0429b28d0c71faacda80cbfe72877c88dd9d330b2f31e" }, "downloads": -1, "filename": "flask_jsontools-0.0.5-0.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "6a6b50784e834be7502b2c391c6a0d4e", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 11503, "upload_time": "2014-07-31T00:11:17", "url": "https://files.pythonhosted.org/packages/a0/96/2039b31d2482c7cdab791d9c4db75618f241bfc11944c34f553445e986dd/flask_jsontools-0.0.5-0.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "fbad3bbb66832e82b9b8033efdd1c727", "sha256": "573d1f77372724eb4de8fd61781e85a9d09981681914ae5ad39dc39208596f11" }, "downloads": -1, "filename": "flask_jsontools-0.0.5-0.tar.gz", "has_sig": false, "md5_digest": "fbad3bbb66832e82b9b8033efdd1c727", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9627, "upload_time": "2014-07-31T00:11:13", "url": "https://files.pythonhosted.org/packages/51/b7/ac9234016f7887220d7973ae19663b05d4606bd4cede012a17182eb4c453/flask_jsontools-0.0.5-0.tar.gz" } ], "0.0.6-0": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "7d27212c01eb12fd46b637800abe6ee4", "sha256": "53a33a7ab79e5537cc48f85595ceaef9928c2dc39f40426ba94a426fbf5207f9" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-0.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "7d27212c01eb12fd46b637800abe6ee4", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 13155, "upload_time": "2014-07-31T16:55:53", "url": "https://files.pythonhosted.org/packages/24/99/0b6d139324172a10da7daca7906c685e5be94dafbaf3b79cced20ed20553/flask_jsontools-0.0.6-0.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "a24de0da8987c59d1192178f421a9cad", "sha256": "7e227b9ac9f7e17705a7214d7f1f82f0576127c173c1eef7be27e7f1d81887e8" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-0.tar.gz", "has_sig": false, "md5_digest": "a24de0da8987c59d1192178f421a9cad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11372, "upload_time": "2014-07-31T16:55:51", "url": "https://files.pythonhosted.org/packages/cd/7f/84850e71b7152cdcd7a5870a1e531adc9252dd614cdc126824c377febb0c/flask_jsontools-0.0.6-0.tar.gz" } ], "0.0.6-1": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "50d7299d2c76d2a9e1fa0dddcca78946", "sha256": "efd5dd8d486afe69274c165ff91b602c891ac1abb8efd3423152e4881d31da34" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-1.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "50d7299d2c76d2a9e1fa0dddcca78946", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 14090, "upload_time": "2014-07-31T16:57:46", "url": "https://files.pythonhosted.org/packages/20/27/939e3d8308d87ffe85042eefd8e3ef81f6f26bf6b7bdd73f6553784255de/flask_jsontools-0.0.6-1.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "d65a39db0552ca9e1c40c859112760f0", "sha256": "23e4c894c196b1b545da7efdd6003448c5762372245fe7d1fe614b8ab3f70a27" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-1.tar.gz", "has_sig": false, "md5_digest": "d65a39db0552ca9e1c40c859112760f0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11371, "upload_time": "2014-07-31T16:57:43", "url": "https://files.pythonhosted.org/packages/f5/c8/42629a5dd7b9801337516c257432423b401385f3c1fa4dd0606db8004e07/flask_jsontools-0.0.6-1.tar.gz" } ], "0.0.6-2": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "fecec71aaadc37531f7dca1ea58b197b", "sha256": "99bd30e64081bb745926e2672927abbeeb171354a7c47c12f0aa4f19c7aef385" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-2.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "fecec71aaadc37531f7dca1ea58b197b", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 14122, "upload_time": "2014-08-08T08:28:52", "url": "https://files.pythonhosted.org/packages/3a/e6/740696d849867e0c14cc5858a7ded032e11428fdf50a45e7978f2d16bdd2/flask_jsontools-0.0.6-2.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "c328022d2bd7e95cee1c311d8b10bd33", "sha256": "25bfca99046442a953edd479b129fc8a7a3d161bf79fd6455b1a78c4f8aa156e" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-2.tar.gz", "has_sig": false, "md5_digest": "c328022d2bd7e95cee1c311d8b10bd33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11398, "upload_time": "2014-08-08T08:28:47", "url": "https://files.pythonhosted.org/packages/c7/b8/07980b2e899574cd590f5931f08d502daafbcff36dddff7bb30efdfc24fa/flask_jsontools-0.0.6-2.tar.gz" } ], "0.0.6-3": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "e72f7a646b690c97367494a80a146b51", "sha256": "918e768430510cbe0cc13ff04e1df2c465e11af7a6aa33d9f1566f6e28452505" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-3.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "e72f7a646b690c97367494a80a146b51", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 14000, "upload_time": "2014-08-08T08:54:18", "url": "https://files.pythonhosted.org/packages/82/af/196dde9e668b4a360ed8d983db414ef60315a5e412e08542743a7bbc1836/flask_jsontools-0.0.6-3.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "513293a8adf6077f763dcd1127528a6e", "sha256": "bf13202d942505cdd1eea8876069cde0bb2f283228d280095c256ed4bacdaa0e" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-3.tar.gz", "has_sig": false, "md5_digest": "513293a8adf6077f763dcd1127528a6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11350, "upload_time": "2014-08-08T08:54:14", "url": "https://files.pythonhosted.org/packages/c6/7c/0a93751594261400108cae12bc721635532b828a72766d309465f080b351/flask_jsontools-0.0.6-3.tar.gz" } ], "0.0.6-4": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "945c0622b5bb070a9864e360713d560d", "sha256": "ed1344b411bcd5b5ada29251f75a5bc7db569f62f96edb6da525366ff1919b3f" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-4.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "945c0622b5bb070a9864e360713d560d", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 14227, "upload_time": "2014-08-08T15:42:53", "url": "https://files.pythonhosted.org/packages/60/78/6f3666f00a5f29b93e68e41557e6c200123263f9c29122aa52d6c5772cdc/flask_jsontools-0.0.6-4.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "4c2249fd5cda018bb5fad69b1f869b31", "sha256": "d92d8033556879d7fdf4a3d632385bb99054a6a161768826f529615d31f0d592" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-4.tar.gz", "has_sig": false, "md5_digest": "4c2249fd5cda018bb5fad69b1f869b31", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11477, "upload_time": "2014-08-08T15:42:49", "url": "https://files.pythonhosted.org/packages/93/40/1185b3f8eb6279cb8387a9a74d2009b74a45e3d7d9c79690d2be9bdd7fc7/flask_jsontools-0.0.6-4.tar.gz" } ], "0.0.6-5": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "18b94c0b3efa32d6599d1b89b4510e4a", "sha256": "e6c5f38c4f1290807a540214eb31eb1610d6a14cc2607d77679f7ec14ab0b0b9" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-5.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "18b94c0b3efa32d6599d1b89b4510e4a", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 14290, "upload_time": "2014-08-08T16:39:14", "url": "https://files.pythonhosted.org/packages/25/a6/9608310784016d0347da68881253f306f4bd568ca7915566ed049112a483/flask_jsontools-0.0.6-5.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "8e24378bbf641e9034ec53215df6c8c1", "sha256": "03e667357e5a8d3a2c86e3c1eafaba3989510410b4c5070255f1019454b2d1be" }, "downloads": -1, "filename": "flask_jsontools-0.0.6-5.tar.gz", "has_sig": false, "md5_digest": "8e24378bbf641e9034ec53215df6c8c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11529, "upload_time": "2014-08-08T16:39:11", "url": "https://files.pythonhosted.org/packages/33/03/9523aa45829be11c87dbfcd9c1a337f3e71cd1be16b0926437d7a03a3941/flask_jsontools-0.0.6-5.tar.gz" } ], "0.0.7-0": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "98170c59e6caa66f7021844992832760", "sha256": "6cc4f8332f7ba8e873b83b08cbf94708945729fc397203c7f964e23bfe1f4eb2" }, "downloads": -1, "filename": "flask_jsontools-0.0.7-0.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "98170c59e6caa66f7021844992832760", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 14194, "upload_time": "2014-08-08T22:38:05", "url": "https://files.pythonhosted.org/packages/fc/5f/56df4d205f042acacc94a1a7552c9221c0530b640a616e5c9af8aa46dbc1/flask_jsontools-0.0.7-0.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "fdc646fd2f40da74c4fb2c3bc81bb9b5", "sha256": "04cb95fcf4ea07970310afe35863d918d1ae7073e0c9634bd20a22f902e48909" }, "downloads": -1, "filename": "flask_jsontools-0.0.7-0.tar.gz", "has_sig": false, "md5_digest": "fdc646fd2f40da74c4fb2c3bc81bb9b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11577, "upload_time": "2014-08-08T22:38:02", "url": "https://files.pythonhosted.org/packages/2c/ef/d53e6a0726a5a6d0aa96a2aa0567769bf60a6efd0edf65a3743ac804c6ae/flask_jsontools-0.0.7-0.tar.gz" } ], "0.1.0-0": [ { "comment_text": "built for Linux-3.13.0-32-generic-x86_64-with-glibc2.4", "digests": { "md5": "3afcc2d13810d67b5c5f6f2248d99789", "sha256": "860f1a0ed52e638e8c7bead95d7a3e4c728646c071733e83e06271b5c5dec4c0" }, "downloads": -1, "filename": "flask_jsontools-0.1.0-0.linux-x86_64.tar.gz", "has_sig": false, "md5_digest": "3afcc2d13810d67b5c5f6f2248d99789", "packagetype": "bdist_dumb", "python_version": "any", "requires_python": null, "size": 14340, "upload_time": "2014-08-09T18:01:52", "url": "https://files.pythonhosted.org/packages/9a/0a/e0c7431a98b5bba0ae2abe1d4bbfd7fbc5b7265e9a035a0d8b6bf7a8724b/flask_jsontools-0.1.0-0.linux-x86_64.tar.gz" }, { "comment_text": "", "digests": { "md5": "ad34431f766c962da4a492e06d68ef93", "sha256": "0a789c482343fa26fd5455c4ffd448349a9671dd7cbe11271446fa54f0fafbab" }, "downloads": -1, "filename": "flask_jsontools-0.1.0-0.tar.gz", "has_sig": false, "md5_digest": "ad34431f766c962da4a492e06d68ef93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11540, "upload_time": "2014-08-09T18:01:49", "url": "https://files.pythonhosted.org/packages/53/91/783dd6e46d01d44c540708978d22882b4e3a4b8bf8caf51cc3c81f70d3bd/flask_jsontools-0.1.0-0.tar.gz" } ], "0.1.0-1": [ { "comment_text": "", "digests": { "md5": "a6204f9ae3dcb27aeb04c9debeaad220", "sha256": "9d4229450e2919b9feff2627251f2fc29383bccc4aafde8360aa7cc5e1d364d4" }, "downloads": -1, "filename": "flask_jsontools-0.1.0_1-py2-none-any.whl", "has_sig": false, "md5_digest": "a6204f9ae3dcb27aeb04c9debeaad220", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14628, "upload_time": "2014-08-14T15:41:53", "url": "https://files.pythonhosted.org/packages/59/8e/b4f82032348c97c01ca6155d16e41646af4d7f4aa1891c33a9c3a300e70c/flask_jsontools-0.1.0_1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6ff781144682c93ec812b1c56923dfe8", "sha256": "b1a4118d4d7ae31a2bae597e800e671cfb4c0e4dfa4194f07ae68d04775acf37" }, "downloads": -1, "filename": "flask_jsontools-0.1.0-1.tar.gz", "has_sig": false, "md5_digest": "6ff781144682c93ec812b1c56923dfe8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11558, "upload_time": "2014-08-14T15:41:47", "url": "https://files.pythonhosted.org/packages/48/67/7a7c4ac691ca75e0d73bbee736e59b9e38ffa1bd0a256abcd0994a1a228a/flask_jsontools-0.1.0-1.tar.gz" } ], "0.1.1-0": [ { "comment_text": "", "digests": { "md5": "9169cefefb3927ec5537cad81d3e3cff", "sha256": "5f5033664200754a4173f0ec2b6e12f143a8da25c0862bc660f0814f854b8cee" }, "downloads": -1, "filename": "flask_jsontools-0.1.1_0-py2-none-any.whl", "has_sig": false, "md5_digest": "9169cefefb3927ec5537cad81d3e3cff", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 14432, "upload_time": "2014-10-08T12:08:46", "url": "https://files.pythonhosted.org/packages/35/1a/b7f65723ee87ea75f20bc680337b37edcc6d91c9175409565d003873eecf/flask_jsontools-0.1.1_0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a424887b4d8653578bbc37c0ba28e85", "sha256": "2cdc664acc09d88ed7da797647d361164974c3a54ee01ed141f21c81ca33d49b" }, "downloads": -1, "filename": "flask_jsontools-0.1.1-0.tar.gz", "has_sig": false, "md5_digest": "5a424887b4d8653578bbc37c0ba28e85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11593, "upload_time": "2014-10-08T12:08:44", "url": "https://files.pythonhosted.org/packages/5e/05/879d30655526089ecee167ee1df3cec0d70bc29fe1d96d345d04c891045b/flask_jsontools-0.1.1-0.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "997b1d3dfe606056b5e2e365fb2d1eb3", "sha256": "9629911a6611a7aa6b57d83a873d86bb0f3c850bf65ebf45934cdd459d8abdc5" }, "downloads": -1, "filename": "flask_jsontools-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "997b1d3dfe606056b5e2e365fb2d1eb3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12457, "upload_time": "2019-07-22T16:44:10", "url": "https://files.pythonhosted.org/packages/a9/f9/4064923194a9f4a3b5e56f9e0afaebce4fbf465ecf63ad83962c14212688/flask_jsontools-0.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e37151cae181e9a5f707ff072e24df5", "sha256": "c17e773d290d3133da611ccb3b0cf653363e6109bd60b947ca74e633f188c78d" }, "downloads": -1, "filename": "flask_jsontools-0.1.5.tar.gz", "has_sig": false, "md5_digest": "0e37151cae181e9a5f707ff072e24df5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13910, "upload_time": "2019-07-22T16:44:11", "url": "https://files.pythonhosted.org/packages/42/7d/16155927ecb3f2614503deb6ac6479b96aa826ec5ec176ed1eecb5d3fade/flask_jsontools-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "997b1d3dfe606056b5e2e365fb2d1eb3", "sha256": "9629911a6611a7aa6b57d83a873d86bb0f3c850bf65ebf45934cdd459d8abdc5" }, "downloads": -1, "filename": "flask_jsontools-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "997b1d3dfe606056b5e2e365fb2d1eb3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12457, "upload_time": "2019-07-22T16:44:10", "url": "https://files.pythonhosted.org/packages/a9/f9/4064923194a9f4a3b5e56f9e0afaebce4fbf465ecf63ad83962c14212688/flask_jsontools-0.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e37151cae181e9a5f707ff072e24df5", "sha256": "c17e773d290d3133da611ccb3b0cf653363e6109bd60b947ca74e633f188c78d" }, "downloads": -1, "filename": "flask_jsontools-0.1.5.tar.gz", "has_sig": false, "md5_digest": "0e37151cae181e9a5f707ff072e24df5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13910, "upload_time": "2019-07-22T16:44:11", "url": "https://files.pythonhosted.org/packages/42/7d/16155927ecb3f2614503deb6ac6479b96aa826ec5ec176ed1eecb5d3fade/flask_jsontools-0.1.5.tar.gz" } ] }