{ "info": { "author": "IOpipe", "author_email": "dev@iopipe.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "IOpipe Analytics & Distributed Tracing Agent for Python\n=======================================================\n\n`Build Status `__ `Code\nCoverage `__ `PyPI\nVersion `__ `Apache\n2.0 `__\n`Slack `__\n\nThis package provides analytics and distributed tracing for event-driven\napplications running on AWS Lambda.\n\n- `Installation `__\n- `Usage `__\n\n - `Configuration `__\n - `Reporting\n Exceptions `__\n - `Custom\n Metrics `__\n - `Labels `__\n - `Core\n Agent `__\n - `Disabling\n Reporting `__\n - `Step\n Functions `__\n\n- `Plugins `__\n\n - `Event Info\n Plugin `__\n - `Logger\n Plugin `__\n - `Profiler\n Plugin `__\n - `Trace\n Plugin `__\n\n - `Auto DB\n Tracing `__\n - `Auto HTTP\n Tracing `__\n\n - `Creating\n Plugins `__\n\n- `Supported Python\n Versions `__\n- `Lambda\n Layers `__\n- `Framework\n Integration `__\n\n - `Chalice `__\n - `Serverless `__\n - `Zappa `__\n - `Accessing\n Context `__\n\n- `Contributing `__\n- `Running\n Tests `__\n- `License `__\n\nInstallation\n------------\n\nWe expect you will import this library into an existing (or new) Python\nproject intended to be run on AWS Lambda. On Lambda, functions are\nexpected to include module dependencies within their project paths, thus\nwe use ``-t $PWD``. Users building projects with a requirements.txt file\nmay simply add ``iopipe`` to their dependencies.\n\nFrom your project directory:\n\n.. code:: bash\n\n $ pip install iopipe -t .\n\n # If running locally or in other environments _besides_ AWS Lambda:\n $ pip install iopipe[local] -t .\n\nYour folder structure for the function should look similar to:\n\n::\n\n index.py # contains your lambda handler\n /iopipe\n - __init__.py\n - iopipe.py\n /requests\n - __init__.py\n - api.py\n - ...\n\nInstallation of the requests library is necessary for local dev/test,\nbut not when running on AWS Lambda as this library is part of the\ndefault environment via the botocore library.\n\nMore details about lambda deployments are available in the `AWS\ndocumentation `__.\n\nUsage\n-----\n\nSimply use our decorator to report metrics:\n\n.. code:: python\n\n from iopipe import IOpipe\n\n iopipe = IOpipe('your project token here')\n\n @iopipe\n def handler(event, context):\n pass\n\nThe agent comes preloaded with the `Event\nInfo `__,\n`Profiler `__\nand `Trace `__\nplugins. See the relevant plugin sections for usage.\n\nConfiguration\n~~~~~~~~~~~~~\n\nThe following may be set as kwargs to the IOpipe class initializer:\n\n``token`` (string: required)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nYour IOpipe project token. If not supplied, the environment variable\n``$IOPIPE_TOKEN`` will be used if present. `Find your project\ntoken `__\n\n``debug`` (bool: optional = False)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nDebug mode will log all data sent to IOpipe servers. This is also a good\nway to evaluate the sort of data that IOpipe is receiving from your\napplication. If not supplied, the environment variable ``IOPIPE_DEBUG``\nwill be used if present.\n\n``enabled`` (bool: optional = True)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nConditionally enable/disable the agent. For example, you will likely\nwant to disabled the agent during development. The environment variable\n``$IOPIPE_ENABLED`` will also be checked.\n\n``network_timeout`` (int: optional = 5000)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThe number of milliseconds IOpipe will wait while sending a report\nbefore timing out. If not supplied, the environment variable\n``$IOPIPE_NETWORK_TIMEOUT`` will be used if present.\n\n``timeout_window`` (int: optional = 150)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nBy default, IOpipe will capture timeouts by exiting your function 150\nmilliseconds early from the AWS configured timeout, to allow time for\nreporting. You can disable this feature by setting ``timeout_window`` to\n``0`` in your configuration. If not supplied, the environment variable\n``$IOPIPE_TIMEOUT_WINDOW`` will be used if present.\n\nReporting Exceptions\n~~~~~~~~~~~~~~~~~~~~\n\nThe IOpipe decorator will automatically catch, trace and reraise any\nuncaught exceptions in your function. If you want to trace exceptions\nraised in your case, you can use the ``.error(exception)`` method. This\nwill add the exception to the current report.\n\n.. code:: python\n\n from iopipe import IOpipe\n\n iopipe = IOpipe()\n\n # Example 1: uncaught exceptions\n\n @iopipe\n def handler(event, context):\n raise Exception('This exception will be added to the IOpipe report automatically')\n\n # Example 2: caught exceptions\n\n @iopipe\n def handler(event, context):\n try:\n raise Exception('This exception is being caught by your function')\n except Exception as e:\n # Makes sure the exception is added to the report\n context.iopipe.error(e)\n\nIt is important to note that a report is sent to IOpipe when ``error()``\nis called. So you should only record exceptions this way for failure\nstates. For caught exceptions that are not a failure state, it is\nrecommended to use custom metrics (see below).\n\nCustom Metrics\n~~~~~~~~~~~~~~\n\nYou can log custom values in the data sent upstream to IOpipe using the\nfollowing syntax:\n\n.. code:: python\n\n from iopipe import IOpipe\n\n iopipe = IOpipe()\n\n @iopipe\n def handler(event, context):\n # the name of the metric must be a string\n # numerical (int, long, float) and string types supported for values\n context.iopipe.metric('my_metric', 42)\n\nMetric key names are limited to 128 characters, and string values are\nlimited to 1024 characters.\n\nLabels\n~~~~~~\n\nLabel invocations sent to IOpipe by calling the ``label`` method with a\nstring (limit of 128 characters):\n\n.. code:: python\n\n from iopipe import IOpipe\n\n iopipe = IOpipe()\n\n @iopipe\n def handler(event, context):\n # the name of the label must be a string\n context.iopipe.label('this-invocation-is-special')\n\nCore Agent\n~~~~~~~~~~\n\nBy default, the IOpipe agent comes pre-loaded with all the bundled\nplugins in ``iopipe.contrib.*``. If you prefer to run the agent without\nplugins or configure which plugins are used, you can use ``IOpipeCore``:\n\n.. code:: python\n\n from iopipe import IOpipeCore\n from iopipe.contrib.trace import TracePlugin\n\n # Load IOpipe with only the trace plugin\n iopipe = IOpipeCore(plugins=[TracePlugin()])\n\n @iopipe\n def handler(event, context):\n pass\n\nDisabling Reporting\n~~~~~~~~~~~~~~~~~~~\n\nYou can programmatically disable IOpipe reporting for a single\ninvocation using the ``disable`` method:\n\n.. code:: python\n\n from iopipe import IOpipe\n\n iopipe = IOpipe()\n\n @iopipe\n def handler(event, context):\n if some_condition:\n context.iopipe.disable()\n\nReporting will be re-enabled on the next invocation.\n\nStep Functions\n~~~~~~~~~~~~~~\n\nIOpipe is compatible with AWS Lambda step functions. To enable step\nfunction tracing:\n\n.. code:: python\n\n from iopipe import IOpipe\n\n iopipe = IOpipe()\n\n @iopipe.step\n def handler(event, context):\n pass\n\nThe ``@iopipe.step`` decorator will enable step function mode, which\nwill collect additional meta data about your step functions.\n\nPlugins\n-------\n\nIOpipe\u2019s functionality can be extended through plugins. Plugins hook\ninto the agent lifecycle to allow you to perform additional analytics.\n\nEvent Info Plugin\n~~~~~~~~~~~~~~~~~\n\nThe IOpipe agent comes bundled with an event info plugin that\nautomatically extracts useful information from the ``event`` object and\ncreates custom metrics for them.\n\nHere\u2019s an example of how to use the event info plugin:\n\n.. code:: python\n\n from iopipe import IOpipe\n from iopipe.contrib.eventinfo import EventInfoPlugin\n\n iopipe = IOpipe(plugins=[EventInfoPlugin()])\n\n @iopipe\n def handler(event, context):\n # do something here\n\nWhen this plugin is installed, custom metrics will be created\nautomatically for the following event source data:\n\n- API Gateway\n- ALB\n- Alexa Skill Kit\n- CloudFront\n- Kinesis\n- Kinesis Firehose\n- S3\n- SES\n- SNS\n- SQS\n- Scheduled Events\n\nNow in your IOpipe invocation view you will see useful event\ninformation.\n\nLogger Plugin\n~~~~~~~~~~~~~\n\n**Note:** This plugin is in beta. Want to give it a try? Find us on\n`Slack `__.\n\nThe IOpipe agent comes bundled with a logger plugin that allows you to\nattach IOpipe to the ``logging`` module so that you can see your log\nmessages in the IOpipe dashboard.\n\nHere\u2019s an example of how to use the logger plugin:\n\n.. code:: python\n\n from iopipe import IOpipe\n from iopipe.contrib.logger import LoggerPlugin\n\n iopipe = IOpipe(plugins=[LoggerPlugin(enabled=True)])\n\n @iopipe\n def handler(event, context):\n context.iopipe.log.info('Handler has started execution')\n\nSince this plugin adds a handler to the ``logging`` module, you can use\n``logging`` directly as well:\n\n.. code:: python\n\n import logging\n\n from iopipe import IOpipe\n from iopipe.contrib.logger import LoggerPlugin\n\n iopipe = IOpipe(plugins=[LoggerPlugin(enabled=True)])\n logger = logging.getLogger()\n\n @iopipe\n def handler(event, context):\n logger.error('Uh oh')\n\nYou can also specify a log name, such as if you only wanted to log\nmessages for ``mymodule``:\n\n.. code:: python\n\n from iopipe import IOpipe\n from iopipe.contrib.logger import LoggerPlugin\n\n iopipe = IOpipe(plugins=[LoggerPlugin('mymodule', enabled=True)])\n\nThis would be equivalent to ``logging.getLogger('mymodule')``.\n\nBy default the logger plugin is disabled. You must explicitly set\n``enabled=True`` when instantiating or use the ``IOPIPE_LOGGER_ENABLED``\nenvironment variable to enable it.\n\nThe default logger plugin log level is ``logging.INFO``, but it can be\nset like this:\n\n.. code:: python\n\n import logging\n\n from iopipe import IOpipe\n from iopipe.contrib.logger import LoggerPlugin\n\n iopipe = IOpipe(plugins=[LoggerPlugin(enabled=True, level=logging.DEBUG)])\n\nPutting IOpipe into ``debug`` mode also sets the log level to\n``logging.DEBUG``.\n\nThe logger plugin also redirects stdout by default, so you can do the\nfollowing:\n\n.. code:: python\n\n from iopipe import IOpipe\n from iopipe.contrib.logger import LoggerPlugin\n\n iopipe = IOpipe(plugins=[LoggerPlugin(enabled=True)])\n\n @iopipe\n def handler(event, context):\n print('I will be logged')\n\nNow in your IOpipe invocation view you will see log messages for that\ninvocation.\n\nIf you prefer your print statements not to be logged, you can disable\nthis by setting ``redirect_stdout`` to ``False``:\n\n.. code:: python\n\n iopipe = IOpipe(plugins=[LoggerPlugin(enabled=True, redirect_stdout=False)])\n\n**Note:** Due to a change to the way the python3.7 runtime configures\nlogging, stdout redirection is disabled for this runtime. Use\n``context.iopipe.log.*`` instead.\n\nBy default the logger plugin will log messages to an in-memory buffer.\nIf you prefer to log messages to your Lambda function\u2019s ``/tmp``\ndirectory:\n\n.. code:: python\n\n iopipe = IOpipe(plugins=[LoggerPlugin(enabled=True, use_tmp=True)])\n\nWith ``use_tmp`` enabled, the plugin will automatically delete log files\nwritten to ``/tmp`` after each invocation.\n\nProfiler Plugin\n~~~~~~~~~~~~~~~\n\nThe IOpipe agent comes bundled with a profiler plugin that allows you to\nprofile your functions with\n`cProfile `__.\n\nHere\u2019s an example of how to use the profiler plugin:\n\n.. code:: python\n\n from iopipe import IOpipe\n from iopipe.contrib.profiler import ProfilerPlugin\n\n iopipe = IOpipe(plugins=[ProfilerPlugin()])\n\n @iopipe\n def handler(event, context):\n # do something here\n\nBy default the plugin will be disabled and can be enabled at runtime by\nsetting the ``IOPIPE_PROFILER_ENABLED`` environment variable to\n``true``/``True``.\n\nIf you want to enable the plugin for all invocations:\n\n.. code:: python\n\n iopipe = IOpipe(plugins=[ProfilerPlugin(enabled=True)])\n\nNow in your IOpipe invocation view you will see a \u201cProfiling\u201d section\nwhere you can download your profiling report.\n\nOnce you download the report you can open it using pstat\u2019s interactive\nbrowser with this command:\n\n.. code:: bash\n\n python -m pstats \n\nWithin the pstats browser you can sort and restrict the report in a\nnumber of ways, enter the ``help`` command for details. Refer to the\n`pstats\nDocumentation `__.\n\nTrace Plugin\n~~~~~~~~~~~~\n\nThe IOpipe agent comes bundled with a trace plugin that allows you to\nperform tracing.\n\nHere\u2019s an example of how to use the trace plugin:\n\n.. code:: python\n\n from iopipe import IOpipe\n from iopipe.contrib.trace import TracePlugin\n\n iopipe = IOpipe(plugins=[TracePlugin()])\n\n @iopipe\n def handler(event, context):\n context.iopipe.mark.start('expensive operation')\n # do something here\n context.iopipe.mark.end('expensive operation')\n\nOr you can use it as a context manager:\n\n.. code:: python\n\n from iopipe import IOpipe\n\n iopipe = IOpipe()\n\n @iopipe\n def handler(event, context):\n with context.iopipe.mark('expensive operation'):\n # do something here\n\nOr you can use it as a decorator:\n\n.. code:: python\n\n from iopipe import IOpipe\n\n iopipe = IOpipe()\n\n @iopipe\n def handler(event, context):\n @context.iopipe.mark.decorator('expensive operation'):\n def expensive_operation():\n # do something here\n\n expensive_operation()\n\nAny block of code wrapped with ``start`` and ``end`` or using the\ncontext manager or decorator will be traced and the data collected will\nbe available on your IOpipe dashboard.\n\nBy default, the trace plugin will auto-measure any trace you make. But\nyou can disable this by setting ``auto_measure`` to ``False``:\n\n.. code:: python\n\n from iopipe import IOpipe\n from iopipe.contrib.trace import TracePlugin\n\n iopipe = IOpipe(plugins=[TracePlugin(auto_measure=False)])\n\n @iopipe\n def handler(event, context):\n with context.iopipe.mark('expensive operation'):\n # do something here\n\n # Manually measure the trace\n context.iopipe.mark.measure('expensive operation')\n\nAuto DB Tracing\n^^^^^^^^^^^^^^^\n\nThe trace plugin can trace your database requests automatically. To\nenable this feature, set ``auto_db`` to ``True`` or set the\n``IOPIPE_TRACE_AUTO_DB_ENABLED`` environment variable. For example:\n\n.. code:: python\n\n iopipe = IOpipe(plugins=[TracePlugin(auto_db=True)])\n\nWith ``auto_db`` enabled, you will see traces for any database requests\nyou make within your function on your IOpipe dashboard. Currently this\nfeature supports\n`MongoDB `__,\n`MySQL `__,\n`PostgreSQL `__ and\n`Redis `__.\n\nMongoDB example:\n\n.. code:: python\n\n from iopipe import IOpipe\n from pymongo import MongoClient\n\n iopipe = IOpipe(plugins=[TracePlugin(auto_db=True)])\n\n @iopipe\n def handler(event, context):\n client = MongoClient(\"your-host-here\", 27017)\n\n db = client.test\n db.my_collection.insert_one({\"x\": 10})\n db.my_collection.find_one()\n\nRedis example:\n\n.. code:: python\n\n from iopipe import IOpipe\n from redis import Redis\n\n iopipe = IOpipe(plugins=[TracePlugin(auto_db=True)])\n\n @iopipe\n def handler(event, context):\n r = redis.Redis(host=\"your-host-here\", port=6379, db=0)\n r.set(\"foo\", \"bar\")\n r.get(\"foo\")\n\nAuto HTTP Tracing\n^^^^^^^^^^^^^^^^^\n\nThe trace plugin can trace your HTTP/HTTPS requests automatically. To\nenable this feature, set ``auto_http`` to ``True`` or set the\n``IOPIPE_TRACE_AUTO_HTTP_ENABLED`` environment variable. For example:\n\n.. code:: python\n\n iopipe = IOpipe(plugins=[TracePlugin(auto_http=True)])\n\nWith ``auto_http`` enabled, you will see traces for any HTTP/HTTPS\nrequests you make within your function on your IOpipe dashboard.\nCurrently this feature only supports the ``requests`` library, including\n``boto3`` and ``botocore`` support.\n\nTo filter which HTTP requests are traced use ``http_filter``:\n\n.. code:: python\n\n def http_filter(request, response):\n if request['url'].startswith('https://www.iopipe.com'):\n # Exceptions raised will delete the trace\n raise Exception(Do not trace this URL')\n # You can also remove data from the trace\n response['headers'].pop('Content-Type', None)\n return request, response\n\n iopipe = IOpipe(plugins=[TracePlugin(auto_http=True, http_filter=http_filter)])\n\nTo add additional HTTP headers to your ttrace data use ``http_headers``:\n\n.. code:: python\n\n http_headers = ['Cache-Control', 'Etag']\n\n iopipe = IOpipe(plugins=[TracePlugin(auto_http=True, http_headers=http_headers)\n\n.. _plugins-1:\n\nPlugins\n-------\n\nCreating Plugins\n~~~~~~~~~~~~~~~~\n\nTo create an IOpipe plugin you must implement the\n``iopipe.plugins.Plugin`` interface.\n\nHere is a minimal example:\n\n.. code:: python\n\n from iopipe.plugins import Plugin\n\n\n class MyPlugin(Plugin):\n name = 'my-plugin'\n version = '0.1.0'\n homepage = 'https://github.com/iopipe/my-plugin/'\n enabled = True\n\n def pre_setup(self, iopipe):\n pass\n\n def post_setup(self, iopipe):\n pass\n\n def pre_invoke(self, event, context):\n pass\n\n def post_invoke(self, event, context):\n pass\n\n def post_response(self, response):\n pass\n\n def pre_report(self, report):\n pass\n\n def post_report(self):\n pass\n\nAs you can see, this plugin doesn\u2019t do much. If you want to see a\nfunctioning example of a plugin check out the trace plugin at\n``iopipe.contrib.trace.plugin.TracePlugin``.\n\nPlugin Properties\n^^^^^^^^^^^^^^^^^\n\nA plugin has the following properties defined:\n\n- ``name``: The name of the plugin, must be a string.\n- ``version``: The version of the plugin, must be a string.\n- ``homepage``: The URL of the plugin\u2019s homepage, must be a string.\n- ``enabled``: Whether or not the plugin is enabled, must be a boolean.\n\nPlugin Methods\n^^^^^^^^^^^^^^\n\nA plugin has the following methods defined:\n\n- ``pre_setup``: Is called once prior to the agent initialization; is\n passed the ``iopipe`` instance.\n- ``post_setup``: Is called once after the agent is initialized; is\n passed the ``iopipe`` instance.\n- ``pre_invoke``: Is called prior to each invocation; is passed the\n ``event`` and ``context`` of the invocation.\n- ``post_invoke``: Is called after each invocation; is passed the\n ``event`` and ``context`` of the invocation.\n- ``post_response``: Is called after the invocation response; is passed\n the ``response``\\ value.\n- ``pre_report``: Is called prior to each report being sent; is passed\n the ``report`` instance.\n- ``post_report``: Is called after each report is sent; is passed the\n ``report`` instance.\n\nSupported Python Versions\n-------------------------\n\nThis package supports Python 2.7, 3.6 and 3.7, the runtimes supported by\nAWS Lambda.\n\nLambda Layers\n-------------\n\nIOpipe publishes `AWS Lambda\nLayers `__\nwhich are publicly available on AWS. Using a framework that supports\nlambda layers (such as SAM or Serverless), you can use the following\nARNs for your runtime:\n\n- python3.6, python3.7:\n ``arn:aws:lambda:$REGION:146318645305:layer:IOpipePython:$VERSION_NUMBER``\n- python2.7:\n ``arn:aws:lambda:$REGION:146318645305:layer:IOpipePython27:$VERSION_NUMBER``\n\nWhere ``$REGION`` is your AWS region and ``$VERSION_NUMBER`` is an\ninteger representing the IOpipe release. You can get the version number\nvia the `Releases `__\npage.\n\nThen in your SAM template (for example), you can add:\n\n.. code:: yaml\n\n Globals:\n Function:\n Layers:\n - arn:aws:lambda:us-east-1:146318645305:layer:IOpipePython:1\n\nAnd the IOpipe library will be included in your function automatically.\n\nYou can also wrap your IOpipe functions without a code change using\nlayers. For example, in your SAM template you can do the following:\n\n.. code:: yaml\n\n Resources:\n YourFunctionere:\n Type: 'AWS::Serverless::Function'\n Properties:\n CodeUri: path/to/your/code\n # Automatically wraps the handler with IOpipe\n Handler: iopipe.handler.wrapper\n Runtime: python3.6\n Environment:\n Variables:\n # Specifies which handler IOpipe should run\n IOPIPE_HANDLER: path.to.your.handler\n IOPIPE_TOKEN: 'your token here'\n\nWe also have an `example\napp `__\nusing layers with Serverless. It also demonstrates how to use layers\nwithout a code change.\n\n**NEW:** We have also released a `Serverless\nPlugin `__ to do\nall this for you automatically.\n\nFramework Integration\n---------------------\n\nIOpipe integrates with popular serverless frameworks. See below for\nexamples. If you don\u2019t see a framework you\u2019d like to see supported,\nplease create an issue.\n\nChalice\n~~~~~~~\n\nUsing IOpipe with the `Chalice `__\nframework is easy. Wrap your ``app`` like so:\n\n.. code:: python\n\n from chalice import Chalice\n from iopipe import IOpipe\n\n iopipe = IOpipe()\n\n app = Chalice(app_name='helloworld')\n\n @app.route('/')\n def index():\n return {'hello': 'world'}\n\n # Do this after defining your routes\n app = iopipe(app)\n\nServerless\n~~~~~~~~~~\n\nUsing IOpipe with\n`Serverless `__ is easy.\n\nFirst, we highly recommend the\n`serverless-python-requirements `__\nplugin:\n\n.. code:: bash\n\n $ npm install --save-dev serverless-python-requirements\n\nThis plugin will add ``requirements.txt`` support to Serverless. Once\ninstalled, add the following to your ``serverless.yml``:\n\n.. code:: yaml\n\n plugins:\n - serverless-python-requirements\n\nThen add ``iopipe``\\ to your ``requirements.txt``:\n\n.. code:: bash\n\n $ echo \"iopipe\" >> requirements.txt\n\nNow Serverless will ``pip install -r requirements.txt`` when packaging\nyour functions.\n\nKeep in mind you still need to add the ``@iopipe`` decorator to your\nfunctions. See `Usage `__\nfor details.\n\nBe sure to check out the\n`serverless-python-requirements `__\n``README`` as the plugin has a number of useful features for compiling\nAWS Lambda compatible Python packages.\n\nIf you\u2019re using the\n`serverless-wsgi `__ plugin,\nyou will need to wrap the wsgi handler it bundles with your function.\n\nThe easiest way to do this is to create a ``wsgi_wrapper.py`` module in\nyour project\u2019s root with the following:\n\n.. code:: python\n\n import imp\n\n from iopipe import IOpipe\n\n wsgi = imp.load_source('wsgi', 'wsgi.py')\n\n iopipe = IOpipe()\n handler = iopipe(wsgi.handler)\n\nThen in your ``serverless.yml``, instead of this:\n\n.. code:: yaml\n\n functions:\n api:\n handler: wsgi.handler\n ...\n\nUse this:\n\n.. code:: yaml\n\n functions:\n api:\n handler: wsgi_wrapper.handler\n ...\n\nZappa\n~~~~~\n\nUsing IOpipe with `Zappa `__ is easy.\nIn your project add the following:\n\n.. code:: python\n\n from iopipe import IOpipe\n from zappa.handler import lambda_handler\n\n iopipe = IOpipe()\n lambda_handler = iopipe(lambda_handler)\n\nThen in your ``zappa_settings.json`` file include the following:\n\n.. code:: js\n\n {\n \"lambda_handler\": \"module.path.to.lambda_handler\"\n }\n\nWhere ``module-path.to.lambda_handler`` is the Python module path to the\n``lambda_handler`` you created above. For example, if you put it in\n``myproject/__init__.py`` the path would be\n``myproject.lambda_handler``.\n\nAccessing Context\n~~~~~~~~~~~~~~~~~\n\nIf the framework you\u2019re using makes it non-trivial to access the Lamba\ncontext, you can use ``iopipe.context``. The ``iopipe.context`` is\n``None`` if outside of an invocation.\n\n.. code:: python\n\n from iopipe import IOpipe\n\n iopipe = IOpipe()\n\n # Be sure to check, can be None\n if iopipe.context:\n # do something with context\n\nContributing\n------------\n\nContributions are welcome. We use the\n`black `__ code formatter.\n\n.. code:: bash\n\n pip install black\n\nWe recommend using it with\n`pre-commit `__:\n\n.. code:: bash\n\n pip install pre-commit\n pre-commit install\n\nUsing these together will auto format your git commits.\n\nRunning Tests\n-------------\n\nIf you have ``tox`` installed, you can run the Python 2.7 and 3.6 tests\nwith:\n\n.. code:: bash\n\n tox\n\nIf you don\u2019t have ``tox`` installed you can also run:\n\n.. code:: bash\n\n python setup.py test\n\nWe also have make tasks to run tests in ``lambci/lambda:build-python``\nDocker containers:\n\n.. code:: bash\n\n make test\n\nLicense\n-------\n\nApache 2.0", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/iopipe/iopipe-python", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "iopipe", "package_url": "https://pypi.org/project/iopipe/", "platform": "", "project_url": "https://pypi.org/project/iopipe/", "project_urls": { "Homepage": "https://github.com/iopipe/iopipe-python" }, "release_url": "https://pypi.org/project/iopipe/1.10.2/", "requires_dist": null, "requires_python": "", "summary": "IOpipe agent for serverless Application Performance Monitoring", "version": "1.10.2" }, "last_serial": 5929781, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "f668490f5e28edc968223bcba1e79a68", "sha256": "cbe2d75c4035a40229748c4002e3098e88ba2e3acbe5c9d908422fb1d0a10d93" }, "downloads": -1, "filename": "iopipe-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f668490f5e28edc968223bcba1e79a68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3548, "upload_time": "2016-09-14T20:43:38", "url": "https://files.pythonhosted.org/packages/6d/e7/ba5dd073c91b1df05a9818bbadf13a721ea53758b71133e134dfb9c0c132/iopipe-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "ad55ca042e7db4f1f41f80a6e18b4a7d", "sha256": "322791deb9d0e6d6518e42e8104af489e9cca1ec758a3cad6c51b5214aaa129e" }, "downloads": -1, "filename": "iopipe-0.1.3.tar.gz", "has_sig": false, "md5_digest": "ad55ca042e7db4f1f41f80a6e18b4a7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8787, "upload_time": "2016-11-08T20:39:38", "url": "https://files.pythonhosted.org/packages/c2/59/96874ee7a1e82ef4c00d8c1302ec9c9d2387d4213f3c0b99800784da2964/iopipe-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "a381916a588e46799f63ed5a224d46e0", "sha256": "aee64e16e7578227a71c15dd88c384e1d1d5db368625490a5bc8b690d7f2dc26" }, "downloads": -1, "filename": "iopipe-0.1.4.tar.gz", "has_sig": false, "md5_digest": "a381916a588e46799f63ed5a224d46e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8796, "upload_time": "2016-11-29T18:51:44", "url": "https://files.pythonhosted.org/packages/8c/63/cf0c37a65bc25ebe8efe5ec6d6744155cb2ce117f8bd6c459de58005bde3/iopipe-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "79ab3b309249a8d4e2de92151b06e651", "sha256": "a9a7cc4460c4fcd3028ed8b997a575d326d5ccad56b131fea6e15ab1dde40076" }, "downloads": -1, "filename": "iopipe-0.1.5.tar.gz", "has_sig": false, "md5_digest": "79ab3b309249a8d4e2de92151b06e651", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8981, "upload_time": "2016-12-09T15:56:42", "url": "https://files.pythonhosted.org/packages/d3/46/5e7a68ea53902f6780e94146ff902772f1c5012ef460a125d6b1ab9b4c3f/iopipe-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "9a98dc53fc4b62c64718f4d853d83a7f", "sha256": "86f3b7f3422a0bbbff44492bf4793420e161db88f0ee4bbf35736585a278fbbf" }, "downloads": -1, "filename": "iopipe-0.1.6.tar.gz", "has_sig": false, "md5_digest": "9a98dc53fc4b62c64718f4d853d83a7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8938, "upload_time": "2016-12-09T19:02:05", "url": "https://files.pythonhosted.org/packages/12/64/8aa02725040e3549181f7c5e14390620f7a0d695421081acb16084694abe/iopipe-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "8c3051bd6ad0af48c47b2df725865710", "sha256": "f862b2357c0b36c7e0d50172b7d8b01acd334ac80a7538bee559f1c925fe62c4" }, "downloads": -1, "filename": "iopipe-0.1.7.tar.gz", "has_sig": false, "md5_digest": "8c3051bd6ad0af48c47b2df725865710", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9099, "upload_time": "2017-01-04T17:23:15", "url": "https://files.pythonhosted.org/packages/a2/46/703132cb5184a75b4db01a3da07ae9e4fffccd5d10275243569c689477e7/iopipe-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "bed1a7718ca4bd2bb6f70e9f93d8703f", "sha256": "67b066bfe5714b24bca6976ad46b9ff047a7e01233298573a6c16cbfe0fccb2c" }, "downloads": -1, "filename": "iopipe-0.1.8a.tar.gz", "has_sig": false, "md5_digest": "bed1a7718ca4bd2bb6f70e9f93d8703f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9161, "upload_time": "2017-02-02T15:46:27", "url": "https://files.pythonhosted.org/packages/e2/de/ac723b15891c190db54f50ec838c0959093ba51e444ae7b77e266478f46c/iopipe-0.1.8a.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "428d719d26f77dbc0e211007efef8f6a", "sha256": "b263b0dfadbe0e189f74bce3f9b8fa2cc9d434353188392338e056e4834ee55d" }, "downloads": -1, "filename": "iopipe-0.1.9-py2.7.egg", "has_sig": false, "md5_digest": "428d719d26f77dbc0e211007efef8f6a", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 9207, "upload_time": "2017-02-20T14:12:27", "url": "https://files.pythonhosted.org/packages/42/86/ddaffffbe8420d80d580bbf4303f2948259b4e9bc29b844c3f3db43ecd7b/iopipe-0.1.9-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "7319c03aa53e726ffdf9be04e1b5d16f", "sha256": "97a88877ede9998419068f246009ea6ccef184ef9be284f220e497026638492e" }, "downloads": -1, "filename": "iopipe-0.1.9.tar.gz", "has_sig": false, "md5_digest": "7319c03aa53e726ffdf9be04e1b5d16f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9056, "upload_time": "2017-02-20T14:12:28", "url": "https://files.pythonhosted.org/packages/06/ab/736514da08c7dc56f0ecf5f70bba71523acff114c4cf230b1d4531ba595a/iopipe-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9bb92341c0fc680e5151c65055c1db54", "sha256": "f085e4a00289e6becca0af05c5fefefea2e3ac58fb3ae36436003bbc42d148d2" }, "downloads": -1, "filename": "iopipe-0.2.0-py2.7.egg", "has_sig": false, "md5_digest": "9bb92341c0fc680e5151c65055c1db54", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 8912, "upload_time": "2017-02-21T22:11:54", "url": "https://files.pythonhosted.org/packages/85/38/c74c60e1fa96cf5f9999233cf187295ed0325b085385522e3cca073c1be6/iopipe-0.2.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "3b214767abf6596ebc94e5e8df33da36", "sha256": "50d5c6135f2fbce6929624afe206c18abe8c72aa119c220299d408e6eb7f9526" }, "downloads": -1, "filename": "iopipe-0.2.0.tar.gz", "has_sig": false, "md5_digest": "3b214767abf6596ebc94e5e8df33da36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8670, "upload_time": "2017-02-21T22:11:55", "url": "https://files.pythonhosted.org/packages/40/49/b74dc0bb4ad69e240555a0ef58c68da9ee95d22f0973504908e458ae4950/iopipe-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "823962095ed933c20bfce8f09d5cd2d0", "sha256": "532cb0db0efed3daccd6fe60338ddaa103f8b11688e8334aefffccfadf972dcf" }, "downloads": -1, "filename": "iopipe-0.3.0-py2.7.egg", "has_sig": false, "md5_digest": "823962095ed933c20bfce8f09d5cd2d0", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 9079, "upload_time": "2017-02-28T15:51:04", "url": "https://files.pythonhosted.org/packages/5c/38/dd7db14ee366fc1df2beaa5e73c3f2b1ad5b87a8c8219bb330c379465c9d/iopipe-0.3.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "1d684e70c401197e818a37e59805ca68", "sha256": "355e56e48bf5af42ec53075bd6a03d373ee1c76953006198717afad65e88f8ff" }, "downloads": -1, "filename": "iopipe-0.3.0.tar.gz", "has_sig": false, "md5_digest": "1d684e70c401197e818a37e59805ca68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8740, "upload_time": "2017-02-28T15:51:08", "url": "https://files.pythonhosted.org/packages/4e/b9/aceb3efe1211906cb41b2ab5d78313724ecec6be99ac64e13b2e6ee09e66/iopipe-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "54107e1c1799fb8e73b3a81b2c1e1068", "sha256": "23026b117c0713b6d19cf0e70b1b191ced89205f745462dc1ebbf4b6f72982ea" }, "downloads": -1, "filename": "iopipe-0.3.1-py2.7.egg", "has_sig": false, "md5_digest": "54107e1c1799fb8e73b3a81b2c1e1068", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 9066, "upload_time": "2017-03-01T17:00:15", "url": "https://files.pythonhosted.org/packages/31/5f/66a9cf9c1f83210974c1caf74ba3ebf3439efa373e1cb191da07ad97885e/iopipe-0.3.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "b05dd2cbec74fd0ce586aa5145dcfc5a", "sha256": "eb8bfd1872a6e267c244f6fed5bbb62b74af7e8322d6fc5ba647577d56c170d6" }, "downloads": -1, "filename": "iopipe-0.3.1.tar.gz", "has_sig": false, "md5_digest": "b05dd2cbec74fd0ce586aa5145dcfc5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8741, "upload_time": "2017-03-01T17:00:16", "url": "https://files.pythonhosted.org/packages/18/80/7a97b2260f39987ca117ed449709571a34ca7d98a7a3f8e789b0fd12186e/iopipe-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "5cd90def2fe6d3b41620eb75b084ad96", "sha256": "62761b0bc14b322b73903b53d9872d10b03414d5d5758d234fb56bc2e1e8cc40" }, "downloads": -1, "filename": "iopipe-0.4.0-py2.7.egg", "has_sig": false, "md5_digest": "5cd90def2fe6d3b41620eb75b084ad96", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 9223, "upload_time": "2017-03-16T20:16:23", "url": "https://files.pythonhosted.org/packages/7e/e0/0e39962d25bdd39004c729a07819fd720890845ffd5be3d0161a116ef0f2/iopipe-0.4.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "7b018bf89e7db3bcd25fae06b904270b", "sha256": "63104b8a75c19959aeb230533464000213cf96f7964cc5af995b35fc0bd87ef4" }, "downloads": -1, "filename": "iopipe-0.4.0.tar.gz", "has_sig": false, "md5_digest": "7b018bf89e7db3bcd25fae06b904270b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8877, "upload_time": "2017-03-16T20:16:23", "url": "https://files.pythonhosted.org/packages/7c/60/d4ff60d490ef783cb53361610b82dec2138be8c1fc0e44ed6806b57d85ba/iopipe-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "4b8d1368935df5d09bd6c54b98097ed2", "sha256": "94f4667db40f9f7d5730b9f1ffe59c0f54507a9963c6147a26a31f6d0b1d5b8f" }, "downloads": -1, "filename": "iopipe-0.4.1-py2.7.egg", "has_sig": false, "md5_digest": "4b8d1368935df5d09bd6c54b98097ed2", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 9250, "upload_time": "2017-03-21T15:30:06", "url": "https://files.pythonhosted.org/packages/57/33/b564465df15c764096a0e7f0832b873e0f83ea70ef4927fe6da658c5fe61/iopipe-0.4.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "ba42c6b36c10fda7af27b7049475c007", "sha256": "bd9c2093312a8703fa4d253792e6f8fb17027c9ebba6543b5b7198c18013a794" }, "downloads": -1, "filename": "iopipe-0.4.1.tar.gz", "has_sig": false, "md5_digest": "ba42c6b36c10fda7af27b7049475c007", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8892, "upload_time": "2017-03-21T15:30:08", "url": "https://files.pythonhosted.org/packages/f7/fb/5d78d612a550fafe1d0a5809622fac3974ad8fa5a77b2768752a871af76b/iopipe-0.4.1.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "6c566145864e64b4160fcae5062c50c0", "sha256": "246eb74944e655ef2c5960bc6dc414add34464b5f14ad829e94ab50b19479821" }, "downloads": -1, "filename": "iopipe-0.5.1-py2.7.egg", "has_sig": false, "md5_digest": "6c566145864e64b4160fcae5062c50c0", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 10626, "upload_time": "2017-06-12T18:07:44", "url": "https://files.pythonhosted.org/packages/af/be/ccc24957fdb5c350232950bf86152026e325d5b42ec0aeaf3e24a743c2fa/iopipe-0.5.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "6e19927407a3282a1a5192b5bf593809", "sha256": "325964c6ca7432431a5b6b9e4b4cfc846dd0bb31de29205896b386cfbeb8dea7" }, "downloads": -1, "filename": "iopipe-0.5.1.tar.gz", "has_sig": false, "md5_digest": "6e19927407a3282a1a5192b5bf593809", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9178, "upload_time": "2017-06-12T18:07:46", "url": "https://files.pythonhosted.org/packages/1f/d2/23424377a9c9b021ba84a8aaa8a60a3d82a0b706d3b0672c2836ea228756/iopipe-0.5.1.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "e1be872cb34c17e04d7ef5a0fce73ff7", "sha256": "9f27e41b840c808503b91ac67b3595fed42f8d258c67bbd0e41e3807560ee724" }, "downloads": -1, "filename": "iopipe-0.6.0-py2.7.egg", "has_sig": false, "md5_digest": "e1be872cb34c17e04d7ef5a0fce73ff7", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 10314, "upload_time": "2017-07-28T19:41:42", "url": "https://files.pythonhosted.org/packages/2c/d1/d34faa28b22b53d49638464cdd34f1770cce9c6b861e2e9e42dadd5b64ac/iopipe-0.6.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "a8f481de69bc13a908e2e84806c79f68", "sha256": "fa52986315f18f16b30ba06ec4ce6cdb110b46e193d8f7a76c95c0fa3c7be779" }, "downloads": -1, "filename": "iopipe-0.6.0.tar.gz", "has_sig": false, "md5_digest": "a8f481de69bc13a908e2e84806c79f68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9179, "upload_time": "2017-07-28T19:41:43", "url": "https://files.pythonhosted.org/packages/9a/92/31e664cd7487928cc4cc62db6a01b2a1d5717be468aafe3f00ef05112fd9/iopipe-0.6.0.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "befe29a7c63992f24213ed083fbeb9d8", "sha256": "8e30b088e2a754107ac030fe5342f3f82c01e9d2f262bee77dc6f88fa20ff04c" }, "downloads": -1, "filename": "iopipe-0.6.1-py2.7.egg", "has_sig": false, "md5_digest": "befe29a7c63992f24213ed083fbeb9d8", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 10313, "upload_time": "2017-08-08T17:22:35", "url": "https://files.pythonhosted.org/packages/de/e1/747c5697e9b81df2468d5719ace235685629d1edae99a2f46a517b870f87/iopipe-0.6.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "99b7401d83915781475de64458fb78f3", "sha256": "ad9b9a81f0fc72045aebcbd6c1169eaf7c8b8f6733a29abd1588fc37ee31956d" }, "downloads": -1, "filename": "iopipe-0.6.1.tar.gz", "has_sig": false, "md5_digest": "99b7401d83915781475de64458fb78f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9153, "upload_time": "2017-08-08T17:22:36", "url": "https://files.pythonhosted.org/packages/6d/53/3d8cf0b705c70cc8f4eda590bf23e7651bbcd578a1f73869b0d56665943c/iopipe-0.6.1.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "52b01fdc96aa0953fa2f7525046ab838", "sha256": "e3fd46155f8a634205fe1c5d526116854801f110f7982592eae75607cfa34905" }, "downloads": -1, "filename": "iopipe-0.7.0-py2.7.egg", "has_sig": false, "md5_digest": "52b01fdc96aa0953fa2f7525046ab838", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 12756, "upload_time": "2017-08-17T18:29:33", "url": "https://files.pythonhosted.org/packages/e5/03/8e27302f04dec5e8c1461cad7221d84530e132e410a706b980092ab1a72d/iopipe-0.7.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "518b83edf6cec12d59ee750f0f7b31f9", "sha256": "df27505a0f8084e89cb9bdb594083bb0d5d4ad09b4eb69f0aa17a786aed13c3e" }, "downloads": -1, "filename": "iopipe-0.7.0.tar.gz", "has_sig": false, "md5_digest": "518b83edf6cec12d59ee750f0f7b31f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9941, "upload_time": "2017-08-17T18:29:34", "url": "https://files.pythonhosted.org/packages/96/cb/f2be4bb5022a91a34b78fe8ad26391a79f64cc4632d16ce2cf3c633d4847/iopipe-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "c94bb1432645d25777fc6d7d5bf24de4", "sha256": "69ac9286a82506c47cce7d8829599761ad82ed14969d3be649bbb46e396fa93d" }, "downloads": -1, "filename": "iopipe-0.7.1-py2.7.egg", "has_sig": false, "md5_digest": "c94bb1432645d25777fc6d7d5bf24de4", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 12761, "upload_time": "2017-08-18T14:11:45", "url": "https://files.pythonhosted.org/packages/ee/7f/0142806be32080caf282eb100739651b9d89d8a4f47dda07f4bf25e36e9e/iopipe-0.7.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "f78c22da625b680bc33accb993386659", "sha256": "a4d23f16e66b6fd544a6a483c4b1ec73d59d4790f0062a033d3b870407afcdb2" }, "downloads": -1, "filename": "iopipe-0.7.1.tar.gz", "has_sig": false, "md5_digest": "f78c22da625b680bc33accb993386659", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9947, "upload_time": "2017-08-18T14:11:47", "url": "https://files.pythonhosted.org/packages/32/05/173faaf819e32b8b067f2903ec46f527a68142eefc38f1c7a00802586476/iopipe-0.7.1.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "70e5474c77a6681557c210018355c5c3", "sha256": "3ec2f28427709ca6bf310569828f5a138ce79efd796f9c94c91293801b0fab5f" }, "downloads": -1, "filename": "iopipe-0.8.0-py2.7.egg", "has_sig": false, "md5_digest": "70e5474c77a6681557c210018355c5c3", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 12979, "upload_time": "2017-11-08T21:07:56", "url": "https://files.pythonhosted.org/packages/10/ac/b8a89e6f189ed82ad01452125c59d5dc0e95cf1def8e6cb164d7d7783785/iopipe-0.8.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "08b606270d216cf9d4e82bc26d2dddf6", "sha256": "23c9a82732cd2947f06a48d43b3f5ac51095e14785dcc956938dcf169083f841" }, "downloads": -1, "filename": "iopipe-0.8.0.tar.gz", "has_sig": false, "md5_digest": "08b606270d216cf9d4e82bc26d2dddf6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10142, "upload_time": "2017-11-08T21:07:57", "url": "https://files.pythonhosted.org/packages/3b/fe/4407ad6eaf0acbf8b3c37d9cf4169604114c23268659d95c77664b5a7c74/iopipe-0.8.0.tar.gz" } ], "0.9.2": [ { "comment_text": "", "digests": { "md5": "88389f122d48f6c5a4e4dac0c2d50618", "sha256": "a2ae4c7f6f46609c1ac45d2d85a9628d3562c48e94ff607686706b610fb51589" }, "downloads": -1, "filename": "iopipe-0.9.2-py2.7.egg", "has_sig": false, "md5_digest": "88389f122d48f6c5a4e4dac0c2d50618", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 23238, "upload_time": "2017-12-08T14:06:54", "url": "https://files.pythonhosted.org/packages/9c/5f/c152e73487bb4c431bb66b400a590a6aef5257ea094c23aa319083b2b191/iopipe-0.9.2-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "67774019b338265a2785a7dce29b5b50", "sha256": "8f08d1f1e9eea085113a89b03981f43f39c5e32264d75f5e441b595a6df3758c" }, "downloads": -1, "filename": "iopipe-0.9.2.tar.gz", "has_sig": false, "md5_digest": "67774019b338265a2785a7dce29b5b50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14031, "upload_time": "2017-12-08T14:06:55", "url": "https://files.pythonhosted.org/packages/d9/35/2aaab718380eefd7a13ee69bef18197736590a71217bc38c6b8032658293/iopipe-0.9.2.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "b6fccf6d97ba2bff6de9824b3c7a73a5", "sha256": "1bd46e99736e96187b3071c826b46df22a9d3f94d49090429c1befc8782c22cc" }, "downloads": -1, "filename": "iopipe-1.0.0-py2.7.egg", "has_sig": false, "md5_digest": "b6fccf6d97ba2bff6de9824b3c7a73a5", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 35223, "upload_time": "2018-01-15T18:28:51", "url": "https://files.pythonhosted.org/packages/49/f0/75e5ef78e4a759b2879af4ddcf9994cb5be70da6e7fe59c1a2760fe3cd9d/iopipe-1.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "3073abca5adc8d20d5bd9f91a7402a52", "sha256": "996210fec29bb12ef731832437ce8249a493625cfda6e2a4994ff7175014a05f" }, "downloads": -1, "filename": "iopipe-1.0.0.tar.gz", "has_sig": false, "md5_digest": "3073abca5adc8d20d5bd9f91a7402a52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17601, "upload_time": "2018-01-15T18:28:53", "url": "https://files.pythonhosted.org/packages/6c/e3/efb26bd2da8b566bd5fd78e4de17c7cada5cd6e9ce46dce7b6d00ee337f0/iopipe-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "38a5f48e03265f5510d2757f756e06ed", "sha256": "6f5e0d76f77c4ae5e8d6e5e547dcd04149adffc6fe48fa8e758038ea476b8e57" }, "downloads": -1, "filename": "iopipe-1.0.1-py2.7.egg", "has_sig": false, "md5_digest": "38a5f48e03265f5510d2757f756e06ed", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 35279, "upload_time": "2018-01-30T17:44:29", "url": "https://files.pythonhosted.org/packages/b6/1c/3d899288e97613558465190bab54885a38d18bb1cbc92dadd469cc6d6c92/iopipe-1.0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "b66a7db460ab42bde89c37d1203941ee", "sha256": "cc37962acdf537401ebfe095a1fe1ffb24fe417207686c5ab4bac4870b8fed1b" }, "downloads": -1, "filename": "iopipe-1.0.1.tar.gz", "has_sig": false, "md5_digest": "b66a7db460ab42bde89c37d1203941ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17700, "upload_time": "2018-01-30T17:44:30", "url": "https://files.pythonhosted.org/packages/43/7d/e44a5e2fc0f243afc582d75eac21636c5f30f87136fb7e58094b6846b95b/iopipe-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "1b41deab913f2cbc93a4108e41258859", "sha256": "f9c1c0463564f71133bbd4df87c8536c7bcdcb45318eb3429fd4460af23be666" }, "downloads": -1, "filename": "iopipe-1.1.0-py2.7.egg", "has_sig": false, "md5_digest": "1b41deab913f2cbc93a4108e41258859", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 41770, "upload_time": "2018-02-13T17:38:08", "url": "https://files.pythonhosted.org/packages/d1/6c/6586c2a923a4d22118f717d1cc67444756cd62343dd8c226cc2b70a1f0b5/iopipe-1.1.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "53ee93a390efacfb488f8f8a49ccab21", "sha256": "0bc4e2d2d35faa7787cfeb9f4b5cd8c75d4e9f289fee83eb0bc95a06d46e5133" }, "downloads": -1, "filename": "iopipe-1.1.0.tar.gz", "has_sig": false, "md5_digest": "53ee93a390efacfb488f8f8a49ccab21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19886, "upload_time": "2018-02-13T17:38:09", "url": "https://files.pythonhosted.org/packages/f3/af/3cab883e620435ce4381c25f44eec956d03d20baa83486672d48383c3672/iopipe-1.1.0.tar.gz" } ], "1.10.0": [ { "comment_text": "", "digests": { "md5": "b3415a2e441868d7286cc9cf221b9676", "sha256": "533f1caa5490c94f1a76ca77cbd0200361197b4257e97074c4ba0c1835e7091b" }, "downloads": -1, "filename": "iopipe-1.10.0.tar.gz", "has_sig": false, "md5_digest": "b3415a2e441868d7286cc9cf221b9676", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 52304, "upload_time": "2019-08-20T16:56:17", "url": "https://files.pythonhosted.org/packages/98/fd/771be435289660f1ce405fe9fda9315562bd11c3bb3e998b17005e879a09/iopipe-1.10.0.tar.gz" } ], "1.10.1": [ { "comment_text": "", "digests": { "md5": "6da51f1b0ed9fb09bdfb954a8f047c4c", "sha256": "9105ceb37e89c545a49528efdbac1e8cba409ec0bd2f97f6d750896877196a8c" }, "downloads": -1, "filename": "iopipe-1.10.1.tar.gz", "has_sig": false, "md5_digest": "6da51f1b0ed9fb09bdfb954a8f047c4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51990, "upload_time": "2019-08-22T02:18:28", "url": "https://files.pythonhosted.org/packages/0b/f8/4a7b99e00af76b6d0e478f70bcabff61b2210533476667c49ad7c5815163/iopipe-1.10.1.tar.gz" } ], "1.10.2": [ { "comment_text": "", "digests": { "md5": "356f0e1c75f2422e9d21c6a1b0e6df01", "sha256": "29e6de8e41c2019e9f0eed1042f45ab963e14b5d2eebf15f9bcdeaa596142cde" }, "downloads": -1, "filename": "iopipe-1.10.2.tar.gz", "has_sig": false, "md5_digest": "356f0e1c75f2422e9d21c6a1b0e6df01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53082, "upload_time": "2019-10-04T19:06:55", "url": "https://files.pythonhosted.org/packages/76/65/82c68106deb4d00db63ae790ec066c4abf1f835883437ea9aa6c3a749e11/iopipe-1.10.2.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "7c9d53a44fd9d887397fb86a3e0bf373", "sha256": "2f5b9baef01993c8236df42d7a9f71664ba97fcb9829f324a01dc2cada8bc809" }, "downloads": -1, "filename": "iopipe-1.2.0-py2.7.egg", "has_sig": false, "md5_digest": "7c9d53a44fd9d887397fb86a3e0bf373", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 47472, "upload_time": "2018-02-26T21:45:13", "url": "https://files.pythonhosted.org/packages/24/d6/09475faa7d09efd6ab42bea1f8acc3c4291ef98c4139d9bafbb66e23c871/iopipe-1.2.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "f7a416bd043817a154595b3450d17744", "sha256": "e50d96c60428becce0cebc39dfd48dc6555503c77802934dcef7fb6e10cf7706" }, "downloads": -1, "filename": "iopipe-1.2.0.tar.gz", "has_sig": false, "md5_digest": "f7a416bd043817a154595b3450d17744", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21410, "upload_time": "2018-02-26T21:45:15", "url": "https://files.pythonhosted.org/packages/6c/d3/c40abe482cba4d54f5ea310f7392eebcedb58e3089cce210a2cdede857a5/iopipe-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "f566c0aba5c79274f6ad6ff5a5796d52", "sha256": "fc04fbd474db29cfcbbc61cab56fda6ad18da7f0f451872c4fee9a85a1a7d707" }, "downloads": -1, "filename": "iopipe-1.3.0-py2.7.egg", "has_sig": false, "md5_digest": "f566c0aba5c79274f6ad6ff5a5796d52", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 48034, "upload_time": "2018-03-30T16:55:46", "url": "https://files.pythonhosted.org/packages/97/52/f4e501f3e3cff3fdb7d43485ef522268281bddb2b748cf28147209f169e3/iopipe-1.3.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "b5621fd5aac4191cf6db246e880a10b2", "sha256": "c85f523642d2000e0ca37bd3bb25a78153c90701cc0d7bd7882c2555f8b4da6e" }, "downloads": -1, "filename": "iopipe-1.3.0.tar.gz", "has_sig": false, "md5_digest": "b5621fd5aac4191cf6db246e880a10b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21656, "upload_time": "2018-03-30T16:55:47", "url": "https://files.pythonhosted.org/packages/37/08/154fefbd57390dd931e06d0d523b7d740f775ab81191bd6c35e97de4d3a6/iopipe-1.3.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "aec779d2cf72b69174229d0aea734c83", "sha256": "787d9ffb45783d5ba8f633bfb02ca94415e2862b2644b20d70b2ff8b600de2b8" }, "downloads": -1, "filename": "iopipe-1.4.0-py2.7.egg", "has_sig": false, "md5_digest": "aec779d2cf72b69174229d0aea734c83", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 48853, "upload_time": "2018-04-09T17:24:30", "url": "https://files.pythonhosted.org/packages/f1/d1/3f0e062361cd02b118631a39b174c704cb6b5c3afe5605fb744e2130a0fb/iopipe-1.4.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "bc310077fbd7df84cef24718ab02ee24", "sha256": "35b94ca7a86028e766328a1e2e9e45713547f0b62aade97aec66ae191c0c807e" }, "downloads": -1, "filename": "iopipe-1.4.0.tar.gz", "has_sig": false, "md5_digest": "bc310077fbd7df84cef24718ab02ee24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22057, "upload_time": "2018-04-09T17:24:31", "url": "https://files.pythonhosted.org/packages/97/69/9a176d5f18a6be42af00539973077586b694ff61d5aa423d5b6f178d2656/iopipe-1.4.0.tar.gz" } ], "1.4.1": [ { "comment_text": "", "digests": { "md5": "8f737e6b79738254551bbc764d22e634", "sha256": "8b0106cb718ec866931c09180dce5c67bede126d9474c390b5a1177dc4b4e179" }, "downloads": -1, "filename": "iopipe-1.4.1-py2.7.egg", "has_sig": false, "md5_digest": "8f737e6b79738254551bbc764d22e634", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 49339, "upload_time": "2018-04-10T18:19:00", "url": "https://files.pythonhosted.org/packages/2a/58/c2a14c5e35c721cc518d571d0721e031c9f0c0d759045fe99089d93c44e0/iopipe-1.4.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "019e8c01f9cc7cdebbd3fb2e1d2652e2", "sha256": "a6d65268fe844c64730000290699dcc001837ae5a40c650bd911cc4ff84ce184" }, "downloads": -1, "filename": "iopipe-1.4.1.tar.gz", "has_sig": false, "md5_digest": "019e8c01f9cc7cdebbd3fb2e1d2652e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22143, "upload_time": "2018-04-10T18:19:01", "url": "https://files.pythonhosted.org/packages/df/21/1f687e9e1fbc9c961ddba0dab8b1fc72601ee39a9cc7d82b3f9cd6d36f1d/iopipe-1.4.1.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "fad7de4a17cac672cf5188ea392c3746", "sha256": "247501fae015d214a2de0a8a955c386add7409d72ce5c4d65cda022cd159fbd0" }, "downloads": -1, "filename": "iopipe-1.5.0-py2.7.egg", "has_sig": false, "md5_digest": "fad7de4a17cac672cf5188ea392c3746", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 58286, "upload_time": "2018-04-20T16:21:47", "url": "https://files.pythonhosted.org/packages/fa/cd/792a5a281b99d8521374f6014d890f7db4496f4e8020a0fe846b6446e078/iopipe-1.5.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "59fe77f9d17bedd159b2b87ff53662cd", "sha256": "3dd02732e064288e458b70cbb2ee4eca031315a4a882f662788f253434215700" }, "downloads": -1, "filename": "iopipe-1.5.0.tar.gz", "has_sig": false, "md5_digest": "59fe77f9d17bedd159b2b87ff53662cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24234, "upload_time": "2018-04-20T16:21:49", "url": "https://files.pythonhosted.org/packages/cb/bb/a3ea8dd7f479db763cd081eb3fb160eb713d128669141349b8d9635e285c/iopipe-1.5.0.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "379fedd9304dbf7651198950fd572720", "sha256": "e21c9726e0d9fbf8c1352241d5c11544c4b2cd1dcce973cc1429431917858724" }, "downloads": -1, "filename": "iopipe-1.6.0-py2.7.egg", "has_sig": false, "md5_digest": "379fedd9304dbf7651198950fd572720", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 70067, "upload_time": "2018-06-13T19:49:45", "url": "https://files.pythonhosted.org/packages/a2/57/10d46f6cdb3fbd70a4e423b2910ca633e47d4d810a31796d55890c0d9662/iopipe-1.6.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "67106b506640eaa5987371187036be8e", "sha256": "8e86118ce9b3893bdf2b6c74026df25691e367919b0d79fb8884e2a076275510" }, "downloads": -1, "filename": "iopipe-1.6.0.tar.gz", "has_sig": false, "md5_digest": "67106b506640eaa5987371187036be8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34453, "upload_time": "2018-06-13T19:49:46", "url": "https://files.pythonhosted.org/packages/a4/6b/663fee30b10d239303aac754572d77871f4240b95b36275c730eabf736cb/iopipe-1.6.0.tar.gz" } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "aa15fdba3c81834439a14da4de086054", "sha256": "3c2e93feeab499cac838d115bf82ada5e6162079c8ffea37fffe830c83cfc5a5" }, "downloads": -1, "filename": "iopipe-1.6.1-py2.7.egg", "has_sig": false, "md5_digest": "aa15fdba3c81834439a14da4de086054", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 70227, "upload_time": "2018-06-14T16:31:48", "url": "https://files.pythonhosted.org/packages/75/6e/1e9b9c06f18618a9cc4714c6015c02c03bba4a673c2a9807f6ccbc8419a3/iopipe-1.6.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "66a4ef5c38cc56e82630ca0890094a7e", "sha256": "6e3045e1564951def75153b02640c26985a5d50ae5cbbd744a716b5334e19f8f" }, "downloads": -1, "filename": "iopipe-1.6.1.tar.gz", "has_sig": false, "md5_digest": "66a4ef5c38cc56e82630ca0890094a7e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34632, "upload_time": "2018-06-14T16:31:49", "url": "https://files.pythonhosted.org/packages/4b/45/ab7fc6957d35114c12d627ba4fdff5929e72bf1c2724bc15947cccefafd8/iopipe-1.6.1.tar.gz" } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "e9c493fd22bff99ddba86ccbef7bd952", "sha256": "d77e441c735672c530dd3a337001fdb2ea50bd9fa64c6b8cdd8dc7615273f00d" }, "downloads": -1, "filename": "iopipe-1.6.2.tar.gz", "has_sig": false, "md5_digest": "e9c493fd22bff99ddba86ccbef7bd952", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33453, "upload_time": "2018-07-02T21:56:10", "url": "https://files.pythonhosted.org/packages/7e/47/2e5ae8f32f2f766ada96d8226af7b6a3970046078ade95bbf64a40a52d30/iopipe-1.6.2.tar.gz" } ], "1.6.3": [ { "comment_text": "", "digests": { "md5": "25a67a85d8174fe9d04322732c9fa673", "sha256": "9d9e5f96b22c5b0f4948474ac3ac034df19dd8170b4dbdf96cc1f36491d233c9" }, "downloads": -1, "filename": "iopipe-1.6.3.tar.gz", "has_sig": false, "md5_digest": "25a67a85d8174fe9d04322732c9fa673", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33655, "upload_time": "2018-07-12T23:52:23", "url": "https://files.pythonhosted.org/packages/57/11/fc88e86ad30de5169b26d967dd9f521e085236a364eae209d77947662aea/iopipe-1.6.3.tar.gz" } ], "1.6.4": [ { "comment_text": "", "digests": { "md5": "82e20765a1f27b57415b4c83a1b49087", "sha256": "0b1e9a88d9cdd21177475d9af8c2626019e6b81f43b9036101d89e98112f4104" }, "downloads": -1, "filename": "iopipe-1.6.4.tar.gz", "has_sig": false, "md5_digest": "82e20765a1f27b57415b4c83a1b49087", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30320, "upload_time": "2018-07-13T20:28:17", "url": "https://files.pythonhosted.org/packages/09/32/b79c09c9a57bd9eef3b373fcf9854467be57f0a0209b9cae9215bf1d0063/iopipe-1.6.4.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "6a63810457dc9806366a677ffbbe2129", "sha256": "c5ee6999af2e4da675031f0c4966fa64e6208e2c4f317692181f88853e9ce24c" }, "downloads": -1, "filename": "iopipe-1.7.0.tar.gz", "has_sig": false, "md5_digest": "6a63810457dc9806366a677ffbbe2129", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40810, "upload_time": "2018-08-14T16:25:43", "url": "https://files.pythonhosted.org/packages/98/13/0a9cfe4b4071fa162398c512128c1605258bf606542e416efb31be3b726d/iopipe-1.7.0.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "21b35af74e3f9a88b5b24341f7dfc31b", "sha256": "5b231b22a44052ad32838e95202cdff79d9410cf42837eab39e3363539d38cdc" }, "downloads": -1, "filename": "iopipe-1.7.1.tar.gz", "has_sig": false, "md5_digest": "21b35af74e3f9a88b5b24341f7dfc31b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34882, "upload_time": "2018-08-21T17:11:06", "url": "https://files.pythonhosted.org/packages/b7/ec/ec6367c72182a04c2880a4342998de363fc7447c13a8cbea0d9010326dda/iopipe-1.7.1.tar.gz" } ], "1.7.10": [ { "comment_text": "", "digests": { "md5": "c844cdcd63d138f081de67bb0fc3df6f", "sha256": "3d7280ea73d9073e297c4a77fd4a468c7c15f72c92b57cc98061d0b7681e6493" }, "downloads": -1, "filename": "iopipe-1.7.10.tar.gz", "has_sig": false, "md5_digest": "c844cdcd63d138f081de67bb0fc3df6f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44088, "upload_time": "2019-01-16T20:13:15", "url": "https://files.pythonhosted.org/packages/80/72/f741321dba46e249a34465d9d9ae1f86e6688337dc9405b44cf7fb371c74/iopipe-1.7.10.tar.gz" } ], "1.7.11": [ { "comment_text": "", "digests": { "md5": "c4a714e663405e6f006fe90b70067a2f", "sha256": "68815f7a3434a74528f731e7bd0ac7b6f1f9b74caf8c35581f89ca582785e078" }, "downloads": -1, "filename": "iopipe-1.7.11.tar.gz", "has_sig": false, "md5_digest": "c4a714e663405e6f006fe90b70067a2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40969, "upload_time": "2019-01-16T20:51:02", "url": "https://files.pythonhosted.org/packages/72/c7/043964be806ae6ca34298dbc79d3da71182ea8f719ea0f50154daedf596b/iopipe-1.7.11.tar.gz" } ], "1.7.12": [ { "comment_text": "", "digests": { "md5": "3aed086f462667af09c2cd52daa77d33", "sha256": "efb435d84921de6783f0bc5cddae71a184350f85657bd7f688d489c3ce6f109c" }, "downloads": -1, "filename": "iopipe-1.7.12.tar.gz", "has_sig": false, "md5_digest": "3aed086f462667af09c2cd52daa77d33", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37529, "upload_time": "2019-01-28T17:29:49", "url": "https://files.pythonhosted.org/packages/7d/93/c692725427ca3e13e8a1aa59bd086e8177006a439c4d9e9400386f36ab6e/iopipe-1.7.12.tar.gz" } ], "1.7.13": [ { "comment_text": "", "digests": { "md5": "8772d94d4ba82a4e4f5670e1bed9b97d", "sha256": "7a8f7c0a68e9eecd1c2a20080782ef5a4e475ba937a40473a851f7d356f530ef" }, "downloads": -1, "filename": "iopipe-1.7.13.tar.gz", "has_sig": false, "md5_digest": "8772d94d4ba82a4e4f5670e1bed9b97d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44199, "upload_time": "2019-01-30T00:15:07", "url": "https://files.pythonhosted.org/packages/0e/24/8e7fb5f6efab58fd5d2a809d8d809659c383841b9323c955cd6469a6cb15/iopipe-1.7.13.tar.gz" } ], "1.7.14": [ { "comment_text": "", "digests": { "md5": "11c146bc2eb1e08b4c1b70d2457a0bbd", "sha256": "041322cba1d076b9f80aab35e1a27fd7041440d2b473daf8cdf5e3e6d4b9db51" }, "downloads": -1, "filename": "iopipe-1.7.14.tar.gz", "has_sig": false, "md5_digest": "11c146bc2eb1e08b4c1b70d2457a0bbd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44065, "upload_time": "2019-04-05T21:30:04", "url": "https://files.pythonhosted.org/packages/37/7b/82a45d18e41fd5b61da953d22a1d6437a6325f7d1f3f8e75270fd30a2632/iopipe-1.7.14.tar.gz" } ], "1.7.15": [ { "comment_text": "", "digests": { "md5": "636af456fdfd1b4fe4af2195fdd60f15", "sha256": "1d5473765256cb2af4c6a1749e9960079135cd19b420d1f691bc430942ca5628" }, "downloads": -1, "filename": "iopipe-1.7.15.tar.gz", "has_sig": false, "md5_digest": "636af456fdfd1b4fe4af2195fdd60f15", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40888, "upload_time": "2019-04-12T00:24:49", "url": "https://files.pythonhosted.org/packages/ac/68/783b75f7fe2a15601d8bb93a7eb48f9a606147c1d5656023f80285d9e666/iopipe-1.7.15.tar.gz" } ], "1.7.16": [ { "comment_text": "", "digests": { "md5": "a5bd82be70c4b7cbfa22a13edfd5c88a", "sha256": "f40e925457ec5d09c2fb53bc949a9321d50c5336ed9bbf54576c82ab03de954d" }, "downloads": -1, "filename": "iopipe-1.7.16.tar.gz", "has_sig": false, "md5_digest": "a5bd82be70c4b7cbfa22a13edfd5c88a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41434, "upload_time": "2019-04-23T23:32:57", "url": "https://files.pythonhosted.org/packages/fe/6b/f392cac558d3a27c5e4a07cbe9093df21b2bcc6fc18a738fc8f4254d2f26/iopipe-1.7.16.tar.gz" } ], "1.7.17": [ { "comment_text": "", "digests": { "md5": "6b70940744c5f15e84525d122ae50da3", "sha256": "74436967c89727ba7e491192467af798b8e9a073a502b8e5bc44f01f11adb62d" }, "downloads": -1, "filename": "iopipe-1.7.17.tar.gz", "has_sig": false, "md5_digest": "6b70940744c5f15e84525d122ae50da3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40636, "upload_time": "2019-05-01T20:35:18", "url": "https://files.pythonhosted.org/packages/49/86/a017b4ce7fedc08a9a7a3b1cfffe62843606435a8728f0b64fe789ee6746/iopipe-1.7.17.tar.gz" } ], "1.7.18": [ { "comment_text": "", "digests": { "md5": "d2af85b6dd189226ec313b6f5605afc0", "sha256": "060126b02abe130774e7c4f48e8d76c3b33bf558079feb0cc01d86cabb64424f" }, "downloads": -1, "filename": "iopipe-1.7.18.tar.gz", "has_sig": false, "md5_digest": "d2af85b6dd189226ec313b6f5605afc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44687, "upload_time": "2019-05-13T20:01:42", "url": "https://files.pythonhosted.org/packages/f8/2e/5f8312efcb009241ee076c95713552cb109b3d813106a7d8d0047259e388/iopipe-1.7.18.tar.gz" } ], "1.7.19": [ { "comment_text": "", "digests": { "md5": "b8bb91478bb32d48c95833c7e00647d4", "sha256": "6676711c657c48b5ad4934aac440cbbafe3824880a3a0d83018742f5ad7add1c" }, "downloads": -1, "filename": "iopipe-1.7.19.tar.gz", "has_sig": false, "md5_digest": "b8bb91478bb32d48c95833c7e00647d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46037, "upload_time": "2019-06-07T16:08:20", "url": "https://files.pythonhosted.org/packages/3c/83/344442e7d41ec4a94ce75afe7a438cac1bb55ced8b3a30b5105a96063ab5/iopipe-1.7.19.tar.gz" } ], "1.7.2": [ { "comment_text": "", "digests": { "md5": "9652028074c7a344a2037c0f1bec4918", "sha256": "07c41b72476b202c02152597a4b89b608e5695076f39c8a6e11f9dcfd269cc4f" }, "downloads": -1, "filename": "iopipe-1.7.2.tar.gz", "has_sig": false, "md5_digest": "9652028074c7a344a2037c0f1bec4918", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40617, "upload_time": "2018-09-25T19:02:33", "url": "https://files.pythonhosted.org/packages/ff/1d/410b5d9c58b7d202c1054d473889eee68d3d417ba9f2b7655f14e93d7ff3/iopipe-1.7.2.tar.gz" } ], "1.7.3": [ { "comment_text": "", "digests": { "md5": "387a140fc0e1472413bcc7b5e2bc8bf2", "sha256": "9903ad4ef27f40438d0668a4ee8643e979ed1efe6e1e2a19c8d3f78962359190" }, "downloads": -1, "filename": "iopipe-1.7.3.tar.gz", "has_sig": false, "md5_digest": "387a140fc0e1472413bcc7b5e2bc8bf2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34777, "upload_time": "2018-11-05T15:48:18", "url": "https://files.pythonhosted.org/packages/46/ff/a860c6cba792f259ad7cf775f9c90d5519b942b96b8c91fb671b6ba6ea1c/iopipe-1.7.3.tar.gz" } ], "1.7.4": [ { "comment_text": "", "digests": { "md5": "be7fca7bf9324dc3bfca43b837233ece", "sha256": "2d19126344dea1bb85d8044fca69fb0756fbb6e30b8ad66a7d00ed53819d6a43" }, "downloads": -1, "filename": "iopipe-1.7.4.tar.gz", "has_sig": false, "md5_digest": "be7fca7bf9324dc3bfca43b837233ece", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41104, "upload_time": "2018-11-15T19:03:18", "url": "https://files.pythonhosted.org/packages/e6/7b/434ca3633b8165673163c378f75bf40fa7d0c242014458e6f59bf2ebde05/iopipe-1.7.4.tar.gz" } ], "1.7.5": [ { "comment_text": "", "digests": { "md5": "9d328a9737088db4c8ebd22cc7e6d4b6", "sha256": "c0185de4599b6bbd3e2a3ed6167f0b65faaf37a8fd89d569c6b03e43b5e925cc" }, "downloads": -1, "filename": "iopipe-1.7.5.tar.gz", "has_sig": false, "md5_digest": "9d328a9737088db4c8ebd22cc7e6d4b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35641, "upload_time": "2018-11-20T17:05:17", "url": "https://files.pythonhosted.org/packages/21/16/392babee5c98298fc19a7cf5c287f2a8bfcf2775359f0240d2de95ec40df/iopipe-1.7.5.tar.gz" } ], "1.7.6": [ { "comment_text": "", "digests": { "md5": "8e055db4f090950e47a77ecfc2c4b8ea", "sha256": "28d97bc6e853aaa108ce3a22e1c7c2f4d62b47a54b365cc5d511b213317eab88" }, "downloads": -1, "filename": "iopipe-1.7.6.tar.gz", "has_sig": false, "md5_digest": "8e055db4f090950e47a77ecfc2c4b8ea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38578, "upload_time": "2018-11-28T21:42:24", "url": "https://files.pythonhosted.org/packages/3a/07/3cbdcd4b18075e180cc5f931dd64f0d69b0336f6d077537cae4451f9ac0a/iopipe-1.7.6.tar.gz" } ], "1.7.7": [ { "comment_text": "", "digests": { "md5": "a6e318e5b01ac72430e23786e527d315", "sha256": "993f155df72b6d0f77753fb3d63665cc06cf7f919ed981ae32991a7dc07eacc8" }, "downloads": -1, "filename": "iopipe-1.7.7.tar.gz", "has_sig": false, "md5_digest": "a6e318e5b01ac72430e23786e527d315", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38962, "upload_time": "2018-11-29T17:27:01", "url": "https://files.pythonhosted.org/packages/05/37/a7c369928cb8c190e32b96b5ca0c1b6587ea3087ec6a69acb9dfe03495b4/iopipe-1.7.7.tar.gz" } ], "1.7.8": [ { "comment_text": "", "digests": { "md5": "4506234ba0a4551d238ccc7c1558fd2e", "sha256": "a179ab0bd51e9579f5bfe3cf78343860e826212e8fbf1623fb345dba13c3b331" }, "downloads": -1, "filename": "iopipe-1.7.8.tar.gz", "has_sig": false, "md5_digest": "4506234ba0a4551d238ccc7c1558fd2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40773, "upload_time": "2018-12-04T17:50:42", "url": "https://files.pythonhosted.org/packages/3b/5b/f0912ec867225504fa4d29da0b8e66daf1bb75d65b5b8bb507ca010f3c24/iopipe-1.7.8.tar.gz" } ], "1.7.9": [ { "comment_text": "", "digests": { "md5": "ee13178b35008f8855f08e4115c79a55", "sha256": "66df7201df2255edc0d595ac201dee1f5b07777bf71143bed4a324a88ea45340" }, "downloads": -1, "filename": "iopipe-1.7.9.tar.gz", "has_sig": false, "md5_digest": "ee13178b35008f8855f08e4115c79a55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35235, "upload_time": "2019-01-08T22:01:49", "url": "https://files.pythonhosted.org/packages/01/81/bc7ece9f8df322af74add588862f45e8435bbb95f6d8452e8e1c9300ad07/iopipe-1.7.9.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "67c67e753017cfaa84ef658d14282f68", "sha256": "5687e87e0e9f906ebc0d3b029653a9c82660a1a02efcbae765351990a7093792" }, "downloads": -1, "filename": "iopipe-1.8.0.tar.gz", "has_sig": false, "md5_digest": "67c67e753017cfaa84ef658d14282f68", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47249, "upload_time": "2019-06-13T16:10:31", "url": "https://files.pythonhosted.org/packages/e3/c1/359a6a635dae2d9bfe5a7a44423a21561f47fb1c85bc33c1847076f1d84e/iopipe-1.8.0.tar.gz" } ], "1.8.1": [ { "comment_text": "", "digests": { "md5": "2c554cca6fe12171757b0480c4d0ca89", "sha256": "be04ca23b034a7ba9dd38900969abaa4e50f5f902b593ec7fc61401e0dfca702" }, "downloads": -1, "filename": "iopipe-1.8.1.tar.gz", "has_sig": false, "md5_digest": "2c554cca6fe12171757b0480c4d0ca89", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44295, "upload_time": "2019-06-26T09:04:58", "url": "https://files.pythonhosted.org/packages/d6/60/ef28593fad404718b0590f80e804c4891e749036bc65e143eee4cc1ceee0/iopipe-1.8.1.tar.gz" } ], "1.8.2": [ { "comment_text": "", "digests": { "md5": "a8b7fc5195d39312992d9c4b159cad84", "sha256": "410ee7dc2b9ccff56e7b1cb8d795e2d452712e0a7853854143ce53d18083876e" }, "downloads": -1, "filename": "iopipe-1.8.2.tar.gz", "has_sig": false, "md5_digest": "a8b7fc5195d39312992d9c4b159cad84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46995, "upload_time": "2019-06-26T16:53:22", "url": "https://files.pythonhosted.org/packages/a0/ff/37419a123a9e36578fcf2a567385b294c226d6dd4b1a8d07670a1c4a6607/iopipe-1.8.2.tar.gz" } ], "1.9.0": [ { "comment_text": "", "digests": { "md5": "5b060542519f750d5abb90cefca48f09", "sha256": "2157766c78c6514e2dac54f2bb1bf2ec9d7cdb50244bb87463820a155cebe424" }, "downloads": -1, "filename": "iopipe-1.9.0.tar.gz", "has_sig": false, "md5_digest": "5b060542519f750d5abb90cefca48f09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50658, "upload_time": "2019-08-08T14:22:28", "url": "https://files.pythonhosted.org/packages/3c/bf/fd064255b1839ddd4f8dbc056d045c1c4df2e3cf9c32731e1797269efc15/iopipe-1.9.0.tar.gz" } ], "1.9.1": [ { "comment_text": "", "digests": { "md5": "3b790e547913c1e3ac44b4447d48ba2e", "sha256": "b5d8e4b05dd24bc53dad975798ce5f63b53b58ea1cd989ad3ccccd796d23a5ba" }, "downloads": -1, "filename": "iopipe-1.9.1.tar.gz", "has_sig": false, "md5_digest": "3b790e547913c1e3ac44b4447d48ba2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49552, "upload_time": "2019-08-09T20:00:28", "url": "https://files.pythonhosted.org/packages/e5/8f/efd1d273e1641466fd7265f035fd7fa83e624f183adac63a9e82fa335f04/iopipe-1.9.1.tar.gz" } ], "1.9.2": [ { "comment_text": "", "digests": { "md5": "2e84789234d1e25c836fbfd9b2f88b9b", "sha256": "a8c374eab879dd1debeed7da6f9c44be9baddf2f4a79269be47d3cce9383f29f" }, "downloads": -1, "filename": "iopipe-1.9.2.tar.gz", "has_sig": false, "md5_digest": "2e84789234d1e25c836fbfd9b2f88b9b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51195, "upload_time": "2019-08-09T20:50:45", "url": "https://files.pythonhosted.org/packages/36/42/641a81b509d079b9828405c01bbf7b5bed376d9032b22fa96bc423c9a88f/iopipe-1.9.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "356f0e1c75f2422e9d21c6a1b0e6df01", "sha256": "29e6de8e41c2019e9f0eed1042f45ab963e14b5d2eebf15f9bcdeaa596142cde" }, "downloads": -1, "filename": "iopipe-1.10.2.tar.gz", "has_sig": false, "md5_digest": "356f0e1c75f2422e9d21c6a1b0e6df01", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53082, "upload_time": "2019-10-04T19:06:55", "url": "https://files.pythonhosted.org/packages/76/65/82c68106deb4d00db63ae790ec066c4abf1f835883437ea9aa6c3a749e11/iopipe-1.10.2.tar.gz" } ] }