{ "info": { "author": "David Betz", "author_email": "dfb@davidbetz.net", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Build Tools" ], "description": "Middleware for Python\n=====================\n\n**Copyright (c) 2016 David Betz**\n\nInstallation\n------------\n\n::\n\n pip install middleware\n\n|Build Status| |PyPI version|\n\nCompatibility\n-------------\n\nPython 2 and 3\n\nPurpose\n-------\n\nMost everyone needs a concept of middleware.\n\nFollowing are examples of using this, see ``test_middleware.py`` for\nfull examples.\n\n::\n\n class AdditionMiddleware1(Middleware):\n def create(self):\n def func(mwa, context):\n try:\n counter = context['counter']\n except:\n counter = 0\n context['counter'] = counter + 1\n\n return next(mwa)\n\n return func\n\nWhen using a class, add a ``create`` function which returns a function.\nThis inner fuction accepts the middleware array and the data context and\nreturns ``next(mwa)`` to create a middleware chain.\n\nFor this example, I'll add two more:\n\n::\n\n class AdditionMiddleware2(AdditionMiddleware1):\n pass\n\n\n class AdditionMiddleware3(AdditionMiddleware2):\n pass\n\nNow to run it. Use ``set`` to set an array of middleware and ``add`` to\nadd one to the array. ``set`` overwrites everything. That's just what\n``set`` means.\n\n::\n\n handler = Handler()\n handler.set([AdditionMiddleware1, AdditionMiddleware2])\n handler.add(AdditionMiddleware3)\n handler.execute()\n\n # handler['counter'] == 3\n\nIn this case, there is no initial context and each of the three\nmiddleware increment a counter ending with ``handler['counter'] == 3``.\n\nYou can skip the entire class stuff too:\n\n::\n\n handler = Handler()\n def inline(wma, context):\n context['myvalue'] = 12\n handler.add(inline)\n handler.execute()\n # handler['myvalue'] == 12\n\nUse the following to send initial context:\n\n::\n\n handler = Handler(counter=1)\n\nIt's actually ``kwargs``, so you can load it up:\n\n::\n\n handler = Handler(**{'a': 1, 'b': 2})\n def inline(wma, context):\n context['a'] = context['a'] + context['b']\n handler.add(inline)\n handler.execute()\n\n.. |Build Status| image:: https://travis-ci.org/davidbetz/pymiddleware.svg?branch=master\n :target: https://travis-ci.org/davidbetz/pymiddleware\n.. |PyPI version| image:: https://badge.fury.io/py/middleware.svg\n :target: https://badge.fury.io/py/middleware", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/davidbetz/middleware", "keywords": "middleware", "license": "", "maintainer": "", "maintainer_email": "", "name": "middleware", "package_url": "https://pypi.org/project/middleware/", "platform": "", "project_url": "https://pypi.org/project/middleware/", "project_urls": { "Homepage": "https://github.com/davidbetz/middleware" }, "release_url": "https://pypi.org/project/middleware/1.2.3/", "requires_dist": null, "requires_python": "", "summary": "Python module to add general middleware", "version": "1.2.3" }, "last_serial": 3030280, "releases": { "1.2": [ { "comment_text": "", "digests": { "md5": "c6d80bea6bd0bb74022e61e2a201b25a", "sha256": "b11c2957dfdcf379b6e47dcef5af31ed0691033c85e656775b296ff7787c5633" }, "downloads": -1, "filename": "middleware-1.2.tar.gz", "has_sig": false, "md5_digest": "c6d80bea6bd0bb74022e61e2a201b25a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1642, "upload_time": "2016-08-03T20:51:30", "url": "https://files.pythonhosted.org/packages/78/14/0ca47ca408e1840e3cf1b460b97859a182d80087aabfa5d3446e8f07826c/middleware-1.2.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "3020968d6573f9face5fe0753bb34ce4", "sha256": "03cca41fb244456935263b7278c31f1d258489d7cde7b358c6e6681231c67a19" }, "downloads": -1, "filename": "middleware-1.2.1.tar.gz", "has_sig": false, "md5_digest": "3020968d6573f9face5fe0753bb34ce4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3933, "upload_time": "2017-07-15T14:11:13", "url": "https://files.pythonhosted.org/packages/97/1c/afb0bb09736580a999ee031838c1bfde0c4508662d817223f43a8f320125/middleware-1.2.1.tar.gz" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "505e3a6a46ee590af0d17c4c83ada8cd", "sha256": "65f3426f4d8792836bc45d87f0d84a87353f8669e153c0b95603966de7352e24" }, "downloads": -1, "filename": "middleware-1.2.2.tar.gz", "has_sig": false, "md5_digest": "505e3a6a46ee590af0d17c4c83ada8cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4203, "upload_time": "2017-07-15T14:20:44", "url": "https://files.pythonhosted.org/packages/10/81/5b9d9972ca106e1bde01ab6e1b3f9a7a4604c90742993f14bdfd3fc2c7f6/middleware-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "2e8e1ed5a150680d5a2fd66859587d15", "sha256": "e5370d5781c440637cb87be4964fc5cb9cec7d4c9a5bb6a7bf0bbae326639c5c" }, "downloads": -1, "filename": "middleware-1.2.3.tar.gz", "has_sig": false, "md5_digest": "2e8e1ed5a150680d5a2fd66859587d15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4211, "upload_time": "2017-07-18T01:55:41", "url": "https://files.pythonhosted.org/packages/f7/a4/3cdc5609be79de5a837873d4f8e5bcefd0ae17233f57aac70f10d885daef/middleware-1.2.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2e8e1ed5a150680d5a2fd66859587d15", "sha256": "e5370d5781c440637cb87be4964fc5cb9cec7d4c9a5bb6a7bf0bbae326639c5c" }, "downloads": -1, "filename": "middleware-1.2.3.tar.gz", "has_sig": false, "md5_digest": "2e8e1ed5a150680d5a2fd66859587d15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4211, "upload_time": "2017-07-18T01:55:41", "url": "https://files.pythonhosted.org/packages/f7/a4/3cdc5609be79de5a837873d4f8e5bcefd0ae17233f57aac70f10d885daef/middleware-1.2.3.tar.gz" } ] }