{ "info": { "author": "Complynx", "author_email": "complynx@yandex.ru", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: User Interfaces" ], "description": "QSignal -- A QT Signal/slot for python\r\n======================================\r\n\r\n.. image:: https://travis-ci.org/complynx/qsignal.svg?branch=master\r\n :target: https://travis-ci.org/complynx/qsignal\r\n\r\n\r\nThis project provides easy to use Signal class for implementing Signal/Slot mechanism in Python.\r\nIt does not implement it strictly but rather creates the easy and simple alternative.\r\n\r\nClasses\r\n=======\r\n\r\nSignal\r\n------\r\n\r\n``qsignal.Signal`` is the main class.\r\n\r\nTo create a signal, just make a ``sig = qsignal.Signal`` and set up an emitter of it. Or create it with\r\n``sig = qsignal.Signal(emitter=foo)``.\r\n\r\nTo emit it, just call your ``sig()``.\r\nOr emit it in asynchronous mode with the method `async`.\r\n\r\nExample:\r\n\r\n>>> from qsignal import Signal\r\n\r\n>>> # Creating signal\r\n>>> sig = Signal()\r\n\r\n>>> # Or\r\n>>> myobject.signal = Signal(emitter=myobject)\r\n\r\n>>> # Connecting to signals\r\n>>> sig.connect(callback)\r\n>>> myobject.signal.connect(sig)\r\n>>> myobject.signal.connect(otherobject.callback_method)\r\n\r\n>>> # Emitting\r\n>>> sig()\r\n>>> myobject.signal('argument(s)', optional=True)\r\n\r\n>>> # Emitting in asynchronous mode\r\n>>> sig.async()\r\n\r\nTo connect slots to it, pass callbacks into `connect`. The connections are maintained through `weakref`, thus\r\nyou don't need to search for them and disconnect whenever you're up to destroy some object.\r\n\r\nSignaller\r\n---------\r\n\r\nThe base class for objects to maintain their Signals.\r\n\r\nThe only purpose of this class is to automate Signal names and emitter references.\r\n\r\n>>> from qsignal import Signal, Signaller\r\n\r\n>>> # For example, this is a class...\r\n>>> class MyClass(Signaller):\r\n>>> my_signal = Signal()\r\n\r\n>>> # This is a slot...\r\n>>> def my_slot():\r\n>>> sig = Signal.emitted()\r\n>>> assert sig.name == my_signal\r\n>>> assert sig.emitter.__class__ == MyClass\r\n\r\n>>> # And the connections...\r\n>>> o = MyClass()\r\n>>> o.my_signal.connect(my_slot)\r\n>>> #...\r\n>>> o.my_signal()\r\n\r\n\r\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/complynx/qsignal", "keywords": "signal slot qt weakref", "license": "", "maintainer": "", "maintainer_email": "", "name": "qsignal", "package_url": "https://pypi.org/project/qsignal/", "platform": "", "project_url": "https://pypi.org/project/qsignal/", "project_urls": { "Homepage": "https://github.com/complynx/qsignal" }, "release_url": "https://pypi.org/project/qsignal/1.0.2b1/", "requires_dist": [ "check-manifest; extra == 'dev'", "coverage; extra == 'test'" ], "requires_python": "", "summary": "A QT signal/slot concept for Python with Weakrefs.", "version": "1.0.2b1" }, "last_serial": 3443626, "releases": { "1.0.0b1": [ { "comment_text": "", "digests": { "md5": "56158b03f63f0aafbed21285b22909a3", "sha256": "fcc72b676d8af3fb8779c6b06db07aeaa3be8401040337cd74684851e3d183ab" }, "downloads": -1, "filename": "qsignal-1.0.0b1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "56158b03f63f0aafbed21285b22909a3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5287, "upload_time": "2017-12-25T23:37:17", "url": "https://files.pythonhosted.org/packages/f4/cc/c0be2c99468a84a2454c638f95bf3340661e61c6893cb8d08d4757d12b34/qsignal-1.0.0b1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "efd9cfe3c7ecf0daa5641b3a76308f79", "sha256": "7e71cdbd2fb3e09ed4f901e6abefe7fa78c36f828b00350155ed165ee742e707" }, "downloads": -1, "filename": "qsignal-1.0.0b1.tar.gz", "has_sig": false, "md5_digest": "efd9cfe3c7ecf0daa5641b3a76308f79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6869, "upload_time": "2017-12-25T23:37:18", "url": "https://files.pythonhosted.org/packages/99/87/d64380eb0b862d3d70d72cdb024cf1f50b181441499d26401798d83c64a3/qsignal-1.0.0b1.tar.gz" } ], "1.0.1b1": [ { "comment_text": "", "digests": { "md5": "e33454a76bbe2d39955001455be8035d", "sha256": "2613312ffdc157a2344dc3250ad980f122c967b1688004b525646f3297ef9491" }, "downloads": -1, "filename": "qsignal-1.0.1b1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e33454a76bbe2d39955001455be8035d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6662, "upload_time": "2017-12-26T16:23:47", "url": "https://files.pythonhosted.org/packages/d9/57/c72e0f25c9baf23126732bb0fa8bd6d0b624d9f07055e8e5534cca4e3f30/qsignal-1.0.1b1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d09670f9c0cf430784a773f5ad200eed", "sha256": "41b6cfff28cfb3012aeb0b90b2e8d4a154eb9db3bb020f176156512718df81b0" }, "downloads": -1, "filename": "qsignal-1.0.1b1.tar.gz", "has_sig": false, "md5_digest": "d09670f9c0cf430784a773f5ad200eed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7463, "upload_time": "2017-12-26T16:23:49", "url": "https://files.pythonhosted.org/packages/5c/f5/b7a5f2a1682765f126c20e200497443ebb6eebc47e8372d44fd70e682e8f/qsignal-1.0.1b1.tar.gz" } ], "1.0.2b1": [ { "comment_text": "", "digests": { "md5": "2a5fba356eb42d102b13290a0116ccea", "sha256": "12f758d84e543bfc209fba81365a2777039a457d25427253996b0fb83d14ee1c" }, "downloads": -1, "filename": "qsignal-1.0.2b1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a5fba356eb42d102b13290a0116ccea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6661, "upload_time": "2017-12-26T16:46:54", "url": "https://files.pythonhosted.org/packages/bc/7a/a17c3e2517a52c9fb76dd3239a12c5f03f32052efb040acbb324f0c6a178/qsignal-1.0.2b1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a749546330b4da579a18f0fa6fa86d33", "sha256": "603607c0a1ef0b050a5b8806793c1b203c74d34da9815fe87b17a7bf30f8c1ce" }, "downloads": -1, "filename": "qsignal-1.0.2b1.tar.gz", "has_sig": false, "md5_digest": "a749546330b4da579a18f0fa6fa86d33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7463, "upload_time": "2017-12-26T16:46:56", "url": "https://files.pythonhosted.org/packages/25/f6/876034a74406da8b5d40a30e8a9afefd4ceb050bda691e5c4016b4428dac/qsignal-1.0.2b1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2a5fba356eb42d102b13290a0116ccea", "sha256": "12f758d84e543bfc209fba81365a2777039a457d25427253996b0fb83d14ee1c" }, "downloads": -1, "filename": "qsignal-1.0.2b1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a5fba356eb42d102b13290a0116ccea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6661, "upload_time": "2017-12-26T16:46:54", "url": "https://files.pythonhosted.org/packages/bc/7a/a17c3e2517a52c9fb76dd3239a12c5f03f32052efb040acbb324f0c6a178/qsignal-1.0.2b1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a749546330b4da579a18f0fa6fa86d33", "sha256": "603607c0a1ef0b050a5b8806793c1b203c74d34da9815fe87b17a7bf30f8c1ce" }, "downloads": -1, "filename": "qsignal-1.0.2b1.tar.gz", "has_sig": false, "md5_digest": "a749546330b4da579a18f0fa6fa86d33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7463, "upload_time": "2017-12-26T16:46:56", "url": "https://files.pythonhosted.org/packages/25/f6/876034a74406da8b5d40a30e8a9afefd4ceb050bda691e5c4016b4428dac/qsignal-1.0.2b1.tar.gz" } ] }