{ "info": { "author": "Stuart Glaser", "author_email": "stuglaser@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 2 :: Only" ], "description": "Go-style Chan for Python\n========================\n\nImplements Go's chan type in Python.\n\nInstall with ``pip install chan``\n\nSource at http://github.com/stuglaser/pychan\n\nUsage\n-----\n\nYou can ``put`` onto channels, and ``get`` from them\n\n.. code-block:: python\n\n c = Chan()\n\n # Thread 1\n c.put(\"Hello\")\n\n # Thread 2\n print \"Heard: %s\" % c.get()\n\nChannels can be closed (usually by the sender).\nIterating over a channel gives all values until the channel is closed\n\n.. code-block:: python\n\n c = Chan()\n\n # Thread 1\n c.put(\"It's\")\n c.put(\"just\")\n c.put(\"contradiction\")\n\n # Thread 2\n for thing in c:\n print \"Heard:\", thing\n\nYou can wait on multiple channels using ``chanselect``. Pass it a list of input channels and another of output channels, and it will return when any of the channels is ready\n\n.. code-block:: python\n\n def fan_in(outchan, input1, input2):\n while True:\n chan, value = chanselect([input1, input2], [])\n if chan == input1:\n outchan.put(\"From 1: \" + str(value))\n else:\n outchan.put(\"From 2 \" + str(value))\n\nYou can see more examples in the \"examples\" directory.\n\n.. image:: https://nojsstats.appspot.com/UA-41669691-1/github.com", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/stuglaser/pychan", "keywords": "go chan channel select chanselect concurrency", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "chan", "package_url": "https://pypi.org/project/chan/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/chan/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/stuglaser/pychan" }, "release_url": "https://pypi.org/project/chan/0.3.1/", "requires_dist": null, "requires_python": null, "summary": "Chan for Python, lovingly stolen from Go", "version": "0.3.1" }, "last_serial": 927641, "releases": { "0.1-dev": [], "0.1.0": [ { "comment_text": "", "digests": { "md5": "2bc8c57eb0940223930c5e8cecdda5f3", "sha256": "bce201eda7b4f85639b99eb8c88cae736bf0ea6fda6f06748083b5413df11e5f" }, "downloads": -1, "filename": "chan-0.1.0.tar.gz", "has_sig": false, "md5_digest": "2bc8c57eb0940223930c5e8cecdda5f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3097, "upload_time": "2013-06-06T07:33:27", "url": "https://files.pythonhosted.org/packages/ba/04/c23f8f1bf48a565255a1e51b20a7ce25933b3ac3890a9ceba0fc35a9e71f/chan-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "0c6f8539f416e7217598d69d02d80747", "sha256": "cfe296504de785b8e3bddc3531081bb210d9b19bca58ad6bf58a881cd6401c2a" }, "downloads": -1, "filename": "chan-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0c6f8539f416e7217598d69d02d80747", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3931, "upload_time": "2013-06-12T18:24:03", "url": "https://files.pythonhosted.org/packages/73/23/63e44c683576369f9edccc65dcde434cfd8210328414d3fcb156080c071f/chan-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "46ae4d22278a08dea672d69933dad3e5", "sha256": "441a8faae8f283750105195f99caf1da67467aaec139bd2230960d128969c4b0" }, "downloads": -1, "filename": "chan-0.2.1.tar.gz", "has_sig": false, "md5_digest": "46ae4d22278a08dea672d69933dad3e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4821, "upload_time": "2013-06-30T03:10:32", "url": "https://files.pythonhosted.org/packages/e6/aa/f6361197c7592688c5e7bb2d9a583a47b004824e957b9f2521f7ece3e96e/chan-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "4990d85e4c40f51b448063ab33a5fdc5", "sha256": "1a475300b65bafb4d5099ce0fecc7592d5377cae5c502f4600f36152b43add4c" }, "downloads": -1, "filename": "chan-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4990d85e4c40f51b448063ab33a5fdc5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5440, "upload_time": "2013-07-04T06:44:41", "url": "https://files.pythonhosted.org/packages/02/ee/daa750a183b3e7a06acebf7fd340021b6eea62f8706b39f8131f4c12ce90/chan-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "8c77611b00fc47a472ca36530ced5227", "sha256": "8dd6fb3478513f14190357459ac9db24fc43bf8715edd5135a66460402fc1180" }, "downloads": -1, "filename": "chan-0.3.1.tar.gz", "has_sig": false, "md5_digest": "8c77611b00fc47a472ca36530ced5227", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6504, "upload_time": "2013-11-24T07:34:09", "url": "https://files.pythonhosted.org/packages/a4/36/f9cdba9b26df384d3c6c0e85fd1e9692f7a778de2906ad2d12cacacc0fa5/chan-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8c77611b00fc47a472ca36530ced5227", "sha256": "8dd6fb3478513f14190357459ac9db24fc43bf8715edd5135a66460402fc1180" }, "downloads": -1, "filename": "chan-0.3.1.tar.gz", "has_sig": false, "md5_digest": "8c77611b00fc47a472ca36530ced5227", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6504, "upload_time": "2013-11-24T07:34:09", "url": "https://files.pythonhosted.org/packages/a4/36/f9cdba9b26df384d3c6c0e85fd1e9692f7a778de2906ad2d12cacacc0fa5/chan-0.3.1.tar.gz" } ] }