{ "info": { "author": "Maries Ionel Cristian", "author_email": "ionel.mc@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: BSD", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP :: HTTP Servers", "Topic :: Internet :: WWW/HTTP :: WSGI :: Server", "Topic :: System :: Networking" ], "description": "Overview\r\n--------\r\nThis is a library for network oriented, coroutine based programming.\r\n\r\n*cogen*'s goal is to enable writing code in a seemingly synchronous and easy\r\nmanner in the form of generators that yield calls and receive the result\r\nfrom that yield. These calls translate to asynchronous and fast os calls\r\nin *cogen*'s internals.\r\n\r\nNotable features\r\n================\r\n\r\n* a WSGI server, HTTP1.1 compliant, with asynchronous extensions\r\n* epoll, kqueue, select, i/o completion ports, sendfile behind the scenes\r\n* a couple of useful classes for putting the coroutine to sleep, wait for\r\n signals, queues, timeouts etc.\r\n\r\n\r\nQuick introduction\r\n==================\r\nA coroutine is just a generator wrapped in a helper class:\r\n\r\n::\r\n\r\n from cogen.core.coroutines import coroutine\r\n\r\n @coroutine\r\n def mycoro(bla):\r\n result = yield \r\n result = yield \r\n\r\n\r\n* the `operation` instructs the scheduler what to do with the coroutine:\r\n suspend it till something happens, add another coro in the scheduler, raise\r\n a event and so on.\r\n* if a `operation` has a result associated then the yield will return that\r\n result (eg. a string or a (connection, address) tuple) otherwise it will\r\n return the operation instance.\r\n\r\nEcho server example\r\n'''''''''''''''''''\r\n\r\n::\r\n\r\n from cogen.core import sockets\r\n from cogen.core import schedulers\r\n from cogen.core.coroutines import coroutine\r\n\r\n @coroutine\r\n def server():\r\n srv = sockets.Socket()\r\n print type(srv)\r\n srv.bind(('localhost',777))\r\n srv.listen(10)\r\n while 1:\r\n print \"Listening...\"\r\n conn, addr = yield srv.accept()\r\n print \"Connection from %s:%s\" % addr\r\n m.add(handler, args=(conn, addr))\r\n\r\n @coroutine\r\n def handler(sock, addr):\r\n yield sock.write(\"WELCOME TO ECHO SERVER !\\r\\n\")\r\n\r\n while 1:\r\n line = yield sock.readline(8192)\r\n if line.strip() == 'exit':\r\n yield sock.write(\"GOOD BYE\")\r\n sock.close()\r\n return\r\n yield sock.write(line)\r\n\r\n m = schedulers.Scheduler()\r\n m.add(server)\r\n m.run()\r\n\r\n\r\nDocumentation\r\n=============\r\n\r\nhttp://cogen.googlecode.com/svn/trunk/docs/build/index.html\r\n\r\nDevelopment\r\n============\r\n\r\nTakes place at: http://code.google.com/p/cogen/\r\n\r\nGrab the latest and greatest from `trunk `_ with::\r\n\r\n easy_install cogen==dev", "description_content_type": null, "docs_url": "https://pythonhosted.org/cogen/", "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ionelmc/python-cogen", "keywords": "", "license": "UNKNOWN", "maintainer": "", "maintainer_email": "", "name": "cogen", "package_url": "https://pypi.org/project/cogen/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/cogen/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/ionelmc/python-cogen" }, "release_url": "https://pypi.org/project/cogen/0.2.1/", "requires_dist": null, "requires_python": null, "summary": "Coroutines and asynchronous I/O using enhanced generators from python 2.5, including a enhanced WSGI server.", "version": "0.2.1" }, "last_serial": 1796235, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "af631b8d0161efe3c39a8424122cfe04", "sha256": "a7b5d46c3549e51f74cdd6ebb5fea93b6b56e896234676ec0c5f675b5ad70101" }, "downloads": -1, "filename": "cogen-0.0.1.zip", "has_sig": false, "md5_digest": "af631b8d0161efe3c39a8424122cfe04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28122, "upload_time": "2007-08-24T13:12:39", "url": "https://files.pythonhosted.org/packages/cb/e4/2a5e7947a60de7d24abc1831141819e479a916d3e4e64c497ce0a4596019/cogen-0.0.1.zip" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "c247dcb7ea618c34daba3f3910a50169", "sha256": "1ee76f84d7ac93967be38e2b0f21808513f0768db76601316ce1f64def748716" }, "downloads": -1, "filename": "cogen-0.1.0-py2.5.egg", "has_sig": false, "md5_digest": "c247dcb7ea618c34daba3f3910a50169", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 4803, "upload_time": "2007-12-10T20:52:21", "url": "https://files.pythonhosted.org/packages/70/d7/7bdd182e5b7742c482ecaa1c0a878ccea39c9858710133861d146657ccd0/cogen-0.1.0-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "7bdec097cc58571c536661a2cbe0912b", "sha256": "db0d8de90d1d679d165ae1dd0755529c68d2da80c2e299368e88a3c1e530890b" }, "downloads": -1, "filename": "cogen-0.1.0.zip", "has_sig": false, "md5_digest": "7bdec097cc58571c536661a2cbe0912b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 129688, "upload_time": "2007-12-10T20:52:20", "url": "https://files.pythonhosted.org/packages/68/32/176c256f1294c4afdd7d58cc205c839aec2c8c00e9903f5a90161da54a22/cogen-0.1.0.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "4a033daf1b063497c73a6b01ddd42020", "sha256": "e0ece7582c94f2894b2bd8e7337fde61d527e9a10eea2de0d64afde2a9526202" }, "downloads": -1, "filename": "cogen-0.1.1-py2.5.egg", "has_sig": false, "md5_digest": "4a033daf1b063497c73a6b01ddd42020", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 87016, "upload_time": "2007-12-12T19:05:18", "url": "https://files.pythonhosted.org/packages/91/7a/d5f3e69c7515beaecc064f8810b5db1179594d4e8e8168e5fa211a252c3b/cogen-0.1.1-py2.5.egg" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "9c964fb4e2efae7496386431a75330e1", "sha256": "6d81b79292ff4d9a46b9396469e848d0067ec179be198aaad77f1deae9fb2784" }, "downloads": -1, "filename": "cogen-0.1.2-py2.5.egg", "has_sig": false, "md5_digest": "9c964fb4e2efae7496386431a75330e1", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 87836, "upload_time": "2007-12-12T20:02:34", "url": "https://files.pythonhosted.org/packages/d0/08/5936198a0d72de2be88706c9710b69953b5e0b3ddb1ad916e75e26dbf023/cogen-0.1.2-py2.5.egg" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "874b300d7b802a66a8fac6a7b6c26c7e", "sha256": "60e3cc63d88d8f42d8342a3e0395a723f62bea144567268e28dbc36f0c356fc4" }, "downloads": -1, "filename": "cogen-0.1.3-py2.5.egg", "has_sig": false, "md5_digest": "874b300d7b802a66a8fac6a7b6c26c7e", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 97126, "upload_time": "2007-12-25T16:54:26", "url": "https://files.pythonhosted.org/packages/14/41/b6718c470669e6cf7df0ede0e817e051cd6b12d949d1d25536c4f2c3f499/cogen-0.1.3-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "5260fa85929706ed1069ffb9f00b894e", "sha256": "7dbf6022a1cab124894fcb7cf35851c5f58749750afe80703743affd9c432e98" }, "downloads": -1, "filename": "cogen-0.1.3.zip", "has_sig": false, "md5_digest": "5260fa85929706ed1069ffb9f00b894e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 158049, "upload_time": "2007-12-25T16:54:25", "url": "https://files.pythonhosted.org/packages/ee/dc/c8824cc47bd9228e7e9d78c4e16f7402f0ec5d498192a4d84a862e9395e7/cogen-0.1.3.zip" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "b59fb17d448d56d3901a82ccdd9838c0", "sha256": "1ce5a5113333205ff4840bb1e723d7977e2a230686cab9df33906553fedb3029" }, "downloads": -1, "filename": "cogen-0.1.4-py2.5.egg", "has_sig": false, "md5_digest": "b59fb17d448d56d3901a82ccdd9838c0", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 80349, "upload_time": "2008-01-18T09:31:17", "url": "https://files.pythonhosted.org/packages/a5/b1/0427e6d7f4596cd2a80a932633f51b2625ab7895d142bec98e1b21c1e710/cogen-0.1.4-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "025bf05e4757b122c579622eb8c11b1e", "sha256": "c28d7717697ed7cb421700ff4e3d1ea6ebfdbb8d07c6523c02947655b51a6a55" }, "downloads": -1, "filename": "cogen-0.1.4.zip", "has_sig": false, "md5_digest": "025bf05e4757b122c579622eb8c11b1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 183165, "upload_time": "2008-01-18T09:31:16", "url": "https://files.pythonhosted.org/packages/18/c2/45f917e7dd8501e0e24944e6e3885bba7e9bd49680dc84700a6ca3ee941b/cogen-0.1.4.zip" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "8d8161ec27c5ab099f1e8b47f4d2ed86", "sha256": "67776161d96405f39b737c84a2e305e9ee09cd5d71096a15b9db3229e3cc08f7" }, "downloads": -1, "filename": "cogen-0.1.5-py2.5.egg", "has_sig": false, "md5_digest": "8d8161ec27c5ab099f1e8b47f4d2ed86", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 86623, "upload_time": "2008-01-21T23:37:12", "url": "https://files.pythonhosted.org/packages/72/45/4e5737b77e276f40aa8d58d40ff3ce99a935ffd6957b4e18f89b9fbe00a0/cogen-0.1.5-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "671a137a21e3c41a3c2677d6fc31304f", "sha256": "0d9abd14eed1e976134d9f163b8717d2556326277a59bb522c9fbde07febe042" }, "downloads": -1, "filename": "cogen-0.1.5.zip", "has_sig": false, "md5_digest": "671a137a21e3c41a3c2677d6fc31304f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 201533, "upload_time": "2008-01-21T23:36:54", "url": "https://files.pythonhosted.org/packages/b1/36/7f59aee6e78f31d701287dee202eef9897ca17a8bd0bc6afb83532c92655/cogen-0.1.5.zip" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "dd76e60246e3ecf167b592d6a9603813", "sha256": "78494c1cda98294d781fa9aa5b43015dac50aef8c716e0d9093f704e53c5a522" }, "downloads": -1, "filename": "cogen-0.1.6-py2.5.egg", "has_sig": false, "md5_digest": "dd76e60246e3ecf167b592d6a9603813", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 99865, "upload_time": "2008-02-23T17:48:37", "url": "https://files.pythonhosted.org/packages/7b/51/f460486a3defed5f1e742356c61f4b87ca786df09f93bb1fae629e29020a/cogen-0.1.6-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "4baa5e7153ed76c7141ce88d93172ffa", "sha256": "83b60c91f75e1c079602297ba598b759c9543942fc8e661a69b1887c4009d51f" }, "downloads": -1, "filename": "cogen-0.1.6.zip", "has_sig": false, "md5_digest": "4baa5e7153ed76c7141ce88d93172ffa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 243636, "upload_time": "2008-02-23T17:48:37", "url": "https://files.pythonhosted.org/packages/04/6e/171c4c46cd46e39371985038ceaf42b5ef3f07f57993af3bf2da3535e0d9/cogen-0.1.6.zip" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "fb5f3b1d6d027242f326b4e230407d30", "sha256": "81c0767c65213d69a655da9e1dceae27084f1ed55ae3e5b0815974a76dc62fee" }, "downloads": -1, "filename": "cogen-0.1.7-py2.5.egg", "has_sig": false, "md5_digest": "fb5f3b1d6d027242f326b4e230407d30", "packagetype": "bdist_egg", "python_version": "2.5", "requires_python": null, "size": 109342, "upload_time": "2008-03-24T15:23:55", "url": "https://files.pythonhosted.org/packages/e8/fb/e34ee6456f0285804e522017c910910b3513932386d5acbfe1da99391150/cogen-0.1.7-py2.5.egg" }, { "comment_text": "", "digests": { "md5": "e0fa7e06fef99f12b829c2a8855192e6", "sha256": "64137e8fb6612b8fde89b757805a922d8a20ce709e032d64d275559a61bc7a64" }, "downloads": -1, "filename": "cogen-0.1.7.zip", "has_sig": false, "md5_digest": "e0fa7e06fef99f12b829c2a8855192e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 246907, "upload_time": "2008-03-24T15:23:54", "url": "https://files.pythonhosted.org/packages/72/0c/04fc087f595b3f1d266b19988ed2c411b8c86bb8cae7ea31a85002d06a14/cogen-0.1.7.zip" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "d54e01e734e9f7e23b0f756cdc63f8d8", "sha256": "9a2c72dae5e47c9211d2ee648cadd6dbae9f4d2dbe1d87c96fd6f18560f15cd1" }, "downloads": -1, "filename": "cogen-0.1.8.zip", "has_sig": false, "md5_digest": "d54e01e734e9f7e23b0f756cdc63f8d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 383020, "upload_time": "2008-05-02T23:25:30", "url": "https://files.pythonhosted.org/packages/93/7f/b096a2b023d9c3ec0942053c415698ea18326ee16e5f34042a7d572f464d/cogen-0.1.8.zip" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "118e486cb563dda7018ce0d381f70134", "sha256": "1657f0a328c0903abfbcc437b0c8d1e3167d2062d4f4a01b08e1f085c7cc0bcc" }, "downloads": -1, "filename": "cogen-0.1.9.zip", "has_sig": false, "md5_digest": "118e486cb563dda7018ce0d381f70134", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 416932, "upload_time": "2008-09-11T13:51:42", "url": "https://files.pythonhosted.org/packages/aa/74/ebb1e8103deb379d706ce11a427e853ef1b5b6a6461153458b5e6f338ad9/cogen-0.1.9.zip" } ], "0.1.9.1": [ { "comment_text": "", "digests": { "md5": "d5e1c5d8b56acb461ec0d67d33881815", "sha256": "9ac6df8edf4250ee2771d98e01822d5e68601b05582179de5fa17e8c6d8b9683" }, "downloads": -1, "filename": "cogen-0.1.9.1.zip", "has_sig": false, "md5_digest": "d5e1c5d8b56acb461ec0d67d33881815", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 418008, "upload_time": "2008-12-11T13:03:51", "url": "https://files.pythonhosted.org/packages/64/9e/f7f1cfb7681e59c183f52c292fa895593d454ac97a187185d0df0b1a31f0/cogen-0.1.9.1.zip" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "cfd254d46e78bf1a4d4f36a0b5e844f8", "sha256": "43098b117dd471e6ed462ba5f30eebc16c91dab0e2a6c50ae1f833bdfa9cc47c" }, "downloads": -1, "filename": "cogen-0.2.0.zip", "has_sig": false, "md5_digest": "cfd254d46e78bf1a4d4f36a0b5e844f8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 346847, "upload_time": "2008-12-26T22:54:07", "url": "https://files.pythonhosted.org/packages/8c/91/90da99876a4378ba2f35daacd44ed4c0078b9e6e5160062c3b365fdb3d65/cogen-0.2.0.zip" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "6c765905e4bc0278d35dd5c0011d032d", "sha256": "c75b4920aece024f820e438c942f3373a76c6ad6e257c557b707436c6978b929" }, "downloads": -1, "filename": "cogen-0.2.1.zip", "has_sig": false, "md5_digest": "6c765905e4bc0278d35dd5c0011d032d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 348929, "upload_time": "2009-01-16T22:05:23", "url": "https://files.pythonhosted.org/packages/14/aa/e2f0c43b299840cab45ba2b187b0b876bbe0961fe9ccf41010992091e505/cogen-0.2.1.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6c765905e4bc0278d35dd5c0011d032d", "sha256": "c75b4920aece024f820e438c942f3373a76c6ad6e257c557b707436c6978b929" }, "downloads": -1, "filename": "cogen-0.2.1.zip", "has_sig": false, "md5_digest": "6c765905e4bc0278d35dd5c0011d032d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 348929, "upload_time": "2009-01-16T22:05:23", "url": "https://files.pythonhosted.org/packages/14/aa/e2f0c43b299840cab45ba2b187b0b876bbe0961fe9ccf41010992091e505/cogen-0.2.1.zip" } ] }