{ "info": { "author": "Blake Printy", "author_email": "bprinty@gmail.com", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP :: Dynamic Content", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "\n|Build status| |Code coverage| |Maintenance yes| |GitHub license| |Documentation Status|\n\n.. |Build status| image:: https://github.com/bprinty/Flask-Occam/actions/workflows/ci.yml/badge.svg\n :target: https://github.com/bprinty/Flask-Occam/actions/workflows/ci.yml\n\n.. |Code coverage| image:: https://codecov.io/gh/bprinty/Flask-Occam/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/bprinty/Flask-Occam\n\n.. |Maintenance yes| image:: https://img.shields.io/badge/Maintained%3F-yes-green.svg\n :target: https://github.com/bprinty/Flask-Occam/graphs/commit-activity\n\n.. |GitHub license| image:: https://img.shields.io/github/license/bprinty/Flask-Occam.svg\n :target: https://github.com/bprinty/Flask-Occam/blob/master/LICENSE\n\n.. |Documentation Status| image:: https://readthedocs.org/projects/flask-occam/badge/?version=latest\n :target: http://flask-occam.readthedocs.io/?badge=latest\n\n\n============================\nFlask-Occam\n============================\n\nFlask-Occam is a Flask extension that is designed to help developers create simple and easy to maintain REST APIs. It is a lightweight abstraction on top of Flask's existing tools, designed to simplify API development and reduce the amount of boilerplate needed to perform common operations. Using this extension also promotes better code readability and maintainability during the application development lifecycle.\n\n\nInstallation\n============\n\nTo install the latest stable release via pip, run:\n\n.. code-block:: bash\n\n $ pip install Flask-Occam\n\n\nAlternatively with easy_install, run:\n\n.. code-block:: bash\n\n $ easy_install Flask-Occam\n\n\nTo install the bleeding-edge version of the project (not recommended):\n\n.. code-block:: bash\n\n $ git clone http://github.com/bprinty/Flask-Occam.git\n $ cd Flask-Occam\n $ python setup.py install\n\n\nUsage\n=====\n\nBelow is a minimal application configured to take advantage of some of the extension's core features:\n\n.. code-block:: python\n\n from flask import Flask\n from flask_sqlalchemy import SQLAlchemy\n from flask_occam import Occam\n\n app = Flask(__name__)\n app.config.from_object(Config)\n db = SQLAlchemy(app)\n occam = Occam(app, db)\n\n\nThe following is a minimal application highlighting most of the major features provided by the extension:\n\n.. code-block:: python\n\n from wtforms import validators\n from flask_occam import transactional, validate, paginate, log, optional\n\n # models\n class Item(db.Model):\n __tablename__ = 'item'\n\n id = db.Column(db.Integer, primary_key=True)\n name = db.Column(db.String(255), nullable=False, unique=True, index=True)\n url = db.Column(db.String(255))\n\n def json(self):\n return dict(\n id=self.id,\n name=self.name,\n url=self.url\n )\n\n\n # endpoints\n @app.route('/items')\n class Items(object):\n\n @paginate(limit=50, total=Item.count)\n def get(self, limit, offset):\n \"\"\"\n GET /items\n \"\"\"\n items = Item.all(limit=limit, offset=offset)\n return [x.json() for x in items], 200\n\n @validate(name=str)\n @transactional\n @log.info('Created new user with name {name}')\n def post(self):\n \"\"\"\n POST /items\n \"\"\"\n item = Item.create(**request.json)\n return item.json(), 201\n\n\n @app.route('/items/')\n class SingleItem(object):\n\n def get(self, item):\n \"\"\"\n GET /items/:id\n \"\"\"\n return item.json(), 200\n\n @validate(\n name=optional(str),\n url=optional(validators.URL())\n )\n @transactional\n @log.info('Changed metadata for item {item.name}')\n def put(self, item):\n \"\"\"\n PUT /items/:id\n \"\"\"\n item.update(**request.json)\n return item.json(), 200\n\n @transactional\n def delete(self, item):\n \"\"\"\n DELETE /items/:id\n \"\"\"\n item.delete()\n return jsonify(msg='Deleted item'), 204\n\n\nThere's quite a bit to unpack from the application detailed above, including:\n\n* Facilities for automatically resolving model identifiers into objects via url converters.\n* Automatic pagination (via response header) for requests.\n* Automatic database transaction support for endpoint handlers.\n* Tools for simpler logging of requests or API methods.\n* Automatic payload validation (with support for WTForms validators).\n* SQLAlchemy extensions for CRUD operations on models (providing a simpler API).\n\n\nDocumentation\n=============\n\nFor more detailed documentation, see the `Docs `_.\n\n\nQuestions/Feedback\n==================\n\nFile an issue in the `GitHub issue tracker `_.\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/bprinty/Flask-Occam", "keywords": "Flask-Occam,flask,rest,web,validation", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "Flask-Occam", "package_url": "https://pypi.org/project/Flask-Occam/", "platform": "any", "project_url": "https://pypi.org/project/Flask-Occam/", "project_urls": { "Homepage": "https://github.com/bprinty/Flask-Occam" }, "release_url": "https://pypi.org/project/Flask-Occam/0.2.1/", "requires_dist": [ "Flask", "WTForms", "PyYAML", "six" ], "requires_python": "", "summary": "Flask extension for simplifying REST API development.", "version": "0.2.1", "yanked": false, "yanked_reason": null }, "last_serial": 10477067, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "5e1ebce48e35d80b2cdd2adb879bf481", "sha256": "e53d863c43198d68de267a202d379a3ba7a85e83394ec62ce8f1aab863d61af8" }, "downloads": -1, "filename": "Flask_Occam-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5e1ebce48e35d80b2cdd2adb879bf481", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17781, "upload_time": "2019-10-24T05:33:51", "upload_time_iso_8601": "2019-10-24T05:33:51.573094Z", "url": "https://files.pythonhosted.org/packages/72/85/f4a1456b6c9a6ba64153f1de51dbf7a4d2e0e5aa0561cc9ad5c06bcdc2ca/Flask_Occam-0.1.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ab3323c9952f2df93760e8f75d2facd7", "sha256": "0f156ec6439798694b7d1657c5fe6fe3aaf0433b1b8126e2ccb84fea54ca5b2c" }, "downloads": -1, "filename": "Flask-Occam-0.1.0.tar.gz", "has_sig": false, "md5_digest": "ab3323c9952f2df93760e8f75d2facd7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 181878, "upload_time": "2019-10-24T05:33:54", "upload_time_iso_8601": "2019-10-24T05:33:54.319202Z", "url": "https://files.pythonhosted.org/packages/0c/17/cc4283c2c7e41de5a2dbf54e2f2b56779de3bd92363e7b74f19d6834bb76/Flask-Occam-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "5b04db558fce14f590177802ea45c5c5", "sha256": "e6389ad2eaa00382db431643db673ed0a318e83e1915542f7e3689b64bee43a0" }, "downloads": -1, "filename": "Flask_Occam-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5b04db558fce14f590177802ea45c5c5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17790, "upload_time": "2019-10-24T05:48:25", "upload_time_iso_8601": "2019-10-24T05:48:25.841460Z", "url": "https://files.pythonhosted.org/packages/d4/7c/ad075a26ba9c0cea75e74063cc95f6adfbf0ab1e9b95c843645c3cb5fe61/Flask_Occam-0.1.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "43f5791ac4e4cd3e1210419d30808e44", "sha256": "f6ac8e3b764d8b4a1fc7391cd2b56629d1b5fb761826f2bc895b5b459e9c1227" }, "downloads": -1, "filename": "Flask-Occam-0.1.1.tar.gz", "has_sig": false, "md5_digest": "43f5791ac4e4cd3e1210419d30808e44", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 181903, "upload_time": "2019-10-24T05:48:27", "upload_time_iso_8601": "2019-10-24T05:48:27.907009Z", "url": "https://files.pythonhosted.org/packages/87/16/677bdea4191932cbc0a4ec9ce4d138573e026ddd188ba911ccc4678a9c22/Flask-Occam-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "6fadb3d8d19c1b10fbc0f007a6079c94", "sha256": "5409b89d7f1ef8409ff4ea6046a036046e22f1b4c849fa19b49e8b116f156a7f" }, "downloads": -1, "filename": "Flask_Occam-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "6fadb3d8d19c1b10fbc0f007a6079c94", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17824, "upload_time": "2019-10-24T06:18:35", "upload_time_iso_8601": "2019-10-24T06:18:35.976678Z", "url": "https://files.pythonhosted.org/packages/fb/37/7fdf8ecfb6bd0b724b7071cb02beffde7c251640d7b2af2237369f1a924a/Flask_Occam-0.1.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0a725100a9cfe9548ce6c843933e7aa0", "sha256": "15316e6d58baa8eab19672c6c8cf28aaa866f5ef06aac4da74a742b5414b1506" }, "downloads": -1, "filename": "Flask-Occam-0.1.2.tar.gz", "has_sig": false, "md5_digest": "0a725100a9cfe9548ce6c843933e7aa0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 181994, "upload_time": "2019-10-24T06:18:38", "upload_time_iso_8601": "2019-10-24T06:18:38.125164Z", "url": "https://files.pythonhosted.org/packages/40/cd/db3c7793b0427359693e9e37b2011d63b856822b8159bf6151b048807e42/Flask-Occam-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "174d75c5e2a7dd6e0f25c61549bcadec", "sha256": "94abdd433519b0e11a65405f1a9bdc970fb31f2740a464a452612a5b6cf64bbe" }, "downloads": -1, "filename": "Flask_Occam-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "174d75c5e2a7dd6e0f25c61549bcadec", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17983, "upload_time": "2019-11-02T03:13:48", "upload_time_iso_8601": "2019-11-02T03:13:48.679775Z", "url": "https://files.pythonhosted.org/packages/ce/7b/6181a0bcafb323e681771f1137e6efe4d19c354a9b6e0cb986e59dd7a0d1/Flask_Occam-0.1.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4be33cb170e30e01153b5b39b2748a59", "sha256": "653801d4bb92ace0f9872e1a94c3a863f7c85c04b27ebbb43a930bf6a83dde91" }, "downloads": -1, "filename": "Flask-Occam-0.1.3.tar.gz", "has_sig": false, "md5_digest": "4be33cb170e30e01153b5b39b2748a59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 182403, "upload_time": "2019-11-02T03:13:50", "upload_time_iso_8601": "2019-11-02T03:13:50.626524Z", "url": "https://files.pythonhosted.org/packages/70/7c/b1265bb8cd8b10668714273342279af08de4237b47ba62cb04672d8c1d5f/Flask-Occam-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "7095f379fc08c6c0f792d8e8063a0eb7", "sha256": "24da3f3caba22450bde8da374cafa43507a7ec01f7b5b19e6b73e245688980f9" }, "downloads": -1, "filename": "Flask_Occam-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7095f379fc08c6c0f792d8e8063a0eb7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17986, "upload_time": "2019-11-05T04:44:29", "upload_time_iso_8601": "2019-11-05T04:44:29.286916Z", "url": "https://files.pythonhosted.org/packages/06/3a/4ab8c65acbb359a75d83be0fea72358c3a8d6b0266beea8b1e09c7f093df/Flask_Occam-0.1.4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "74260b7251cbe619ea6a54ced6ce74e9", "sha256": "610ca9633878cda3d49b6d04942906897425a494b2f323f93019658fa1ac993b" }, "downloads": -1, "filename": "Flask-Occam-0.1.4.tar.gz", "has_sig": false, "md5_digest": "74260b7251cbe619ea6a54ced6ce74e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 182400, "upload_time": "2019-11-05T04:44:31", "upload_time_iso_8601": "2019-11-05T04:44:31.905951Z", "url": "https://files.pythonhosted.org/packages/eb/e9/6a5f82c32146c011e263440b6de35fc9592605ab9967e3480a4f85169773/Flask-Occam-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "4f56df8a7f2d7a3429bbe2919a05c08f", "sha256": "076cbb6ea66537ef902b8e5aa15376f06b018205eb91770e547938926e4942da" }, "downloads": -1, "filename": "Flask_Occam-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4f56df8a7f2d7a3429bbe2919a05c08f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 19820, "upload_time": "2019-11-10T10:44:48", "upload_time_iso_8601": "2019-11-10T10:44:48.592126Z", "url": "https://files.pythonhosted.org/packages/e8/29/86d85e4071ac93ecddcb335731e35ee8e5897ceadc60bab8b67565e54a25/Flask_Occam-0.1.5-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "22ca343305aa1f2710c4697f4b77ec11", "sha256": "7fbd4946e60f1fd09da5e6a0beede73eedb6c8f9531026b3b77bff963ad191fd" }, "downloads": -1, "filename": "Flask-Occam-0.1.5.tar.gz", "has_sig": false, "md5_digest": "22ca343305aa1f2710c4697f4b77ec11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 183992, "upload_time": "2019-11-10T10:44:50", "upload_time_iso_8601": "2019-11-10T10:44:50.217945Z", "url": "https://files.pythonhosted.org/packages/d2/d2/0a1e9445ababab7999b50b0dbb1a5648715f9db1c1d2bd5b7ee1f36197fc/Flask-Occam-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "e11b2efcb19a85272ee10a6fd8f54b61", "sha256": "e1b30db043fec1798180c89db9227c3d73b929ff5dfe049a681eadfcec71db65" }, "downloads": -1, "filename": "Flask_Occam-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e11b2efcb19a85272ee10a6fd8f54b61", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17891, "upload_time": "2019-11-25T12:22:17", "upload_time_iso_8601": "2019-11-25T12:22:17.826005Z", "url": "https://files.pythonhosted.org/packages/a6/83/1e27f1cbbc4333f2c2711f25eaf590aced5982e9d40146fdba6c8bb2e87d/Flask_Occam-0.1.6-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b64077282877ecedc184ba3fac95e808", "sha256": "0900b92263c1d50317ebe5f110099cc26dbc77791c5398249ac81ec4ede994ce" }, "downloads": -1, "filename": "Flask-Occam-0.1.6.tar.gz", "has_sig": false, "md5_digest": "b64077282877ecedc184ba3fac95e808", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 180412, "upload_time": "2019-11-25T12:22:19", "upload_time_iso_8601": "2019-11-25T12:22:19.488649Z", "url": "https://files.pythonhosted.org/packages/c1/74/583a3ef807b4710f13ad819c506a7f14264806f52058687ebc5334b85de6/Flask-Occam-0.1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "d8982655dafe814e6ab45967818982c1", "sha256": "5456b377d42369b884b0b0d8d0da4a2299f6cfe9c919f0175996bc515b3f0b75" }, "downloads": -1, "filename": "Flask_Occam-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d8982655dafe814e6ab45967818982c1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17879, "upload_time": "2019-11-25T12:28:29", "upload_time_iso_8601": "2019-11-25T12:28:29.294229Z", "url": "https://files.pythonhosted.org/packages/00/ea/6434099e0eb30441e26a1bc7a57e837b79c62c413623f6f84918115501a3/Flask_Occam-0.1.7-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a1864a9cc4bc4846805001d9a194a90c", "sha256": "c7e2855534c2e945422441d349ee56c83d8471124fb8127671c2eda314f475de" }, "downloads": -1, "filename": "Flask-Occam-0.1.7.tar.gz", "has_sig": false, "md5_digest": "a1864a9cc4bc4846805001d9a194a90c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 180399, "upload_time": "2019-11-25T12:28:31", "upload_time_iso_8601": "2019-11-25T12:28:31.622530Z", "url": "https://files.pythonhosted.org/packages/2a/51/bc19b52a4522b8d7703271585c239f24db84486e09d933392c694cc36dd3/Flask-Occam-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "e2ad4d7624a2185903c429307b4d4340", "sha256": "b87df801a542ae81cd6502ee542d14e30c0808d18dfe9e1970bc3f122434b7e4" }, "downloads": -1, "filename": "Flask_Occam-0.1.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e2ad4d7624a2185903c429307b4d4340", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 17969, "upload_time": "2020-01-25T19:39:21", "upload_time_iso_8601": "2020-01-25T19:39:21.994184Z", "url": "https://files.pythonhosted.org/packages/32/80/202e79be4ffada24debf34f5deef6023e305d20509fb74c9dd51c0f77aba/Flask_Occam-0.1.8-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c9875882512aa6092c1d8aae470e12dd", "sha256": "54469866239f09c3f25ccb792f02a2295b75ce2443584155f468ab6ae1411736" }, "downloads": -1, "filename": "Flask-Occam-0.1.8.tar.gz", "has_sig": false, "md5_digest": "c9875882512aa6092c1d8aae470e12dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 180645, "upload_time": "2020-01-25T19:39:24", "upload_time_iso_8601": "2020-01-25T19:39:24.259614Z", "url": "https://files.pythonhosted.org/packages/bb/fa/0bc6d28a022423c959a23598ba66a3948bb5bd335bf477be184266f6a871/Flask-Occam-0.1.8.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "61f2a2fadb64630b902ef733f1806c46", "sha256": "fadad5cad7afd4bb4d0f6c610483aee75fb9ce2645a5c0d3ab8c241fe7af87b3" }, "downloads": -1, "filename": "Flask_Occam-0.1.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "61f2a2fadb64630b902ef733f1806c46", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18004, "upload_time": "2020-04-29T10:37:26", "upload_time_iso_8601": "2020-04-29T10:37:26.072898Z", "url": "https://files.pythonhosted.org/packages/9b/d2/32be469e6f2043ab25a5ef992e0ce64054f2fee421eed3d53367f2e77187/Flask_Occam-0.1.9-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "efe925abf3f3a95a9cbfe2f4b578441a", "sha256": "bd98a7114edeca3f62ff0db0a15b66fb63109fae9c5aee82ada1b6df2f748762" }, "downloads": -1, "filename": "Flask-Occam-0.1.9.tar.gz", "has_sig": false, "md5_digest": "efe925abf3f3a95a9cbfe2f4b578441a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 180778, "upload_time": "2020-04-29T10:37:28", "upload_time_iso_8601": "2020-04-29T10:37:28.082454Z", "url": "https://files.pythonhosted.org/packages/96/c3/b7001aee1d80fa9e396363281f6b402b371220e7a34664d8c7ee048c3a47/Flask-Occam-0.1.9.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "7dc0ec7f87458881d4ca2235d626382a", "sha256": "c9b8ca9ab59af85ffd11f0e90aaed7bcdd2cde75cb947c3e05f5237f07f28680" }, "downloads": -1, "filename": "Flask_Occam-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7dc0ec7f87458881d4ca2235d626382a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18039, "upload_time": "2020-04-29T11:19:47", "upload_time_iso_8601": "2020-04-29T11:19:47.789233Z", "url": "https://files.pythonhosted.org/packages/02/38/541d6a87c3b67dc420f157721fde72c4172fa2d4869bde71ffb35ab36653/Flask_Occam-0.2.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "daadabc3a3ef10a9d824dd71654e30bf", "sha256": "31685b863b0d8c7af497855a33152910775d0a47587eb51e0c64134f3f4bf899" }, "downloads": -1, "filename": "Flask-Occam-0.2.0.tar.gz", "has_sig": false, "md5_digest": "daadabc3a3ef10a9d824dd71654e30bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 180818, "upload_time": "2020-04-29T11:19:49", "upload_time_iso_8601": "2020-04-29T11:19:49.058939Z", "url": "https://files.pythonhosted.org/packages/6e/e4/61029650f4bde0dccd767fa6240fb280c6d9bb81fe028f7e9ec85e94ace6/Flask-Occam-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "61f60a545d987a8871e9dd836c8af0f4", "sha256": "e70b9c59f1445b663b131b441283c5a9ef9f6bb2f0156a15f3a521063013ccf2" }, "downloads": -1, "filename": "Flask_Occam-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "61f60a545d987a8871e9dd836c8af0f4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18106, "upload_time": "2021-05-26T15:06:21", "upload_time_iso_8601": "2021-05-26T15:06:21.534212Z", "url": "https://files.pythonhosted.org/packages/32/86/22ed7b1932bafd80f52a17f01fdb872b9174fea124e9335617513e764a1f/Flask_Occam-0.2.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a06773a194c9ee160132caf3365292ae", "sha256": "95fae5597ade192ee6bec3210d80220a79e453d0c6e3790870363de1b62a2425" }, "downloads": -1, "filename": "Flask-Occam-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a06773a194c9ee160132caf3365292ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 182097, "upload_time": "2021-05-26T15:06:23", "upload_time_iso_8601": "2021-05-26T15:06:23.398118Z", "url": "https://files.pythonhosted.org/packages/56/5b/51753570df603272195084cae14b9b6cc4ade2011748d640693275ea9089/Flask-Occam-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "61f60a545d987a8871e9dd836c8af0f4", "sha256": "e70b9c59f1445b663b131b441283c5a9ef9f6bb2f0156a15f3a521063013ccf2" }, "downloads": -1, "filename": "Flask_Occam-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "61f60a545d987a8871e9dd836c8af0f4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18106, "upload_time": "2021-05-26T15:06:21", "upload_time_iso_8601": "2021-05-26T15:06:21.534212Z", "url": "https://files.pythonhosted.org/packages/32/86/22ed7b1932bafd80f52a17f01fdb872b9174fea124e9335617513e764a1f/Flask_Occam-0.2.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a06773a194c9ee160132caf3365292ae", "sha256": "95fae5597ade192ee6bec3210d80220a79e453d0c6e3790870363de1b62a2425" }, "downloads": -1, "filename": "Flask-Occam-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a06773a194c9ee160132caf3365292ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 182097, "upload_time": "2021-05-26T15:06:23", "upload_time_iso_8601": "2021-05-26T15:06:23.398118Z", "url": "https://files.pythonhosted.org/packages/56/5b/51753570df603272195084cae14b9b6cc4ade2011748d640693275ea9089/Flask-Occam-0.2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }