{ "info": { "author": "Chris Laws", "author_email": "clawsicus@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Monitoring", "Typing :: Typed" ], "description": "aioprometheus\n=============\n\n|ci status| |pypi| |python| |cov| |docs| |license|\n\n`aioprometheus` is a Prometheus Python client library for asyncio-based\napplications. It provides metrics collection and serving capabilities for\nuse with Prometheus and compatible monitoring systems. It supports exporting\nmetrics into text and binary formats and pushing metrics to a gateway.\n\nThe ASGI middleware in `aioprometheus` can be used in FastAPI/Starlette and\nQuart applications. `aioprometheus` can also be used in other kinds of asyncio\napplications too.\n\nThe project documentation can be found on\n`ReadTheDocs `_.\n\n\nInstall\n-------\n\n.. code-block:: console\n\n $ pip install aioprometheus\n\nThe ASGI middleware does not have any external dependencies but the Starlette\nand Quart convenience functions that handle metrics requests do.\n\nIf you plan on using the ASGI middleware in a Starlette / FastAPI application\nthen you can install the extra dependencies alongside `aioprometheus` by adding\nextras to the install.\n\n.. code-block:: console\n\n $ pip install aioprometheus[starlette]\n\nIf you plan on using the ASGI middleware in a Quart application then you can\ninstall the extra dependencies alongside `aioprometheus` by adding extras\nto the install.\n\n.. code-block:: console\n\n $ pip install aioprometheus[quart]\n\nA Prometheus Push Gateway client and a HTTP service are included, but their\ndependencies are not installed by default. You can install them alongside\n`aioprometheus` by adding extras to the install.\n\n.. code-block:: console\n\n $ pip install aioprometheus[aiohttp]\n\nPrometheus 2.0 removed support for the binary protocol, so in version 20.0.0 the\ndependency on `prometheus-metrics-proto`, which provides binary support, is now\noptional. If you need binary response support, for use with an older Prometheus,\nyou will need to specify the 'binary' optional extra:\n\n.. code-block:: console\n\n $ pip install aioprometheus[binary]\n\nMultiple optional dependencies can be listed at once, such as:\n\n.. code-block:: console\n\n $ pip install aioprometheus[aiohttp,binary,starlette,quart]\n\n\nUsage\n-----\n\nThere are two basic steps involved in using aioprometheus; the first is to\ninstrument your software by creating metrics to monitor events and the second\nis to expose the metrics to a collector.\n\nCreating a new metric is easy. First, import the appropriate metric from\naioprometheus. In the example below it's a Counter metric. Next, instantiate\nthe metric with a name and a help string. Finally, update the metric when an\nevent occurs. In this case the counter is incremented.\n\n.. code-block:: python\n\n from aioprometheus import Counter\n\n events_counter = Counter(\n \"events_counter\",\n \"Total number of events.\",\n )\n\n events_counter.inc({\"kind\": \"event A\"})\n\nBy default, metrics get registered into the default collector registry which\nis available at ``aioprometheus.REGISTRY``.\n\nA number of convenience decorator functions are included in aioprometheus that\ncan assist with automatically updating metrics. The ``examples`` directory\ncontains various decorators examples.\n\nOnce your software is instrumented with various metrics you'll want to\nexpose them to Prometheus or a compatible metrics collector. There are\nmultiple strategies available for this and the right choice depends on the\nkind of thing being instrumented.\n\nIf you are instrumenting a Starlette, FastAPI or Quart application then the\neasiest option for adding Prometheus metrics is to use the ASGI Middleware\nprovided by `aioprometheus`.\n\nThe ASGI middleware provides a default set of metrics that include counters\nfor total requests received, total responses sent, exceptions raised and\nresponse status codes for route handlers.\n\nThe example below shows how to use the aioprometheus ASGI middleware in a\nFastAPI application. FastAPI is built upon Starlette so using the middleware\nin Starlette would be the same.\n\n.. code-block:: python\n\n from fastapi import FastAPI, Request, Response\n\n from aioprometheus import Counter, MetricsMiddleware\n from aioprometheus.asgi.starlette import metrics\n\n app = FastAPI()\n\n # Any custom application metrics are automatically included in the exposed\n # metrics. It is a good idea to attach the metrics to 'app.state' so they\n # can easily be accessed in the route handler - as metrics are often\n # created in a different module than where they are used.\n app.state.users_events_counter = Counter(\"events\", \"Number of events.\")\n\n app.add_middleware(MetricsMiddleware)\n app.add_route(\"/metrics\", metrics)\n\n\n @app.get(\"/\")\n async def root(request: Request):\n return Response(\"FastAPI Middleware Example\")\n\n\n @app.get(\"/users/{user_id}\")\n async def get_user(\n request: Request,\n user_id: str,\n ):\n request.app.state.users_events_counter.inc({\"path\": request.scope[\"path\"]})\n return Response(f\"{user_id}\")\n\n\n if __name__ == \"__main__\":\n import uvicorn\n\n uvicorn.run(app)\n\n\nOther examples in the ``examples/frameworks`` directory show how aioprometheus\ncan be used within various web application frameworks.\n\nThe next example shows how to use the Service HTTP endpoint to provide a\ndedicated metrics endpoint for other applications such as long running\ndistributed system processes.\n\n.. code-block:: python\n\n #!/usr/bin/env python\n \"\"\"\n This example demonstrates how the ``aioprometheus.Service`` can be used to\n expose metrics on a HTTP endpoint.\n\n .. code-block:: console\n\n (env) $ python simple-service-example.py\n Serving prometheus metrics on: http://127.0.0.1:8000/metrics\n\n You can open the URL in a browser or use the ``curl`` command line tool to\n fetch metrics manually to verify they can be retrieved by Prometheus server.\n\n \"\"\"\n\n import asyncio\n import socket\n\n from aioprometheus import Counter\n from aioprometheus.service import Service\n\n\n async def main():\n\n service = Service()\n events_counter = Counter(\n \"events\", \"Number of events.\", const_labels={\"host\": socket.gethostname()}\n )\n\n await service.start(addr=\"127.0.0.1\", port=8000)\n print(f\"Serving prometheus metrics on: {service.metrics_url}\")\n\n # Now start another coroutine to periodically update a metric to\n # simulate the application making some progress.\n async def updater(c: Counter):\n while True:\n c.inc({\"kind\": \"timer_expiry\"})\n await asyncio.sleep(1.0)\n\n await updater(events_counter)\n\n # Finally stop server\n await service.stop()\n\n\n if __name__ == \"__main__\":\n\n try:\n asyncio.run(main())\n except KeyboardInterrupt:\n pass\n\nA counter metric is used to track the number of while loop iterations executed\nby the 'updater' coroutine. The Service is started and then a coroutine is\nstarted to periodically update the metric to simulate progress.\n\nThe Service can be configured to bind to a user defined network interface and\nport.\n\nWhen the Service receives a request for metrics it forms a response by\nrendering the contents of its registry into the appropriate format. By default\nthe Service uses the default collector registry, which is\n``aioprometheus.REGISTRY``. The Service can be configured to use a different\nregistry by passing one in as an argument to the Service constructor.\n\nThe Service object requires optional extras to be installed so make sure you\ninstall aioprometheus with the 'aiohttp' extras.\n\n.. code-block:: console\n\n $ pip install aioprometheus[aiohttp]\n\n\nLicense\n-------\n\n`aioprometheus` is released under the MIT license.\n\n`aioprometheus` originates from the (now deprecated)\n`prometheus python `_ package which\nwas released under the MIT license. `aioprometheus` continues to use the MIT\nlicense and contains a copy of the original MIT license from the\n`prometheus-python` project as instructed by the original license.\n\n\n.. |ci status| image:: https://github.com/claws/aioprometheus/workflows/CI%20Pipeline/badge.svg?branch=master\n :target: https://github.com/claws/aioprometheus/actions?query=branch%3Amaster\n\n.. |pypi| image:: https://img.shields.io/pypi/v/aioprometheus.svg\n :target: https://pypi.python.org/pypi/aioprometheus\n\n.. |python| image:: https://img.shields.io/pypi/pyversions/aioprometheus.svg\n :target: https://pypi.python.org/pypi/aioprometheus/\n\n.. |cov| image:: https://codecov.io/github/claws/aioprometheus/branch/master/graph/badge.svg?token=oPPBg8hBgc\n :target: https://codecov.io/github/claws/aioprometheus\n\n.. |docs| image:: https://readthedocs.org/projects/aioprometheus/badge/?version=latest\n :target: https://aioprometheus.readthedocs.io/en/latest\n\n.. |license| image:: https://img.shields.io/badge/license-MIT-blue.svg\n :target: https://github.com/claws/aioprometheus/License/LICENSE\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/claws/aioprometheus", "keywords": "prometheus,monitoring,metrics", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "aioprometheus", "package_url": "https://pypi.org/project/aioprometheus/", "platform": null, "project_url": "https://pypi.org/project/aioprometheus/", "project_urls": { "Homepage": "https://github.com/claws/aioprometheus" }, "release_url": "https://pypi.org/project/aioprometheus/22.3.0/", "requires_dist": [ "quantile-python (>=1.1)", "aiohttp (>=3.3.2) ; extra == 'aiohttp'", "prometheus-metrics-proto (>=18.1.1) ; extra == 'binary'", "quart (>=0.15.1) ; extra == 'quart'", "starlette (>=0.14.2) ; extra == 'starlette'" ], "requires_python": ">=3.6.0", "summary": "A Prometheus Python client library for asyncio-based applications", "version": "22.3.0", "yanked": false, "yanked_reason": null }, "last_serial": 13160267, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "619b34fe9ced4676719f9905044ddc78", "sha256": "874eeb4678cab11d70f9db4142f66b2f46ad4fb9435df192b3d1eed58efd2caa" }, "downloads": -1, "filename": "aioprometheus-0.0.1.tar.gz", "has_sig": false, "md5_digest": "619b34fe9ced4676719f9905044ddc78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17637, "upload_time": "2016-06-20T11:25:14", "upload_time_iso_8601": "2016-06-20T11:25:14.867732Z", "url": "https://files.pythonhosted.org/packages/e7/99/08b474720291c3385e2d31cbfa446905b9c465e76a42d189f0e4be2ec908/aioprometheus-0.0.1.tar.gz", "yanked": false, "yanked_reason": null } ], "16.6.1": [ { "comment_text": "", "digests": { "md5": "40857bb52003047541ec0f19ab41e644", "sha256": "dd764f62df5b53d591a36552e72a0283ca5720ba6cd318a6cba78d18d2227099" }, "downloads": -1, "filename": "aioprometheus-16.6.1.tar.gz", "has_sig": false, "md5_digest": "40857bb52003047541ec0f19ab41e644", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30275, "upload_time": "2016-06-26T04:30:39", "upload_time_iso_8601": "2016-06-26T04:30:39.389242Z", "url": "https://files.pythonhosted.org/packages/0a/98/c93e897d2bc182f9b889f28f064abbbbe2eccb1e723826e5ceddf9dd4ed7/aioprometheus-16.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "16.7.31": [ { "comment_text": "", "digests": { "md5": "c3215c5aaec241c753d2037bedb36f38", "sha256": "99afa4be58ac4ecc756e3f62f77c1925bae300a89e2b0e364c1fa242ffc169c9" }, "downloads": -1, "filename": "aioprometheus-16.7.31.tar.gz", "has_sig": false, "md5_digest": "c3215c5aaec241c753d2037bedb36f38", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31779, "upload_time": "2016-07-31T14:24:12", "upload_time_iso_8601": "2016-07-31T14:24:12.904298Z", "url": "https://files.pythonhosted.org/packages/c6/ce/d63d9f8b5a013ac5b1d3a02bdcd99840700674edcf0f3e985f3049d2f6fe/aioprometheus-16.7.31.tar.gz", "yanked": false, "yanked_reason": null } ], "16.8.3": [ { "comment_text": "", "digests": { "md5": "1e5894bc63035adf931444efa66c14ae", "sha256": "0267c4d786c1baaa21225cf50048228f57d082678b43b3b735a9cbb5cb94432e" }, "downloads": -1, "filename": "aioprometheus-16.8.3.tar.gz", "has_sig": false, "md5_digest": "1e5894bc63035adf931444efa66c14ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33001, "upload_time": "2016-08-03T13:41:52", "upload_time_iso_8601": "2016-08-03T13:41:52.145889Z", "url": "https://files.pythonhosted.org/packages/3f/36/0b35beb9837d11b201b63fb7db7d13f71f9139638b130bb3b933c380fb82/aioprometheus-16.8.3.tar.gz", "yanked": false, "yanked_reason": null } ], "16.8.5": [ { "comment_text": "", "digests": { "md5": "44fe28cea022af3204f76606f05a3df8", "sha256": "9b8071e15ded46c7c574ed2c7eabebdd1455b3dac5935d99ec81333ef2b4d6fd" }, "downloads": -1, "filename": "aioprometheus-16.8.5.tar.gz", "has_sig": false, "md5_digest": "44fe28cea022af3204f76606f05a3df8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33632, "upload_time": "2016-08-05T08:09:26", "upload_time_iso_8601": "2016-08-05T08:09:26.128630Z", "url": "https://files.pythonhosted.org/packages/2e/22/42326a61fd51a54f3a4e81b34293c1955ccf6c1e36f010fe79374c4f6198/aioprometheus-16.8.5.tar.gz", "yanked": false, "yanked_reason": null } ], "16.8.6": [ { "comment_text": "", "digests": { "md5": "0b4bdbc9f949d45bc38a5e2684614781", "sha256": "f2b34cc1dee833d783df5c90eec076ea5da17d98f82b722cc164cf369346042d" }, "downloads": -1, "filename": "aioprometheus-16.8.6.tar.gz", "has_sig": false, "md5_digest": "0b4bdbc9f949d45bc38a5e2684614781", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34511, "upload_time": "2016-08-21T11:58:06", "upload_time_iso_8601": "2016-08-21T11:58:06.649550Z", "url": "https://files.pythonhosted.org/packages/cb/0f/c12ee8dfb1f5793ec72e05937eff8cddf88f11c851476e8fda262ae5f5e7/aioprometheus-16.8.6.tar.gz", "yanked": false, "yanked_reason": null } ], "16.8.7": [ { "comment_text": "", "digests": { "md5": "762524156a8eea321fb5ad97176b323d", "sha256": "76d7f7de29a5fccccf034a02a11a858f9355605f2557c85cc48e9af453f7f05c" }, "downloads": -1, "filename": "aioprometheus-16.8.7.tar.gz", "has_sig": false, "md5_digest": "762524156a8eea321fb5ad97176b323d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34507, "upload_time": "2016-10-18T09:42:33", "upload_time_iso_8601": "2016-10-18T09:42:33.017201Z", "url": "https://files.pythonhosted.org/packages/a9/0b/ff0ec3a9474aabfee368865223e303a19a784deb64abc18a8dfb9537f610/aioprometheus-16.8.7.tar.gz", "yanked": false, "yanked_reason": null } ], "17.4.8": [ { "comment_text": "", "digests": { "md5": "d09005f6302a2a86b25daa5d50dbd391", "sha256": "beb65caff6bb9470dbee2819fee4c41e3fdab85d803e8703bc1d2474ef24104f" }, "downloads": -1, "filename": "aioprometheus-17.4.8.tar.gz", "has_sig": false, "md5_digest": "d09005f6302a2a86b25daa5d50dbd391", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31804, "upload_time": "2017-04-08T05:38:04", "upload_time_iso_8601": "2017-04-08T05:38:04.089158Z", "url": "https://files.pythonhosted.org/packages/47/fa/333b61906ac16130501b1e2554a5018d5f734a3d155c047fbcf6a1a876c2/aioprometheus-17.4.8.tar.gz", "yanked": false, "yanked_reason": null } ], "17.6.1": [ { "comment_text": "", "digests": { "md5": "31aab722c435be82dd18a2b713362878", "sha256": "10d4132665df9e30fb8c69690f61c864bb2c1bc57d371683c7fd7a24bb35dccb" }, "downloads": -1, "filename": "aioprometheus-17.6.1-py3-none-any.whl", "has_sig": false, "md5_digest": "31aab722c435be82dd18a2b713362878", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24342, "upload_time": "2017-06-25T11:24:53", "upload_time_iso_8601": "2017-06-25T11:24:53.925952Z", "url": "https://files.pythonhosted.org/packages/14/02/85043321c050b7f6c010400586cbbea05895e8420b80a8b2cadcd8da9ec0/aioprometheus-17.6.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "18.1.1": [ { "comment_text": "", "digests": { "md5": "53832ec9d0e5f45b555542a4dc63db3a", "sha256": "d88f16f2662bbfe4ffc3acb6d1d80f1c2d384cdff09782289a63c6fadca5debd" }, "downloads": -1, "filename": "aioprometheus-18.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "53832ec9d0e5f45b555542a4dc63db3a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23998, "upload_time": "2018-01-04T10:52:03", "upload_time_iso_8601": "2018-01-04T10:52:03.702261Z", "url": "https://files.pythonhosted.org/packages/fd/5a/42970cdc26e5bb6a9de28acb396c6ba4717230d628e448a52d421d7c9f14/aioprometheus-18.1.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "18.1.2": [ { "comment_text": "", "digests": { "md5": "6d0729c21b7a9d68115130a397f8b44a", "sha256": "75ed1d5b70c54b4763e42e38be962257d914175c31f0e7fc52e1e391874cf4f0" }, "downloads": -1, "filename": "aioprometheus-18.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6d0729c21b7a9d68115130a397f8b44a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21306, "upload_time": "2018-04-25T10:57:48", "upload_time_iso_8601": "2018-04-25T10:57:48.189558Z", "url": "https://files.pythonhosted.org/packages/1e/aa/6bd3d2014ed64b752a859274d536a1758a8fac8c3d208cc67b67595bf4ba/aioprometheus-18.1.2-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "18.1.3": [ { "comment_text": "", "digests": { "md5": "535b579665f142ab2842c2edb4c499bf", "sha256": "bc5cc750785f91b1e2cb6230596bdc07e012acf98c66e17835f7ba204943ab3e" }, "downloads": -1, "filename": "aioprometheus-18.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "535b579665f142ab2842c2edb4c499bf", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21656, "upload_time": "2018-04-26T12:08:11", "upload_time_iso_8601": "2018-04-26T12:08:11.271538Z", "url": "https://files.pythonhosted.org/packages/51/cd/93d66fee8ada9812b2e4a774504980e9cab46b5e5db7b6aaa2d5b65de39a/aioprometheus-18.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "18.1.4": [ { "comment_text": "", "digests": { "md5": "0f15123902bbc645865bbd8061cb6a21", "sha256": "544b8dc65beb54c08d47eccc5fae475d7ee37eb6a2654965496d44b7bf8971d5" }, "downloads": -1, "filename": "aioprometheus-18.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0f15123902bbc645865bbd8061cb6a21", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 22235, "upload_time": "2018-06-25T22:45:39", "upload_time_iso_8601": "2018-06-25T22:45:39.575571Z", "url": "https://files.pythonhosted.org/packages/75/d6/415cd931a3a7d0d762fdcaa58dee407608cfd6b79a9e8e832a1dbad39116/aioprometheus-18.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "18.7.1": [ { "comment_text": "", "digests": { "md5": "c127c7a8b36000e5896499645faa76e3", "sha256": "654b8e5bd126e6c3de666da84620c412dbfa39d1280c9f1c31dc4bca3237cb22" }, "downloads": -1, "filename": "aioprometheus-18.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "c127c7a8b36000e5896499645faa76e3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23526, "upload_time": "2018-07-23T22:23:55", "upload_time_iso_8601": "2018-07-23T22:23:55.156377Z", "url": "https://files.pythonhosted.org/packages/0e/51/fbfb3db75cbb8ced3ec410525a073effaf56d7e960218a6980d0f6a47fd0/aioprometheus-18.7.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "19.10.0": [ { "comment_text": "", "digests": { "md5": "fb7a249c4359069ec3fe84a7fee13e90", "sha256": "c8c0a708fd3c6714665b5db1b5b4e2312bbc33dbcf943e175727df435f846d6f" }, "downloads": -1, "filename": "aioprometheus-19.10.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fb7a249c4359069ec3fe84a7fee13e90", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 23551, "upload_time": "2019-10-21T12:08:06", "upload_time_iso_8601": "2019-10-21T12:08:06.031902Z", "url": "https://files.pythonhosted.org/packages/7d/1b/be925e8c56e650c94b24b87778806e9813f14f73d518c9e5f8f294281295/aioprometheus-19.10.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "19.11.0": [ { "comment_text": "", "digests": { "md5": "197836830c17aeaaca3172b1be2e71ff", "sha256": "e89800afc2989ec59d1911b69334905a0dd57cb91f9afda1ddac19346b670e3d" }, "downloads": -1, "filename": "aioprometheus-19.11.0-py3-none-any.whl", "has_sig": false, "md5_digest": "197836830c17aeaaca3172b1be2e71ff", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25192, "upload_time": "2020-04-11T08:42:07", "upload_time_iso_8601": "2020-04-11T08:42:07.967216Z", "url": "https://files.pythonhosted.org/packages/23/46/ba682c3c099c022242c55a64556b098db738f930fa77e2dd25cccf6cdada/aioprometheus-19.11.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "20.0.0": [ { "comment_text": "", "digests": { "md5": "58a4c71fbc91f8e7db2a0f200884df5c", "sha256": "ded63677384b2969874a64a5a865f867519e708dc952972eae35c846182dc46a" }, "downloads": -1, "filename": "aioprometheus-20.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "58a4c71fbc91f8e7db2a0f200884df5c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25382, "upload_time": "2020-05-23T04:14:28", "upload_time_iso_8601": "2020-05-23T04:14:28.874788Z", "url": "https://files.pythonhosted.org/packages/91/46/84a10d137155bb0944f81896e8585b3d0a01b059c8922019b4e6af0c8e04/aioprometheus-20.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "20.0.1": [ { "comment_text": "", "digests": { "md5": "dc7e83f506ff188997d4e8d7d904736d", "sha256": "1e513c9b0ed35c0192e851bcfc637ac6af74602059b82d9bec6f1a402b91d785" }, "downloads": -1, "filename": "aioprometheus-20.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "dc7e83f506ff188997d4e8d7d904736d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25768, "upload_time": "2020-07-16T08:41:57", "upload_time_iso_8601": "2020-07-16T08:41:57.899754Z", "url": "https://files.pythonhosted.org/packages/88/22/020c57b08ee0281f7eecafa2e362c2e5df907e6f3aa9fd2edc807b129307/aioprometheus-20.0.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "20.0.2": [ { "comment_text": "", "digests": { "md5": "39e81bc1ff69f557ab2f6979daa6c0ae", "sha256": "c8d5dd2a771833a3e796b1d81bbdf4e97960fffaed4ae1f184d8b561354a4280" }, "downloads": -1, "filename": "aioprometheus-20.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "39e81bc1ff69f557ab2f6979daa6c0ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25849, "upload_time": "2021-07-07T13:26:47", "upload_time_iso_8601": "2021-07-07T13:26:47.356386Z", "url": "https://files.pythonhosted.org/packages/87/65/f6653ff5abfa805f7db08a917b2d90ffec4627d982a2855a490cce62a05f/aioprometheus-20.0.2-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "21.7.0": [ { "comment_text": "", "digests": { "md5": "8cdfe911993f59f94d127285fe2c7d12", "sha256": "336138ab9321191e079061b7384ec10a96d40e9cb91dcb5aed12e3a08362180a" }, "downloads": -1, "filename": "aioprometheus-21.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8cdfe911993f59f94d127285fe2c7d12", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25903, "upload_time": "2021-07-18T10:04:44", "upload_time_iso_8601": "2021-07-18T10:04:44.981925Z", "url": "https://files.pythonhosted.org/packages/36/c4/b3ec546e897fe688aef8a469f97a0e2c221abc9eddfea4039c63079da28c/aioprometheus-21.7.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "21.8.0": [ { "comment_text": "", "digests": { "md5": "d9aba788fd0197276602a2677a884e23", "sha256": "c2cca88d47ca8d34fc26229f1981e4adf03341f5ae62ed3b6288fdb93ebc38c2" }, "downloads": -1, "filename": "aioprometheus-21.8.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d9aba788fd0197276602a2677a884e23", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 26055, "upload_time": "2021-09-03T09:32:14", "upload_time_iso_8601": "2021-09-03T09:32:14.296732Z", "url": "https://files.pythonhosted.org/packages/16/21/2a363392a31b6a45d7966528fc2e0a1b803704c0b8e4c6e25cb25ee45af0/aioprometheus-21.8.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "21.9.0": [ { "comment_text": "", "digests": { "md5": "8d2db470b6c01f25e3b97ed5d6bbf9b0", "sha256": "a470f47866a161ef84b7dc8ade697c597b4aadea04133f67d10acd599ef27164" }, "downloads": -1, "filename": "aioprometheus-21.9.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8d2db470b6c01f25e3b97ed5d6bbf9b0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 31023, "upload_time": "2021-09-19T03:16:22", "upload_time_iso_8601": "2021-09-19T03:16:22.672173Z", "url": "https://files.pythonhosted.org/packages/b4/83/ac1844ec1074e036f0042bd9a73993de08c91f565f42cfae9a590c4375c0/aioprometheus-21.9.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "21.9.1": [ { "comment_text": "", "digests": { "md5": "ee098a89c4112bc483dac5db2942a240", "sha256": "7e4876e892590d6bf9ca2971d14ac4c370541be15cd12b01be32b2178a48b38b" }, "downloads": -1, "filename": "aioprometheus-21.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ee098a89c4112bc483dac5db2942a240", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 31388, "upload_time": "2021-10-19T11:52:33", "upload_time_iso_8601": "2021-10-19T11:52:33.941962Z", "url": "https://files.pythonhosted.org/packages/0f/8f/017bf8a0bd5ed49613ba1ef489a8c1a8f5a64cfdbd0a2632e85e95659579/aioprometheus-21.9.1-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "22.3.0": [ { "comment_text": "", "digests": { "md5": "0d67ff2ab85ef1ba041da19fa60deb14", "sha256": "429c421d8a418b850e330cfc1baccc28d52c08e9700ef774b5ec6c9c69a3b740" }, "downloads": -1, "filename": "aioprometheus-22.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0d67ff2ab85ef1ba041da19fa60deb14", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 31675, "upload_time": "2022-03-13T02:27:28", "upload_time_iso_8601": "2022-03-13T02:27:28.019371Z", "url": "https://files.pythonhosted.org/packages/e1/99/8726d4e391c3a38a9738d1dbb5ac40508387a5ec967bea25f8d49771aeb8/aioprometheus-22.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0d67ff2ab85ef1ba041da19fa60deb14", "sha256": "429c421d8a418b850e330cfc1baccc28d52c08e9700ef774b5ec6c9c69a3b740" }, "downloads": -1, "filename": "aioprometheus-22.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0d67ff2ab85ef1ba041da19fa60deb14", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 31675, "upload_time": "2022-03-13T02:27:28", "upload_time_iso_8601": "2022-03-13T02:27:28.019371Z", "url": "https://files.pythonhosted.org/packages/e1/99/8726d4e391c3a38a9738d1dbb5ac40508387a5ec967bea25f8d49771aeb8/aioprometheus-22.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }