{ "info": { "author": "Ozzy", "author_email": "cfhamlet@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Programming Language :: Python :: Implementation :: CPython" ], "description": "# os-aio-pod\n\n[![Build Status](https://www.travis-ci.org/cfhamlet/os-aio-pod.svg?branch=master)](https://www.travis-ci.org/cfhamlet/os-aio-pod)\n[![codecov](https://codecov.io/gh/cfhamlet/os-aio-pod/branch/master/graph/badge.svg)](https://codecov.io/gh/cfhamlet/os-aio-pod)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/os-aio-pod.svg)](https://pypi.python.org/pypi/os-aio-pod)\n[![PyPI](https://img.shields.io/pypi/v/os-aio-pod.svg)](https://pypi.python.org/pypi/os-aio-pod)\n\n\nA container of AIO components.\n\nThis project is a framework for combining multiple AIO components into one. For example, you can easily extend your TCP server with a HTTP server to offer HTTP API. Usage is simple, write regular coroutine and config file, start with the command line tool, the framework will take care of the work loop.\n\nEach of the coroutine is a magic bean, this framework is a magic pod.\n\n\n\n## Conception\n\nCustom coroutine is packed as a ``asyncio.Task``, we call it: *bean*. Thanks to the Python asyncio, all beans can work together. A runner named *pod* maintains the beans and the whole work loop life cycle.\n\nEach bean has a unique id. label can also be used for identifying one or more beans.\n\nYou can access other beans by using a context object with id or label.\n\nSignals can be dispatched to each beans which registered callback function.\n\n## Install\n\n```\npip install os-aio-pod\n```\n\nThere are some extra packages can be installed for more features.\n\n| subpackage | install command | enables |\n| ---------- | -------------------------------------- | ------------------------------------------------------------ |\n| uvloop | ``pip install os-aio-pod[uvloop]`` | enable [uvloop](https://github.com/MagicStack/uvloop) |\n| uvicorn | ``pip install os-aio-pod[uvicorn]`` | enable [uvicorn](https://github.com/encode/uvicorn) http server adapter |\n| aiohttp | ``pip install os-aio-pod[aiohttp]`` | enable [aiohttp](https://github.com/aio-libs/aiohttp) http server adapter |\n| aiomonitor | ``pip install os-aio-pod[aiomonitor]`` | enable [aiomonitor](https://github.com/aio-libs/aiomonitor) adapter |\n\n\n\n## Usage\n\nThree steps:\n\n1. write your coroutine\n2. write a config file(Python file)\n3. run with ``os-aio-pod``\n\n### APIs\n\n#### Custom coroutine\n\nActually, there are three types of coroutine code for your choice:\n\n1. Regular coroutine, the ``hello`` object of the following example.\n\n ```\n import asyncio\n \n async def hello_world(**kwargs):\n print('hello world!')\n await asyncio.sleep(1)\n \n hello = hello_world()\n ```\n\n2. Regular coroutine fucntion, the ``hello_world`` function of the above example. Keyword arguments can be set in the config file.\n3. A class with ``async def __call__(self)`` method and have context as init arguments:\n\n ```\n class HelloWorld(object):\n \n def __init__(self, context):\n self.context = context\n \n async def __call__(self, **kwargs):\n print('hello world!')\n await asyncio.sleep(1)\n ```\n\n#### Context\n\nWhen you use class type coroutine, you can use the context to communicate with the framework and other beans.\n\n#### Signals\n\nThanks to [asyncio_dispatch](https://github.com/lenzenmi/asyncio_dispatch), we easily can register and deliver signals.\n\nTypically, you should only use context APIs to process signals.\n\nThe system ``SIGINT``,``SIGTERM`` are caught by the framework to handler shutdown stuff after dispatch to each registered callback.\n\nOther system signals are not supported yet.\n\n### Configure\n\nConfig file is a regular Python file, all upper case variables will pass to the frame work which can be accessed later. The reserved key words:\n\n* ``BEANS``: a list of bean config dict, the reserved key words of each bean config are: ``core``, ``label``, other keyword arguments will pass to your function\n\n ``core``: string path of your coroutine\n\n ``label``: optional, can be used to trace your bean\n\n* ``LOG_LEVEL``: logger level, default ``INFO``\n* ``LOOP_TYPE``: default is ``asyncio``, can be ``uvloop`` when you install uvloop\n* ``DEBUG``: enable debug mode, default ``False``\n* ``STOP_WAIT_TIME``: the wait time when recieve signal(``SIGINT``, ``SIGTERM``). Once timeout, all unfinished bean will be cancelled. Default is ``None``, indicate wait until all beans done\n\n\n\nExample:\n\n``config.py``\n\n```\nBEANS = [\n {\n 'core' : 'hello_world.HelloWorld',\n 'label': 'first-bean',\n 'key1' : 'value1',\n }\n]\n\nLOG_LEVEL = 'debug'\nLOOP_TYPE = 'asyncio'\nDEBUG = False\nSTOP_WAIT_TIME = 10\n```\n\n\n\n### Command line\n\n``os-aio-pod`` command can be used to start the whole framework, the typical usage:\n\n```\n$ os-aio-pod run -c config.py\n```\n\n\n\nThe reserved config key words(exclude ``BEANS``) can be set by passing command line options.\n\n```\n$ os-aio-pod run --help\n```\n\n\n\n### Built-In Components\n\nThere are some built-in adapters can be used for convenient:\n\n* [uvicorn](https://github.com/encode/uvicorn), a lightning-fast ASGI server\n\n ```\n pip install uvicorn\n ```\n\n ```\n BEANS = [\n {\n 'core': 'os_aio_pod.contrib.uvicorn.UvicornAdapter',\n 'app' : 'your.app.object.path'\n }\n ]\n ```\n\n a context object named ``aio_pod_context`` will attached to the app object\n\n* [aiohttp](https://github.com/aio-libs/aiohttp), a well known aio http server\n\n ```\n pip install aiohttp\n ```\n\n ```\n BEANS = [\n {\n 'core': 'os_aio_pod.contrib.aiohttp.WebAdapter',\n 'app' : 'your.app.object.path'\n }\n ]\n ```\n\n a context object named ``aio_pod_context`` will attached to the app object\n\n* [aiomonitor](https://github.com/aio-libs/aiomonitor), adds monitor and python REPL capabilities for asyncio application\n ```\n pip install aiomonitor\n ```\n\n ```\n BEANS = [\n {\n 'core': 'os_aio_pod.contrib.aiomonitor.AioMonitorAdapter',\n }\n ]\n ```\n\n* built-in tcp server\n\n An event driven server can be inherited from ``os_aio_pod.contrib.tcp_server.Server``(default server).\n \n If protocol is configured, low-level networking protocol interface will be used instead of the server's on_connect method. The server instance can be accessed with ``your_protocol.server``\n\n ```\n BEANS = [\n {\n 'core': 'os_aio_pod.contrib.tcp_server.TCPServerAdapter',\n # 'protocol': 'your.asyncio.Protocol.path'\n # 'server': 'your.event.driven.server'\n }\n ]\n ```\n\n \n\n\n## Unit Tests\n\n```\ntox\n```\n\n## License\n\nMIT licensed.", "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/cfhamlet/os-aio-pod", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "os-aio-pod", "package_url": "https://pypi.org/project/os-aio-pod/", "platform": "", "project_url": "https://pypi.org/project/os-aio-pod/", "project_urls": { "Homepage": "https://github.com/cfhamlet/os-aio-pod" }, "release_url": "https://pypi.org/project/os-aio-pod/0.1.16/", "requires_dist": null, "requires_python": ">=3.6", "summary": "A container of aio components.", "version": "0.1.16" }, "last_serial": 5403364, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "6184de2d7bdbf6475518de731427c13f", "sha256": "b9892ed9b5ca82e5139a32ac21b2ea5406afbe0e88815ad349a3a200a4cd0c79" }, "downloads": -1, "filename": "os-aio-pod-0.0.1.tar.gz", "has_sig": false, "md5_digest": "6184de2d7bdbf6475518de731427c13f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 7523, "upload_time": "2019-03-12T07:07:01", "url": "https://files.pythonhosted.org/packages/20/ad/cc4bb22ce78d67600a78d7b32c8cf2da7fb5ffe7b1210e7cdb7877e1334c/os-aio-pod-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "7f13ede0ea6f7647f509d6aebfa1ec7f", "sha256": "93d2ada985f8babb583e77fb8e84aca1a1ea5cac0bb27d0de0fc2de2ce0fd50c" }, "downloads": -1, "filename": "os-aio-pod-0.0.2.tar.gz", "has_sig": false, "md5_digest": "7f13ede0ea6f7647f509d6aebfa1ec7f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 13992, "upload_time": "2019-03-14T15:34:42", "url": "https://files.pythonhosted.org/packages/65/fb/6f10f0154bfd1ae95d69ad882e9069e576ed37cd098a0500fcea37ff291e/os-aio-pod-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "b13c009c67ad138461e2127992e86ab2", "sha256": "806ad5b267048361c812434046a00cf2e2612db46766f9e46170bcd8d02fc9cc" }, "downloads": -1, "filename": "os-aio-pod-0.0.3.tar.gz", "has_sig": false, "md5_digest": "b13c009c67ad138461e2127992e86ab2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 14011, "upload_time": "2019-03-15T14:15:53", "url": "https://files.pythonhosted.org/packages/63/c3/1debc841a75eda654e4450b05bd098b6db7646306aaae98090b3e4807ce1/os-aio-pod-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "7f4acdbc7523e6a9d486d1f4c5677950", "sha256": "a8aedf3910fbe86e0891ea41034f156f12e706d12573202f93f23bee0d029cea" }, "downloads": -1, "filename": "os-aio-pod-0.0.4.tar.gz", "has_sig": false, "md5_digest": "7f4acdbc7523e6a9d486d1f4c5677950", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15444, "upload_time": "2019-03-16T10:25:40", "url": "https://files.pythonhosted.org/packages/9f/54/96341a071f1ff2bc219e55da8e0fa12b189a2da4fb76274dbb4645fc249e/os-aio-pod-0.0.4.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "460496d050f3ffeb89c59a6ee7c67edd", "sha256": "b6c43807dafb4210d5afd903b321955e94af4ff948fa95ba29650fb928ea92dd" }, "downloads": -1, "filename": "os-aio-pod-0.1.0.tar.gz", "has_sig": false, "md5_digest": "460496d050f3ffeb89c59a6ee7c67edd", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15489, "upload_time": "2019-03-17T15:25:52", "url": "https://files.pythonhosted.org/packages/6a/84/9b67139d30e4fb18e481400464f18fcc36e6d4ae29f568dfc5ed214d7578/os-aio-pod-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "341ac95ffa0fb21fab4715bbda9075b7", "sha256": "8fde958c558eed026767bbcdf7046305aaf7970ad8dc00838dde6064da64c2f6" }, "downloads": -1, "filename": "os-aio-pod-0.1.1.tar.gz", "has_sig": false, "md5_digest": "341ac95ffa0fb21fab4715bbda9075b7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15696, "upload_time": "2019-03-18T03:45:58", "url": "https://files.pythonhosted.org/packages/65/a3/8db1002e9c80491d7d88b3a3d26c2c519422984caf096c342b3c4f819366/os-aio-pod-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "3ff02342e7f65128e39994304b1e3b3b", "sha256": "a48dc96e59c318cf9acd6a8419acaa1d54bd105c302976cd4afa6e21b4489d1d" }, "downloads": -1, "filename": "os-aio-pod-0.1.10.tar.gz", "has_sig": false, "md5_digest": "3ff02342e7f65128e39994304b1e3b3b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16685, "upload_time": "2019-03-22T15:42:34", "url": "https://files.pythonhosted.org/packages/3c/9b/1981343fe13b553cd878f6a064567b226e54990198790cedb4a4ee455fd6/os-aio-pod-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "87af93304782c506fd8f1634b27e3d4d", "sha256": "a3ef8500ba4cf824090688553eeb2e3bdeee0e4bef270700bb13929f944ab2da" }, "downloads": -1, "filename": "os-aio-pod-0.1.11.tar.gz", "has_sig": false, "md5_digest": "87af93304782c506fd8f1634b27e3d4d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16698, "upload_time": "2019-03-26T04:46:58", "url": "https://files.pythonhosted.org/packages/34/99/1c989b0f1a14bfe480b71dab42db439e405e2fa62d5545d071e4320db1dc/os-aio-pod-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "8fd37d39c52b1ca105beb8c72faf65ff", "sha256": "81d83d54dea872c03c0d4fb5804e7096fc38a8b2c8892447f20df6226db1632b" }, "downloads": -1, "filename": "os-aio-pod-0.1.12.tar.gz", "has_sig": false, "md5_digest": "8fd37d39c52b1ca105beb8c72faf65ff", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16701, "upload_time": "2019-04-01T09:01:01", "url": "https://files.pythonhosted.org/packages/67/dc/ccf7cf15ec4d4b4ce586c494e656b8b9a9dbbaf25dd534b1bd4920da3518/os-aio-pod-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "6224e7623a5b727f065e502f05cbfe4d", "sha256": "522e9634e3f58f7189e22c5e843f90e182331bd55c1172fb8e2a8d112bad78b2" }, "downloads": -1, "filename": "os-aio-pod-0.1.13.tar.gz", "has_sig": false, "md5_digest": "6224e7623a5b727f065e502f05cbfe4d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16716, "upload_time": "2019-05-06T14:02:23", "url": "https://files.pythonhosted.org/packages/73/88/135273fd39d61df913f8224ee428107005fa5a404dce405721723006771b/os-aio-pod-0.1.13.tar.gz" } ], "0.1.14": [ { "comment_text": "", "digests": { "md5": "054d869bbc519b61a60710457b94b746", "sha256": "0cea73eb3b9a0ba61a2623aefd9eea7d32a5e6d79caefec5b03f3516991529b0" }, "downloads": -1, "filename": "os-aio-pod-0.1.14.tar.gz", "has_sig": false, "md5_digest": "054d869bbc519b61a60710457b94b746", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16719, "upload_time": "2019-05-06T16:09:20", "url": "https://files.pythonhosted.org/packages/d5/34/7f59945d097d75de05e024a733f511381fe10e4f9e9069f6dad57ae5b0a3/os-aio-pod-0.1.14.tar.gz" } ], "0.1.15.2": [ { "comment_text": "", "digests": { "md5": "1d1e2eb0a0a920b28047930e84499a1f", "sha256": "35daa0a5f872588177cf21a4bd06d83fb37e3adaea637f1a666d7ac2789b8f2b" }, "downloads": -1, "filename": "os-aio-pod-0.1.15.2.tar.gz", "has_sig": false, "md5_digest": "1d1e2eb0a0a920b28047930e84499a1f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16804, "upload_time": "2019-05-31T08:02:39", "url": "https://files.pythonhosted.org/packages/29/7f/f4fc5459760ba8a29c81ea0ecb405fb34987f7b4ff06daccc6d8b2c6c4ae/os-aio-pod-0.1.15.2.tar.gz" } ], "0.1.15.3": [ { "comment_text": "", "digests": { "md5": "eb4c348dbffc5d5dc39d43007692e558", "sha256": "07c09b92dab83e7e8b5113ea24e4f467748ddc60769932cc7dda5a64e40400f0" }, "downloads": -1, "filename": "os-aio-pod-0.1.15.3.tar.gz", "has_sig": false, "md5_digest": "eb4c348dbffc5d5dc39d43007692e558", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 14383, "upload_time": "2019-06-14T09:39:38", "url": "https://files.pythonhosted.org/packages/e4/71/fca209ad7168478c729745a128b01b8aef09bee19f2c819b32cec761916e/os-aio-pod-0.1.15.3.tar.gz" } ], "0.1.16": [ { "comment_text": "", "digests": { "md5": "eb2ddf89539cec0ac60d6ae53f114a46", "sha256": "860877677f391103364a7066dce70af15505e4f0477217377abf7486b45d2ac7" }, "downloads": -1, "filename": "os-aio-pod-0.1.16.tar.gz", "has_sig": false, "md5_digest": "eb2ddf89539cec0ac60d6ae53f114a46", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 14392, "upload_time": "2019-06-15T07:48:53", "url": "https://files.pythonhosted.org/packages/a5/92/28f02008965ab68fca0e169cadfdec116614db4bebf33353c56485b11488/os-aio-pod-0.1.16.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "dc202a947244005c5cde4b458dc84018", "sha256": "048871c0b408989bc94f89f6a4ddbdab6c951f6befa739f478cac0e1fdbf123f" }, "downloads": -1, "filename": "os-aio-pod-0.1.2.tar.gz", "has_sig": false, "md5_digest": "dc202a947244005c5cde4b458dc84018", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 15716, "upload_time": "2019-03-18T04:31:39", "url": "https://files.pythonhosted.org/packages/2a/bc/6b3358ebc10c3b7658bde3032615cbbce85e2e195eb5b44704a1a00ee931/os-aio-pod-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "991d0d08ab1e35700b2b74cf14460a77", "sha256": "952e0aada294b7df5af324b2265614c48767a47e82be3a9e948d91f9ae89b65f" }, "downloads": -1, "filename": "os-aio-pod-0.1.3.tar.gz", "has_sig": false, "md5_digest": "991d0d08ab1e35700b2b74cf14460a77", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16056, "upload_time": "2019-03-19T14:41:29", "url": "https://files.pythonhosted.org/packages/15/43/65f7eccb34841f51274b22e39b6afd9e923bc5526d364baa9a31085df2d0/os-aio-pod-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "d3ae12ac33432c4d41129b4f4f01a7de", "sha256": "68bb214191850388452f5f3c221bed136c1bd7b8368cc3cbd7fb52a06972a826" }, "downloads": -1, "filename": "os-aio-pod-0.1.4.tar.gz", "has_sig": false, "md5_digest": "d3ae12ac33432c4d41129b4f4f01a7de", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16104, "upload_time": "2019-03-20T03:41:40", "url": "https://files.pythonhosted.org/packages/44/5c/aba9190ab8876d9dea6ada33b64f17de4741b06f3357c3cdfbec255d82db/os-aio-pod-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "9e02322ef75d1f5c3030cf527d74cbda", "sha256": "8b542f328c04b119104dab7c9deb48777eab975dc71065353083ac3fe7880948" }, "downloads": -1, "filename": "os-aio-pod-0.1.5.tar.gz", "has_sig": false, "md5_digest": "9e02322ef75d1f5c3030cf527d74cbda", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16239, "upload_time": "2019-03-20T07:13:35", "url": "https://files.pythonhosted.org/packages/96/e6/40a903fcb8126015fccf2ab9eadd074f5575287cd1dadbfcd1538f0d655a/os-aio-pod-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "efddb100d51b026ccb3c2e3dfc4615bc", "sha256": "cbea0cf970850a9faf38f376e2beab739651143dbb2b058381789548fa7e5542" }, "downloads": -1, "filename": "os-aio-pod-0.1.6.tar.gz", "has_sig": false, "md5_digest": "efddb100d51b026ccb3c2e3dfc4615bc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16327, "upload_time": "2019-03-20T15:22:49", "url": "https://files.pythonhosted.org/packages/71/fa/6c4e98bb95bb96a060cc49ea0dee341196d100ea9a1900418e105e59e705/os-aio-pod-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "f94472a68f88e896f6e665759583c904", "sha256": "1434daab99bd87c0034d00a7ddb1dd7406faf2433e5c8db681c271a38de613b0" }, "downloads": -1, "filename": "os-aio-pod-0.1.7.tar.gz", "has_sig": false, "md5_digest": "f94472a68f88e896f6e665759583c904", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16388, "upload_time": "2019-03-21T03:19:07", "url": "https://files.pythonhosted.org/packages/42/f1/e23a9a2ebe72855c9ca70922a03840804cf6c225c20ea7c0854956002b07/os-aio-pod-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "210028bc9b74e600807912257a76a1d1", "sha256": "b77f734cd97f87894a082cee4db15029802f5458b7ee266740e8fdc7d8defd23" }, "downloads": -1, "filename": "os-aio-pod-0.1.8.tar.gz", "has_sig": false, "md5_digest": "210028bc9b74e600807912257a76a1d1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16689, "upload_time": "2019-03-22T10:33:57", "url": "https://files.pythonhosted.org/packages/67/d8/735d22d29d2f6ebc196119c68a6ebde93f3261b71ef19c424a1953191a80/os-aio-pod-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "0104a307a71a465ae664e11023e9aa99", "sha256": "2266b16f662674fa52a69fd0f2302e5e28d9b705e152ef5c762bf5a170df7c91" }, "downloads": -1, "filename": "os-aio-pod-0.1.9.tar.gz", "has_sig": false, "md5_digest": "0104a307a71a465ae664e11023e9aa99", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 16757, "upload_time": "2019-03-22T14:47:54", "url": "https://files.pythonhosted.org/packages/6c/05/7cea9f9c3ca902723567a8ed3d64cd6b529e0d5ec181fe9abf9a34485673/os-aio-pod-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "eb2ddf89539cec0ac60d6ae53f114a46", "sha256": "860877677f391103364a7066dce70af15505e4f0477217377abf7486b45d2ac7" }, "downloads": -1, "filename": "os-aio-pod-0.1.16.tar.gz", "has_sig": false, "md5_digest": "eb2ddf89539cec0ac60d6ae53f114a46", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 14392, "upload_time": "2019-06-15T07:48:53", "url": "https://files.pythonhosted.org/packages/a5/92/28f02008965ab68fca0e169cadfdec116614db4bebf33353c56485b11488/os-aio-pod-0.1.16.tar.gz" } ] }