{ "info": { "author": "Jonathan Schemoul", "author_email": "jonathan.schemoul@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "What is it ?\n============\n\nPyjon.Events is an easy-to-use event dispatcher metaclass for your objects :\nJust add it to any of your class, and you can add event listeners and dispatch events.\n\nYou can define arguments passed to your listener when you add it.\nYou can also define argument passed to the listener when emiting an event.\n\nExample\n=======\n\nFor our example, we will define a person class.\nJust import the module, and add it to your class (Python2 example)::\n\n from pyjon.events import EventDispatcher\n \n class Person(object):\n __metaclass__ = EventDispatcher\n \n def __init__(self, name):\n # just a sample initialization, you can do whatever you want, of course.\n self.name = name\n \n def run(self, meters=1):\n print \"I'm running for %d meters !\" % meters\n self.emit_event('ran', meters)\n self.emit_event('moved', meters=meters)\n \n def walk(self, meters=1):\n print \"I'm walking for %d meters !\" % meters\n self.emit_event('walked', meters)\n self.emit_event('moved', meters=meters)\n \n def sleep(self):\n print \"sleeping...\"\n self.emit_event('sleeping')\n time.sleep(5)\n self.emit_event('sleeped')\n print \"Wow... had a good night !\"\n\nFor Python3, just replace this::\n\n class Person(object):\n __metaclass__ = EventDispatcher\n\nwith this::\n\n class Person(metaclass = EventDispatcher):\n \nNow, let's instanciate our class and subscribe to events::\n \n >>> henry = Person('henry')\n \n >>> def handle_movement(meters=None):\n ... print \"he moved for %d meters\" % meters\n \n >>> def handle_person_movement(who, meters=None):\n ... print \"%s moved for %d meters\" % (who, meters)\n \n >>> henry.add_listener('moved', handle_movement)\n \n >>> henry.add_listener('moved', handle_person_movement, \"henry\")\n \n >>> henry.walk(5)\n I'm walking for 5 meters !\n he moved for 5 meters\n henry moved for 5 meters\n \n >>> def handle_advanced_movement(meters, who, movement_type):\n ... print \"%s %s for %d meters\" % (who, movement_type, meters)\n \n >>> henry.add_listener('walked', handle_advanced_movement, \"henry\", \"walked\")\n \n >>> henry.add_listener('ran', handle_advanced_movement, \"henry\", \"ran\")\n \n >>> henry.walk(5)\n I'm walking for 5 meters !\n henry walked for 5 meters\n he moved for 5 meters\n henry moved for 5 meters\n \n >>> henry.run(5)\n I'm running for 5 meters !\n henry ran for 5 meters\n he moved for 5 meters\n henry moved for 5 meters\n \nThat's simple isn't it ?\n \n\nChangelog\n=========\n\n1.0 - Unreleased\n----------------\n\n* Initial release\n\n1.1 - First public release\n--------------------------\n\n* Support of events with keyword arguments\n* Added documentation\n\n1.1.1 - Bugfix release\n----------------------\n\n* MANIFEST.in fix\n* Docs fixes\n\n1.2 - Python 3 compatible !\n---------------------------\n\n* Now works with Python 3 !", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/jon1012/pyjon.events", "keywords": "pyjon events hub factory metaclass", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "pyjon.events", "package_url": "https://pypi.org/project/pyjon.events/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pyjon.events/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://bitbucket.org/jon1012/pyjon.events" }, "release_url": "https://pypi.org/project/pyjon.events/1.2/", "requires_dist": null, "requires_python": null, "summary": "Pyjon.Events is an easy-to-use event dispatcher", "version": "1.2" }, "last_serial": 1651100, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "4e0fc7b91e7a77422983acab51dfb5bb", "sha256": "8b82dab903b15093ab6dddde8992394714c7fcbfc8474ac1c80f5d1ef9a6af68" }, "downloads": -1, "filename": "pyjon.events-1.0-py2.5.egg", "has_sig": false, "md5_digest": "4e0fc7b91e7a77422983acab51dfb5bb", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 5464, "upload_time": "2009-12-02T12:02:28", "url": "https://files.pythonhosted.org/packages/17/b2/c331ca3e3b20ea5106a7a696c485a267da823de0296a8382887be62beefd/pyjon.events-1.0-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "6e9847a1fede49c8750ea7f9aa900da6", "sha256": "df8548f41acc397749e5292b039734d1f9a788c9d04a1df64236fdc619e483e8" }, "downloads": -1, "filename": "pyjon.events-1.0.zip", "has_sig": false, "md5_digest": "6e9847a1fede49c8750ea7f9aa900da6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5183, "upload_time": "2009-12-02T12:02:34", "url": "https://files.pythonhosted.org/packages/aa/67/dbaf94eeba5b426bbc673c3074bf5c1ec003a3b3a2b1c359e5f7e2deaff1/pyjon.events-1.0.zip" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "f13642df893a73680f52b53e475fcad3", "sha256": "97bbde4bba93b6ec971bf527dfae842fa9369f50024b62c5ae2b16e6200c09cc" }, "downloads": -1, "filename": "pyjon.events-1.1-py2.6.egg", "has_sig": false, "md5_digest": "f13642df893a73680f52b53e475fcad3", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 6094, "upload_time": "2010-12-16T11:31:25", "url": "https://files.pythonhosted.org/packages/2a/14/ed3c8bbfbd4d86673781b8f65649630be568cc2ad50fcd019f29c41002c8/pyjon.events-1.1-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "faa3d85f8ff4cb0da0a8567af70afda1", "sha256": "71bfb4a3aaaef389fed20d335c554b46fdf451ebf6bacd45cef0a9fd5888029f" }, "downloads": -1, "filename": "pyjon.events-1.1.tar.gz", "has_sig": false, "md5_digest": "faa3d85f8ff4cb0da0a8567af70afda1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3382, "upload_time": "2010-12-16T11:31:23", "url": "https://files.pythonhosted.org/packages/6a/77/a3414d93f69957f6063c8fbe910915b64b1729450b304a56ddea06bcbb66/pyjon.events-1.1.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "e1544b27df8c08bcc405acc507167636", "sha256": "7b7384928a14bd9e79a1ae45db9b00f0455557b4d32bcda831a830669920f7d8" }, "downloads": -1, "filename": "pyjon.events-1.1.1-py2.6.egg", "has_sig": false, "md5_digest": "e1544b27df8c08bcc405acc507167636", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 6183, "upload_time": "2010-12-21T15:40:51", "url": "https://files.pythonhosted.org/packages/b8/04/13551c5dbb9029663d68f57e25d5521ae8406df1a6649007f56b986c44b4/pyjon.events-1.1.1-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "ed8a630dd6e3e80d56e737a4922d0db8", "sha256": "e2330af0921cd5b75a6874f169616eddcbfc6f70e5aa9ee9d218b681bb2269c2" }, "downloads": -1, "filename": "pyjon.events-1.1.1.tar.gz", "has_sig": false, "md5_digest": "ed8a630dd6e3e80d56e737a4922d0db8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3593, "upload_time": "2010-12-21T15:40:47", "url": "https://files.pythonhosted.org/packages/1a/5f/10c609fac41bd6c0c27ceec8abb43dc990add5d0fd526be251bcb5b6026b/pyjon.events-1.1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "f76d976ff0acc86583200908d79f2d7e", "sha256": "f8c20b3ca0b17c3448aaf29dcf3fb9e2baf6bf1d4d9c001e84549adc70cd1498" }, "downloads": -1, "filename": "pyjon.events-1.2-py2.7.egg", "has_sig": false, "md5_digest": "f76d976ff0acc86583200908d79f2d7e", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 6337, "upload_time": "2014-10-06T13:38:23", "url": "https://files.pythonhosted.org/packages/41/22/570cc7003da280cdf324ae5d7bf2bcb55d59467fe35b29a2d3a829832b39/pyjon.events-1.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "316de6c48198ebd9bb478936fd73d8d4", "sha256": "c82a5c52cd2bfeb2b79aaee1f417efd670087f3a0aaf53de970cb8b95bc8dc47" }, "downloads": -1, "filename": "pyjon.events-1.2-py3.4.egg", "has_sig": false, "md5_digest": "316de6c48198ebd9bb478936fd73d8d4", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 6609, "upload_time": "2014-10-06T13:38:00", "url": "https://files.pythonhosted.org/packages/26/4c/aee0a035747a53addd3331efcac8d9bc5525c9cd019cf51283ceee37c5ec/pyjon.events-1.2-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "9d137a9d1c899594e8215f07e7e6f1c9", "sha256": "190f6085bdc4f1b9ea78282a5b93a5afae6bc81cc87b8885c27c27712a361d31" }, "downloads": -1, "filename": "pyjon.events-1.2.tar.gz", "has_sig": false, "md5_digest": "9d137a9d1c899594e8215f07e7e6f1c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3846, "upload_time": "2014-10-06T13:38:03", "url": "https://files.pythonhosted.org/packages/3b/5c/9119de43a3bd65cd52970994eb74e2d7cb4df1c72836930e75c0cfed0b18/pyjon.events-1.2.tar.gz" } ], "1.2dev": [] }, "urls": [ { "comment_text": "", "digests": { "md5": "f76d976ff0acc86583200908d79f2d7e", "sha256": "f8c20b3ca0b17c3448aaf29dcf3fb9e2baf6bf1d4d9c001e84549adc70cd1498" }, "downloads": -1, "filename": "pyjon.events-1.2-py2.7.egg", "has_sig": false, "md5_digest": "f76d976ff0acc86583200908d79f2d7e", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 6337, "upload_time": "2014-10-06T13:38:23", "url": "https://files.pythonhosted.org/packages/41/22/570cc7003da280cdf324ae5d7bf2bcb55d59467fe35b29a2d3a829832b39/pyjon.events-1.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "316de6c48198ebd9bb478936fd73d8d4", "sha256": "c82a5c52cd2bfeb2b79aaee1f417efd670087f3a0aaf53de970cb8b95bc8dc47" }, "downloads": -1, "filename": "pyjon.events-1.2-py3.4.egg", "has_sig": false, "md5_digest": "316de6c48198ebd9bb478936fd73d8d4", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 6609, "upload_time": "2014-10-06T13:38:00", "url": "https://files.pythonhosted.org/packages/26/4c/aee0a035747a53addd3331efcac8d9bc5525c9cd019cf51283ceee37c5ec/pyjon.events-1.2-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "9d137a9d1c899594e8215f07e7e6f1c9", "sha256": "190f6085bdc4f1b9ea78282a5b93a5afae6bc81cc87b8885c27c27712a361d31" }, "downloads": -1, "filename": "pyjon.events-1.2.tar.gz", "has_sig": false, "md5_digest": "9d137a9d1c899594e8215f07e7e6f1c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3846, "upload_time": "2014-10-06T13:38:03", "url": "https://files.pythonhosted.org/packages/3b/5c/9119de43a3bd65cd52970994eb74e2d7cb4df1c72836930e75c0cfed0b18/pyjon.events-1.2.tar.gz" } ] }