{ "info": { "author": "OVO Energy", "author_email": "trading.dl@ovoenergy.com", "bugtrack_url": null, "classifiers": [], "description": "
\n

\n
\"logo\"/
\n
VertFlow
\n

\n

Run Docker containers on Airflow using green energy

\n

\"Video

\n
\n\n## \ud83d\udcd6 About\n\n**VertFlow is an [Airflow](https://airflow.apache.org/) operator for\nrunning [Cloud Run Jobs](https://cloud.google.com/run/docs/create-jobs) on Google Cloud Platform in green data\ncentres.** \nCloud Run is a serverless container runtime, meaning you BYO Docker image and emit carbon only when the job is running.\nThis is *easier, cheaper and greener* than managing a Kubernetes cluster spinning 24/7.\n\n**Not all data centres are created equal.** \nData centres run on electricity generated from various sources, including fossil fuels which emit harmful carbon\nemissions. Some data centres are greener than others, using electricity from renewable sources such as wind and hydro. \nWhen you deploy a container on Airflow using the VertFlow operator, it will run your container in the greenest GCP data\ncentre possible.\n\n> \u2139\ufe0f Use VertFlow on [Cloud Composer 2](https://cloud.google.com/composer/docs/composer-2/composer-versioning-overview)\n> to save even\n> more money and CO2.\n\n## \ud83d\udd27 How to install\n\n1. `pip install VertFlow` on your Airflow instance.\n2. Ensure your Airflow scheduler has outbound access to the public internet and the `roles/run.developer` Cloud IAM\n role.\n3. Get an [API Key for CO2 Signal](https://www.co2signal.com/), free for non-commercial use. Store in an Airflow variable called `VERTFLOW_API_KEY`.\n\n> \u2139\ufe0f If you're using Cloud Composer, these instructions may be helpful:\n> * [Installing PyPI packages](https://cloud.google.com/composer/docs/how-to/using/installing-python-dependencies#install-package)\n> * [Setting up internet access](https://cloud.google.com/composer/docs/concepts/private-ip#public_internet_access_for_your_workflows)\n> * [About service accounts for Cloud Composer](https://cloud.google.com/composer/docs/composer-2/access-control#about-service)\n\n## \ud83d\uddb1 How to use\n\nUse the [`VertFlowOperator`](https://github.com/ovotech/VertFlow/blob/main/src/operator.py#L30) to instantiate a task in your DAG.\nProvide:\n\n* The address of the Docker image to run.\n* A runtime specification, e.g. timeout and memory limits.\n* A set of allowed regions to run the job in, based on your latency, data governance and other considerations. VertFlow\n picks the greenest one.\n\n```python\nfrom VertFlow.operator import VertFlowOperator\nfrom airflow import DAG\n\nwith DAG(\n dag_id=\"hourly_dag_in_green_region\",\n schedule_interval=\"@hourly\"\n) as dag:\n task = VertFlowOperator(\n image_address=\"us-docker.pkg.dev/cloudrun/container/job:latest\",\n name=\"hello-world\",\n allowed_regions=[\"europe-west1\", \"europe-west4\"],\n command=\"echo\",\n arguments=[\"Hello World\"],\n service_account_email_address=\"my-service-account@embroidered-elephant-739.iam.gserviceaccount.com\",\n ...\n )\n```\n\n## \ud83d\udd0c\ud83d\uddfa Shout out to CO2 Signal\n\nVertFlow works thanks to real-time global carbon intensity data, gifted to the world for non-commercial use\nby [CO2 Signal](https://www.co2signal.com/).\n\n## \ud83e\udd1d How to contribute\n\nFound a bug or fancy resolving an issue? We welcome Pull Requests!\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/ovotech/VertFlow", "keywords": "airflow,gcp,google,cloud run,cloud composer,green,environment,sustainability", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "VertFlow", "package_url": "https://pypi.org/project/VertFlow/", "platform": null, "project_url": "https://pypi.org/project/VertFlow/", "project_urls": { "Homepage": "https://github.com/ovotech/VertFlow" }, "release_url": "https://pypi.org/project/VertFlow/0.4.1/", "requires_dist": [ "google-api-python-client (<2.0.0,>=1.6.0)", "requests-cache (==0.6.0)", "geocoder (<2.0.0,>=1.38.1)", "oauth2client (<4.0.0)" ], "requires_python": ">=3.7", "summary": "Apache Airflow operator for running Google Cloud Run Jobs using green energy", "version": "0.4.1", "yanked": false, "yanked_reason": null }, "last_serial": 19075968, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "blake2b_256": "f13c2e9e4e0004cbf24dd4bfd2cda1e3ecf9c8d19da3a862744b46406835668e", "md5": "390a16bd87a30a9a96bd135d0d62f316", "sha256": "e0e83ae5f539b075d6cda37251d62105c900fdf5f03b9f41ec83625ac6c73a19" }, "downloads": -1, "filename": "VertFlow-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "390a16bd87a30a9a96bd135d0d62f316", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19329, "upload_time": "2022-07-08T12:55:55", "upload_time_iso_8601": "2022-07-08T12:55:55.389186Z", "url": "https://files.pythonhosted.org/packages/f1/3c/2e9e4e0004cbf24dd4bfd2cda1e3ecf9c8d19da3a862744b46406835668e/VertFlow-0.0.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "2bc534b1cc4e53ebd8a7f1b547a542a53ee272a9d106b7ec22ffdc14c849bb59", "md5": "dbdbac2bef7e414ff332df24e25e3d43", "sha256": "c3947ff80bcc63aa7b353c676bafdf4284543c5e698d32ee218b3b5a6e5f318c" }, "downloads": -1, "filename": "VertFlow-0.0.3.tar.gz", "has_sig": false, "md5_digest": "dbdbac2bef7e414ff332df24e25e3d43", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 18063, "upload_time": "2022-07-08T12:55:57", "upload_time_iso_8601": "2022-07-08T12:55:57.056346Z", "url": "https://files.pythonhosted.org/packages/2b/c5/34b1cc4e53ebd8a7f1b547a542a53ee272a9d106b7ec22ffdc14c849bb59/VertFlow-0.0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.0.4": [ { "comment_text": "", "digests": { "blake2b_256": "8c7419a894947c23071c3d3bab07dde349bd7f6ec87ac1591a84d01c97192e1d", "md5": "82f9e8b2b315453feec3cd9368acdcb5", "sha256": "69f482261ca4b052bc6e931465c21722a4d4724a6925bf123e0e95a7ec6345bf" }, "downloads": -1, "filename": "VertFlow-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "82f9e8b2b315453feec3cd9368acdcb5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19425, "upload_time": "2022-07-20T16:34:09", "upload_time_iso_8601": "2022-07-20T16:34:09.007712Z", "url": "https://files.pythonhosted.org/packages/8c/74/19a894947c23071c3d3bab07dde349bd7f6ec87ac1591a84d01c97192e1d/VertFlow-0.0.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "c84c62170c2941d7aae03e9aaacbc7af4bac98e6c7dc38d4ad54ec86f747679f", "md5": "3e834e74a3f5ccc80d2b35f692744fba", "sha256": "4db95666126050bdf2182df4955d02bec4a6e011cc2a47ec5c43229650e7ab64" }, "downloads": -1, "filename": "VertFlow-0.0.4.tar.gz", "has_sig": false, "md5_digest": "3e834e74a3f5ccc80d2b35f692744fba", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 18158, "upload_time": "2022-07-20T16:34:10", "upload_time_iso_8601": "2022-07-20T16:34:10.519297Z", "url": "https://files.pythonhosted.org/packages/c8/4c/62170c2941d7aae03e9aaacbc7af4bac98e6c7dc38d4ad54ec86f747679f/VertFlow-0.0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.0": [ { "comment_text": "", "digests": { "blake2b_256": "e1787e837c6091804f3bd865e9b447d998aba5de401bbd859c47e20e0e56c4f6", "md5": "4f106029c9194bd8fa9d0e1144fe3942", "sha256": "af05048fab32a41230b05d1df7ad9243ecd29dc109ef472c30af4daa35c27dbc" }, "downloads": -1, "filename": "VertFlow-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4f106029c9194bd8fa9d0e1144fe3942", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 16923, "upload_time": "2022-07-20T16:42:59", "upload_time_iso_8601": "2022-07-20T16:42:59.487742Z", "url": "https://files.pythonhosted.org/packages/e1/78/7e837c6091804f3bd865e9b447d998aba5de401bbd859c47e20e0e56c4f6/VertFlow-0.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "de49e69bb1ebf425a4fddd1593f582ed298bb6ed73070a7dfba6a60cfeff8a78", "md5": "cb9c7fd1c9d3e1eff750ff6995eb2792", "sha256": "701cdee31c84b4af03fdb6f0868a75ee20c6be907c0ded08ca3ae9f20f0effc9" }, "downloads": -1, "filename": "VertFlow-0.1.0.tar.gz", "has_sig": false, "md5_digest": "cb9c7fd1c9d3e1eff750ff6995eb2792", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13351, "upload_time": "2022-07-20T16:43:00", "upload_time_iso_8601": "2022-07-20T16:43:00.624355Z", "url": "https://files.pythonhosted.org/packages/de/49/e69bb1ebf425a4fddd1593f582ed298bb6ed73070a7dfba6a60cfeff8a78/VertFlow-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "blake2b_256": "45478ddb499f33c680ae1d4f3f0fe5799789c4cf8a850535bbc2cfe7f04d8d6c", "md5": "bca54bf3910c138f5bedf345544f0693", "sha256": "ec17f06f76c37507d956b4794406e2509a946e8ec46df7bbfd825670e79f4175" }, "downloads": -1, "filename": "VertFlow-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "bca54bf3910c138f5bedf345544f0693", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17345, "upload_time": "2022-07-27T17:38:04", "upload_time_iso_8601": "2022-07-27T17:38:04.365739Z", "url": "https://files.pythonhosted.org/packages/45/47/8ddb499f33c680ae1d4f3f0fe5799789c4cf8a850535bbc2cfe7f04d8d6c/VertFlow-0.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "329d54b53c3eec2a9e3813e444b3acd98afb81887f3de189429d4f9410339782", "md5": "1b28bfe317ff45dba8698e44717d7bb2", "sha256": "9f1407d67b583c6b39cb72c04407099fe7d5e966e288016d9f4c3010126318ab" }, "downloads": -1, "filename": "VertFlow-0.1.1.tar.gz", "has_sig": false, "md5_digest": "1b28bfe317ff45dba8698e44717d7bb2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13811, "upload_time": "2022-07-27T17:38:06", "upload_time_iso_8601": "2022-07-27T17:38:06.329353Z", "url": "https://files.pythonhosted.org/packages/32/9d/54b53c3eec2a9e3813e444b3acd98afb81887f3de189429d4f9410339782/VertFlow-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "blake2b_256": "be95ee6a15b4d333cc850e46b4446b102668daf4a881bae9540df7d05c904eb7", "md5": "78b33ad941e0289673d3711a62cfb42a", "sha256": "dd924385e72e8523e49f076b51724cdb343e9ff0f2498fb42657205db7909cb0" }, "downloads": -1, "filename": "VertFlow-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "78b33ad941e0289673d3711a62cfb42a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17458, "upload_time": "2022-07-29T09:34:41", "upload_time_iso_8601": "2022-07-29T09:34:41.622986Z", "url": "https://files.pythonhosted.org/packages/be/95/ee6a15b4d333cc850e46b4446b102668daf4a881bae9540df7d05c904eb7/VertFlow-0.1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "40c75fb2f4df3ed5c7cb90a08e6e7c635d7c0080f37e23aad6c26935812d0ced", "md5": "cd530ef212630e1c67158a86b07ba0c3", "sha256": "f015db84bba27a59eaa49be74df172baa6661ec378d610ba6f370060224ef51e" }, "downloads": -1, "filename": "VertFlow-0.1.2.tar.gz", "has_sig": false, "md5_digest": "cd530ef212630e1c67158a86b07ba0c3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13953, "upload_time": "2022-07-29T09:34:42", "upload_time_iso_8601": "2022-07-29T09:34:42.996015Z", "url": "https://files.pythonhosted.org/packages/40/c7/5fb2f4df3ed5c7cb90a08e6e7c635d7c0080f37e23aad6c26935812d0ced/VertFlow-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "blake2b_256": "088a969ab49ff2f1d5216ee7cd99da47ca28b2d790b0bc2594c806c033a81682", "md5": "365ce5ab0a9e0b48c142c97dc73a6949", "sha256": "a54904dfee4ad48f9403cab98bf4254ffba416ba8e03697b0f50f1dfb163a6ab" }, "downloads": -1, "filename": "VertFlow-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "365ce5ab0a9e0b48c142c97dc73a6949", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17317, "upload_time": "2022-08-05T17:05:22", "upload_time_iso_8601": "2022-08-05T17:05:22.799796Z", "url": "https://files.pythonhosted.org/packages/08/8a/969ab49ff2f1d5216ee7cd99da47ca28b2d790b0bc2594c806c033a81682/VertFlow-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "4658a6f3d329cb6068dc68850284ac579011bcc51a3fb88013c857b8ce91991b", "md5": "0706b821137ac22e78bd92b033c62fd6", "sha256": "818c8b289f370383b6b54dec1a8a4e009b66616180824d755f5697f8590eb843" }, "downloads": -1, "filename": "VertFlow-0.1.3.tar.gz", "has_sig": false, "md5_digest": "0706b821137ac22e78bd92b033c62fd6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13692, "upload_time": "2022-08-05T17:05:24", "upload_time_iso_8601": "2022-08-05T17:05:24.424177Z", "url": "https://files.pythonhosted.org/packages/46/58/a6f3d329cb6068dc68850284ac579011bcc51a3fb88013c857b8ce91991b/VertFlow-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "blake2b_256": "77fb83801dcff00b36e1e67900fe8e742524d86129d88da64633c2f6c8b3b2d5", "md5": "de14b1caff68a342662656a69aedc938", "sha256": "5d293663dd35aedf01f0aafd694716bc4cb39014fc4abefa61022265cb4916d0" }, "downloads": -1, "filename": "VertFlow-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "de14b1caff68a342662656a69aedc938", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17547, "upload_time": "2022-08-16T20:35:29", "upload_time_iso_8601": "2022-08-16T20:35:29.901523Z", "url": "https://files.pythonhosted.org/packages/77/fb/83801dcff00b36e1e67900fe8e742524d86129d88da64633c2f6c8b3b2d5/VertFlow-0.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "58011b937a0c0c269113777b3f4a464fa1333e11be6e7f4469abea848237f4fd", "md5": "b9936920d11a286aba40a548784b362a", "sha256": "2cbe0f80e22a813d38ae76d8377b81e3373a670f745a541e526b7c09dccd645b" }, "downloads": -1, "filename": "VertFlow-0.1.4.tar.gz", "has_sig": false, "md5_digest": "b9936920d11a286aba40a548784b362a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13935, "upload_time": "2022-08-16T20:35:31", "upload_time_iso_8601": "2022-08-16T20:35:31.027636Z", "url": "https://files.pythonhosted.org/packages/58/01/1b937a0c0c269113777b3f4a464fa1333e11be6e7f4469abea848237f4fd/VertFlow-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4a1": [ { "comment_text": "", "digests": { "blake2b_256": "c95f9bc5b62a26e78baf4cf64e6241554a5125411d0cb619a4add14c44c55efb", "md5": "d78490ecb151c46657438c6e7b3cd062", "sha256": "39be4bca8f8f73b6d04609dd4f928594a24e0df8b6dc2d70601fd11af9c97fd1" }, "downloads": -1, "filename": "VertFlow-0.1.4a1-py3-none-any.whl", "has_sig": false, "md5_digest": "d78490ecb151c46657438c6e7b3cd062", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 17438, "upload_time": "2022-08-08T19:57:56", "upload_time_iso_8601": "2022-08-08T19:57:56.975622Z", "url": "https://files.pythonhosted.org/packages/c9/5f/9bc5b62a26e78baf4cf64e6241554a5125411d0cb619a4add14c44c55efb/VertFlow-0.1.4a1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "f1a83bba3ffcaa4b6d2df006c11d4d4aeed03937cb957a6805968a101c148692", "md5": "4ecf53dd3a9c25422722f75968db8381", "sha256": "45091005332180714ded84f2d2c2a34aed4e042a9032e9eb934e4f92349721f7" }, "downloads": -1, "filename": "VertFlow-0.1.4a1.tar.gz", "has_sig": false, "md5_digest": "4ecf53dd3a9c25422722f75968db8381", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 13815, "upload_time": "2022-08-08T19:57:58", "upload_time_iso_8601": "2022-08-08T19:57:58.367883Z", "url": "https://files.pythonhosted.org/packages/f1/a8/3bba3ffcaa4b6d2df006c11d4d4aeed03937cb957a6805968a101c148692/VertFlow-0.1.4a1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.5": [ { "comment_text": "", "digests": { "blake2b_256": "0cfb1da118e8c739bae3a25521db4a135e8927a3bd49a8eb85338ac5dd18c386", "md5": "964e01712c807f366c0cccd21ef62f41", "sha256": "e4fa245f5bdf321a37d245270e62fccdbaaffbde5208205d32cc706a3b332375" }, "downloads": -1, "filename": "VertFlow-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "964e01712c807f366c0cccd21ef62f41", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 18679, "upload_time": "2022-12-15T14:25:37", "upload_time_iso_8601": "2022-12-15T14:25:37.767856Z", "url": "https://files.pythonhosted.org/packages/0c/fb/1da118e8c739bae3a25521db4a135e8927a3bd49a8eb85338ac5dd18c386/VertFlow-0.1.5-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "fdac5819d011073177a08d5ebe022617aea926d8fcafb31cc0588ff10e93d95c", "md5": "b3e2e5924756875c9fd34143fc7650bc", "sha256": "61414f67f68a396b294ef75a6bc84f6c8ab8218c89f37469cb2ecf8f80ec894c" }, "downloads": -1, "filename": "VertFlow-0.1.5.tar.gz", "has_sig": false, "md5_digest": "b3e2e5924756875c9fd34143fc7650bc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 14999, "upload_time": "2022-12-15T14:25:39", "upload_time_iso_8601": "2022-12-15T14:25:39.521561Z", "url": "https://files.pythonhosted.org/packages/fd/ac/5819d011073177a08d5ebe022617aea926d8fcafb31cc0588ff10e93d95c/VertFlow-0.1.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.6": [ { "comment_text": "", "digests": { "blake2b_256": "061f1af4e41de6a5ff61b016e9080f00c2f5b439c320f790f4ae6e9653a7a5ff", "md5": "03d95e15b603d128a5c539b326877070", "sha256": "8419654c1c1153983c40505a155e2e3d22a0517a53d8540cf8b645efbac3c21c" }, "downloads": -1, "filename": "VertFlow-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "03d95e15b603d128a5c539b326877070", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 18900, "upload_time": "2022-12-16T16:39:15", "upload_time_iso_8601": "2022-12-16T16:39:15.365316Z", "url": "https://files.pythonhosted.org/packages/06/1f/1af4e41de6a5ff61b016e9080f00c2f5b439c320f790f4ae6e9653a7a5ff/VertFlow-0.1.6-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "6bd54d0135604c4a08f0fdafff948db706793f1358fc1350f78e0df8d6e6d360", "md5": "a7c5a641fe4cef6279920487af1c8478", "sha256": "01e97310f2df4656902adfc2e1011ed89f761df196066dac944579f918031f68" }, "downloads": -1, "filename": "VertFlow-0.1.6.tar.gz", "has_sig": false, "md5_digest": "a7c5a641fe4cef6279920487af1c8478", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 15272, "upload_time": "2022-12-16T16:39:16", "upload_time_iso_8601": "2022-12-16T16:39:16.849360Z", "url": "https://files.pythonhosted.org/packages/6b/d5/4d0135604c4a08f0fdafff948db706793f1358fc1350f78e0df8d6e6d360/VertFlow-0.1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.7": [ { "comment_text": "", "digests": { "blake2b_256": "7f97c2064bb27f480c82fe50b12c71c7acc804a9d65e74c028101c41ebbb4c45", "md5": "dcc74df08ab83d0c92262654c4420b71", "sha256": "0aeedd89dab974c7f62362cd2b6ed236af96e8ff25edd0a0d5d082b623e0c5dd" }, "downloads": -1, "filename": "VertFlow-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "dcc74df08ab83d0c92262654c4420b71", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 18975, "upload_time": "2022-12-16T16:58:24", "upload_time_iso_8601": "2022-12-16T16:58:24.997407Z", "url": "https://files.pythonhosted.org/packages/7f/97/c2064bb27f480c82fe50b12c71c7acc804a9d65e74c028101c41ebbb4c45/VertFlow-0.1.7-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "1852f1aa96495c9947277daba07036f228a9072e57aaaf66d868f00f395adad2", "md5": "68af4c7f99dd30e9ce6f858b0587cd8b", "sha256": "d4d47ff10690e21c9554eeb4cbcbfc6bcd856cb397947a345480ee97e248017f" }, "downloads": -1, "filename": "VertFlow-0.1.7.tar.gz", "has_sig": false, "md5_digest": "68af4c7f99dd30e9ce6f858b0587cd8b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 15379, "upload_time": "2022-12-16T16:58:25", "upload_time_iso_8601": "2022-12-16T16:58:25.976845Z", "url": "https://files.pythonhosted.org/packages/18/52/f1aa96495c9947277daba07036f228a9072e57aaaf66d868f00f395adad2/VertFlow-0.1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "blake2b_256": "454c0d6d26e6fbc13fed26b2cc82cc677bf343b891b8573c5d9cc1ecf7ed4d1b", "md5": "f6d98c0787261af89da5b497a63106e7", "sha256": "24d413d2bc82363658da75339b24057f2a9638a341b93ac1eb6fd8abc9a5c19d" }, "downloads": -1, "filename": "VertFlow-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f6d98c0787261af89da5b497a63106e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 18975, "upload_time": "2022-12-16T17:25:32", "upload_time_iso_8601": "2022-12-16T17:25:32.734784Z", "url": "https://files.pythonhosted.org/packages/45/4c/0d6d26e6fbc13fed26b2cc82cc677bf343b891b8573c5d9cc1ecf7ed4d1b/VertFlow-0.2.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "00e07cedfd20118a9f959e163bdcbb6682ed12f8c1bd738bab9c98778b7b92c3", "md5": "d89cef5d8c8c2b2029a62bc5f469b984", "sha256": "9576a5de4ba2e03f48d4ee04d5cb33c2174b38e3ba157056f7546945ea7debc9" }, "downloads": -1, "filename": "VertFlow-0.2.0.tar.gz", "has_sig": false, "md5_digest": "d89cef5d8c8c2b2029a62bc5f469b984", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 15387, "upload_time": "2022-12-16T17:25:34", "upload_time_iso_8601": "2022-12-16T17:25:34.601597Z", "url": "https://files.pythonhosted.org/packages/00/e0/7cedfd20118a9f959e163bdcbb6682ed12f8c1bd738bab9c98778b7b92c3/VertFlow-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "blake2b_256": "07a61e5f0f5aa09e4b991d36b9ead1d1accebce8fb5a27950b9f92acc4a4c696", "md5": "1808aef4ea29ee3b92b73bdb69f5d355", "sha256": "1eaeebb90b4fc627062ab47f3d5477dd01cdb7e388c4baf1c903dd09f74770e5" }, "downloads": -1, "filename": "VertFlow-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1808aef4ea29ee3b92b73bdb69f5d355", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19755, "upload_time": "2023-03-31T15:04:14", "upload_time_iso_8601": "2023-03-31T15:04:14.207789Z", "url": "https://files.pythonhosted.org/packages/07/a6/1e5f0f5aa09e4b991d36b9ead1d1accebce8fb5a27950b9f92acc4a4c696/VertFlow-0.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "c86a249c10d0c273d78f157ae1e9563f698d938277053c362834df1a73830f89", "md5": "0a6945a3400de3abab3b0b24afcb3b31", "sha256": "6b6049013bf65fa4aaa651338cc4cac7544df82dcd7a430a0fddd360fd7114ca" }, "downloads": -1, "filename": "VertFlow-0.3.0.tar.gz", "has_sig": false, "md5_digest": "0a6945a3400de3abab3b0b24afcb3b31", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 20761, "upload_time": "2023-03-31T15:04:15", "upload_time_iso_8601": "2023-03-31T15:04:15.550268Z", "url": "https://files.pythonhosted.org/packages/c8/6a/249c10d0c273d78f157ae1e9563f698d938277053c362834df1a73830f89/VertFlow-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "blake2b_256": "d288dd1f261d020a635cd4e82cfc116295c4a1b3da7dd1e5bd0c384ff31bf5ba", "md5": "072dd9660bfecf246d5e9871636091be", "sha256": "1001716675f2ae813eaa92f63951c25f7c9ea32a2c0cf3fb51b18a1518d3fc9e" }, "downloads": -1, "filename": "VertFlow-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "072dd9660bfecf246d5e9871636091be", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19853, "upload_time": "2023-05-12T15:20:16", "upload_time_iso_8601": "2023-05-12T15:20:16.039637Z", "url": "https://files.pythonhosted.org/packages/d2/88/dd1f261d020a635cd4e82cfc116295c4a1b3da7dd1e5bd0c384ff31bf5ba/VertFlow-0.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "a14cc44bb016457543744b2bea3ad4212c3ccf3a9789569a8920291bdef177bf", "md5": "95482c6ade0cde093c6efa7dfab5b465", "sha256": "0e3371fa65b737fb4a81db5443a7a4f10578b5df13767601cb07f929ea14ac00" }, "downloads": -1, "filename": "VertFlow-0.4.0.tar.gz", "has_sig": false, "md5_digest": "95482c6ade0cde093c6efa7dfab5b465", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 20854, "upload_time": "2023-05-12T15:20:17", "upload_time_iso_8601": "2023-05-12T15:20:17.654205Z", "url": "https://files.pythonhosted.org/packages/a1/4c/c44bb016457543744b2bea3ad4212c3ccf3a9789569a8920291bdef177bf/VertFlow-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.1": [ { "comment_text": "", "digests": { "blake2b_256": "091c540578712d57c17b46ab1cd66a2e038db2c7ccaf08502c9cf3952241c3cf", "md5": "5380297b1fd99ce43babee97f479e0aa", "sha256": "52135efe1dc2e3e377cd376f9f5c313e51ed999148311c3d927ddc3798b3778d" }, "downloads": -1, "filename": "VertFlow-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5380297b1fd99ce43babee97f479e0aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19893, "upload_time": "2023-07-28T13:25:42", "upload_time_iso_8601": "2023-07-28T13:25:42.003699Z", "url": "https://files.pythonhosted.org/packages/09/1c/540578712d57c17b46ab1cd66a2e038db2c7ccaf08502c9cf3952241c3cf/VertFlow-0.4.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "b09ccd5c631f375f8ccab8add3f126e9dcd5eebe317364b6d823679235529497", "md5": "d05c4d94cdc3ce4b6614b7631e2fc22c", "sha256": "7af593db9d960ede74cd70e70146a0bc67cac98f6d151fc5511848dca8a98f1e" }, "downloads": -1, "filename": "VertFlow-0.4.1.tar.gz", "has_sig": false, "md5_digest": "d05c4d94cdc3ce4b6614b7631e2fc22c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 20885, "upload_time": "2023-07-28T13:25:43", "upload_time_iso_8601": "2023-07-28T13:25:43.042875Z", "url": "https://files.pythonhosted.org/packages/b0/9c/cd5c631f375f8ccab8add3f126e9dcd5eebe317364b6d823679235529497/VertFlow-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "blake2b_256": "091c540578712d57c17b46ab1cd66a2e038db2c7ccaf08502c9cf3952241c3cf", "md5": "5380297b1fd99ce43babee97f479e0aa", "sha256": "52135efe1dc2e3e377cd376f9f5c313e51ed999148311c3d927ddc3798b3778d" }, "downloads": -1, "filename": "VertFlow-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "5380297b1fd99ce43babee97f479e0aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 19893, "upload_time": "2023-07-28T13:25:42", "upload_time_iso_8601": "2023-07-28T13:25:42.003699Z", "url": "https://files.pythonhosted.org/packages/09/1c/540578712d57c17b46ab1cd66a2e038db2c7ccaf08502c9cf3952241c3cf/VertFlow-0.4.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "blake2b_256": "b09ccd5c631f375f8ccab8add3f126e9dcd5eebe317364b6d823679235529497", "md5": "d05c4d94cdc3ce4b6614b7631e2fc22c", "sha256": "7af593db9d960ede74cd70e70146a0bc67cac98f6d151fc5511848dca8a98f1e" }, "downloads": -1, "filename": "VertFlow-0.4.1.tar.gz", "has_sig": false, "md5_digest": "d05c4d94cdc3ce4b6614b7631e2fc22c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 20885, "upload_time": "2023-07-28T13:25:43", "upload_time_iso_8601": "2023-07-28T13:25:43.042875Z", "url": "https://files.pythonhosted.org/packages/b0/9c/cd5c631f375f8ccab8add3f126e9dcd5eebe317364b6d823679235529497/VertFlow-0.4.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }