{ "info": { "author": "Martin Domke", "author_email": "mail@martindomke.net", "bugtrack_url": null, "classifiers": [ "Environment :: Console", "Intended Audience :: Developers", "License :: Other/Proprietary License", "Operating System :: MacOS :: MacOS X", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Topic :: Software Development :: Libraries" ], "description": ".. image:: https://img.shields.io/pypi/v/signaling.svg?style=flat-square\n :target: https://pypi.python.org/pypi/signaling\n.. image:: https://img.shields.io/travis/mdomke/signaling/master.svg?style=flat-square\n :target: https://travis-ci.org/mdomke/signaling\n.. image:: https://img.shields.io/pypi/l/signaling.svg?style=flat-square\n :target: https://pypi.python.org/pypi/signaling\n.. image:: https://img.shields.io/coveralls/mdomke/signaling.svg?style=flat-square\n :target: https://github.com/mdomke/signaling\n\nWhat is this?\n=============\n\n``signaling`` is a simple implementation of the `signal/slot pattern`_ as \nknown from the `Qt framework`_.\nIt has no external requirements and 100% test-coverage.\n\n\nInstallation\n============\n\nThe usual\n\n.. code-block:: bash\n\n pip install signaling\n\n\nHow to use it?\n==============\n\nConsider that you have a function that should be called whenever a connected signal\nis emitted, as illustrated by the following code block:\n\n.. code-block:: python\n\n def slot(arg):\n print(\"Slot called with {}\".format(arg))\n\n signal = Signal(args=['arg'])\n signal.connect(slot)\n signal.emit(arg=1) # Slot called with 1\n\nIn fact you can connect multiple slots to the same signal, as long as they share the\nsame function signature.\n\nNotice that the ``signaling`` library performs some sanity checks when connecting\nslots and emitting signals.\n\n* All slots connected to a signal have to provide the same argument specifiction as\n denoted by the ``args`` parameter of the ``Signal`` constructor.\n* An ``emit``-call has to be made with the exact same arguments as specified with the\n ``Signal`` constructor.\n\nSo all of the below examples would raise an exception:\n\n.. code-block:: python\n\n def slot_with_arg(arg):\n pass\n\n def slot_without_arg():\n pass\n\n # InvalidSlot: Slot 'slot_with_arg' has to callable without arguments\n Signal().connect(slot_with_arg) \n\n # InvalidSlot: Slot 'slot_without_args' has to accept args ['arg'] or **kwargs.\n Signal(args['arg']).connect(slot_without_arg)\n\n s = Signal()\n s.connect(slot_without_args)\n # InvalidEmit: Emit has to be called without arguments.\n s.emit(foo=1)\n\n\n.. _qt framework: http://www.qt.io/\n.. _signal/slot pattern: https://en.wikipedia.org/wiki/Signals_and_slots", "description_content_type": null, "docs_url": "https://pythonhosted.org/signaling/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mdomke/signaling", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "signaling", "package_url": "https://pypi.org/project/signaling/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/signaling/", "project_urls": { "Homepage": "https://github.com/mdomke/signaling" }, "release_url": "https://pypi.org/project/signaling/1.0.0/", "requires_dist": null, "requires_python": "", "summary": "Simple signal/slot implementation", "version": "1.0.0" }, "last_serial": 2082323, "releases": { "0.0.0": [], "0.0.2": [ { "comment_text": "", "digests": { "md5": "819834ffb10c856190f4d658d65411cb", "sha256": "afe93eb37f93807a205bf79cbddee7e468c710463e148ff159abafb0c5a72f30" }, "downloads": -1, "filename": "signaling-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "819834ffb10c856190f4d658d65411cb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5564, "upload_time": "2016-04-25T06:30:56", "url": "https://files.pythonhosted.org/packages/bd/b0/49dae878106f102bbad38446ee77fb6450a1c790bb5e5f7e819dbedc3eb4/signaling-0.0.2-py2.py3-none-any.whl" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "33558cf1b70c0cff651d36f60e02ec9b", "sha256": "ff1e55370cc797442c1a3bc140e26c07ed447d7795b3bb62c80650777a6c2a30" }, "downloads": -1, "filename": "signaling-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "33558cf1b70c0cff651d36f60e02ec9b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5574, "upload_time": "2016-04-25T06:37:36", "url": "https://files.pythonhosted.org/packages/29/4e/adacde431d61aea4b694c2fe0566408cf31cb980e89c4a69aaf90ec559c9/signaling-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9530e6f6da7e056ee5391404161d436d", "sha256": "7ed8884e0af9bd0b5b9bf6e37abb8d8ffb701e7c4d98f78d46b25a3afff15242" }, "downloads": -1, "filename": "signaling-0.0.3.tar.gz", "has_sig": false, "md5_digest": "9530e6f6da7e056ee5391404161d436d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11824, "upload_time": "2016-04-25T06:37:41", "url": "https://files.pythonhosted.org/packages/92/45/2f6c560cb14fae8eae9380f8c4ceb93e8bbc827bc4d4b74d5b82497679b6/signaling-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "148009daa575f3ce0b50e8252fa92968", "sha256": "171ce954e5e901227e875ff7cd470da111ce234cc517c794141cff49d08acf14" }, "downloads": -1, "filename": "signaling-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "148009daa575f3ce0b50e8252fa92968", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5608, "upload_time": "2016-04-25T08:30:56", "url": "https://files.pythonhosted.org/packages/09/73/3b508fbd19ca8aa9e408e1fb31445b9e481168c9ca9fc303f6119e0e418a/signaling-0.0.4-py2.py3-none-any.whl" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "d20ed545bca06bca4c3457c08e41403a", "sha256": "2f1dc686c25254238171d76effa6bd0386a54c38d63086d748fd8f5c7633d93d" }, "downloads": -1, "filename": "signaling-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d20ed545bca06bca4c3457c08e41403a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5682, "upload_time": "2016-04-25T08:43:21", "url": "https://files.pythonhosted.org/packages/ce/bb/4e794667198ec5aee704695538ffee9bcfc463e6c678be4139905cd44966/signaling-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "14205d9f0ba1935f3eb5428e443d6b96", "sha256": "0051e5ec8fc4bba7eaf41ea035143229e62a132f1be3eb4354340707d34dff25" }, "downloads": -1, "filename": "signaling-1.0.0.tar.gz", "has_sig": false, "md5_digest": "14205d9f0ba1935f3eb5428e443d6b96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11942, "upload_time": "2016-04-25T08:43:32", "url": "https://files.pythonhosted.org/packages/87/1e/8761e25fdc6183c92fc9ddd5d4ce1e86eda8ba61bf4ceacd957709818a19/signaling-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d20ed545bca06bca4c3457c08e41403a", "sha256": "2f1dc686c25254238171d76effa6bd0386a54c38d63086d748fd8f5c7633d93d" }, "downloads": -1, "filename": "signaling-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d20ed545bca06bca4c3457c08e41403a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5682, "upload_time": "2016-04-25T08:43:21", "url": "https://files.pythonhosted.org/packages/ce/bb/4e794667198ec5aee704695538ffee9bcfc463e6c678be4139905cd44966/signaling-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "14205d9f0ba1935f3eb5428e443d6b96", "sha256": "0051e5ec8fc4bba7eaf41ea035143229e62a132f1be3eb4354340707d34dff25" }, "downloads": -1, "filename": "signaling-1.0.0.tar.gz", "has_sig": false, "md5_digest": "14205d9f0ba1935f3eb5428e443d6b96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11942, "upload_time": "2016-04-25T08:43:32", "url": "https://files.pythonhosted.org/packages/87/1e/8761e25fdc6183c92fc9ddd5d4ce1e86eda8ba61bf4ceacd957709818a19/signaling-1.0.0.tar.gz" } ] }