{ "info": { "author": "procool", "author_email": "procool@procool.ru", "bugtrack_url": null, "classifiers": [], "description": "FlaskCBV is Alternative Framework for working with flask with the class Based Views approach (CBV)\n\nThe platform allows to implement a clear architecture based on the using of all the benefits of this approach;\n\nThese framework are made in a style similar to Django:\n- to simplify its study\n- because the architecture of the Django looks elegant.\n\nWe tried to make the minimum loaded wrapper for the flask, which does not require any special dependencies.\n \nFeatures of use:\nInstead of the route decorator to define handlers we are using urls.py with the description of the scheme and with ability: \n- using includes\n- the splitting of the namespace for each application\n\n\nAs a configuration file for flaskcbv used the \"settings\" module;\nThere's also a separate settings module is specifically flask;\n\nDependences:\n setuptools\n Flask\n Werkzeug\n Jinja2\n MarkupSafe\n\n\nINTRODUCTION\n============\n\nInstallation and setup:\n1. Install framework using pip:\n $ sudo pip install flaskcbv\n The required dependencies will be installed automatically.\n\n2. Create a directory of your project:\n $ mkdir project; cd project\n\n3. Create project using flaskcbv utility:\n $ flaskcbv initproject\n The project will be created in the current directory\n\n4. Start server:\n $ cd apps;\n $ python start.py\n The server starts by default on port 5555\n\n5. Try the server using your browser or telnet(in a separate shell), for e.g:\n $ telnet localhost 5555\nTrying 127.0.0.1...\nConnected to localhost.\nEscape character is '^]'.\nGET / HTTP/1.0\n\nHTTP/1.0 200 OK\nContent-Type: text/html; charset=utf-8\nContent-Length: 22\nserver: my WEB Server\nDate: Fri, 10 Jun 2016 21:57:46 GMT\n\nIt works on FlaskCBV! Connection closed by foreign host.\n\nProject is works, have fun:)\n\n\n\n\nTHE DIRECTORY STRUCTURE\n=======================\n\nIn the generated project by default there are two directories:\n apps/ - there are placed the applications of project and modules required to run\n settings/ - flaskcbv settings module\n\nLet us consider separately each of the directories:\n\nDirectory: settings/\n __init__.py - this module contains the base settings of the framework\n local.py - this module is included to the __init__.py, it is necessary for that would allocate the settings concerning the used development instance.\n\nFor example:\nIn __init__ you can set up base settings such as the application set, the default headers and so on;\nIn local.py you can set/override the database connection settings, the paths to templates, etc...\nThen if you move project to other instance you can change local.py using a Makefile or other method of automatic creating from prototypes;\nit is convenient to push \"__init__\" into the repository.\n\nIf desired, the entire directory of settings can be replaced by settings.py, this is not affect to the framework working;\n\nDirectory: apps/\n start.py - it is a runnable program, it is necessary to start the server in test mode.\n in this program, are automatically assigned port, and absolute path to the project;\n based on this program you can easily create the front-end wsgi.py\n project.py - module which creates a flask app using flaskcbv;\n flaskconfig.py - a module which sets configuration variables of the Flask;\n\n urls.py - module which describes the main namespaces and handlers(urls) of the project\n\nHere placed the default app: \"main\", which makes output on request:\n \"It works on FlaskCBV!\"\n main/urls.py - included to the main urls.py module\n main/views.py - the module contains a view mainView, here also sets the template which is used to output to the user.\n main/templates/main/index.tpl - template of \"main\" application;\n\nFor the successful work of application \"main\" it placed to the settings module in the APPLICATIONS tuple;\n\nTry to play with project, to withdraw its templates and to write any mixins.\n\n\nNow you can use Flask with CBV approach\n\nHave fun!:)\n\nregards, procool@\n\n\n\n\n******************************************************************************\nFlaskCBV Examples:\n\n\nSimple implementation of json server:\n\nfrom flaskcbv.response import Response\nfrom flaskcbv.view.mixins import JSONMixin\nfrom flaskcbv.view import View\n\n\n\nclass JSONView(JSONMixin, View):\n def get_json_indent(self):\n return self.__json_indent\n\n def dispatch(self, request, *args, **kwargs):\n try: self.__json_indent = int(request.args['json_indent'])\n except: self.__json_indent = None\n\n r = super(JSONView, self).dispatch(request, *args, **kwargs)\n\n ## Return context as json \n return Response(self.get_as_json())\n\n\n\nclass myJsonView(JSONView):\n def get_context_data(self, **kwargs):\n return {'some': 'var'}\n\n\nwhen processing myJsonView the client will receive:\n{\n \"errno\": 0,\n \"error\": \"OK\",\n \"details\": \"\",\n \"some\": \"var\"\n}\n\n\n\n\n\n\n\n\n==============================================================================\nExample of checking user session (implementation LoginRequiredMixin):\n\nimport logging\n\nimport werkzeug.exceptions as ex\nfrom flask import request, session, abort\n\nfrom flaskcbv.view.mixins import JSONMixin, getArgumentMixin\nfrom flaskcbv.response import Response\n\nfrom .models import Auth\n\n\n## Mixin with session validate methods:\nclass AuthedMixin(object):\n\n def test_for_user(self):\n ## Try to get session from query parameters:\n try: session_= self.request.args['session']\n except: session_ = None\n \n ## Try to get session from flask.session (cookies)\n if session_ is None:\n try: session_=session['session']\n except: session_= None\n\n ## No session, return 401:\n if session_ is None:\n abort(401)\n\n ## Check the session, find the user:\n try:\n request.user = Auth.session(session_)\n session['session'] = session_\n except Exception as err:\n request.user = None\n\n\n\n## Check session Mixin\nclass _LoginRequiredMixin(object):\n def prepare(self, *args, **kwargs):\n ## The only type of exception - abort\n self.test_for_user()\n \n ## The session was found but it's wrong(or user not found):\n if request.user is None:\n abort(403)\n\n return super(_LoginRequiredMixin, self).prepare(*args, **kwargs)\n\n\n\nclass LoginRequiredMixin(_LoginRequiredMixin, AuthedMixin):\n pass\n\n \nNow, mixing in LoginRequiredMixin to any view, before the dispatch we have carried out the test of session\n\n\n\n\n\n\n==============================================================================\nAn example of a forwarding context variables to the template:\n\n\nimport logging\nimport datetime\n\nfrom flaskcbv.view import TemplateView\nfrom settings import STATIC_URL\n\n## Provide context varialbes from project settings\nclass defaultSettingsMixin(object):\n\n def get_context_data(self, **kwargs):\n context = super(defaultSettingsMixin, self).get_context_data(**kwargs)\n context['STATIC_URL'] = STATIC_URL\n return context\n\n\n\nclass myTemplateView(defaultSettingsMixin, TemplateView):\n pass\n\n\nNow, inheriting myTemplateView in context variables STATIC_URL is set from the settings;\n\n\n\n\n==============================================================================\nExample of creating and using the template tag(jinja extention):\n\nThe classes of template tags should be placed into the directory templatetags located in the root directory of the project;\n\nCreate a directory:\n$ cd myproject\n$ ls\napps assets settings templates\n$ mkdir templatetags; cd templatetags\n$ touch __init__.py\n\nLet us create, for example, mytags.py in which:\n\n# encoding: utf8\nfrom jinja2 import nodes\nfrom jinja2.ext import Extension\n\n## This extension will return the type of the given attribute any of the specified object\nclass ObjectAttrTypeExtension(Extension):\n ## If this attribute is not defined or is False or None, the extension will not be taken into account when running:\n enabled=True\n \n tags = set(['attrtype'])\n\n def __init__(self, environment):\n super(ListSortedExtension, self).__init__(environment)\n\n # add the defaults to the environment\n environment.extend(\n fragment_cache_prefix='',\n fragment_cache=None\n )\n\n def parse(self, parser):\n lineno = next(parser.stream).lineno\n\n # now we parse a single expression that is used as cache key.\n args = [parser.parse_expression()]\n\n if parser.stream.skip_if('comma'):\n args.append(parser.parse_expression())\n else:\n args.append(nodes.Const(None))\n\n return nodes.CallBlock(self.call_method('_empty', args),\n [], [], \"\").set_lineno(lineno)\n\n def _empty(self, obj, attr, caller):\n try:\n return \"%s\" % type(getattr(obj, attr))\n except Exception as err:\n pass\n return u''\n\n \nAt the start flaskcbv will automatically load the tag and it will be available for using in templates;\nThere is an Example:\n\n{% attrtype request, 'method' %}\n - returns: \"\"\n\nRead more about jinja2 extentions:\nhttp://jinja.pocoo.org/docs/dev/extensions/\n\n\n\n==============================================================================\nExample of FlaskCBV Forms:\n\n\n\n## Simple form:\nfrom flaskcbv.forms import Form\n\nclass myFormClass(Form):\n def clean_test_passed(self, val):\n ## self.cleaned_data['test_passed'] value will be 'passed' \n ## self.data['test_passed'] value will be val\n return 'passed' \n\n def clean_test_error(self, val):\n ## self.data['test_error'] value will be val\n ## there is no key 'test_error' in self.cleaned_data\n ## self.errors['test_error'] will be: 'Some Error' Exception\n raise Exception('Some Error')\n\n\n\n\nfrom flaskcbv.view.crud import FormViewMixin\nfrom flaskcbv.view import TemplateView\n\n\nclass myFormView(FormViewMixin, TemplateView):\n template='index/some.tpl'\n form_class = myFormClass\n\n ## Uncomment this, if you want default redirect:\n #form_success_url = '/action/success/'\n #form_unsuccess_url = '/action/unsuccess/'\n\n ## Custom url for form success action:\n #def get_from_success_url(self):\n # return \"/some/other/success/url\"\n\n ## Here, on GET client recv's our template, where in context var.: 'form' we can access to cleaned form variables;\n \n ## Let's Redefine POST processing:\n def post(self, *args, **kwargs):\n\n ## Create our form object:\n form = self.get_form() \n\n ## Check form, this will run form.clean that will start 'clean_ATTR' methods, like in django\n if form.validate():\n ## By default it's a redirect to self.form_success_url or self.get_from_success_url(): \n return self.form_valid(form)\n\n else:\n ## By default returns template with 'form' context variable:\n return self.form_invalid(form)\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "BSD 2 Clause", "maintainer": "", "maintainer_email": "", "name": "flaskcbv", "package_url": "https://pypi.org/project/flaskcbv/", "platform": "", "project_url": "https://pypi.org/project/flaskcbv/", "project_urls": null, "release_url": "https://pypi.org/project/flaskcbv/1.4.16/", "requires_dist": null, "requires_python": "", "summary": "FlaskCBV is Alternative Framework for working with flask with the class Based Views approach (CBV)\n", "version": "1.4.16" }, "last_serial": 4431994, "releases": { "1.2.3": [ { "comment_text": "", "digests": { "md5": "714d7c3f5b3900e96c2597e2d3150d03", "sha256": "ab910635b684dca6bc10f837a0732528ee2e8b8f71b8102c11cd66ab5adb5a26" }, "downloads": -1, "filename": "flaskcbv-1.2.3.tar.gz", "has_sig": false, "md5_digest": "714d7c3f5b3900e96c2597e2d3150d03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9738, "upload_time": "2015-12-29T07:56:37", "url": "https://files.pythonhosted.org/packages/63/23/693fd20de6dbd1685a4175d41d7c01250aece9a2c51d0e1b123d1eaa8afa/flaskcbv-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "3a6b26d8fec628d0c92afe79e2f5672c", "sha256": "72e6485c0a65269b345d516ef7a1a932aae034cee3a8e9bf77c9ae7e2c4bb5d1" }, "downloads": -1, "filename": "flaskcbv-1.2.4.tar.gz", "has_sig": false, "md5_digest": "3a6b26d8fec628d0c92afe79e2f5672c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9618, "upload_time": "2016-01-19T21:44:36", "url": "https://files.pythonhosted.org/packages/ff/b6/8035d2d68c58d8c14270fb4f92d68489e89d87b7da8885e36f389c651145/flaskcbv-1.2.4.tar.gz" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "d401b7742d852f2c0b0c342ebe0e50be", "sha256": "c51af7a1cbe0b79c40815e6f7db6abbb82baaac854046bdbe8b25c11c298c35b" }, "downloads": -1, "filename": "flaskcbv-1.2.5.tar.gz", "has_sig": false, "md5_digest": "d401b7742d852f2c0b0c342ebe0e50be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10275, "upload_time": "2016-01-20T21:35:36", "url": "https://files.pythonhosted.org/packages/0e/b1/9710c84ac364a78a6842b197a87aa1f6ea9f6dc311edcd91bb23bf0074b4/flaskcbv-1.2.5.tar.gz" } ], "1.2.6": [ { "comment_text": "", "digests": { "md5": "fcfb504119bb2d7aef4ee043cbb0b28c", "sha256": "00521c04954de9891cb75265bfd150ad9c1328c7edccaa52d5db08ac321b49aa" }, "downloads": -1, "filename": "flaskcbv-1.2.6.tar.gz", "has_sig": false, "md5_digest": "fcfb504119bb2d7aef4ee043cbb0b28c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10344, "upload_time": "2016-01-20T21:54:04", "url": "https://files.pythonhosted.org/packages/70/b7/841d9a86408e401deef8f53753b0ccb56109fc51ba722cf5ec533e3465f2/flaskcbv-1.2.6.tar.gz" } ], "1.2.7": [ { "comment_text": "", "digests": { "md5": "3e543d398204ced6c95c4668b2a05a97", "sha256": "d5997651da8219bd57ae6165f402be988fe8afc7f1982a1db73cb736578112b0" }, "downloads": -1, "filename": "flaskcbv-1.2.7.tar.gz", "has_sig": false, "md5_digest": "3e543d398204ced6c95c4668b2a05a97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10375, "upload_time": "2016-01-20T22:15:26", "url": "https://files.pythonhosted.org/packages/29/90/6d88df7a5dd75321c88b3cc857cb6866862f602435fd348b7aeb049ebfaf/flaskcbv-1.2.7.tar.gz" } ], "1.2.8": [ { "comment_text": "", "digests": { "md5": "3b2048776392aabff03281aae5da0c34", "sha256": "b47e42416c40d56c06fc5cd31bda47538250d2ecf30012f6f1ca004e387761a8" }, "downloads": -1, "filename": "flaskcbv-1.2.8.tar.gz", "has_sig": false, "md5_digest": "3b2048776392aabff03281aae5da0c34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14799, "upload_time": "2016-01-20T22:42:49", "url": "https://files.pythonhosted.org/packages/9f/24/00fab0e15f43f8b4012e7a8f33a928ab075cf6cd9ff200bbce19fa47f47d/flaskcbv-1.2.8.tar.gz" } ], "1.2.9": [], "1.3.0": [ { "comment_text": "", "digests": { "md5": "cc8de079b4794629cef797142cb5568b", "sha256": "0c0964eed51e725700594073a077f30d99ae746810ccc6bea595de209951d2a1" }, "downloads": -1, "filename": "flaskcbv-1.3.0.tar.gz", "has_sig": false, "md5_digest": "cc8de079b4794629cef797142cb5568b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13278, "upload_time": "2016-06-11T20:29:51", "url": "https://files.pythonhosted.org/packages/7a/2c/ae2de1f3540eb37b187b5168b33296a4a52c192d9201984a61c79514694b/flaskcbv-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "ba58874fd97216110384754a65decfb5", "sha256": "02e64fe416a5f64ac6e051936522e1055c8e905675506869e898d25c27be286b" }, "downloads": -1, "filename": "flaskcbv-1.3.1.tar.gz", "has_sig": false, "md5_digest": "ba58874fd97216110384754a65decfb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20632, "upload_time": "2016-09-01T13:20:20", "url": "https://files.pythonhosted.org/packages/5e/6b/ede6b38f384629bbbdd6a8d37b320a1dac12f4d10879e5ba070771d61c52/flaskcbv-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "0c9f0da0db049e01f48b80e13d414e83", "sha256": "c2b1d75bf75845204640dbdc7c6c92eae82aee1ad4210009eeb503f88c690860" }, "downloads": -1, "filename": "flaskcbv-1.3.2.tar.gz", "has_sig": false, "md5_digest": "0c9f0da0db049e01f48b80e13d414e83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20638, "upload_time": "2016-11-04T05:30:36", "url": "https://files.pythonhosted.org/packages/69/6c/0bca9eb29caa8f7feb90f9044e09a76bd1e159ce706e9bff2b3c19cce5df/flaskcbv-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "7cba11a0511ded872a33c701e0f0ea3f", "sha256": "b1b675e64abb08bdf8d2854f7524bf5693d4db1acfe0625c8f9a4cddbe89b10e" }, "downloads": -1, "filename": "flaskcbv-1.3.3.tar.gz", "has_sig": false, "md5_digest": "7cba11a0511ded872a33c701e0f0ea3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20676, "upload_time": "2016-11-04T05:39:19", "url": "https://files.pythonhosted.org/packages/2d/9b/b3b703508db1113cbb8b1de01fba7a518460c4f64506ab0843c23d356796/flaskcbv-1.3.3.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "66b23462e0b924992f000c287dc51fe9", "sha256": "328b9cd5df9358b09006874590658be05cb3ac0754de882c79a07e237720b3c3" }, "downloads": -1, "filename": "flaskcbv-1.4.1.tar.gz", "has_sig": false, "md5_digest": "66b23462e0b924992f000c287dc51fe9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22047, "upload_time": "2017-02-10T16:53:48", "url": "https://files.pythonhosted.org/packages/84/21/9a9f2f5015ba8a7695f8a63ff45507df07514ec0f885961bf8999cadcab4/flaskcbv-1.4.1.tar.gz" } ], "1.4.10": [ { "comment_text": "", "digests": { "md5": "9c23e0a11b53fdd7a4d2fd192c335f9a", "sha256": "54f329200570eb20eabb95967731ad1fc3bcf83f52ceb4e94a7b752c2bf892a2" }, "downloads": -1, "filename": "flaskcbv-1.4.10.tar.gz", "has_sig": false, "md5_digest": "9c23e0a11b53fdd7a4d2fd192c335f9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23054, "upload_time": "2017-02-21T18:56:28", "url": "https://files.pythonhosted.org/packages/5e/54/a5c0c1f4627575ee44032741c2c629ea83a9bb3ee6b856e60b99084855da/flaskcbv-1.4.10.tar.gz" } ], "1.4.11": [ { "comment_text": "", "digests": { "md5": "36c1f32c3d52cb3064a4455e1f910a41", "sha256": "ba0281d7b63f51134aa138d8a50794a42139510579e5c8eeb9d12c74649f0519" }, "downloads": -1, "filename": "flaskcbv-1.4.11.tar.gz", "has_sig": false, "md5_digest": "36c1f32c3d52cb3064a4455e1f910a41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23081, "upload_time": "2017-03-15T04:18:47", "url": "https://files.pythonhosted.org/packages/88/51/8d5d4b2d6a8441d5e5c494754a8e635775ab8ce358ddc3a5714d6babc519/flaskcbv-1.4.11.tar.gz" } ], "1.4.12": [ { "comment_text": "", "digests": { "md5": "396c59c6bb11128a6acd43f2bf9a3ea2", "sha256": "cb3b5c87436eea4d94a122217b52382fdd869750515971e8362c508d570f1906" }, "downloads": -1, "filename": "flaskcbv-1.4.12.tar.gz", "has_sig": false, "md5_digest": "396c59c6bb11128a6acd43f2bf9a3ea2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22879, "upload_time": "2018-10-03T07:38:34", "url": "https://files.pythonhosted.org/packages/94/c7/c9825fff9bfcad48fdf76282962f5e074581ac20fb52800b60978abdde47/flaskcbv-1.4.12.tar.gz" } ], "1.4.13": [ { "comment_text": "", "digests": { "md5": "5fd4e3770ad4783a7b4baefe49d8605c", "sha256": "5c48dc42f3f70dbcb32a20bb59f62a4f5b25b9a116d8978f328988e698cf8475" }, "downloads": -1, "filename": "flaskcbv-1.4.13.tar.gz", "has_sig": false, "md5_digest": "5fd4e3770ad4783a7b4baefe49d8605c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22924, "upload_time": "2018-10-03T09:24:16", "url": "https://files.pythonhosted.org/packages/d9/8c/8ba9e73a1c77b142c7595a013e4ac44199a48cb9f1d73b3c4709b3007ddb/flaskcbv-1.4.13.tar.gz" } ], "1.4.14": [ { "comment_text": "", "digests": { "md5": "2c55d3cf1d6cec64446416e8c4e387d2", "sha256": "569d4e317ce4b645788293505714d1218c6030cd9218a9cb22b697d268c2cbbd" }, "downloads": -1, "filename": "flaskcbv-1.4.14.tar.gz", "has_sig": false, "md5_digest": "2c55d3cf1d6cec64446416e8c4e387d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22938, "upload_time": "2018-10-30T14:11:14", "url": "https://files.pythonhosted.org/packages/c2/22/6211edcda212a1696bd634d8f88f5a7bef97b9eaf4b9f4c8ed9e0364a9c4/flaskcbv-1.4.14.tar.gz" } ], "1.4.15": [ { "comment_text": "", "digests": { "md5": "62fdcc53187619ab9bcd8533776844b2", "sha256": "6a6c936b58849a7775eabbb15dd66a35c20365bb30e293bf21b2975ee7bea329" }, "downloads": -1, "filename": "flaskcbv-1.4.15.tar.gz", "has_sig": false, "md5_digest": "62fdcc53187619ab9bcd8533776844b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22953, "upload_time": "2018-10-30T15:07:59", "url": "https://files.pythonhosted.org/packages/ae/3d/246e6ade77dcfc9683e9a9f67a76b3a87e15ff99a24e18a15ef44ef9a721/flaskcbv-1.4.15.tar.gz" } ], "1.4.16": [ { "comment_text": "", "digests": { "md5": "51736cb9d8fe0bcfd90df4c99dba8fc9", "sha256": "2de8f3f945179ed00594fa11ddc5d55a93a10fa2cc8277ae5852bd5e69c808d6" }, "downloads": -1, "filename": "flaskcbv-1.4.16.tar.gz", "has_sig": false, "md5_digest": "51736cb9d8fe0bcfd90df4c99dba8fc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22952, "upload_time": "2018-10-30T15:09:40", "url": "https://files.pythonhosted.org/packages/ee/ed/c9edbe49071165443a9a09c5c88d4221bac6804b2c29d5d0c9cee6885fa2/flaskcbv-1.4.16.tar.gz" } ], "1.4.2": [ { "comment_text": "", "digests": { "md5": "76553714dafe6f19d7b0afb74c8141c6", "sha256": "5b726c0a23d7a7460327ad8bab05b74a15241e29a45399265e4de5b52d5ed583" }, "downloads": -1, "filename": "flaskcbv-1.4.2.tar.gz", "has_sig": false, "md5_digest": "76553714dafe6f19d7b0afb74c8141c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22344, "upload_time": "2017-02-11T15:17:34", "url": "https://files.pythonhosted.org/packages/c8/7e/d6e17f588515fe95d74a6b3fa78b53242c0ecdecab33d424456caf07e3b0/flaskcbv-1.4.2.tar.gz" } ], "1.4.3": [ { "comment_text": "", "digests": { "md5": "4c8a1001ef479a4b736470b18f8dae82", "sha256": "97b3da3c6591bbae5f8744dfc306175630bab106bd64d84714519083a77d50d3" }, "downloads": -1, "filename": "flaskcbv-1.4.3.tar.gz", "has_sig": false, "md5_digest": "4c8a1001ef479a4b736470b18f8dae82", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22354, "upload_time": "2017-02-11T16:46:51", "url": "https://files.pythonhosted.org/packages/5e/20/93e63ac722117063fb0f6d99d1a7f5721449f61dd34777b81637cada002a/flaskcbv-1.4.3.tar.gz" } ], "1.4.4": [ { "comment_text": "", "digests": { "md5": "04af729196979d54894337b6bebabe47", "sha256": "192eedcbc2a1d7fed3bf7583f427b184ded8608ee33c4e05518005772e4235b2" }, "downloads": -1, "filename": "flaskcbv-1.4.4.tar.gz", "has_sig": false, "md5_digest": "04af729196979d54894337b6bebabe47", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22367, "upload_time": "2017-02-13T14:52:10", "url": "https://files.pythonhosted.org/packages/8f/4b/32e419fe0d497c453e28e8f64516da778f9b1da06f0df40b08e1312e1a49/flaskcbv-1.4.4.tar.gz" } ], "1.4.5": [ { "comment_text": "", "digests": { "md5": "85fd9e403328e24557000003bb7c5e64", "sha256": "0c0293b8ee189489b17c6d16b3eca4f5dba866d892291bc7a2217a0cb32974d1" }, "downloads": -1, "filename": "flaskcbv-1.4.5.tar.gz", "has_sig": false, "md5_digest": "85fd9e403328e24557000003bb7c5e64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22366, "upload_time": "2017-02-13T15:11:50", "url": "https://files.pythonhosted.org/packages/8e/c1/a0e9e0efc8e56f8722380c558634d432e5fa972628b87fc3f8bf1d4c39a4/flaskcbv-1.4.5.tar.gz" } ], "1.4.6": [ { "comment_text": "", "digests": { "md5": "be7e2caf5182c24a2739be6c71846342", "sha256": "33c3582688fbfdab29e2d44f88f70b2d55be2b4bfce834d7e69e371b6888e41d" }, "downloads": -1, "filename": "flaskcbv-1.4.6.tar.gz", "has_sig": false, "md5_digest": "be7e2caf5182c24a2739be6c71846342", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22499, "upload_time": "2017-02-13T15:52:26", "url": "https://files.pythonhosted.org/packages/eb/7d/17a6b9d6868c7b51f8a8dd22e73af9fa1edbb10a8588307a796bf1e598ef/flaskcbv-1.4.6.tar.gz" } ], "1.4.7": [ { "comment_text": "", "digests": { "md5": "a63bc52fd25ac9eae3c16cb5f58048e8", "sha256": "d880f8cbf5e49c2cd15a018e38716ebae3a6e8c5aa2c4be04b709a4cb9425ba3" }, "downloads": -1, "filename": "flaskcbv-1.4.7.tar.gz", "has_sig": false, "md5_digest": "a63bc52fd25ac9eae3c16cb5f58048e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23048, "upload_time": "2017-02-21T11:57:53", "url": "https://files.pythonhosted.org/packages/79/98/064414c3430907796d804bac70f933331581e2b444dcf4ead84c596499d2/flaskcbv-1.4.7.tar.gz" } ], "1.4.8": [ { "comment_text": "", "digests": { "md5": "0e20c8a8f8e4f48db73408aa5aa684bb", "sha256": "059511eefba36ce1d103b26d61cf23e5a3cf0ea019476c8cd09fd00d76d29067" }, "downloads": -1, "filename": "flaskcbv-1.4.8.tar.gz", "has_sig": false, "md5_digest": "0e20c8a8f8e4f48db73408aa5aa684bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23052, "upload_time": "2017-02-21T18:28:12", "url": "https://files.pythonhosted.org/packages/ae/20/9693b20f9aa6e10cdcaf1d21cd13b802a7021845573ee6721a724c5e1715/flaskcbv-1.4.8.tar.gz" } ], "1.4.9": [ { "comment_text": "", "digests": { "md5": "ec4491765734fd49f756f5194b8445e5", "sha256": "1454fdff64e469d7b64cb0866d7aef0c7a60326950d9e84f1bb2d05a8b36ab10" }, "downloads": -1, "filename": "flaskcbv-1.4.9.tar.gz", "has_sig": false, "md5_digest": "ec4491765734fd49f756f5194b8445e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23060, "upload_time": "2017-02-21T18:44:24", "url": "https://files.pythonhosted.org/packages/51/c1/03f7341e09fd1e79632ff3d7ec939afecf1b1dea12fa2ad52b0eb1b01e81/flaskcbv-1.4.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "51736cb9d8fe0bcfd90df4c99dba8fc9", "sha256": "2de8f3f945179ed00594fa11ddc5d55a93a10fa2cc8277ae5852bd5e69c808d6" }, "downloads": -1, "filename": "flaskcbv-1.4.16.tar.gz", "has_sig": false, "md5_digest": "51736cb9d8fe0bcfd90df4c99dba8fc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22952, "upload_time": "2018-10-30T15:09:40", "url": "https://files.pythonhosted.org/packages/ee/ed/c9edbe49071165443a9a09c5c88d4221bac6804b2c29d5d0c9cee6885fa2/flaskcbv-1.4.16.tar.gz" } ] }