{ "info": { "author": "Tiago Montes", "author_email": "tiago.montes@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Python Wires: Simple Callable Wiring\n====================================\n\n.. image:: http://img.shields.io/pypi/v/wires.svg\n :target: https://pypi.org/pypi/wires\n :alt: PyPI\n\n.. image:: https://img.shields.io/travis/tmontes/python-wires.svg\n :target: https://travis-ci.org/tmontes/python-wires\n :alt: CI Status\n\n.. image:: https://codecov.io/github/tmontes/python-wires/branch/master/graph/badge.svg\n :target: https://codecov.io/github/tmontes/python-wires\n :alt: Test Coverage\n\n.. image:: https://readthedocs.org/projects/python-wires/badge/?version=latest\n :target: https://python-wires.readthedocs.io/\n :alt: Documentation\n\n\n|\n\n\nPython Wires is a library to facilitate callable wiring by decoupling callers from callees. It can be used as a simple callable-based event notification system, as an in-process publish-subscribe like solution, or in any context where 1:N callable decoupling is appropriate.\n\n\nInstallation\n------------\n\nPython Wires is a pure Python package distributed via `PyPI `_. Install it with:\n\n.. code-block:: console\n\n\t$ pip install wires\n\n\n\nQuick Start\n-----------\n\nCreate a ``Wires`` object:\n\n.. code-block:: python\n\n from wires import Wires\n\n w = Wires()\n\nIts attributes are callables, auto-created on first access, that can be wired to other callables:\n\n\n.. code-block:: python\n\n def say_hello():\n print('Hello from wires!')\n\n w.my_callable.wire(say_hello) # Wires `w.my_callable`, auto-created, to `say_hello`.\n\n\nCalling such callables calls their wired callables:\n\n.. code-block:: python\n\n w.my_callable() # Prints 'Hello from wires!'\n\n\nMore wirings can be added:\n\n.. code-block:: python\n\n def say_welcome():\n print('Welcome!')\n\n w.my_callable.wire(say_welcome) # Wires `w.my_callable` to `say_welcome`, as well.\n w.my_callable() # Prints 'Hello from wires!' and 'Welcome!'.\n\n\nWirings can also be removed:\n\n.. code-block:: python\n\n w.my_callable.unwire(say_hello) # Removes the wiring to `say_hello`.\n w.my_callable() # Prints 'Welcome!'\n\n w.my_callable.unwire(say_welcome) # Removes the wiring to `say_welcome`.\n w.my_callable() # Does nothing.\n\n\nTo learn more about Python Wires, including passing parameters, setting wiring limits and tuning the call-time coupling behaviour, please refer to the remaining documentation at https://python-wires.readthedocs.org/.\n\n.. marker-end-welcome-dont-remove\n\n\nThanks\n------\n\n.. marker-start-thanks-dont-remove\n\n- Hynek Schlawack for the articles `Sharing Your Labor of Love: PyPI Quick and Dirty `_ and `Testing & Packaging `_.\n\n- Stuart Colville for the article `Including parts of README.rst in your sphinx docs `_.\n\n.. marker-end-thanks-dont-remove\n\n\n\nAbout\n-----\n\n.. marker-start-about-dont-remove\n\nPython Wires was created by Tiago Montes.\n\n.. marker-end-about-dont-remove\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tmontes/python-wires/", "keywords": "functions,boilerplate", "license": "MIT", "maintainer": "Tiago Montes", "maintainer_email": "tiago.montes@gmail.com", "name": "wires", "package_url": "https://pypi.org/project/wires/", "platform": "", "project_url": "https://pypi.org/project/wires/", "project_urls": { "Homepage": "https://github.com/tmontes/python-wires/" }, "release_url": "https://pypi.org/project/wires/19.2.0/", "requires_dist": [ "coverage ; extra == 'dev'", "sphinx ; extra == 'dev'", "sphinx-rtd-theme ; extra == 'dev'", "towncrier ; extra == 'dev'", "sphinx ; extra == 'docs'", "sphinx-rtd-theme ; extra == 'docs'", "towncrier ; extra == 'docs'", "wheel ; extra == 'release'", "twine ; extra == 'release'", "coverage ; extra == 'tests'" ], "requires_python": "", "summary": "Python Wires", "version": "19.2.0" }, "last_serial": 4901438, "releases": { "18.1.0": [ { "comment_text": "", "digests": { "md5": "7778bc207ef68527e19eff22df799607", "sha256": "07cd079531278d463f0b84e419deb555ae89a1fa86b5abf71f0636a7133555c8" }, "downloads": -1, "filename": "wires-18.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7778bc207ef68527e19eff22df799607", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12459, "upload_time": "2018-03-27T10:39:41", "url": "https://files.pythonhosted.org/packages/3c/c3/e723f50e57fcd7f932d325d24c53005fb6ab6854513229c5f1c9b828c574/wires-18.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6b4713666ff697540339d4c7c301feb4", "sha256": "6db1a49f568d2b47c7c3cbb7b2936b24c0216973db57335ecd445fd202e67904" }, "downloads": -1, "filename": "wires-18.1.0.tar.gz", "has_sig": false, "md5_digest": "6b4713666ff697540339d4c7c301feb4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20862, "upload_time": "2018-03-27T10:39:42", "url": "https://files.pythonhosted.org/packages/b2/61/d0bb3e465eb50979186b83f4fd35810dac9acc9d406aa017b7447e8d127e/wires-18.1.0.tar.gz" } ], "18.1.0a1": [ { "comment_text": "", "digests": { "md5": "77f76fe36cdf8ce71b9cc5a493c4bec8", "sha256": "ea266b29a499a64bee2bf6c141f331f6b2e7333ed6fd1ee8c4b744523cfb028f" }, "downloads": -1, "filename": "wires-18.1.0a1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "77f76fe36cdf8ce71b9cc5a493c4bec8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7654, "upload_time": "2018-02-25T01:32:56", "url": "https://files.pythonhosted.org/packages/fe/1d/e04617034dfa475220f1e5fa70b83080244593bfb0556eefcfce634d9bb3/wires-18.1.0a1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3c5883e740cc325cbe1540398246624e", "sha256": "216cb50fa297e3778a0b699b56f7feaaac3ef10eeff0ead4f0329fa20012fe8b" }, "downloads": -1, "filename": "wires-18.1.0a1.tar.gz", "has_sig": false, "md5_digest": "3c5883e740cc325cbe1540398246624e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7011, "upload_time": "2018-02-25T01:32:57", "url": "https://files.pythonhosted.org/packages/b8/94/6b1fbbbe000a13e50a9acbb2062c6ae70016cbe9706969773d833d49867f/wires-18.1.0a1.tar.gz" } ], "18.1.0b1": [ { "comment_text": "", "digests": { "md5": "d0833cf741298f25fc517826167ed6d4", "sha256": "7149b0553744bb0c994d5a18ed9c8d0add2527567b9f30711b18a8b84524e81f" }, "downloads": -1, "filename": "wires-18.1.0b1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d0833cf741298f25fc517826167ed6d4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7807, "upload_time": "2018-02-25T13:12:44", "url": "https://files.pythonhosted.org/packages/74/78/0cd7f50abfb11ed49a9ce5f9b2e22027cfedfe46aa22b01aa82d97d42724/wires-18.1.0b1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f0e5f61c8da262eeaee30eef37f57dd9", "sha256": "7528882ef125385adde56ea4f137988dc1cb082c3a285f28028a615f27ede083" }, "downloads": -1, "filename": "wires-18.1.0b1.tar.gz", "has_sig": false, "md5_digest": "f0e5f61c8da262eeaee30eef37f57dd9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8835, "upload_time": "2018-02-25T13:12:45", "url": "https://files.pythonhosted.org/packages/97/50/607f36ba0eb8ba5d4b94a8d438b52ef81a268ffcbad89bbadf631b217759/wires-18.1.0b1.tar.gz" } ], "18.1.0b2": [ { "comment_text": "", "digests": { "md5": "7b6d390e1e0136b0f3cf489c8c599c68", "sha256": "96a14dd1ef2d04d0f91c9d584dd38d92c1e4f8eb06ab0005bf39087aec4ec1ce" }, "downloads": -1, "filename": "wires-18.1.0b2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7b6d390e1e0136b0f3cf489c8c599c68", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8454, "upload_time": "2018-03-10T22:44:41", "url": "https://files.pythonhosted.org/packages/7b/4e/5da9587fe9b0dc914db09f9fe64d42aecf20f76f209c566b7c863362d1b5/wires-18.1.0b2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "800297bed8c8f9e5154b738e70fa2bb5", "sha256": "d29529c91bace4cc257a00a97bd5c7774bae14c993a295d66ff609ead3b59358" }, "downloads": -1, "filename": "wires-18.1.0b2.tar.gz", "has_sig": false, "md5_digest": "800297bed8c8f9e5154b738e70fa2bb5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10994, "upload_time": "2018-03-10T22:44:43", "url": "https://files.pythonhosted.org/packages/6a/1e/1bcade0b83196f0640adbdbbdce9b9439c4a67957b94823049dc5b535c52/wires-18.1.0b2.tar.gz" } ], "18.1.0rc1": [ { "comment_text": "", "digests": { "md5": "7607d6362da63aa5de68bc8058cbcd58", "sha256": "0495270170501cdb48d03c0abbd56d6253a22c1332523ebef1d8de0810ca3a67" }, "downloads": -1, "filename": "wires-18.1.0rc1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7607d6362da63aa5de68bc8058cbcd58", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9296, "upload_time": "2018-03-18T11:51:45", "url": "https://files.pythonhosted.org/packages/c9/73/99916d602f7ef659d4600c321fb3535435503dc7d7e02baf4d0b01123be4/wires-18.1.0rc1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "39a53d86bff769dce58a6faf743fd0de", "sha256": "48d7373da3e626e4834be6191ef46d32f292b1553d62cce9c4066e794058db47" }, "downloads": -1, "filename": "wires-18.1.0rc1.tar.gz", "has_sig": false, "md5_digest": "39a53d86bff769dce58a6faf743fd0de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15987, "upload_time": "2018-03-18T11:51:47", "url": "https://files.pythonhosted.org/packages/c3/0a/bb377377487cffea13574d8b7ad888383cfa430d59f2cb21b66f6dbd4292/wires-18.1.0rc1.tar.gz" } ], "19.1.0": [ { "comment_text": "", "digests": { "md5": "cfb88c7312dfd3a68af67feaa72611c5", "sha256": "53abe7480e62ec7ef0b1751c0089a6847bd5e3b9ff292998b9ec15505b900648" }, "downloads": -1, "filename": "wires-19.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cfb88c7312dfd3a68af67feaa72611c5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10312, "upload_time": "2019-01-12T13:49:54", "url": "https://files.pythonhosted.org/packages/5f/0e/28c65a679008734728d3060ac9258c4d1fe118704e84420fa45f1ad85b97/wires-19.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b971b2bfefd1c397feb13ea9c58123e8", "sha256": "b5f8695bb3b76fa6d3412bb3e471d4aca039d30240864ce3d49ad1a82bcc2988" }, "downloads": -1, "filename": "wires-19.1.0.tar.gz", "has_sig": false, "md5_digest": "b971b2bfefd1c397feb13ea9c58123e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20951, "upload_time": "2019-01-12T13:49:56", "url": "https://files.pythonhosted.org/packages/15/d7/5986dd6b4704cbcbe92e7a86de0b3fd666e4b16587b23cb4b88af4a829ad/wires-19.1.0.tar.gz" } ], "19.2.0": [ { "comment_text": "", "digests": { "md5": "b0e5009256e4e5f938d70832a3e30859", "sha256": "824304ff866cd7b8d336c83de31c2f1ab117af0a0f0951e98a29740854ab517c" }, "downloads": -1, "filename": "wires-19.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b0e5009256e4e5f938d70832a3e30859", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10334, "upload_time": "2019-03-05T19:17:57", "url": "https://files.pythonhosted.org/packages/46/3a/054cae776f06175d6c7ebdd1c40f7fe297dc720a826f865522945d71fe8d/wires-19.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa0bfbe5669151ae1cc5a43a05d7b745", "sha256": "7a59c8fbca9190b801bed6f24ff10e3e187decedc554ac6632487df5c7803bc8" }, "downloads": -1, "filename": "wires-19.2.0.tar.gz", "has_sig": false, "md5_digest": "fa0bfbe5669151ae1cc5a43a05d7b745", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21088, "upload_time": "2019-03-05T19:17:59", "url": "https://files.pythonhosted.org/packages/85/57/4d0f749b92a6d5fac2ea7b31d203c6b336a5359a38e52ba676cb6ee4f7e2/wires-19.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b0e5009256e4e5f938d70832a3e30859", "sha256": "824304ff866cd7b8d336c83de31c2f1ab117af0a0f0951e98a29740854ab517c" }, "downloads": -1, "filename": "wires-19.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b0e5009256e4e5f938d70832a3e30859", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10334, "upload_time": "2019-03-05T19:17:57", "url": "https://files.pythonhosted.org/packages/46/3a/054cae776f06175d6c7ebdd1c40f7fe297dc720a826f865522945d71fe8d/wires-19.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa0bfbe5669151ae1cc5a43a05d7b745", "sha256": "7a59c8fbca9190b801bed6f24ff10e3e187decedc554ac6632487df5c7803bc8" }, "downloads": -1, "filename": "wires-19.2.0.tar.gz", "has_sig": false, "md5_digest": "fa0bfbe5669151ae1cc5a43a05d7b745", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21088, "upload_time": "2019-03-05T19:17:59", "url": "https://files.pythonhosted.org/packages/85/57/4d0f749b92a6d5fac2ea7b31d203c6b336a5359a38e52ba676cb6ee4f7e2/wires-19.2.0.tar.gz" } ] }