{ "info": { "author": "William W. Fisher", "author_email": "william.w.fisher@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: Unix", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: System :: Networking" ], "description": "zof: OpenFlow Micro-Framework\n=============================\n\n|MIT licensed| |Build Status| |codecov.io|\n\n*zof* is a Python framework for creating asyncio-based applications that control \nthe network using the OpenFlow protocol.\n\nSupported Features\n------------------\n\n- OpenFlow versions 1.0 - 1.4 (with partial support for 1.5)\n- TLS connections\n- Limited packet parsing and generation: ARP, LLDP, IPv4, IPv6, UDP, TCP, ICMPv4, ICMPv6\n- App's can simulate switches; Supports both sides of the OpenFlow protocol\n\nRequirements\n------------\n\n- Python 3.5.1 or later\n- oftr command line tool\n\nInstall - Linux\n---------------\n\n.. code:: bash\n\n # Install /usr/bin/oftr dependency.\n sudo add-apt-repository ppa:byllyfish/oftr\n sudo apt-get update\n sudo apt-get install oftr\n\n # Create virtual environment and install latest zof.\n python3.5 -m venv myenv\n source myenv/bin/activate\n pip install zof\n\nThe oftr command line tool can also be installed on a `Raspberry PI or using HomeBrew `_.\n\nDemos\n-----\n\nTo run the layer2 controller demo::\n\n python -m zof.demo.layer2\n\nArchitecture\n------------\n\n*zof* uses a separate *oftr* process to terminate OpenFlow connections and translate OpenFlow messages to JSON.\n\n.. figure:: doc/sphinx/_static/img/zof_architecture.png\n :align: center\n :alt: Architecture diagram\n\n Architecture: The oftr process translates OpenFlow to JSON.\n\nYou construct OpenFlow messages via YAML strings or Python dictionaries. Incoming OpenFlow messages are generic Python objects. Special OpenFlow constants such as 'NO_BUFFER' appear as strings.\n\n.. code:: yaml\n\n type: FLOW_MOD\n msg:\n command: ADD\n match:\n - field: IN_PORT\n value: 1\n - field: ETH_DST\n value: 00:00:00:00:00:01\n instructions:\n - instruction: APPLY_ACTIONS\n actions:\n - action: OUTPUT\n port_no: 2\n\nThe basic building block of zof is an *app*. An *app* is associated with various message and event handlers.\nYou create an app object using the ``zof.Application`` class. Then, you associate handlers using the app's `message` decorator.\n\n.. code:: python\n\n import zof\n\n APP = zof.Application('app_name_here')\n\n @APP.message('packet_in')\n def packet_in(event):\n APP.logger.info('packet_in message %r', event)\n\n @APP.message(any)\n def other(event):\n APP.logger.info('other message %r', event)\n\n if __name__ == '__main__':\n zof.run()\n\nPlace the above text in a file named `demo.py` and run it with `python demo.py`. This app handles OpenFlow 'PACKET_IN' messages using the packet_in function. All other messages are dispatched to the `other` function. The app does not do anything; it just logs events.\n\nTo compose the demo.py program with the layer2 demo::\n\n python demo.py --x-modules=zof.demo.layer2\n\n\n.. |MIT licensed| image:: https://img.shields.io/badge/license-MIT-blue.svg\n :target: https://raw.githubusercontent.com/byllyfish/zof/master/LICENSE.txt\n.. |Build Status| image:: https://travis-ci.org/byllyfish/zof.svg?branch=master\n :target: https://travis-ci.org/byllyfish/zof\n.. |codecov.io| image:: https://codecov.io/gh/byllyfish/zof/coverage.svg?branch=master\n :target: https://codecov.io/gh/byllyfish/zof?branch=master\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/byllyfish/zof", "keywords": "openflow controller", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "zof", "package_url": "https://pypi.org/project/zof/", "platform": "", "project_url": "https://pypi.org/project/zof/", "project_urls": { "Homepage": "https://github.com/byllyfish/zof" }, "release_url": "https://pypi.org/project/zof/0.19.0/", "requires_dist": [ "aiohttp", "prometheus-client" ], "requires_python": "", "summary": "OpenFlow App Framework", "version": "0.19.0" }, "last_serial": 4365235, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "de6b2ad92850545834769d6d32284bc2", "sha256": "bf1ac99cdb72432c52657cda9542779e41b182a88fdea0609e99160fbc0154c5" }, "downloads": -1, "filename": "zof-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "de6b2ad92850545834769d6d32284bc2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50749, "upload_time": "2017-08-08T20:02:35", "url": "https://files.pythonhosted.org/packages/90/d9/99bb36472956846eacde032faab75e1ab085b7cba1962980e30bc0634caf/zof-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e9d8ddaf117738738c4d5aac2a3073d", "sha256": "04ac30cf3e99d77b0aa351f43756370c9d3df4a4d64659c83451e994729649b9" }, "downloads": -1, "filename": "zof-0.1.0.tar.gz", "has_sig": false, "md5_digest": "2e9d8ddaf117738738c4d5aac2a3073d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55071, "upload_time": "2017-08-08T20:02:36", "url": "https://files.pythonhosted.org/packages/67/d1/a01e4a320723bc0de9a28ab9dd0b38ab0a4d07994366387af77beec4a863/zof-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "abc507efd4d1f8f274e23ba62490c24a", "sha256": "f866017fc219d833de8a5fd1b901568116e17cf1facd23cb504f52c7407e33a5" }, "downloads": -1, "filename": "zof-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "abc507efd4d1f8f274e23ba62490c24a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 48911, "upload_time": "2017-08-10T05:09:33", "url": "https://files.pythonhosted.org/packages/88/61/77943e4e12017ffaf454ba48fe60bc201b353e98a6d94227c75eba02aa97/zof-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "79a7dc0146aa6f7c531692112c7bed7f", "sha256": "3be9049c2b0bf1a6f37549edcca5dbeda6e514fb0997a6400c310bd50ace4445" }, "downloads": -1, "filename": "zof-0.1.1.tar.gz", "has_sig": false, "md5_digest": "79a7dc0146aa6f7c531692112c7bed7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53707, "upload_time": "2017-08-10T05:09:36", "url": "https://files.pythonhosted.org/packages/39/b8/78ffd56552d35138ca8f23fdd3f0570dd21fa50e799540d41f1825fe2106/zof-0.1.1.tar.gz" } ], "0.10.0": [ { "comment_text": "", "digests": { "md5": "78287e06b3e5ff691d043d29f92bac20", "sha256": "3c793d61b2dc543bea8ddf25ff8d9cb2f73bda324111bc9576550ef0e95b9646" }, "downloads": -1, "filename": "zof-0.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "78287e06b3e5ff691d043d29f92bac20", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 61443, "upload_time": "2018-01-01T03:29:23", "url": "https://files.pythonhosted.org/packages/d6/ba/cfa883a3b3aac8abfb15cde772c9b3292c8d41f90fb04ef5339ede93a4ff/zof-0.10.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd00cb654e30f9c84edf18bca7980963", "sha256": "c31b07401bef237af173bb3cca893fca52550622e31d285f31b8a364aa132480" }, "downloads": -1, "filename": "zof-0.10.0.tar.gz", "has_sig": false, "md5_digest": "bd00cb654e30f9c84edf18bca7980963", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68265, "upload_time": "2018-01-01T03:29:26", "url": "https://files.pythonhosted.org/packages/f1/69/c476a2535bd3a003f057d15a217425fb18c3c06e737b7994b205a71449b7/zof-0.10.0.tar.gz" } ], "0.11.0": [ { "comment_text": "", "digests": { "md5": "77b0090c2174bfc1726ee758ed0b9a4b", "sha256": "0397f20f42a34e831a63edfbb3ef199ecdec2d3d4e3e3a37706d39406a80fe49" }, "downloads": -1, "filename": "zof-0.11.0-py3-none-any.whl", "has_sig": false, "md5_digest": "77b0090c2174bfc1726ee758ed0b9a4b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 63246, "upload_time": "2018-01-30T20:41:06", "url": "https://files.pythonhosted.org/packages/9f/b7/fb0084d32cf369cfcc1c427ca6b490e7c0179c895d86a37bdaf0ee8253cf/zof-0.11.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "39e653adf02f5283a29960ce5de67114", "sha256": "11bd2711ba53df15086d8669f6950274104d2f2624717aa2c67f5b517d533bf6" }, "downloads": -1, "filename": "zof-0.11.0.tar.gz", "has_sig": false, "md5_digest": "39e653adf02f5283a29960ce5de67114", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69882, "upload_time": "2018-01-30T20:41:08", "url": "https://files.pythonhosted.org/packages/cb/70/48e9140ec8dd3cae0237244cd2d12a3a3568c111b3c9de2b26ed12efcbbc/zof-0.11.0.tar.gz" } ], "0.12.0": [ { "comment_text": "", "digests": { "md5": "ef190ac7b7719fc782ba8f89d5cb1d70", "sha256": "3b06aa27f451a6c922043a6ef75619fc5bb0070b3cc7032ee9c27c647cbdb691" }, "downloads": -1, "filename": "zof-0.12.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ef190ac7b7719fc782ba8f89d5cb1d70", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65011, "upload_time": "2018-02-19T19:42:19", "url": "https://files.pythonhosted.org/packages/f4/c4/a53285e4318c27fe1bf2542e0934ff25b6773c1ad2b40d7b28bd49e8bc07/zof-0.12.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f10bc0699dc8add338fb266658f97b58", "sha256": "8ae65fcb7bc9a1564c70d1475b55916bacf793241f52849f4a66f701d1ced45b" }, "downloads": -1, "filename": "zof-0.12.0.tar.gz", "has_sig": false, "md5_digest": "f10bc0699dc8add338fb266658f97b58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72141, "upload_time": "2018-02-19T19:42:20", "url": "https://files.pythonhosted.org/packages/d6/d5/e366a7373bfe6741f9c2d0a986453ad4a94bff6584a7754a89fd170e50f3/zof-0.12.0.tar.gz" } ], "0.13.0": [ { "comment_text": "", "digests": { "md5": "519862b32165ff4ffa48f01fadf98069", "sha256": "7df4c29677fd71c7c7a886afa1d727e4574db434280f997553a22c20a2f25779" }, "downloads": -1, "filename": "zof-0.13.0-py3-none-any.whl", "has_sig": false, "md5_digest": "519862b32165ff4ffa48f01fadf98069", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65302, "upload_time": "2018-03-26T18:43:10", "url": "https://files.pythonhosted.org/packages/9b/16/8df715fd4326ac52612813fe9a9f01dfe61805fae225fc9c1f15babd91c9/zof-0.13.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "617b9a3358bbbcf52a2a155e7163eafb", "sha256": "4504ee24dad9d6c5e8d329af0ed10acd146091af1a042967b22d9783b106c248" }, "downloads": -1, "filename": "zof-0.13.0.tar.gz", "has_sig": false, "md5_digest": "617b9a3358bbbcf52a2a155e7163eafb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72900, "upload_time": "2018-03-26T18:43:12", "url": "https://files.pythonhosted.org/packages/1d/3c/f4f8a1e9c5781da120ee398ca7757fd9f222a15ed4b468a8e4b10f8ddfd2/zof-0.13.0.tar.gz" } ], "0.14.0": [ { "comment_text": "", "digests": { "md5": "364a2a77c066b59900fcc839548dc64f", "sha256": "e4c8680baab6d6a6f170f56c805368653aaa213dcdb8afd6fa7e449030803185" }, "downloads": -1, "filename": "zof-0.14.0-py3-none-any.whl", "has_sig": false, "md5_digest": "364a2a77c066b59900fcc839548dc64f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65284, "upload_time": "2018-04-13T01:33:20", "url": "https://files.pythonhosted.org/packages/08/da/b9b51be10ca7ce0fc8d6258c8f8d9ec5edf5285eabb0625a818caed424c5/zof-0.14.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8a035aff4b21cbc924fd033fdad07cbe", "sha256": "9818d5bd7203998dc27bfae28a5c41da27bc592fd47374a14b7aea93a6844a4e" }, "downloads": -1, "filename": "zof-0.14.0.tar.gz", "has_sig": false, "md5_digest": "8a035aff4b21cbc924fd033fdad07cbe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72977, "upload_time": "2018-04-13T01:33:21", "url": "https://files.pythonhosted.org/packages/a6/7f/bfac6b9dd8ff29f3e3bebefdb729b3838f8806085c8f66a00a66af4f04a7/zof-0.14.0.tar.gz" } ], "0.15.0": [ { "comment_text": "", "digests": { "md5": "bc12a2ae43d881ffe0bc4f6569fa66b0", "sha256": "ec7724f49c82cb6c12c2fac397cc2e4c1bba8bcc280b0dd1a4503fe6f7ac5f13" }, "downloads": -1, "filename": "zof-0.15.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bc12a2ae43d881ffe0bc4f6569fa66b0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65326, "upload_time": "2018-05-15T22:03:39", "url": "https://files.pythonhosted.org/packages/7c/70/d5b4d96cae2e7e0efe7c67dc41498ff16d5271891c7a8443bf73cd0b3e7b/zof-0.15.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dea6b23bfec11fa8be35a33767fbaea2", "sha256": "0175f3f353b73a202e614f2302c48caefea14a421214ff53f85349702237feb6" }, "downloads": -1, "filename": "zof-0.15.0.tar.gz", "has_sig": false, "md5_digest": "dea6b23bfec11fa8be35a33767fbaea2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73076, "upload_time": "2018-05-15T22:03:40", "url": "https://files.pythonhosted.org/packages/c6/f3/d2cc989e6f04a33409f01051c451199386780aa286da74ec16c388ae928f/zof-0.15.0.tar.gz" } ], "0.16.0": [ { "comment_text": "", "digests": { "md5": "0180109d84238fd6d461df6762fa15db", "sha256": "08e0d4841ea4aa892612f650a9e639d00ec2778c683925ab8bfbe1e1a07149be" }, "downloads": -1, "filename": "zof-0.16.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0180109d84238fd6d461df6762fa15db", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 67308, "upload_time": "2018-06-02T19:13:37", "url": "https://files.pythonhosted.org/packages/91/16/6da024a9eab3e6897eabc71eca1828191f53cbd6e8efe887e15b42bef78a/zof-0.16.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3dc992a488196b705a8c452a98357f9c", "sha256": "70b8497ab55fb7f4fa0c6a646e09d56c7b8748909e179525b45c9ed42ce7b59a" }, "downloads": -1, "filename": "zof-0.16.0.tar.gz", "has_sig": false, "md5_digest": "3dc992a488196b705a8c452a98357f9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74370, "upload_time": "2018-06-02T19:13:40", "url": "https://files.pythonhosted.org/packages/30/57/b9e6caaebfda667cbb25cc7e6979180db299e53a5a159194587a0f2e6357/zof-0.16.0.tar.gz" } ], "0.18.0": [ { "comment_text": "", "digests": { "md5": "3783db272a6e6869f87b5d8c1beceb15", "sha256": "6e95a33f145d61ed352443a88ea458ad887fdf773c834ae63a51a8a4e9a59c2d" }, "downloads": -1, "filename": "zof-0.18.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3783db272a6e6869f87b5d8c1beceb15", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65432, "upload_time": "2018-09-20T23:50:25", "url": "https://files.pythonhosted.org/packages/8c/5e/cae61bf490cf1bc28d32994260942f035a2339a1786a31fb9296e137e4c8/zof-0.18.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "80806b067674d9f03232d8c5fa72a348", "sha256": "7e1885aef2c1643badf5e9a4cfcbb9a4401f59320bf9b0e284c6f093e20e4be2" }, "downloads": -1, "filename": "zof-0.18.0.tar.gz", "has_sig": false, "md5_digest": "80806b067674d9f03232d8c5fa72a348", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73555, "upload_time": "2018-09-20T23:50:27", "url": "https://files.pythonhosted.org/packages/e4/72/a9100658ce45f4e366534edbd4adb4af554a2166b3e168c4cf70dd780f76/zof-0.18.0.tar.gz" } ], "0.19.0": [ { "comment_text": "", "digests": { "md5": "6ee3a4920dbdda29a5a5c687b7d99543", "sha256": "2403445ae8a18f3711ec436219827edff49a168e3d28a91ae2b2aecda8371889" }, "downloads": -1, "filename": "zof-0.19.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6ee3a4920dbdda29a5a5c687b7d99543", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 67425, "upload_time": "2018-10-11T17:26:51", "url": "https://files.pythonhosted.org/packages/a9/2f/f08d0ab1eaa1c853a323f46607f4648e13f235df1a0ab5f9777b12692f11/zof-0.19.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3ce13c91353169f4d93044e6ae416538", "sha256": "0be48b6f9070485a80331546ba55e7e48fdd53e41781603e6cdf2f32ffb0a9f7" }, "downloads": -1, "filename": "zof-0.19.0.tar.gz", "has_sig": false, "md5_digest": "3ce13c91353169f4d93044e6ae416538", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74837, "upload_time": "2018-10-11T17:26:53", "url": "https://files.pythonhosted.org/packages/3f/e2/01f42efbc02666a80fb581aa8ea410b82cc3514a4ebe1e158dbf9f9be4fe/zof-0.19.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "85ddee7acc5b956fd70987f6fff35660", "sha256": "d903895970249b963be2128890a986a16e41af113d156f94036444bd62e8401d" }, "downloads": -1, "filename": "zof-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "85ddee7acc5b956fd70987f6fff35660", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 49173, "upload_time": "2017-08-15T03:41:33", "url": "https://files.pythonhosted.org/packages/37/4a/6ea447cc2e4b3811e8ccc9ad19e10bf423d5cd924eaa81619ff8859aae3b/zof-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6d900eb6d77ead95ac6baaf26744d54c", "sha256": "3d1c64714964d94aeaa4cdf66d51a718c6b5ffbca705be045292d6e934367cc5" }, "downloads": -1, "filename": "zof-0.2.0.tar.gz", "has_sig": false, "md5_digest": "6d900eb6d77ead95ac6baaf26744d54c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54275, "upload_time": "2017-08-15T03:41:34", "url": "https://files.pythonhosted.org/packages/61/21/beea35efd43789bd7f904d6f113ddef227a6ee3e2a8b3592fbe43bc6d46e/zof-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "7c162dc94f9871353daf8b7d78dcc13f", "sha256": "b77dc294503a0537a2504a5a74c871067be8f2dcfe853ef1971ef97ab2cec70f" }, "downloads": -1, "filename": "zof-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "7c162dc94f9871353daf8b7d78dcc13f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50009, "upload_time": "2017-08-16T19:33:51", "url": "https://files.pythonhosted.org/packages/96/60/8ecba9dad9639cfbd1cb227b10c87a54011beb3eb08ad2b70ea0b9725248/zof-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "65038fef5a1fec9ed8753f4c5a1d527b", "sha256": "4b729f61345915b586c1b142357286aea525dafc0daaee62bb00adeda9eb3097" }, "downloads": -1, "filename": "zof-0.3.0.tar.gz", "has_sig": false, "md5_digest": "65038fef5a1fec9ed8753f4c5a1d527b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54725, "upload_time": "2017-08-16T19:33:53", "url": "https://files.pythonhosted.org/packages/d7/79/1005fd2603be8ada77147696a8f4e590ec22d5d59e27f8f7ea4ad4f355f7/zof-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "d813c939f5a1ee3f9b2c378aa56b8552", "sha256": "6d47e5d2a4875ef603d0ade2fdb829d789f5e98cea76e47b978813e6541ac6bf" }, "downloads": -1, "filename": "zof-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d813c939f5a1ee3f9b2c378aa56b8552", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50146, "upload_time": "2017-08-21T00:16:23", "url": "https://files.pythonhosted.org/packages/81/05/c85c3d3bb9cc2d46fb1a5c3a76efd54eb42c306fb6429ef49c110ff13597/zof-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b8f94307391d7c997ac2502a4e0a64be", "sha256": "8cb0a1d5e5eff6feccc24eac39d1e8bd1684467ee02b5c465f525cee916d8308" }, "downloads": -1, "filename": "zof-0.3.1.tar.gz", "has_sig": false, "md5_digest": "b8f94307391d7c997ac2502a4e0a64be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55210, "upload_time": "2017-08-21T00:16:25", "url": "https://files.pythonhosted.org/packages/22/57/359b88de97abb5a840aab9c8dbbb769cd0aee9b00580733f1f86b9a02267/zof-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "88959ca4029c0e28d7495c158c4e5f31", "sha256": "f9878e5b6cfe200b5ceb7d12ed652f8e3aa5429ebaefa07d6079d76211608109" }, "downloads": -1, "filename": "zof-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "88959ca4029c0e28d7495c158c4e5f31", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 50963, "upload_time": "2017-08-29T19:28:14", "url": "https://files.pythonhosted.org/packages/f6/35/5f576d383147dd6f0ce4342a2586ef49b07e0490c4696f6e2386ff372d9b/zof-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cbf108f82d4193f46158aeffa3fd320c", "sha256": "edf89327ffa3a857af211b0297dc665f5acb84af4b405af5ddf65f9203bb6b4a" }, "downloads": -1, "filename": "zof-0.4.0.tar.gz", "has_sig": false, "md5_digest": "cbf108f82d4193f46158aeffa3fd320c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55898, "upload_time": "2017-08-29T19:28:16", "url": "https://files.pythonhosted.org/packages/db/f7/698545e97003d6d246205922b2e583554cd10ff184875ae4cf8702f2d953/zof-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "da64547cfb1ff3a946e4dcf648e13c20", "sha256": "9db005305fb8d25dbe0fe5d30dc928ef4e2ae9c7dfa8901aebac9a0e266d3d1a" }, "downloads": -1, "filename": "zof-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "da64547cfb1ff3a946e4dcf648e13c20", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 51127, "upload_time": "2017-09-01T20:22:50", "url": "https://files.pythonhosted.org/packages/50/62/f1016efaecdd287ef127d3ded66b4b591b348ff645e5cc2710c9429efa0b/zof-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b072d04b37d75996ccd75269f382e56", "sha256": "c1b7910ba4142753ea56657e38b603b5fcc53193add577d9206e8c148c63df21" }, "downloads": -1, "filename": "zof-0.4.1.tar.gz", "has_sig": false, "md5_digest": "0b072d04b37d75996ccd75269f382e56", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56581, "upload_time": "2017-09-01T20:22:52", "url": "https://files.pythonhosted.org/packages/2f/ee/63fc51fd9843a5536c6a9c3340bcf7b365da63546d3e14885eae1819e41b/zof-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "d43b6e1775be8f1ec2fb8600651f6af3", "sha256": "25cfe624c240b62cfc05f36076b1c3bc86b06e35a40fd7babd279317a23c5a48" }, "downloads": -1, "filename": "zof-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d43b6e1775be8f1ec2fb8600651f6af3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 53242, "upload_time": "2017-09-11T06:02:37", "url": "https://files.pythonhosted.org/packages/b4/cd/35c5d3c3d10bea8be6f6afedfd4f5725acb9ddd1f5cf6762438d2eb1fb75/zof-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "92cd9f99b2e0f107170dad66dc05f3ac", "sha256": "0bd697c9ad0a9bb2e7cd07bc1ca8e4c30dff93348c1302dc9a980a5e900e9cd6" }, "downloads": -1, "filename": "zof-0.5.0.tar.gz", "has_sig": false, "md5_digest": "92cd9f99b2e0f107170dad66dc05f3ac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58665, "upload_time": "2017-09-11T06:02:39", "url": "https://files.pythonhosted.org/packages/bd/50/06720f7aa5ad85c64cc7bfa6d5a18f0c0dead7e69e3e5fd007f659dd21b9/zof-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "b979fed21e10438e755f3c6835e46595", "sha256": "e78fcac9aa73c23f94b14fee4414d82fc2236a2eb44f3433594231dc5474a3eb" }, "downloads": -1, "filename": "zof-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b979fed21e10438e755f3c6835e46595", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 55227, "upload_time": "2017-10-08T16:54:31", "url": "https://files.pythonhosted.org/packages/42/35/94f5567cc38555bd8b9fcf5c44f9ad2a2203f86a3bcf05bd0cbd630982b4/zof-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "68f96f64c5d502b307249d62334c271e", "sha256": "7f12d2e1d922acfe644f690acea1e0dfb33b740083b08f910a7e2f26cf1fea43" }, "downloads": -1, "filename": "zof-0.6.0.tar.gz", "has_sig": false, "md5_digest": "68f96f64c5d502b307249d62334c271e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60952, "upload_time": "2017-10-08T16:54:34", "url": "https://files.pythonhosted.org/packages/44/93/72dd3ce52d754950668fcfa2eeda145b449a14c0890966551fdd9aa62e79/zof-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "b07921073725e313eb87eb64ca33e589", "sha256": "8ac69263c0043793189ab8a70269f5d9f526e74a19f1575b0c1564038cf5884e" }, "downloads": -1, "filename": "zof-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b07921073725e313eb87eb64ca33e589", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 59646, "upload_time": "2017-10-30T06:54:07", "url": "https://files.pythonhosted.org/packages/bb/f9/36a1692c42e5ee783ab7a5d3c55d949003d18834f016b8648bdc289ec705/zof-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8e0a78770d7674c6b2e84177b913c5a8", "sha256": "0fc16abee033458716414901113bc2adddb2ce29f1694b2ef8e9c7a4290b8834" }, "downloads": -1, "filename": "zof-0.7.0.tar.gz", "has_sig": false, "md5_digest": "8e0a78770d7674c6b2e84177b913c5a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65343, "upload_time": "2017-10-30T06:54:08", "url": "https://files.pythonhosted.org/packages/eb/54/46c0d900a279c6961c58035f2d974da066a52656ced8ceea07ddec262bfa/zof-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "87f8d2ddb857d7da0a00de6b23524597", "sha256": "029523747f5843bc75db058811135768804ce917cc6442fb3a9a719ecc4bb7d6" }, "downloads": -1, "filename": "zof-0.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "87f8d2ddb857d7da0a00de6b23524597", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 59105, "upload_time": "2017-11-14T23:50:01", "url": "https://files.pythonhosted.org/packages/7d/cb/13fc7535bd44d44f41af398a7f2c0128d57089918a09cb26b059eb3aad9a/zof-0.8.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3631c615d60881f4ac36f6b5e5399d4", "sha256": "a465e6698eba9ca9091e37accca9a3425d64e94e698f7405f52b20b8ff4305ff" }, "downloads": -1, "filename": "zof-0.8.0.tar.gz", "has_sig": false, "md5_digest": "e3631c615d60881f4ac36f6b5e5399d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64766, "upload_time": "2017-11-14T23:50:03", "url": "https://files.pythonhosted.org/packages/1b/06/7232ea4361dd7e61be486319867f918850cf17ac5e0b662e5031b653ba9e/zof-0.8.0.tar.gz" } ], "0.9.0": [ { "comment_text": "", "digests": { "md5": "c4aa4dd714ed14c8747b1bf04cda3cec", "sha256": "a756c67a03b7bb0a62f0e74202bcfa9f27f1a74dfdc4a9834ab16f23770d5f26" }, "downloads": -1, "filename": "zof-0.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c4aa4dd714ed14c8747b1bf04cda3cec", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 60222, "upload_time": "2017-12-06T05:55:15", "url": "https://files.pythonhosted.org/packages/58/69/4ff3ad83a730b89bcbf984f6b0e5ac424dca2f1415957b17386aa3dd219a/zof-0.9.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1cb38cce81cf5ff447eb15763366b345", "sha256": "1dce32e2804bc3b053af69631f3a15101675af02a170fc624d84293d37072785" }, "downloads": -1, "filename": "zof-0.9.0.tar.gz", "has_sig": false, "md5_digest": "1cb38cce81cf5ff447eb15763366b345", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 65929, "upload_time": "2017-12-06T05:55:17", "url": "https://files.pythonhosted.org/packages/1f/bd/e85f8a1520c953ed881dd02c9616cda4953c7cb693ff5102a9bbf68cdf14/zof-0.9.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6ee3a4920dbdda29a5a5c687b7d99543", "sha256": "2403445ae8a18f3711ec436219827edff49a168e3d28a91ae2b2aecda8371889" }, "downloads": -1, "filename": "zof-0.19.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6ee3a4920dbdda29a5a5c687b7d99543", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 67425, "upload_time": "2018-10-11T17:26:51", "url": "https://files.pythonhosted.org/packages/a9/2f/f08d0ab1eaa1c853a323f46607f4648e13f235df1a0ab5f9777b12692f11/zof-0.19.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3ce13c91353169f4d93044e6ae416538", "sha256": "0be48b6f9070485a80331546ba55e7e48fdd53e41781603e6cdf2f32ffb0a9f7" }, "downloads": -1, "filename": "zof-0.19.0.tar.gz", "has_sig": false, "md5_digest": "3ce13c91353169f4d93044e6ae416538", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74837, "upload_time": "2018-10-11T17:26:53", "url": "https://files.pythonhosted.org/packages/3f/e2/01f42efbc02666a80fb581aa8ea410b82cc3514a4ebe1e158dbf9f9be4fe/zof-0.19.0.tar.gz" } ] }