{ "info": { "author": "Dean Hall", "author_email": "dwhall256@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Software Development :: Libraries :: Application Frameworks" ], "description": "# farc\n\nFramework for Asyncio/Actor/AHSM Run-to-completion Concurrency\nwritten in Python3. In other words, a cheap knock-off of\n[QP](www.state-machine.com) that uses Python3 coroutines.\n[This book](https://newcontinuum.dl.sourceforge.net/project/qpc/doc/PSiCC2.pdf)\ndescribes QP and how to program hierarchical state machines.\n\nThis framework has fewer than 1000 LOC. It allows the programmer to create\nhighly-concurrent programs by using a \"message-passing\" system and\nrun-to-completion message handlers within a state-machine architecture.\nWith these tools, complex, asynchronous operations are decomposed\ninto managable chunks of code.\n\nIn the paragraph above message-passing is in quotes because farc is doing\nobject reference copy and not object copy or serialization.\nThis leaves the programmer open to nasty side-effects.\nFor example, if you pass a list object and the recipient modifies the list,\nthe sender experiences those modifications even after the message was passed.\n\nKnown Issue: On windows, Ctrl+C is supressed by asyncio event loop's\nrun_forever() ([bug report](https://bugs.python.org/issue23057)).\nThe workaround is to inject an event to awake the event loop.\n\nNote: This project used to be called \"pq\" but that name was taken in PyPI,\nso I renamed to farc (ugh).\n\n\n## Code Repository\n\nhttps://github.com/dwhall/farc\n\n\n## Release History\n\n2019/05/15 0.1.1\n- Removed 'initialState' argument from farc.Hsm() constructor;\n framework now expects Hsm/Ahsm classes to have 'initial()' method.\n- Made state methods private in examples to demonstrate a best-practice.\n- Created farc.Framework.run_forever() helper function.\n- Misc comment and doctring improvements\n\n2018/10/09 0.1.0 Initial release\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/dwhall/farc", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "farc", "package_url": "https://pypi.org/project/farc/", "platform": "", "project_url": "https://pypi.org/project/farc/", "project_urls": { "Homepage": "https://github.com/dwhall/farc" }, "release_url": "https://pypi.org/project/farc/0.1.1/", "requires_dist": null, "requires_python": "", "summary": "Framework for Asyncio/Actor/AHSM Run-to-completion Concurrency", "version": "0.1.1" }, "last_serial": 5273472, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "e85d2a7addf0ffa861c29b45de06ac32", "sha256": "6eda310018d4e5436ea9fc81dddb41eca1a621481b1f45b7af0c40b67a538dde" }, "downloads": -1, "filename": "farc-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "e85d2a7addf0ffa861c29b45de06ac32", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12923, "upload_time": "2018-10-09T15:10:19", "url": "https://files.pythonhosted.org/packages/14/a0/999403119d361eb3348485762004ce97785445104fc530423df12fbda88f/farc-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f12c28678e0bc1d5113bd7d542e5f826", "sha256": "9b3748909dbf93b6fc9cd8946314085308d71847a6ee4624cf804f04e957af0f" }, "downloads": -1, "filename": "farc-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f12c28678e0bc1d5113bd7d542e5f826", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9241, "upload_time": "2018-10-09T15:10:20", "url": "https://files.pythonhosted.org/packages/c2/21/159f67d757c0977fdd9828ad02caf1b68c15dce5742b70fbb544b2f81759/farc-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "be0eb8630170cbbb40d85b142b4cdc44", "sha256": "e9793fde5e125bc8d8d6b5a781ace569bd4ee9cdf5de01acaa39208d89aaea16" }, "downloads": -1, "filename": "farc-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "be0eb8630170cbbb40d85b142b4cdc44", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14086, "upload_time": "2019-05-15T17:11:39", "url": "https://files.pythonhosted.org/packages/ff/08/558059bd1c3aa088c9714def7e8d409665d7ed754870b28f4a5d0be4b079/farc-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0060f353e28548a5c788cb5fa24e1ccb", "sha256": "93e8407d0c655387b1e3467e6e2f4497057c9a04748c9a9282f00abe879236be" }, "downloads": -1, "filename": "farc-0.1.1.tar.gz", "has_sig": false, "md5_digest": "0060f353e28548a5c788cb5fa24e1ccb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10381, "upload_time": "2019-05-15T17:11:41", "url": "https://files.pythonhosted.org/packages/48/57/6ce09098eea1d353ea00f802ba13a4b1983212a2e9f33f6404df9f3d42fc/farc-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "be0eb8630170cbbb40d85b142b4cdc44", "sha256": "e9793fde5e125bc8d8d6b5a781ace569bd4ee9cdf5de01acaa39208d89aaea16" }, "downloads": -1, "filename": "farc-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "be0eb8630170cbbb40d85b142b4cdc44", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14086, "upload_time": "2019-05-15T17:11:39", "url": "https://files.pythonhosted.org/packages/ff/08/558059bd1c3aa088c9714def7e8d409665d7ed754870b28f4a5d0be4b079/farc-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0060f353e28548a5c788cb5fa24e1ccb", "sha256": "93e8407d0c655387b1e3467e6e2f4497057c9a04748c9a9282f00abe879236be" }, "downloads": -1, "filename": "farc-0.1.1.tar.gz", "has_sig": false, "md5_digest": "0060f353e28548a5c788cb5fa24e1ccb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10381, "upload_time": "2019-05-15T17:11:41", "url": "https://files.pythonhosted.org/packages/48/57/6ce09098eea1d353ea00f802ba13a4b1983212a2e9f33f6404df9f3d42fc/farc-0.1.1.tar.gz" } ] }