{ "info": { "author": "Galaxy and GVL projects", "author_email": "help@genome.edu.au", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. image:: https://travis-ci.org/CloudVE/pyeventsystem.svg?branch=master\n :target: https://travis-ci.org/CloudVE/pyeventsystem\n :alt: build status\n\n.. image:: https://codecov.io/gh/CloudVE/pyeventsystem/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/CloudVE/pyeventsystem\n :alt: coverage status\n\npyeventsystem\n=============\n\npyeventsystem is an event-driven middleware library for Python. In addition to\nproviding a mechanism for subscribing and listening to events, it also provides\na mechanism for intercepting functions, thus making it suitable for writing\nmiddleware. By intercepting functions, middleware can be injected before, after\nor even replacing the original function. It also provides capabilities for\ngrouping related event handlers into middleware classes, making it easier to\nmanage installable middleware.\n\nSimple Example\n==============\n\n.. code-block:: python\n\n from pyeventsystem.middleware import SimpleMiddlewareManager\n from pyeventsystem.middleware import dispatch\n from pyeventsystem.middleware import observe\n\n\n class MyMiddleWare(object):\n\n def __init__(self, event_dispatcher):\n self.events = event_dispatcher\n\n @dispatch(\"a.series.of.unfortunate.events\", priority=2500)\n def perform_villainy(self, name):\n return \"Drop ACME Anvil on \" + name\n\n @observe(\"a.series.of.unfortunate.events\", priority=2400)\n def pre_log_villainy(self, event_args, name):\n print(\"Prepping for villainy: \" + name)\n\n @observe(\"*.unfortunate.events\", priority=2600)\n def post_log_villainy(self, event_args, name):\n print(\"Result of villainy: {0}\".format(event_args['result']))\n\n\n manager = SimpleMiddlewareManager()\n myobj = MyMiddleWare(manager.events)\n manager.add(myobj)\n myobj.perform_villainy(\"RoadRunner\")\n\nIn this example, we have intercepted the `perform_villainy` function, and\nobserved the function both before and after execution.\n\nThe output is:\n\n.. code-block:: console\n\n Prepping for villainy: RoadRunner\n Result of villainy: Drop ACME Anvil on RoadRunner\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/cloudve/pyeventsystem", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyeventsystem", "package_url": "https://pypi.org/project/pyeventsystem/", "platform": "", "project_url": "https://pypi.org/project/pyeventsystem/", "project_urls": { "Homepage": "https://github.com/cloudve/pyeventsystem" }, "release_url": "https://pypi.org/project/pyeventsystem/0.1.0/", "requires_dist": [ "tox ; extra == 'dev'", "pydevd ; extra == 'dev'", "sphinx ; extra == 'dev'", "flake8 ; extra == 'dev'", "flake8-import-order ; extra == 'dev'" ], "requires_python": "", "summary": "An event driven middleware library for Python", "version": "0.1.0" }, "last_serial": 4941124, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "0d7facdc929343147da4eafc647afc8e", "sha256": "2a651eca3ec0b7e8600e2d4f042ab519b2d3bf74969e783b7a51fb87c506a7a6" }, "downloads": -1, "filename": "pyeventsystem-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0d7facdc929343147da4eafc647afc8e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15071, "upload_time": "2019-02-18T19:11:13", "url": "https://files.pythonhosted.org/packages/e5/d3/99dac9569f8e90c21889a6d91d187404eb831ceef4638c98c3ff8915ae44/pyeventsystem-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "66d5a1c1f8fa897ce5e58612d6bc195b", "sha256": "4a3d199759a040d2cd17f8b4293cc1c3f3c2ae50ae531fb5f9f955a895fca8b9" }, "downloads": -1, "filename": "pyeventsystem-0.1.0.tar.gz", "has_sig": false, "md5_digest": "66d5a1c1f8fa897ce5e58612d6bc195b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13451, "upload_time": "2019-02-18T19:11:15", "url": "https://files.pythonhosted.org/packages/b5/1e/f7499ca118bd5186072fffc3922ae58abe501c4633b1d6da25e30b16b841/pyeventsystem-0.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0d7facdc929343147da4eafc647afc8e", "sha256": "2a651eca3ec0b7e8600e2d4f042ab519b2d3bf74969e783b7a51fb87c506a7a6" }, "downloads": -1, "filename": "pyeventsystem-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0d7facdc929343147da4eafc647afc8e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15071, "upload_time": "2019-02-18T19:11:13", "url": "https://files.pythonhosted.org/packages/e5/d3/99dac9569f8e90c21889a6d91d187404eb831ceef4638c98c3ff8915ae44/pyeventsystem-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "66d5a1c1f8fa897ce5e58612d6bc195b", "sha256": "4a3d199759a040d2cd17f8b4293cc1c3f3c2ae50ae531fb5f9f955a895fca8b9" }, "downloads": -1, "filename": "pyeventsystem-0.1.0.tar.gz", "has_sig": false, "md5_digest": "66d5a1c1f8fa897ce5e58612d6bc195b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13451, "upload_time": "2019-02-18T19:11:15", "url": "https://files.pythonhosted.org/packages/b5/1e/f7499ca118bd5186072fffc3922ae58abe501c4633b1d6da25e30b16b841/pyeventsystem-0.1.0.tar.gz" } ] }