{ "info": { "author": null, "author_email": "Martin Josifoski , Nicolas Baldwin ", "bugtrack_url": null, "classifiers": [], "description": "

\n
\n \"image\"\n
\n

\n\n

\n \n \"Website\"\n \n \n \"Static\n \n \n \"Documentation\"\n \n \"PyPi\n \n \"Documentation\"\n \n

\n\n> \ud83d\udce2\n> Major update: We\u2019re excited to announce the release of version 1.1.0 of our project! This release introduces significant enhancements to aiFlows, highlighted by the introduction of the Flows engine. This engine empowers concurrent execution and peer-to-peer distributed collaboration, revolutionizing the way you interact with your projects.\n> \n> We are still polishing some aspects of the developer experience, so share your feedback on [Discord](https://discord.gg/yFZkpD2HAh)! \n\n\n\ud83e\udd16\ud83c\udf0a **aiFlows** embodies the [*Flows*](https://arxiv.org/abs/2308.01285) abstraction and greatly simplifies the design and implementation of complex (work)Flows involving humans, AI systems, and tools. In collaboration with [CoLink](https://github.com/CoLearn-Dev/colink-server-dev), it enables:\n\n- \ud83e\udde9 Modularity: Flows can be stacked like LEGO blocks into arbitrarily nested structures with the complexity hidden behind a message-based interface\n- \ud83e\udd1d Reusability: Flows shared on the FlowVerse can be downloaded and tailor-fitted to your needs\n- \ud83d\udd78 Remote Peer-to-Peer Collaboration: Flows can readily engage in a peer-to-peer collaboration with other remote Flows that could run anywhere\n- \ud83d\udd00 Concurrency: Flows can readily implement concurrent execution (e.g., a Flow being invoked by multiple Flows or a Flow invoking multiple Flows concurrently) \u2013\u2013 without *any* additional complexity\n\n## Quick Install\nThe library is compatible with Python 3.10+.\n\n```shell\npip install aiflows\n```\n\n
\n Other installation options\n\n### Install the bleeding-edge version\n\n```shell\ngit clone git@github.com:epfl-dlab/aiflows.git\ncd aiflows\npip install -e .\n```\n
\n\n## Flows in a Nutshell\n\nThe framework is centered around *Flows* and *messages*.\nFlows are independent, self-contained, goal-driven computational building blocks that can complete semantically meaningful units of work.\nTo exchange information, Flows communicate via a standardized message-based interface. Messages can be of any type the recipient Flow can process.\n

\n \"image\"\n

\n The Flows framework exemplified. The first column depicts examples of tools. Notably, in the Flows framework, AI systems correspond to tools. The second column depicts Atomic Flows, effectively minimal wrappers around tools constructed from the example tools. The third column depicts examples of Composite Flows defining structured interaction between Atomic or Composite Flows. The fourth column illustrates a specific Composite competitive coding Flow as those used in the experiments in the paper. The fifth column outlines the structure of a hypothetical Flow, defining a meta-reasoning process that could support autonomous behavior.\n

\n

\n\n## FlowVerse in a Nutshell\nThe FlowVerse is a repository of Flows (powered by the \ud83e\udd17 HuggingFace hub) created and shared by our community for everyone to use! With aiFlows, Flows can be readily downloaded, used, extended, or composed into novel, more complex Flows. For instance, sharing a Flow that uses only API-based tools (tools subsume models in the Flows abstraction) is as simple as sharing a config file (e.g., [here](https://huggingface.co/aiflows/AutoGPTFlowModule) is the AutoGPT Flow on FlowVerse). For the ones using ChatGPT, you could think of them as completely customizable open-source GPTs(++).\n\nThe FlowVerse is continuously growing. To explore the currently available Flows, check out the \ud83e\udd32\u2502flow-sharing Forum on the Discord [server](https://discord.gg/yFZkpD2HAh). Additionally, the _Tutorials_ and _Detailed Examples_ in the [Getting Started](https://epfl-dlab.github.io/aiflows/docs/built_with_sphinx/html/getting_started/index.html) sections cover some of the Flows we provide in more detail (e.g., the ChatAtomicFlow and QA, VisionAtomicFlow and VisualQA, ReAct and ReAct with human feedback, AutoGPT, etc.).\n\n## Why should I use aiFlows?\nAI is set to revolutionize the way we work. Our mission is to support AI researchers and to allow them to seamlessly share advancements with practitioners. This will establish a feedback loop, guiding progress toward beneficial directions while ensuring that everyone can freely access and benefit from the next-generation AI tools.\n\n#### You will benefit from:\n\n- The ability to design, implement, and study arbitrarily complex interactions -- even interactions that require concurrent execution or remote collaboration\n- Complete control and customizability (e.g., the tools, the specific Flows and the information they have access to, the choice of models and their deployment, etc.)\n\n#### Additionally, as a researcher, you will benefit from:\n- The ability to readily reproduce, reuse, or build on top of Flows shared on the FlowVerse and systematically study them across different settings (the infrastructure in the cc_flows repository could be a useful starting point in future studies)\n- The ability to readily make your work accessible to practitioners and other researchers and access their feedback.\n\n#### Additionally, as a practitioner, you will benefit from:\n- The ability to readily reuse or build on top of Flows shared on the FlowVerse\n- The ability to readily give access to your Flows to others\n- Direct access to any advancements in the field.\n\nTo develop the next-generation AI tools, we will need a principled abstraction that supports concurrent execution and peer-to-peer remote collaboration. At the same time, to maximize their benefits, developers and researchers will need to have complete control over their workflows. aiFlows strives to empower you to make each Flow your own! See the [contribute](#contribute) section for more information.\n\n## [Getting Started]\n\n### [Quick start (\ud83d\udd53 5 min)](./website/public/docs/getting_started/Quick_Start/quick_start.md)\n\nHere, you'll see how you can run inference with your first question-answering Flow, and you can trivially change between vastly different question-answering Flows thanks to the modular abstraction and FlowVerse!\n\n### [Tutorial (\ud83d\udd53 30 min)](./Tutorials/)\n\nIn this tutorial, we introduce you to the library's features through a walkthrough of how to build useful Flows of gradually increasing complexity.\n\n### [Developer's Guide (\ud83d\udd53 10 min)](./website/public/docs/getting_started/developer_guide/developper_guide_landing_page.md)\n\nWe are constantly optimizing our Flow development workflow (pun intended:). In this short guide, we share our best tips so that you don't have to learn the hard way.\n\n### [Detailed Examples](./website/public/docs/getting_started/detailed_examples/detailed_example_landing_page.md)\n\nMany of the recently proposed prompting and collaboration strategies involving tools, humans, and AI models are, in essence, specific Flows (see the figure below). In the links above, you'll find a detailed walkthrough of how to build some representative workflows.\n\n

\n \"image\"\n

\n

\n\n### [More Examples](./examples/)\n\nCheck out the examples folder for more examples of how to build and use aiFlows.\n\n## Contribute\n\nAs mentioned above, our goal is to make Flows a community-driven project that will benefit researchers and developers alike (see the [Why should I use aiFlows?](#why-should-i-use-aiflows) section), and to achieve this goal, we need your help.\n\nYou can become a part of the project in a few ways:\n- contribute to the aiFlows codebase: this will directly improve the library and benefit everyone using it\n- contribute to the FlowVerse: by making your work accessible to everyone, others might improve your work and build on it, or you can build on others' work\n- use the library in your creative projects, push it to its limits, and share your feedback: the proof of the pudding is in the eating, and the best way to identify promising directions, as well as important missing features, is by experimenting\n- last but not least, \u2b50 the repository and \ud83d\udce3 share aiFlows with your friends and colleagues; spread the word \u2764\ufe0f\n\n\nWe have tried to find a way for anyone to benefit by contributing to the project. The Contribution Guide describes our envisioned workflows in more detail (we would love to hear your feedback on this -- the Discord [server](https://discord.gg/yFZkpD2HAh) already has a channel for it :)).\n\nIn a nutshell, this is just the beginning, and we have a long way to go. Stay tuned, and let's work on a great (open-source) AI future together!\n\n\n## Citation\n\nIf you found this work useful, please cite it as:\n\n```\n@misc{josifoski2023flows,\n title={Flows: Building Blocks of Reasoning and Collaborating AI},\n author={Martin Josifoski and Lars Klein and Maxime Peyrard and Baldwin Nicolas and Yifei Li and Saibo Geng and Julian Paul Schnitzler and Yuxing Yao and Jiheng Wei and Debjit Paul and Robert West},\n year={2023},\n eprint={2308.01285},\n archivePrefix={arXiv},\n primaryClass={cs.AI}\n}\n```\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": null, "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "dynamic": null, "home_page": null, "keywords": null, "license": "MIT License Copyright (c) 2023 EPFL Data Science Lab (dlab) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ", "maintainer": null, "maintainer_email": null, "name": "aiflows", "package_url": "https://pypi.org/project/aiflows/", "platform": null, "project_url": "https://pypi.org/project/aiflows/", "project_urls": { "Documentation": "https://epfl-dlab.github.io/aiflows/docs/built_with_sphinx/html/index.html", "Home": "https://epfl-dlab.github.io/aiflows/", "Issues": "https://github.com/epfl-dlab/aiflows/issues", "Source": "https://github.com/epfl-dlab/aiflows" }, "provides_extra": null, "release_url": "https://pypi.org/project/aiflows/1.1.1/", "requires_dist": [ "colorama==0.4.6", "pytest==7.3.1", "pytest-cov==4.1.0", "hydra-core==1.3.2", "hydra-colorlog==1.1.0", "wrapt-timeout-decorator==1.3.12.2", "diskcache==5.6.1", "openai==1.0.0", "huggingface-hub==0.19.4", "jsonlines==3.1.0", "jinja2==3.1.2", "mock==5.0.2", "rich==12.6.0", "litellm==1.0.0", "colink==0.3.7", "termcolor==2.4.0", "streamlit==1.32.2" ], "requires_python": ">=3.10", "summary": "aiFlows implements the abstraction of Flows proposed in \"Flows: Building Blocks of Reasoning and Collaborating AI\" and greatly simplifies the design and implementation of complex (work)Flows involving humans, AI systems, and tools.", "version": "1.1.1", "yanked": false, "yanked_reason": null }, "last_serial": 22989058, "releases": { "0.1.5": [ { "comment_text": "", "digests": { "blake2b_256": "933e8404144fdad49ba31ac103ecd10ca87fb1344424d24082994ddbf444dc08", "md5": "dc5515a209af9c4adc447534a5eb4290", "sha256": "1ffa0294867f81f5e9ac8c31029d4b5f14038a73a0d206d3246226ea9207e6b5" }, "downloads": -1, "filename": "aiflows-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "dc5515a209af9c4adc447534a5eb4290", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 71505, "upload_time": "2023-12-09T23:34:53", "upload_time_iso_8601": "2023-12-09T23:34:53.285692Z", "url": "https://files.pythonhosted.org/packages/93/3e/8404144fdad49ba31ac103ecd10ca87fb1344424d24082994ddbf444dc08/aiflows-0.1.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "7314c8c3ff7de54bc3a5e46d24f397d3b01ddac7f852e7f7b3577faa1c04351b", "md5": "046911e2d72c3095cf0e5cbfd4618900", "sha256": "5aff4d5445e7fc32a14a1e806bc072b40878773dfd7c4a42c5a01fa1b8049495" }, "downloads": -1, "filename": "aiflows-0.1.5.tar.gz", "has_sig": false, "md5_digest": "046911e2d72c3095cf0e5cbfd4618900", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 23651706, "upload_time": "2023-12-09T23:35:19", "upload_time_iso_8601": "2023-12-09T23:35:19.993740Z", "url": "https://files.pythonhosted.org/packages/73/14/c8c3ff7de54bc3a5e46d24f397d3b01ddac7f852e7f7b3577faa1c04351b/aiflows-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.6": [ { "comment_text": "", "digests": { "blake2b_256": "9a798d217346507b5c6b59e088d3735d08c907cca8971ef9cd8919f4fb706c48", "md5": "4bb3c891c8b380bd00b54850c1270e2b", "sha256": "7a3270972ee8830f112df4c3da595688a9d949e91e0bb3bf704e51a14153b73e" }, "downloads": -1, "filename": "aiflows-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "4bb3c891c8b380bd00b54850c1270e2b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 71496, "upload_time": "2023-12-14T13:45:01", "upload_time_iso_8601": "2023-12-14T13:45:01.832965Z", "url": "https://files.pythonhosted.org/packages/9a/79/8d217346507b5c6b59e088d3735d08c907cca8971ef9cd8919f4fb706c48/aiflows-0.1.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "fb1b1c0c05256ec47959366a2df572e53f008ce5d0272849d94d9705689ff5c5", "md5": "cfdfd2dfb732ac5c5287f34d33cb464d", "sha256": "bc3a8ad7716768f1299ff7c67408907996c785a5f6ac5780d635354752f6b347" }, "downloads": -1, "filename": "aiflows-0.1.6.tar.gz", "has_sig": false, "md5_digest": "cfdfd2dfb732ac5c5287f34d33cb464d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 23652430, "upload_time": "2023-12-14T13:45:06", "upload_time_iso_8601": "2023-12-14T13:45:06.816107Z", "url": "https://files.pythonhosted.org/packages/fb/1b/1c0c05256ec47959366a2df572e53f008ce5d0272849d94d9705689ff5c5/aiflows-0.1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "blake2b_256": "01929b745e512f9faadaf0c421a825ef4339cf9aa6ad3b9c2bfa4986a939c4da", "md5": "de7cc1427b74eb54ebf19b9ab157ce96", "sha256": "c75ff2c623c63dc8086fd787ff3f34fdf8a19e1bcf475eadb1896b9c325ecb9d" }, "downloads": -1, "filename": "aiflows-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "de7cc1427b74eb54ebf19b9ab157ce96", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 71371, "upload_time": "2023-12-27T17:12:34", "upload_time_iso_8601": "2023-12-27T17:12:34.515199Z", "url": "https://files.pythonhosted.org/packages/01/92/9b745e512f9faadaf0c421a825ef4339cf9aa6ad3b9c2bfa4986a939c4da/aiflows-0.1.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "659dff04ecf14b7a7fce55375512c5525c9a293b33f6bed7413b16a73073f346", "md5": "57f03295e741bb758c5fbe6d4ca7ad86", "sha256": "6c00a11fe4fd3e8958fbad90500eb9a499c3e14b25e495c15bdc593f3a0be687" }, "downloads": -1, "filename": "aiflows-0.1.7.tar.gz", "has_sig": false, "md5_digest": "57f03295e741bb758c5fbe6d4ca7ad86", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 23651712, "upload_time": "2023-12-27T17:12:38", "upload_time_iso_8601": "2023-12-27T17:12:38.945807Z", "url": "https://files.pythonhosted.org/packages/65/9d/ff04ecf14b7a7fce55375512c5525c9a293b33f6bed7413b16a73073f346/aiflows-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.8.dev0": [ { "comment_text": "", "digests": { "blake2b_256": "200cf72c8449d0a73562438e5bd4e73abee5cf697956b8109b66386621d5b565", "md5": "bd613eb57e6ddb561b7002242966cd80", "sha256": "2ab79f5ccab68868f09c4aa10b9c96f9cedb8c33457c2c5196a9f11ba970d8ab" }, "downloads": -1, "filename": "aiflows-0.1.8.dev0-py3-none-any.whl", "has_sig": false, "md5_digest": "bd613eb57e6ddb561b7002242966cd80", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 75125, "upload_time": "2024-03-21T09:34:09", "upload_time_iso_8601": "2024-03-21T09:34:09.053942Z", "url": "https://files.pythonhosted.org/packages/20/0c/f72c8449d0a73562438e5bd4e73abee5cf697956b8109b66386621d5b565/aiflows-0.1.8.dev0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "2d562b7a463b2aca2da80ebe0f576c8eb81e4ccf8b4787d3dc78a792fd58ba12", "md5": "4f2075ee03eee88785da569ce6706fc1", "sha256": "0dfb6714f712e53f95f9b9bf0eaed50d99dcd66c6628659ebf883b451f353f1e" }, "downloads": -1, "filename": "aiflows-0.1.8.dev0.tar.gz", "has_sig": false, "md5_digest": "4f2075ee03eee88785da569ce6706fc1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 74127278, "upload_time": "2024-03-21T10:00:29", "upload_time_iso_8601": "2024-03-21T10:00:29.402666Z", "url": "https://files.pythonhosted.org/packages/2d/56/2b7a463b2aca2da80ebe0f576c8eb81e4ccf8b4787d3dc78a792fd58ba12/aiflows-0.1.8.dev0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.0": [ { "comment_text": "", "digests": { "blake2b_256": "5648a2fab80268a775c2ba0df31319a76a5708904d12cc7364cc675e369e9221", "md5": "fef756e53ea839f6f23a2e7878d4a603", "sha256": "72916a6d60c33bbcb2df28f02b0496eec273c170702ab5f1528f3a83afae04db" }, "downloads": -1, "filename": "aiflows-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fef756e53ea839f6f23a2e7878d4a603", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 75061, "upload_time": "2024-03-21T10:41:00", "upload_time_iso_8601": "2024-03-21T10:41:00.255600Z", "url": "https://files.pythonhosted.org/packages/56/48/a2fab80268a775c2ba0df31319a76a5708904d12cc7364cc675e369e9221/aiflows-1.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "6c05262d994d2383986362d6ce9f9500a07323b491a0ffcc15c955aedd58102f", "md5": "8fe27adf81a7840f3091101886ef7c2d", "sha256": "21cae8b9fbec187614682de0a2c45c297b9b1937a91ed45ad2d24f6e3394cb0d" }, "downloads": -1, "filename": "aiflows-1.0.0.tar.gz", "has_sig": false, "md5_digest": "8fe27adf81a7840f3091101886ef7c2d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 74125735, "upload_time": "2024-03-21T10:43:50", "upload_time_iso_8601": "2024-03-21T10:43:50.177363Z", "url": "https://files.pythonhosted.org/packages/6c/05/262d994d2383986362d6ce9f9500a07323b491a0ffcc15c955aedd58102f/aiflows-1.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.1": [ { "comment_text": "", "digests": { "blake2b_256": "119103dfc5147dc8780d44782f8c5c51528732ec60a7974648ae9f97ac28a509", "md5": "7a914cd8483ce9a95c3b1646a93314ac", "sha256": "14b650db6ac23c2068cea3a7a2bc4046e4076d0b67b2592d1af5495b8efeabd4" }, "downloads": -1, "filename": "aiflows-1.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7a914cd8483ce9a95c3b1646a93314ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 75071, "upload_time": "2024-03-21T17:01:34", "upload_time_iso_8601": "2024-03-21T17:01:34.083757Z", "url": "https://files.pythonhosted.org/packages/11/91/03dfc5147dc8780d44782f8c5c51528732ec60a7974648ae9f97ac28a509/aiflows-1.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "b5480654d9c3f043271aef0138e7f2b27ad50928040d9ae732a86a58bbf63e71", "md5": "5be5eb96356bce931399c6b9178c96ee", "sha256": "16f355ed6392e69ef80f7649bbc4613019442c31943cfa0b699b6cb9aa3950b0" }, "downloads": -1, "filename": "aiflows-1.0.1.tar.gz", "has_sig": false, "md5_digest": "5be5eb96356bce931399c6b9178c96ee", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 70893016, "upload_time": "2024-03-21T17:02:54", "upload_time_iso_8601": "2024-03-21T17:02:54.187937Z", "url": "https://files.pythonhosted.org/packages/b5/48/0654d9c3f043271aef0138e7f2b27ad50928040d9ae732a86a58bbf63e71/aiflows-1.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.2": [ { "comment_text": "", "digests": { "blake2b_256": "fb0680dfe23d5f8f39134703509e21fb7fcda942b2e84fd6a3eb36565b8ecf8a", "md5": "d0d2d414dacd68c941c7c18c38986c7e", "sha256": "bd35f98010e0671f69f8bf885af8cb5c57fdafede19fb8668ae6d3441c8840d0" }, "downloads": -1, "filename": "aiflows-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d0d2d414dacd68c941c7c18c38986c7e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 75150, "upload_time": "2024-03-22T07:02:32", "upload_time_iso_8601": "2024-03-22T07:02:32.216745Z", "url": "https://files.pythonhosted.org/packages/fb/06/80dfe23d5f8f39134703509e21fb7fcda942b2e84fd6a3eb36565b8ecf8a/aiflows-1.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "902bd19c49bc93000c5c124b5a19f7eefffd2efd4c4f1b09f28d9cdb4452bb37", "md5": "45c5ec89344fc5d25ca003e4eb17f6e5", "sha256": "2b753ca758090de6b2d82c09cfd17580261bac1ccd4ae389c94c29ac96ee56cb" }, "downloads": -1, "filename": "aiflows-1.0.2.tar.gz", "has_sig": false, "md5_digest": "45c5ec89344fc5d25ca003e4eb17f6e5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 20594353, "upload_time": "2024-03-22T07:02:42", "upload_time_iso_8601": "2024-03-22T07:02:42.419250Z", "url": "https://files.pythonhosted.org/packages/90/2b/d19c49bc93000c5c124b5a19f7eefffd2efd4c4f1b09f28d9cdb4452bb37/aiflows-1.0.2.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.3": [ { "comment_text": "", "digests": { "blake2b_256": "4e22f7bf3c031fe5b2c7d933a8374f23fb69b0f9ac7ac702aaeacf27a5f552c2", "md5": "9909326dab4a6e07d87fdc45246fdee2", "sha256": "d26506bdf632f083f652def1a18731355c44e8f9abb10f8842b867b70942e032" }, "downloads": -1, "filename": "aiflows-1.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "9909326dab4a6e07d87fdc45246fdee2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 75098, "upload_time": "2024-03-22T07:55:45", "upload_time_iso_8601": "2024-03-22T07:55:45.149086Z", "url": "https://files.pythonhosted.org/packages/4e/22/f7bf3c031fe5b2c7d933a8374f23fb69b0f9ac7ac702aaeacf27a5f552c2/aiflows-1.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "b1c1cf81276df5eb3eb05d2ab430a7477acadd74a9c2b6a47cab7eb3acfed8db", "md5": "8ed5e82cb0e1c866ad88d5749bf066a7", "sha256": "1ab73130394e4d00a90b59706fd97ec4c8a6112fb5ca26ea7d5d0587d9448dba" }, "downloads": -1, "filename": "aiflows-1.0.3.tar.gz", "has_sig": false, "md5_digest": "8ed5e82cb0e1c866ad88d5749bf066a7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 20594275, "upload_time": "2024-03-22T07:56:25", "upload_time_iso_8601": "2024-03-22T07:56:25.140047Z", "url": "https://files.pythonhosted.org/packages/b1/c1/cf81276df5eb3eb05d2ab430a7477acadd74a9c2b6a47cab7eb3acfed8db/aiflows-1.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0.4": [ { "comment_text": "", "digests": { "blake2b_256": "1db36862b9b8fa87c6a0a20ed614f14b90d7600adcb656bd1abee1d9bf390829", "md5": "859f38c383a40a0e1053bd65703d0703", "sha256": "cb143fbe87e837dd30239c8f48c68fcb2f8bb689fd72651c3b9e54f55f2be1dd" }, "downloads": -1, "filename": "aiflows-1.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "859f38c383a40a0e1053bd65703d0703", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 75257, "upload_time": "2024-03-22T17:56:36", "upload_time_iso_8601": "2024-03-22T17:56:36.424446Z", "url": "https://files.pythonhosted.org/packages/1d/b3/6862b9b8fa87c6a0a20ed614f14b90d7600adcb656bd1abee1d9bf390829/aiflows-1.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "767df05943492388472b36faba63e120984052ae71ed1b8db3dc5d375347c680", "md5": "1b0e3fb936090ae0dfc414e6e4ba59fc", "sha256": "fd059dcc7222df979c945fc22717c59353b83a3894d6048ce347c3e7e6f1639b" }, "downloads": -1, "filename": "aiflows-1.0.4.tar.gz", "has_sig": false, "md5_digest": "1b0e3fb936090ae0dfc414e6e4ba59fc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 20660742, "upload_time": "2024-03-22T17:56:40", "upload_time_iso_8601": "2024-03-22T17:56:40.767816Z", "url": "https://files.pythonhosted.org/packages/76/7d/f05943492388472b36faba63e120984052ae71ed1b8db3dc5d375347c680/aiflows-1.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.0": [ { "comment_text": "", "digests": { "blake2b_256": "599d0e5badffabdf22710f79f45e10416af72362744859a09946a879627879a5", "md5": "119a09e04ffe5c8bbfd6f137d5655e1e", "sha256": "a34579a0894e10f243328f06520c04dca59d7319007d54138db877ca95b62d14" }, "downloads": -1, "filename": "aiflows-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "119a09e04ffe5c8bbfd6f137d5655e1e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 82200, "upload_time": "2024-04-12T12:34:00", "upload_time_iso_8601": "2024-04-12T12:34:00.004834Z", "url": "https://files.pythonhosted.org/packages/59/9d/0e5badffabdf22710f79f45e10416af72362744859a09946a879627879a5/aiflows-1.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "fadec419c1b75810162ef63f9d59458fd82f97c6e978651d4dc9f4d09608260d", "md5": "ac09c2a7ed37c35b45412b8e5aa35680", "sha256": "9fb5b0e1380f105e6b756d05ec0935ae01f239fecc394bb26c5d3fb748a111d4" }, "downloads": -1, "filename": "aiflows-1.1.0.tar.gz", "has_sig": false, "md5_digest": "ac09c2a7ed37c35b45412b8e5aa35680", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 20705055, "upload_time": "2024-04-12T12:34:03", "upload_time_iso_8601": "2024-04-12T12:34:03.365011Z", "url": "https://files.pythonhosted.org/packages/fa/de/c419c1b75810162ef63f9d59458fd82f97c6e978651d4dc9f4d09608260d/aiflows-1.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.1.1": [ { "comment_text": "", "digests": { "blake2b_256": "b23506cb91cd2b8022e4c0339c70d935c6c2ba74f1672db324cede3c16bca2dc", "md5": "debf695b90ed8e1545905b7b52afb9db", "sha256": "d305a7999a61855424a8bb226ed3f273c6ef0b2617ada83b3d5e686bc011a5d4" }, "downloads": -1, "filename": "aiflows-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "debf695b90ed8e1545905b7b52afb9db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 82233, "upload_time": "2024-04-29T18:00:11", "upload_time_iso_8601": "2024-04-29T18:00:11.023999Z", "url": "https://files.pythonhosted.org/packages/b2/35/06cb91cd2b8022e4c0339c70d935c6c2ba74f1672db324cede3c16bca2dc/aiflows-1.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "a923fb4c291a4a09cc60a2790e5f9d255d3c6f6de870707338c555f0771a4836", "md5": "73157a8d9bc1f92a6f381192acb2ed87", "sha256": "9e76c29bcc6473b17998546e039df0b650eadf1a0ad1af3e0b4378f91019cd22" }, "downloads": -1, "filename": "aiflows-1.1.1.tar.gz", "has_sig": false, "md5_digest": "73157a8d9bc1f92a6f381192acb2ed87", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 20704807, "upload_time": "2024-04-29T18:00:34", "upload_time_iso_8601": "2024-04-29T18:00:34.159876Z", "url": "https://files.pythonhosted.org/packages/a9/23/fb4c291a4a09cc60a2790e5f9d255d3c6f6de870707338c555f0771a4836/aiflows-1.1.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "blake2b_256": "b23506cb91cd2b8022e4c0339c70d935c6c2ba74f1672db324cede3c16bca2dc", "md5": "debf695b90ed8e1545905b7b52afb9db", "sha256": "d305a7999a61855424a8bb226ed3f273c6ef0b2617ada83b3d5e686bc011a5d4" }, "downloads": -1, "filename": "aiflows-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "debf695b90ed8e1545905b7b52afb9db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.10", "size": 82233, "upload_time": "2024-04-29T18:00:11", "upload_time_iso_8601": "2024-04-29T18:00:11.023999Z", "url": "https://files.pythonhosted.org/packages/b2/35/06cb91cd2b8022e4c0339c70d935c6c2ba74f1672db324cede3c16bca2dc/aiflows-1.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "a923fb4c291a4a09cc60a2790e5f9d255d3c6f6de870707338c555f0771a4836", "md5": "73157a8d9bc1f92a6f381192acb2ed87", "sha256": "9e76c29bcc6473b17998546e039df0b650eadf1a0ad1af3e0b4378f91019cd22" }, "downloads": -1, "filename": "aiflows-1.1.1.tar.gz", "has_sig": false, "md5_digest": "73157a8d9bc1f92a6f381192acb2ed87", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.10", "size": 20704807, "upload_time": "2024-04-29T18:00:34", "upload_time_iso_8601": "2024-04-29T18:00:34.159876Z", "url": "https://files.pythonhosted.org/packages/a9/23/fb4c291a4a09cc60a2790e5f9d255d3c6f6de870707338c555f0771a4836/aiflows-1.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }