{ "info": { "author": "Paul Schweizer", "author_email": "paulschweizer@gmx.net", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "\n[![Version](https://img.shields.io/pypi/v/flowpipe.svg)](https://pypi.org/project/flowpipe/)\n[![Build Status](https://travis-ci.org/PaulSchweizer/flowpipe.svg?branch=master)](https://travis-ci.org/PaulSchweizer/flowpipe)\n[![Codacy_Badge_Grade](https://api.codacy.com/project/badge/Grade/6ac650d8580d43dbaf7de96a3171e76f)](https://www.codacy.com/app/paulschweizer/flowpipe?utm_source=github.com&utm_medium=referral&utm_content=PaulSchweizer/flowpipe&utm_campaign=Badge_Grade)\n[![Codacy_Badge_Coverage](https://api.codacy.com/project/badge/Coverage/6ac650d8580d43dbaf7de96a3171e76f)](https://www.codacy.com/app/paulschweizer/flowpipe?utm_source=github.com&utm_medium=referral&utm_content=PaulSchweizer/flowpipe&utm_campaign=Badge_Coverage) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) [![python 2.7](https://img.shields.io/badge/python-2.7%2B-blue.svg)](https://www.python.org/downloads/) [![python 3.6+](https://img.shields.io/badge/python-3.6%2B-blue.svg)](https://www.python.org/downloads/)\n\n\n![LOGO](logo.png?raw=true)\n# Flow-based Programming\nA lightweight framework for flow-based programming in python.\n\n```\n+-------------------+ +---------------------+\n| Invite People | | Birthday Party |\n|-------------------| |---------------------|\no amount<4> | +----->o attendees<> |\n| people o---+ +--->o cake<> |\n+-------------------+ | +---------------------+\n |\n+-------------------+ |\n| Bake a cake | |\n+-------------------+ |\no type<\"Chocolate\"> | |\n| cake o-----+\n+-------------------+\n```\n\nBenefits:\n - Visualize code\n - Re-usability\n - Streamlined code design\n - Built-in concurrency\n - Represent workflows one to one in the code\n\n# Quick Example\n\nConsider this simple example on how to represent the construction of a house with Flowpipe:\n\n```python\nfrom flowpipe import Graph, INode, Node, InputPlug, OutputPlug\n\n\nclass HireWorkers(INode):\n \"\"\"A node can be derived from the INode interface.\n\n The plugs are defined in the init method.\n The compute method received the inputs from any connected upstream nodes.\n \"\"\"\n\n def __init__(self, amount=None, **kwargs):\n super(HireWorkers, self).__init__(**kwargs)\n InputPlug('amount', self, amount)\n OutputPlug('workers', self)\n\n def compute(self, amount):\n workers = ['John', 'Jane', 'Mike', 'Michelle']\n print('{0} workers are hired to build the house.'.format(amount))\n return {'workers.{0}'.format(i): workers[i] for i in range(amount)}\n\n\n@Node(outputs=['workers'])\ndef Build(workers, section):\n \"\"\"A node can also be created by the Node decorator.outputs\n\n The inputs to the function are turned into InputsPlugs, otuputs are defined\n in the decorator itself. The wrapped function is used as the compute method.\n \"\"\"\n print('{0} are building the {1}'.format(', '.join(workers.values()), section))\n return {'workers.{0}'.format(i): worker for i, worker in workers.items()}\n\n\n@Node()\ndef Party(attendees):\n print('{0} and {1} are having a great party!'.format(\n ', '.join(list(attendees.values())[:-1]), list(attendees.values())[-1]))\n\n\n# Create a graph with the necessary nodes\ngraph = Graph(name='How to build a house')\nworkers = HireWorkers(graph=graph, amount=4)\nbuild_walls = Build(graph=graph, name='Build Walls', section='walls')\nbuild_roof = Build(graph=graph, name='Build Roof', section='roof')\nparty = Party(graph=graph, name='Housewarming Party')\n\n# Wire up the connections between the nodes\nworkers.outputs['workers']['0'].connect(build_walls.inputs['workers']['0'])\nworkers.outputs['workers']['1'].connect(build_walls.inputs['workers']['1'])\nworkers.outputs['workers']['2'].connect(build_roof.inputs['workers']['0'])\nworkers.outputs['workers']['3'].connect(build_roof.inputs['workers']['1'])\nbuild_walls.outputs['workers']['0'] >> party.inputs['attendees']['0']\nbuild_walls.outputs['workers']['1'] >> party.inputs['attendees']['2']\nbuild_roof.outputs['workers']['0'] >> party.inputs['attendees']['1']\nbuild_roof.outputs['workers']['1'] >> party.inputs['attendees']['3']\nparty.inputs['attendees']['4'].value = 'Homeowner'\n```\n\nVisualize the code as a graph or as a listing:\n\n```python\nprint(graph.name)\nprint(graph)\nprint(graph.list_repr())\n```\n\nOutput:\n\n```\nHow to build a house\n+------------------------+ +------------------------+ +---------------------------+\n| HireWorkers | | Build Roof | | Housewarming Party |\n|------------------------| |------------------------| |---------------------------|\no amount<4> | o section<\"roof\"> | % attendees |\n| workers % % workers | +--->o attendees.0<> |\n| workers.0 o-----+--->o workers.0<> | |--->o attendees.1<> |\n| workers.1 o-----|--->o workers.1<> | |--->o attendees.2<> |\n| workers.2 o-----| | workers % |--->o attendees.3<> |\n| workers.3 o-----| | workers.0 o-----| o attendees.4<\"Homeowner> |\n+------------------------+ | | workers.1 o-----| +---------------------------+\n | +------------------------+ |\n | +------------------------+ |\n | | Build Walls | |\n | |------------------------| |\n | o section<\"walls\"> | |\n | % workers | |\n +--->o workers.0<> | |\n +--->o workers.1<> | |\n | workers % |\n | workers.0 o-----+\n | workers.1 o-----+\n +------------------------+\n\nBuild a House\n HireWorkers\n [i] amount: 4\n [o] workers\n [o] workers.0 >> Build Walls.workers.0\n [o] workers.1 >> Build Walls.workers.1\n [o] workers.2 >> Build Roof.workers.0\n [o] workers.3 >> Build Roof.workers.1\n Build Roof\n [i] section: \"roof\"\n [i] workers\n [i] workers.0 << HireWorkers.workers.2\n [i] workers.1 << HireWorkers.workers.3\n [o] workers\n [o] workers.0 >> Housewarming Party.attendees.1\n [o] workers.1 >> Housewarming Party.attendees.3\n Build Walls\n [i] section: \"walls\"\n [i] workers\n [i] workers.0 << HireWorkers.workers.0\n [i] workers.1 << HireWorkers.workers.1\n [o] workers\n [o] workers.0 >> Housewarming Party.attendees.0\n [o] workers.1 >> Housewarming Party.attendees.2\n Housewarming Party\n [i] attendees\n [i] attendees.0 << Build Walls.workers.0\n [i] attendees.1 << Build Roof.workers.0\n [i] attendees.2 << Build Walls.workers.1\n [i] attendees.3 << Build Roof.workers.1\n [i] attendees.4: \"Homeowner\"\n```\n\nNow build the house:\n\n```python\ngraph.evaluate(mode='threading') # Options are linear, threading and multiprocessing\n```\n\nOutput:\n\n```\n4 workers are hired to build the house.\nMichelle, Mike are building the roof\nJane, John are building the walls\nMike, John, Michelle, Jane and Homeowner are having a great party!\n```\n\nWe now know how to throw a party, so let's invite some people and re-use these skills for a birthday:\n\n```python\ngraph = Graph(name='How to throw a birthday party')\n\n@Node(outputs=['people'])\ndef InvitePeople(amount):\n people = ['John', 'Jane', 'Mike', 'Michelle']\n d = {'people.{0}'.format(i): people[i] for i in range(amount)}\n d['people'] = {people[i]: people[i] for i in range(amount)}\n return d\n\ninvite = InvitePeople(graph=graph, amount=4)\nbirthday_party = Party(graph=graph, name='Birthday Party')\ninvite.outputs['people'] >> birthday_party.inputs['attendees']\n\nprint(graph.name)\nprint(graph)\ngraph.evaluate()\n```\n\nOutput:\n\n```\nHow to throw a birthday party\n+-------------------+ +---------------------+\n| InvitePeople | | Birthday Party |\n|-------------------| |---------------------|\no amount<4> | +--->o attendees<> |\n| people o-----+ +---------------------+\n+-------------------+\n\nJane, Michelle, Mike and John are having a great party!\n```\n\n## More Examples\n\nThere are more examples for common use cases of flowpipe:\n\nThe code for these examples:\n[house_and_birthday.py](examples/house_and_birthday.py)!\n\nAnother simple example:\n[world_clock.py](examples/world_clock.py)!\n\nHow to make use of nested subgraphs:\n[nested_graphs.py](examples/nested_graphs.py)!\n\nUsing the command pattern with flowpipe successfully:\n[workflow_design_pattern.py](examples/workflow_design_pattern.py)!\n\nUse flowpipe on a remote cluster of machines, commonly refered to as a \"render farm\" in the VFX/Animation industry:\n[vfx_render_farm_conversion.py](examples/vfx_render_farm_conversion.py)!\n\nAn example graph showcasing a common workflow encountered in the VFX/Animation industry:\n[vfx_rendering.py](examples/vfx_rendering.py)!\n\n## VFX Pipeline\n\nIf you are working in the VFX/Animation industry, please check out this extensive guide on how to use [flowpipe in a vfx pipeline](flowpipe-for-vfx-pipelines.md)!\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/PaulSchweizer/flowpipe", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "flowpipe", "package_url": "https://pypi.org/project/flowpipe/", "platform": "", "project_url": "https://pypi.org/project/flowpipe/", "project_urls": { "Homepage": "https://github.com/PaulSchweizer/flowpipe" }, "release_url": "https://pypi.org/project/flowpipe/0.9.0/", "requires_dist": [ "ascii-canvas (>=1.2.2)", "ordereddict (>=1.1)", "strip-hints (>=0.1.7)", "futures ; python_version == \"2.7\"" ], "requires_python": "", "summary": "Lightweight flow-based programming framework.", "version": "0.9.0", "yanked": false, "yanked_reason": null }, "last_serial": 8999057, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "08d054d27967994e096f2c6c0a8d0720", "sha256": "348c99ef19b204af035dad8c20b1b68ac6ac6f700cb47b5f98e80b1ca0317294" }, "downloads": -1, "filename": "flowpipe-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "08d054d27967994e096f2c6c0a8d0720", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10979, "upload_time": "2019-01-11T10:30:46", "upload_time_iso_8601": "2019-01-11T10:30:46.304784Z", "url": "https://files.pythonhosted.org/packages/12/45/fa77b240edd13c9a857851fcc51ba4cf95d943ffae7e25956f17490f0186/flowpipe-0.1.0-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "409f8843b4c0e2cafb503c562d4b1de6", "sha256": "15983a35e6d2fe78bcfb6936e9dde48019924321d4bc6fd882b91fb2d674fd58" }, "downloads": -1, "filename": "flowpipe-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "409f8843b4c0e2cafb503c562d4b1de6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10978, "upload_time": "2019-01-11T10:30:34", "upload_time_iso_8601": "2019-01-11T10:30:34.258797Z", "url": "https://files.pythonhosted.org/packages/7f/45/22c83c060322b41285cd1a13ddd70e9b2e312186267fcef74f47e638fce2/flowpipe-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "608e2be9ab146f74f16fa99860e67e3f", "sha256": "54d6354485c58ee80ef0f2a55aec9973a41feab94f27a5ed069a0920b55cb253" }, "downloads": -1, "filename": "flowpipe-0.1.0.tar.gz", "has_sig": false, "md5_digest": "608e2be9ab146f74f16fa99860e67e3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9621, "upload_time": "2019-01-11T10:30:36", "upload_time_iso_8601": "2019-01-11T10:30:36.470309Z", "url": "https://files.pythonhosted.org/packages/0e/c2/fe217041729f845a059330ad951dee98ad0ee4994eedeb92207860f22b3b/flowpipe-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "1f0b3f403f6cfdf1e468d608d93f9347", "sha256": "6c2ae98e9b8a32989819497f766b92c99f537ae07ca533135cad0b2238cceb01" }, "downloads": -1, "filename": "flowpipe-0.4.5-py2-none-any.whl", "has_sig": false, "md5_digest": "1f0b3f403f6cfdf1e468d608d93f9347", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 12986, "upload_time": "2019-01-14T13:05:09", "upload_time_iso_8601": "2019-01-14T13:05:09.527229Z", "url": "https://files.pythonhosted.org/packages/d5/b3/4782b3ab811877762ade2c081aa799e18c2558325050fdb22324f8129b15/flowpipe-0.4.5-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "559e5965b96d1ed60786c3ebbe04f62a", "sha256": "04a763466b6e111396b474341b91a8fdefda65759b839d81e28a9ffde57831c0" }, "downloads": -1, "filename": "flowpipe-0.4.5-py3-none-any.whl", "has_sig": false, "md5_digest": "559e5965b96d1ed60786c3ebbe04f62a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12983, "upload_time": "2019-01-14T13:05:00", "upload_time_iso_8601": "2019-01-14T13:05:00.078732Z", "url": "https://files.pythonhosted.org/packages/01/05/8b338cf77a325882105cfe8c0514ced0bbbce8f336d988d460bac12d415c/flowpipe-0.4.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "fb844ec1fdc124a4e797cff094191066", "sha256": "44fae02f4f71bb7435cbd4f923f1ee7f1cba37dd8fe3184cb319387da0b167e9" }, "downloads": -1, "filename": "flowpipe-0.4.5.tar.gz", "has_sig": false, "md5_digest": "fb844ec1fdc124a4e797cff094191066", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12254, "upload_time": "2019-01-14T13:05:01", "upload_time_iso_8601": "2019-01-14T13:05:01.123379Z", "url": "https://files.pythonhosted.org/packages/24/fa/fe0adc5858b1e9cb18efdbd5b396e7aeaaf56bd184d6280202ea8942402c/flowpipe-0.4.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "014936b63427f158d63b59853d8d908e", "sha256": "6572c00e6de9f84ecc1a1d7bac703afdc1c2269c0b076bbbe0cd93b26f9f96cd" }, "downloads": -1, "filename": "flowpipe-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "014936b63427f158d63b59853d8d908e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14622, "upload_time": "2019-08-03T09:56:49", "upload_time_iso_8601": "2019-08-03T09:56:49.881802Z", "url": "https://files.pythonhosted.org/packages/d5/51/24c691b5522054c27d4cf3d84aca06a718f9c3af57d344ae94e6d6ab773e/flowpipe-0.5.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d6d0841587ae8ee5be08ef2439cdce11", "sha256": "841f8482059951c08f74640ae0062d9520d6ec00ecd41aa348e315919023f561" }, "downloads": -1, "filename": "flowpipe-0.5.0.tar.gz", "has_sig": false, "md5_digest": "d6d0841587ae8ee5be08ef2439cdce11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11933, "upload_time": "2019-08-03T09:56:51", "upload_time_iso_8601": "2019-08-03T09:56:51.420746Z", "url": "https://files.pythonhosted.org/packages/3e/78/4ec38e5f0a289fa8d7ae94563d7f7f65e6a359081ebcdde1bcc8330310f6/flowpipe-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "360d48ac1c8a3907d5b63b3ca7b43db5", "sha256": "437fde58d5783d823cb981d96274e9ef153d42138681048a661b87bc6b2f132c" }, "downloads": -1, "filename": "flowpipe-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "360d48ac1c8a3907d5b63b3ca7b43db5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16623, "upload_time": "2019-09-13T08:08:57", "upload_time_iso_8601": "2019-09-13T08:08:57.885986Z", "url": "https://files.pythonhosted.org/packages/28/55/8cc0ebdec2a09831c8b74cdbd313d93a2a55ffe9848f00c53ac7182a64d5/flowpipe-0.5.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "ab70e90ebff6d24f6b4fad276241a209", "sha256": "25ed1ab2fa8f0fe58fff7b5af20a7d3a0cb208b6d6c9ebed5bd4f488d11a0796" }, "downloads": -1, "filename": "flowpipe-0.5.1.tar.gz", "has_sig": false, "md5_digest": "ab70e90ebff6d24f6b4fad276241a209", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13866, "upload_time": "2019-09-13T08:08:59", "upload_time_iso_8601": "2019-09-13T08:08:59.628237Z", "url": "https://files.pythonhosted.org/packages/e0/db/d42a8c6612104578b468c9b7fb008d3a13e805f876842fd5f681fde2eefd/flowpipe-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "06f55b255f9be4c1a60bf9202ccd62d6", "sha256": "87af81c00a2a1874c4123bcfc4cc9f6966661284e46ea3c4b7702da23045dbc9" }, "downloads": -1, "filename": "flowpipe-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "06f55b255f9be4c1a60bf9202ccd62d6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16786, "upload_time": "2019-10-03T13:42:22", "upload_time_iso_8601": "2019-10-03T13:42:22.689432Z", "url": "https://files.pythonhosted.org/packages/c3/fe/61c797b9cbbe449c0ad27e6cd8317ff8b0db70de9eaffd3d4c585cc3524c/flowpipe-0.5.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "feec918f1d9ca87c792ff6c93a368d54", "sha256": "e6919e6903aed7641f3312bfc5e6d42cd76b303b578ec511c47cf9d2f56c977d" }, "downloads": -1, "filename": "flowpipe-0.5.2.tar.gz", "has_sig": false, "md5_digest": "feec918f1d9ca87c792ff6c93a368d54", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14015, "upload_time": "2019-10-03T13:42:24", "upload_time_iso_8601": "2019-10-03T13:42:24.435194Z", "url": "https://files.pythonhosted.org/packages/bb/72/2cd13e7dedf176fc19100365b409e70f1e1f47309968015e42bd0262257f/flowpipe-0.5.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "f166d350c868f6890a24aba610e2ffb8", "sha256": "f817941d850c8c8f976ef6de5fa2e84c46c8294b8a2fa6e51ac4c59861cd86b6" }, "downloads": -1, "filename": "flowpipe-0.5.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f166d350c868f6890a24aba610e2ffb8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16845, "upload_time": "2019-10-04T08:47:58", "upload_time_iso_8601": "2019-10-04T08:47:58.298970Z", "url": "https://files.pythonhosted.org/packages/03/e2/ff35f8aba41023d5cde39842494c010d79a7e0c0c7965f9e34738971192b/flowpipe-0.5.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "33dbd3cd9ceeadede8e58141bf49a664", "sha256": "58e3a46706b4327749e6584742ff4c56a2c176d8aa7d86a8cb11edc13186f2b3" }, "downloads": -1, "filename": "flowpipe-0.5.3.tar.gz", "has_sig": false, "md5_digest": "33dbd3cd9ceeadede8e58141bf49a664", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14066, "upload_time": "2019-10-04T08:47:59", "upload_time_iso_8601": "2019-10-04T08:47:59.802505Z", "url": "https://files.pythonhosted.org/packages/36/15/8c057da06a16bba59de8ff5128e0b16b80770d840e652618206a1e56c382/flowpipe-0.5.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "73f2a0717704e2ed94b704504b71be63", "sha256": "c4318e484ff670d26197d4b759240c26980ecf8f06039a2ab6fa3466e16b3f4a" }, "downloads": -1, "filename": "flowpipe-0.5.4-py3-none-any.whl", "has_sig": false, "md5_digest": "73f2a0717704e2ed94b704504b71be63", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16874, "upload_time": "2019-10-07T14:20:27", "upload_time_iso_8601": "2019-10-07T14:20:27.549099Z", "url": "https://files.pythonhosted.org/packages/62/81/43c8a78b43e0bc383bf6eaf79b102baf5d950ab34e290830cdd39f1ba914/flowpipe-0.5.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "64fdc08e4c167c04689102292e6fec2f", "sha256": "737cee9ee30053df949f263d00a50ab8fa33d6c99577c7efa4187a9ce22c38ce" }, "downloads": -1, "filename": "flowpipe-0.5.4.tar.gz", "has_sig": false, "md5_digest": "64fdc08e4c167c04689102292e6fec2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14102, "upload_time": "2019-10-07T14:20:29", "upload_time_iso_8601": "2019-10-07T14:20:29.042973Z", "url": "https://files.pythonhosted.org/packages/b0/ca/f3c30a603f0e3a31cc9e2504cc03eb47ed680175100e026050fe3db2fc8a/flowpipe-0.5.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "c81fab3c65242b0389f4a01d80827de8", "sha256": "f9d87c8132e6c005e5ba19583f0182bd2c66bcc74b4d4e010ebf1d69f9248c5b" }, "downloads": -1, "filename": "flowpipe-0.5.5-py3-none-any.whl", "has_sig": false, "md5_digest": "c81fab3c65242b0389f4a01d80827de8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18306, "upload_time": "2019-10-15T12:15:15", "upload_time_iso_8601": "2019-10-15T12:15:15.986792Z", "url": "https://files.pythonhosted.org/packages/38/61/aa181f83b58b910ed5445ae23b572e0434021c025f79397e1fb7c279b7d0/flowpipe-0.5.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "51aeb4917d7ae76927257fdf0d382080", "sha256": "88d2f91dc4902a11af1e4049f1ebf358c273f73b71cb17100d2cdeb621c0383c" }, "downloads": -1, "filename": "flowpipe-0.5.5.tar.gz", "has_sig": false, "md5_digest": "51aeb4917d7ae76927257fdf0d382080", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15484, "upload_time": "2019-10-15T12:15:17", "upload_time_iso_8601": "2019-10-15T12:15:17.940199Z", "url": "https://files.pythonhosted.org/packages/5c/ed/8f3817729d81252d8313e9e10c55b03a78baf636ac83efb0f1354ea8a354/flowpipe-0.5.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "72055514d216c79e8f3475579d474260", "sha256": "5307ec212bb02428a4ffaff5ed3a41e163d2f5222154581edd979e65b5d93554" }, "downloads": -1, "filename": "flowpipe-0.5.6-py3-none-any.whl", "has_sig": false, "md5_digest": "72055514d216c79e8f3475579d474260", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18318, "upload_time": "2019-10-16T07:49:37", "upload_time_iso_8601": "2019-10-16T07:49:37.062084Z", "url": "https://files.pythonhosted.org/packages/82/37/66c466d25093e85b403624846398974373e7afce53334af624e7fb695286/flowpipe-0.5.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d1dec6ba50e4b5d90c7f353001e6daea", "sha256": "395b4b658c18a00dfed429405d1a8cc34b9807b83632cbeecbc798b7a2d4c37f" }, "downloads": -1, "filename": "flowpipe-0.5.6.tar.gz", "has_sig": false, "md5_digest": "d1dec6ba50e4b5d90c7f353001e6daea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15499, "upload_time": "2019-10-16T07:49:39", "upload_time_iso_8601": "2019-10-16T07:49:39.041437Z", "url": "https://files.pythonhosted.org/packages/98/3a/4aa0d644a40536de05708f4a2cb0e9e4edab064c4f1808f148a13ccf9a1e/flowpipe-0.5.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.7": [ { "comment_text": "", "digests": { "md5": "cb9f67805b7ec05a34260a3bfd060ca9", "sha256": "ec4dbd6842e19984ee5ef9a2e123d211609dd46749e864dff51946f5df5b8ccf" }, "downloads": -1, "filename": "flowpipe-0.5.7-py3-none-any.whl", "has_sig": false, "md5_digest": "cb9f67805b7ec05a34260a3bfd060ca9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 19269, "upload_time": "2019-10-28T09:06:05", "upload_time_iso_8601": "2019-10-28T09:06:05.994498Z", "url": "https://files.pythonhosted.org/packages/1d/a9/0edb2b538c1c5c5eda240374a9ef5495a38ee6c874d4089a28c02965c162/flowpipe-0.5.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "45d01a62ca27d571865e9ab5bbd21595", "sha256": "2e457eeb254f24129a72a6ec91c040603024fe2346b43f675de905f38ab199bc" }, "downloads": -1, "filename": "flowpipe-0.5.7.tar.gz", "has_sig": false, "md5_digest": "45d01a62ca27d571865e9ab5bbd21595", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16284, "upload_time": "2019-10-28T09:06:07", "upload_time_iso_8601": "2019-10-28T09:06:07.668857Z", "url": "https://files.pythonhosted.org/packages/38/02/db09f8b2ae5556270ae2f62381ec758f94125b20e9c31cbc1d72713c038d/flowpipe-0.5.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "a856958dd7363d5bba0835b0a37e4381", "sha256": "83bae581cf3ac72ecabee3ac583abb0d2f671e11783370f840a12d3dd89b4ef9" }, "downloads": -1, "filename": "flowpipe-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a856958dd7363d5bba0835b0a37e4381", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 18667, "upload_time": "2019-11-07T10:11:09", "upload_time_iso_8601": "2019-11-07T10:11:09.193915Z", "url": "https://files.pythonhosted.org/packages/53/df/058f03684add75950e7757eb8c117290fc26422b69ee9a2af59e996b829d/flowpipe-0.6.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "40486bf8e1b4bd91dd6990bbfd2fa97b", "sha256": "9550e71cad4d67ba043704fc480941b59938b212adfda2f0a312c0663fdab36e" }, "downloads": -1, "filename": "flowpipe-0.6.0.tar.gz", "has_sig": false, "md5_digest": "40486bf8e1b4bd91dd6990bbfd2fa97b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16011, "upload_time": "2019-11-07T10:11:10", "upload_time_iso_8601": "2019-11-07T10:11:10.899663Z", "url": "https://files.pythonhosted.org/packages/2d/0a/d6cf2c06c22f271817fccbb1c3d8fcc6fa7a111d33a6b24efc9f3d206b33/flowpipe-0.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "c8db7b08fe7e4e7eea2963dc92d4f77b", "sha256": "a0009a33b45f4554ba4e335d0af44639bd3374310b36fd478550e789b4ed1486" }, "downloads": -1, "filename": "flowpipe-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c8db7b08fe7e4e7eea2963dc92d4f77b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20251, "upload_time": "2019-11-27T08:32:43", "upload_time_iso_8601": "2019-11-27T08:32:43.467226Z", "url": "https://files.pythonhosted.org/packages/7e/e3/b9fb4a429a0ee5ef65788c447989bfaa60fcb72aed2a22d68e80a0b36b7c/flowpipe-0.7.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d93c9c625abb181f1493e08a4e3b30b2", "sha256": "552ccd2224e37fe4e38e3b55be879fa3073fdc95158c18cd8a8847396b9c403e" }, "downloads": -1, "filename": "flowpipe-0.7.0.tar.gz", "has_sig": false, "md5_digest": "d93c9c625abb181f1493e08a4e3b30b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17358, "upload_time": "2019-11-27T08:32:45", "upload_time_iso_8601": "2019-11-27T08:32:45.212256Z", "url": "https://files.pythonhosted.org/packages/b3/bb/bd0588f54b9e4a07a06cf3b75a3c52c19d7d148c0be39946125511c9aff3/flowpipe-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "7d526c0f3ba23f0940fd4244b6d4717d", "sha256": "d731fc7ca6e01f37bf2542e3555157a6e20df11ec88bd514b7604d3275032235" }, "downloads": -1, "filename": "flowpipe-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7d526c0f3ba23f0940fd4244b6d4717d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20264, "upload_time": "2020-01-27T13:38:19", "upload_time_iso_8601": "2020-01-27T13:38:19.480313Z", "url": "https://files.pythonhosted.org/packages/0c/89/1777d4bab983a4d4e04560dcffcb9b7ec951b05226561c49b0086a4d6c02/flowpipe-0.8.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c5b920a779f8abcb22bf65601f6de3fe", "sha256": "dac2cdfcf7d9f8f9e4d8bdcef8ab29a17b09b6667e39443c7b55418877028fd5" }, "downloads": -1, "filename": "flowpipe-0.8.0.tar.gz", "has_sig": false, "md5_digest": "c5b920a779f8abcb22bf65601f6de3fe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17440, "upload_time": "2020-01-27T13:38:20", "upload_time_iso_8601": "2020-01-27T13:38:20.878780Z", "url": "https://files.pythonhosted.org/packages/0b/f8/d56e2ba55c9bae501976bd28e1de8ecc081a51262eb5f90c139d1a726d66/flowpipe-0.8.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "62f3e0fa43619665d97bb7c08fb7cb40", "sha256": "9f11b14c250b17fd49509ee70088c984150f6c9187c705a3f412522c213bd60c" }, "downloads": -1, "filename": "flowpipe-0.8.1-py3-none-any.whl", "has_sig": false, "md5_digest": "62f3e0fa43619665d97bb7c08fb7cb40", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20287, "upload_time": "2020-01-27T16:06:48", "upload_time_iso_8601": "2020-01-27T16:06:48.020446Z", "url": "https://files.pythonhosted.org/packages/b8/5c/ee7dd0e036cfe5ad63aea7a703eeae95317b33c77cb12112bbf1ecfed4d8/flowpipe-0.8.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "8b36d504c4919a459f9c54c78a01030c", "sha256": "18f84bdc5b8f86d45868819d5e77d00bd78d25ebefe4be75bd9ac78daee00090" }, "downloads": -1, "filename": "flowpipe-0.8.1.tar.gz", "has_sig": false, "md5_digest": "8b36d504c4919a459f9c54c78a01030c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17458, "upload_time": "2020-01-27T16:06:49", "upload_time_iso_8601": "2020-01-27T16:06:49.717111Z", "url": "https://files.pythonhosted.org/packages/1f/2a/17620d9fcdf163068204bc20578c3902c05a00ffb8d096f297ffdc815feb/flowpipe-0.8.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "75caf8ea62c3af1c52f1f9d437a99d3f", "sha256": "64f188ef227781318051f5f20be7f19e205f6b59fc0102254d79a92196a9229f" }, "downloads": -1, "filename": "flowpipe-0.8.2-py3-none-any.whl", "has_sig": false, "md5_digest": "75caf8ea62c3af1c52f1f9d437a99d3f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 20829, "upload_time": "2020-03-17T09:01:15", "upload_time_iso_8601": "2020-03-17T09:01:15.618246Z", "url": "https://files.pythonhosted.org/packages/7e/c1/44c7e818f8255b20331e8e8e74399d97d4443d40bec93e30f50bf708b287/flowpipe-0.8.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "638534c4d33435db4a9ee3ad763ec07b", "sha256": "40b375c240d9c25a4f818d27001dcb13f5cf74f3225efc79fc76c364c4a022a8" }, "downloads": -1, "filename": "flowpipe-0.8.2.tar.gz", "has_sig": false, "md5_digest": "638534c4d33435db4a9ee3ad763ec07b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18000, "upload_time": "2020-03-17T09:01:17", "upload_time_iso_8601": "2020-03-17T09:01:17.255516Z", "url": "https://files.pythonhosted.org/packages/2d/b6/a7c1354b36edbf1166e50981d9268df2fe43bab969788bc38ac7d4d553a1/flowpipe-0.8.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "1e6fb1d37b6cd6dd00e76c6be8da4798", "sha256": "70c1a583ecd2aed2918c1d6500adea05cede9f096df0ec19668313353287ad91" }, "downloads": -1, "filename": "flowpipe-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1e6fb1d37b6cd6dd00e76c6be8da4798", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22487, "upload_time": "2020-12-28T14:38:11", "upload_time_iso_8601": "2020-12-28T14:38:11.983085Z", "url": "https://files.pythonhosted.org/packages/28/86/db223a6098b69c9b49c3df210b660c3781b52ac6c74b04f2587f7932108e/flowpipe-0.9.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e2dc404137251fa970e683f8b8d737db", "sha256": "5d7ad7d44b5d998d589b17e5d195da39a4705bb84cf367b2479b4d47c0e54caa" }, "downloads": -1, "filename": "flowpipe-0.9.0.tar.gz", "has_sig": false, "md5_digest": "e2dc404137251fa970e683f8b8d737db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19490, "upload_time": "2020-12-28T14:38:13", "upload_time_iso_8601": "2020-12-28T14:38:13.272527Z", "url": "https://files.pythonhosted.org/packages/86/ca/05b9ef153189a417f4b264d0603eb39ba295ccef832306a2b02b3dcd9101/flowpipe-0.9.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1e6fb1d37b6cd6dd00e76c6be8da4798", "sha256": "70c1a583ecd2aed2918c1d6500adea05cede9f096df0ec19668313353287ad91" }, "downloads": -1, "filename": "flowpipe-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1e6fb1d37b6cd6dd00e76c6be8da4798", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22487, "upload_time": "2020-12-28T14:38:11", "upload_time_iso_8601": "2020-12-28T14:38:11.983085Z", "url": "https://files.pythonhosted.org/packages/28/86/db223a6098b69c9b49c3df210b660c3781b52ac6c74b04f2587f7932108e/flowpipe-0.9.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e2dc404137251fa970e683f8b8d737db", "sha256": "5d7ad7d44b5d998d589b17e5d195da39a4705bb84cf367b2479b4d47c0e54caa" }, "downloads": -1, "filename": "flowpipe-0.9.0.tar.gz", "has_sig": false, "md5_digest": "e2dc404137251fa970e683f8b8d737db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19490, "upload_time": "2020-12-28T14:38:13", "upload_time_iso_8601": "2020-12-28T14:38:13.272527Z", "url": "https://files.pythonhosted.org/packages/86/ca/05b9ef153189a417f4b264d0603eb39ba295ccef832306a2b02b3dcd9101/flowpipe-0.9.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }