.. image:: https://raw.githubusercontent.com/klen/asgi-tools/develop/.github/assets/asgi-tools.png
:height: 100
.. _description:
**asgi-tools** -- Is a really lightweight ASGI_ Toolkit to build ASGI applications faster.
.. _badges:
.. image:: https://github.com/klen/asgi-tools/workflows/tests/badge.svg
:target: https://github.com/klen/asgi-tools/actions
:alt: Tests Status
.. image:: https://github.com/klen/asgi-tools/workflows/docs/badge.svg
:target: https://klen.github.io/asgi-tools
:alt: Documentation Status
.. image:: https://img.shields.io/pypi/v/asgi-tools
:target: https://pypi.org/project/asgi-tools/
:alt: PYPI Version
.. image:: https://img.shields.io/pypi/pyversions/asgi-tools
:target: https://pypi.org/project/asgi-tools/
:alt: Python Versions
----------
.. _documentation:
**Documentation is here**: https://klen.github.io/asgi-tools
ASGI-Tools is designed to be used as an ASGI Toolkit to quickly build really
lightweight ASGI applications/middlewares/tools.
For instance these middlewares were built with the library:
* `ASGI-Sessions <https://github.com/klen/asgi-sessions>`_
* `ASGI-Babel <https://github.com/klen/asgi-babel>`_
* `ASGI-Prometheus <https://github.com/klen/asgi-prometheus>`_
.. _features:
**Features:**
- Supports all most popular async python libraries: `Asyncio`_, `Trio`_ and Curio_
- `Request`_ -- Parse ASGI scope, get url, headers, cookies, read a request's data/json/form-data
- `Response`_ -- Send HTTP (text, html, json, stream, sse, file, http errors) responses
- `ResponseWebsocket`_ -- Work with websockets
- `RequestMiddleware`_ -- Parse a scope and insert the parsed request into the scope
- `ResponseMiddleware`_ -- Parse responses and convert them into ASGI messages
- `RouterMiddleware`_ -- Route HTTP requests
- `LifespanMiddleware`_ -- Process a lifespan cycle
- `StaticFilesMiddleware`_ -- Serve static files from URL prefixes
- `asgi_tools.tests.TestClient <https://klen.github.io/asgi-tools/api.html#testclient>`_ -- A test client with websockets support to test asgi applications
- `App`_ -- A simple foundation for ASGI apps
.. _contents:
.. contents::
.. _requirements:
Requirements
=============
- python >= 3.10
.. note:: pypy3 is also supported
**ASGI-Tools** belongs to the category of ASGI_ web frameworks, so it requires
an ASGI HTTP server to run, such as uvicorn_, daphne_, or hypercorn_.
.. _installation:
Installation
=============
**asgi-tools** should be installed using pip: ::
pip install asgi-tools
A Quick Example
===============
You can use any of ASGI-Tools components independently.
Despite this ASGI-Tools contains App_ helper to quickly build ASGI
applications. For instance:
Save this to ``app.py``.
.. code-block:: python
from asgi_tools import App
app = App()
@app.route('/')
async def hello(request):
return "Hello World!"
Run it with `uvicorn`
.. code-block:: sh
$ uvicorn app:app
.. _bugtracker:
Bug tracker
===========
If you have any suggestions, bug reports or
annoyances please report them to the issue tracker
at https://github.com/klen/asgi-tools/issues
.. _contributing:
Contributing
============
Development of the project happens at: https://github.com/klen/asgi-tools
.. _license:
License
========
Licensed under a `MIT license`_.
.. _links:
.. _ASGI: https://asgi.readthedocs.io/en/latest/
.. _Asyncio: https://docs.python.org/3/library/asyncio.html
.. _Curio: https://curio.readthedocs.io/en/latest/
.. _MIT license: http://opensource.org/licenses/MIT
.. _Trio: https://trio.readthedocs.io/en/stable/index.html
.. _klen: https://github.com/klen
.. _uvicorn: http://www.uvicorn.org/
.. _daphne: https://github.com/django/daphne/
.. _hypercorn: https://github.com/pgjones/hypercorn/
.. _Request: https://klen.github.io/asgi-tools/api.html#request
.. _Response: https://klen.github.io/asgi-tools/api.html#responses
.. _ResponseWebSocket: https://klen.github.io/asgi-tools/api.html#responsewebsocket
.. _RequestMiddleware: https://klen.github.io/asgi-tools/api.html#requestmiddleware
.. _ResponseMiddleware: https://klen.github.io/asgi-tools/api.html#responsemiddleware
.. _LifespanMiddleware: https://klen.github.io/asgi-tools/api.html#lifespanmiddleware
.. _StaticFilesMiddleware: https://klen.github.io/asgi-tools/api.html#staticfilesmiddleware
.. _RouterMiddleware: https://klen.github.io/asgi-tools/api.html#routermiddleware
.. _App: https://klen.github.io/asgi-tools/api.html#application
Raw data
{
"_id": null,
"home_page": null,
"name": "asgi-tools",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "asgi, asgi-tools, request, response, asyncio, trio",
"author": null,
"author_email": "Kirill Klenov <horneds@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/2e/17/0f19ac94eeb4429f16891b4860598a9cda04233050a7dd8730b9d5dabbba/asgi_tools-1.3.3.tar.gz",
"platform": null,
"description": ".. image:: https://raw.githubusercontent.com/klen/asgi-tools/develop/.github/assets/asgi-tools.png\n :height: 100\n\n.. _description:\n\n**asgi-tools** -- Is a really lightweight ASGI_ Toolkit to build ASGI applications faster.\n\n.. _badges:\n\n.. image:: https://github.com/klen/asgi-tools/workflows/tests/badge.svg\n :target: https://github.com/klen/asgi-tools/actions\n :alt: Tests Status\n\n.. image:: https://github.com/klen/asgi-tools/workflows/docs/badge.svg\n :target: https://klen.github.io/asgi-tools\n :alt: Documentation Status\n\n.. image:: https://img.shields.io/pypi/v/asgi-tools\n :target: https://pypi.org/project/asgi-tools/\n :alt: PYPI Version\n\n.. image:: https://img.shields.io/pypi/pyversions/asgi-tools\n :target: https://pypi.org/project/asgi-tools/\n :alt: Python Versions\n\n----------\n\n.. _documentation:\n\n**Documentation is here**: https://klen.github.io/asgi-tools\n\nASGI-Tools is designed to be used as an ASGI Toolkit to quickly build really\nlightweight ASGI applications/middlewares/tools.\n\nFor instance these middlewares were built with the library:\n\n* `ASGI-Sessions <https://github.com/klen/asgi-sessions>`_\n* `ASGI-Babel <https://github.com/klen/asgi-babel>`_\n* `ASGI-Prometheus <https://github.com/klen/asgi-prometheus>`_\n\n.. _features:\n\n**Features:**\n\n- Supports all most popular async python libraries: `Asyncio`_, `Trio`_ and Curio_\n- `Request`_ -- Parse ASGI scope, get url, headers, cookies, read a request's data/json/form-data\n- `Response`_ -- Send HTTP (text, html, json, stream, sse, file, http errors) responses\n- `ResponseWebsocket`_ -- Work with websockets\n- `RequestMiddleware`_ -- Parse a scope and insert the parsed request into the scope\n- `ResponseMiddleware`_ -- Parse responses and convert them into ASGI messages\n- `RouterMiddleware`_ -- Route HTTP requests\n- `LifespanMiddleware`_ -- Process a lifespan cycle\n- `StaticFilesMiddleware`_ -- Serve static files from URL prefixes\n- `asgi_tools.tests.TestClient <https://klen.github.io/asgi-tools/api.html#testclient>`_ -- A test client with websockets support to test asgi applications\n- `App`_ -- A simple foundation for ASGI apps\n\n.. _contents:\n\n.. contents::\n\n.. _requirements:\n\nRequirements\n=============\n\n- python >= 3.10\n\n.. note:: pypy3 is also supported\n\n**ASGI-Tools** belongs to the category of ASGI_ web frameworks, so it requires\nan ASGI HTTP server to run, such as uvicorn_, daphne_, or hypercorn_.\n\n.. _installation:\n\nInstallation\n=============\n\n**asgi-tools** should be installed using pip: ::\n\n pip install asgi-tools\n\nA Quick Example\n===============\n\nYou can use any of ASGI-Tools components independently.\n\nDespite this ASGI-Tools contains App_ helper to quickly build ASGI\napplications. For instance:\n\nSave this to ``app.py``.\n\n.. code-block:: python\n\n from asgi_tools import App\n\n app = App()\n\n @app.route('/')\n async def hello(request):\n return \"Hello World!\"\n\nRun it with `uvicorn`\n\n.. code-block:: sh\n\n $ uvicorn app:app\n\n\n.. _bugtracker:\n\nBug tracker\n===========\n\nIf you have any suggestions, bug reports or\nannoyances please report them to the issue tracker\nat https://github.com/klen/asgi-tools/issues\n\n.. _contributing:\n\nContributing\n============\n\nDevelopment of the project happens at: https://github.com/klen/asgi-tools\n\n.. _license:\n\nLicense\n========\n\nLicensed under a `MIT license`_.\n\n\n.. _links:\n\n.. _ASGI: https://asgi.readthedocs.io/en/latest/\n.. _Asyncio: https://docs.python.org/3/library/asyncio.html\n.. _Curio: https://curio.readthedocs.io/en/latest/\n.. _MIT license: http://opensource.org/licenses/MIT\n.. _Trio: https://trio.readthedocs.io/en/stable/index.html\n.. _klen: https://github.com/klen\n.. _uvicorn: http://www.uvicorn.org/\n.. _daphne: https://github.com/django/daphne/\n.. _hypercorn: https://github.com/pgjones/hypercorn/\n\n.. _Request: https://klen.github.io/asgi-tools/api.html#request\n.. _Response: https://klen.github.io/asgi-tools/api.html#responses\n.. _ResponseWebSocket: https://klen.github.io/asgi-tools/api.html#responsewebsocket\n.. _RequestMiddleware: https://klen.github.io/asgi-tools/api.html#requestmiddleware\n.. _ResponseMiddleware: https://klen.github.io/asgi-tools/api.html#responsemiddleware\n.. _LifespanMiddleware: https://klen.github.io/asgi-tools/api.html#lifespanmiddleware\n.. _StaticFilesMiddleware: https://klen.github.io/asgi-tools/api.html#staticfilesmiddleware\n.. _RouterMiddleware: https://klen.github.io/asgi-tools/api.html#routermiddleware\n.. _App: https://klen.github.io/asgi-tools/api.html#application\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "ASGI Toolkit to build web applications",
"version": "1.3.3",
"project_urls": {
"documentation": "https://klen.github.io/asgi-tools",
"homepage": "https://github.com/klen/asgi-tools",
"repository": "https://github.com/klen/asgi-tools"
},
"split_keywords": [
"asgi",
" asgi-tools",
" request",
" response",
" asyncio",
" trio"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2bd5918a8c5a054f358020459c7013f57159d86be3a7e0c0dc69c363271875f8",
"md5": "ba5a748a7b557044aea6a85714632a97",
"sha256": "7218c0d8586eb073773771007a05a03cf359b636316f45cb7422cd9b95bf800e"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp310-cp310-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "ba5a748a7b557044aea6a85714632a97",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 482649,
"upload_time": "2025-07-21T10:52:24",
"upload_time_iso_8601": "2025-07-21T10:52:24.953064Z",
"url": "https://files.pythonhosted.org/packages/2b/d5/918a8c5a054f358020459c7013f57159d86be3a7e0c0dc69c363271875f8/asgi_tools-1.3.3-cp310-cp310-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "406d31b3ffe1f3b499198908fea52103b801358cf48048bf3340a737e5006274",
"md5": "333db854ded507258707c0fb8cf9ca49",
"sha256": "a3de6cb58d7a0ccadf04123b92f863ec19c1c871e432e55ed054396fafae4540"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "333db854ded507258707c0fb8cf9ca49",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 372421,
"upload_time": "2025-07-21T10:52:27",
"upload_time_iso_8601": "2025-07-21T10:52:27.134443Z",
"url": "https://files.pythonhosted.org/packages/40/6d/31b3ffe1f3b499198908fea52103b801358cf48048bf3340a737e5006274/asgi_tools-1.3.3-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "488c5d002ad5541cc79c4afcb9bf6869ae85a1e5c79c3872a80d082fab58ee30",
"md5": "d8ebb2c37891c190579ce0862619e3d0",
"sha256": "c3d0166c5d959aedc65e5dffeaed1d23d3a7636420bdf903cae73e159457018d"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "d8ebb2c37891c190579ce0862619e3d0",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 971661,
"upload_time": "2025-07-21T10:52:28",
"upload_time_iso_8601": "2025-07-21T10:52:28.560209Z",
"url": "https://files.pythonhosted.org/packages/48/8c/5d002ad5541cc79c4afcb9bf6869ae85a1e5c79c3872a80d082fab58ee30/asgi_tools-1.3.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3fd4cc21bf3c21f32d1abca47c965a4fc5c0ed65e043021644a2cd34004ca5b1",
"md5": "161f01f5d815bc0003905c2cdf6ef85d",
"sha256": "890ba0eb3cc2df777abb688cc838278745384159e883e87ea337c644795354de"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "161f01f5d815bc0003905c2cdf6ef85d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 971468,
"upload_time": "2025-07-21T10:52:29",
"upload_time_iso_8601": "2025-07-21T10:52:29.590118Z",
"url": "https://files.pythonhosted.org/packages/3f/d4/cc21bf3c21f32d1abca47c965a4fc5c0ed65e043021644a2cd34004ca5b1/asgi_tools-1.3.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "66732cc7c4fe0fc4d9c603e0497ced25c7890c6a6781c4b0af24e813adf58e0b",
"md5": "160bcdfd02e4fe71a0bcf9de781e45ce",
"sha256": "7d2fbd48cfa94cff223da937d9e02a7d2157c31ed43954ca53f36b8b65ac7103"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp310-cp310-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "160bcdfd02e4fe71a0bcf9de781e45ce",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 952622,
"upload_time": "2025-07-21T10:52:31",
"upload_time_iso_8601": "2025-07-21T10:52:31.127275Z",
"url": "https://files.pythonhosted.org/packages/66/73/2cc7c4fe0fc4d9c603e0497ced25c7890c6a6781c4b0af24e813adf58e0b/asgi_tools-1.3.3-cp310-cp310-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f125e09d2bc0bc54ec2740024a36be21ba47e5bb8ab3850436060bc2d07c6fcf",
"md5": "d2b99e5aa197ef67ad04a996da6fa2dc",
"sha256": "549150c3cabf2142a7fe2dd42dfa1c25dd87ecb5b6fb22f248e23de1cdf788b8"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "d2b99e5aa197ef67ad04a996da6fa2dc",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 962461,
"upload_time": "2025-07-21T10:52:32",
"upload_time_iso_8601": "2025-07-21T10:52:32.187294Z",
"url": "https://files.pythonhosted.org/packages/f1/25/e09d2bc0bc54ec2740024a36be21ba47e5bb8ab3850436060bc2d07c6fcf/asgi_tools-1.3.3-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f78335acb99f67cac061cc55d95d5b4a26bbbd0af2dd87a2c39511b634c4247f",
"md5": "7a3444279fd5a738d9e75ef8e3db8696",
"sha256": "00d207a9c2839a8473db18b0e7a72ecaceef03348a32d16290965befe99b0e33"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "7a3444279fd5a738d9e75ef8e3db8696",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 367303,
"upload_time": "2025-07-21T10:52:33",
"upload_time_iso_8601": "2025-07-21T10:52:33.161949Z",
"url": "https://files.pythonhosted.org/packages/f7/83/35acb99f67cac061cc55d95d5b4a26bbbd0af2dd87a2c39511b634c4247f/asgi_tools-1.3.3-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1c0b6ab6b8281b0d4fd5a75c0cb9b30a25b4d52f6701a183813f177b10bcff70",
"md5": "db85745baf7cc749b1634498befe0f7d",
"sha256": "f595053fa957db1b9e93f388cbb85b7e5f0c2bfcc512eac2de7de737ce61a005"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp311-cp311-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "db85745baf7cc749b1634498befe0f7d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 488314,
"upload_time": "2025-07-21T10:52:35",
"upload_time_iso_8601": "2025-07-21T10:52:35.291281Z",
"url": "https://files.pythonhosted.org/packages/1c/0b/6ab6b8281b0d4fd5a75c0cb9b30a25b4d52f6701a183813f177b10bcff70/asgi_tools-1.3.3-cp311-cp311-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f1658ffb7e0d17019942d0e52ecd69d8dc0f4f7ad7db01aa979ae6ae0948b972",
"md5": "53120bc61fd28af2ae69d2583a249a2d",
"sha256": "7fd42f63770f596f1d951e0d3116d0817b3f3d3f519e63efb1e7bc9f7ce10dfe"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "53120bc61fd28af2ae69d2583a249a2d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 375085,
"upload_time": "2025-07-21T10:52:36",
"upload_time_iso_8601": "2025-07-21T10:52:36.496262Z",
"url": "https://files.pythonhosted.org/packages/f1/65/8ffb7e0d17019942d0e52ecd69d8dc0f4f7ad7db01aa979ae6ae0948b972/asgi_tools-1.3.3-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "33bb10dee3a90684174ef68e13744d01623d6381d190d0c087a356c7226dc2c4",
"md5": "be0658c5ca48dca67f71db7b102cb07d",
"sha256": "0cbaa0ea6ac45ef66455a4e1d33cc5abf25f74f9f42a4cc2429615da7d68118d"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "be0658c5ca48dca67f71db7b102cb07d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 1018603,
"upload_time": "2025-07-21T10:52:37",
"upload_time_iso_8601": "2025-07-21T10:52:37.826105Z",
"url": "https://files.pythonhosted.org/packages/33/bb/10dee3a90684174ef68e13744d01623d6381d190d0c087a356c7226dc2c4/asgi_tools-1.3.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e7c9c8b1e233204b64c2e258446af0b6abfb14ee5d2525b42cf7d26d77251c29",
"md5": "2a4b9cf9ce63c22d05a35be88eb34943",
"sha256": "f9c947c6760165f18f085a26de80d001f08ca43e364196d19e78b3f75b6611e4"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "2a4b9cf9ce63c22d05a35be88eb34943",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 1018189,
"upload_time": "2025-07-21T10:52:39",
"upload_time_iso_8601": "2025-07-21T10:52:39.359354Z",
"url": "https://files.pythonhosted.org/packages/e7/c9/c8b1e233204b64c2e258446af0b6abfb14ee5d2525b42cf7d26d77251c29/asgi_tools-1.3.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "386c77047b636c2cde82a86d67539d7bddb582822a2d3a64237fd0a53688f223",
"md5": "57c3303838588a08bc63c5d7d88a4497",
"sha256": "5b987eb5daca7f4bedc838a60ed9f0916e8a4769ea4f5552e6b297c4780d73da"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "57c3303838588a08bc63c5d7d88a4497",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 1002799,
"upload_time": "2025-07-21T10:52:40",
"upload_time_iso_8601": "2025-07-21T10:52:40.441692Z",
"url": "https://files.pythonhosted.org/packages/38/6c/77047b636c2cde82a86d67539d7bddb582822a2d3a64237fd0a53688f223/asgi_tools-1.3.3-cp311-cp311-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "39e302398c5b3d580dfaf03ada53ff6233d431255bfb88451b97a70e63df1810",
"md5": "93f4d7819eb7dfeda98e672fc12926c9",
"sha256": "275fed068312b06344204997f24ef7b71ecb4deba45749610b12211356d358a1"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "93f4d7819eb7dfeda98e672fc12926c9",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 1010953,
"upload_time": "2025-07-21T10:52:41",
"upload_time_iso_8601": "2025-07-21T10:52:41.463987Z",
"url": "https://files.pythonhosted.org/packages/39/e3/02398c5b3d580dfaf03ada53ff6233d431255bfb88451b97a70e63df1810/asgi_tools-1.3.3-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1bf02b3de912d439543e87e063b7ece159a0c0757025b4ed25bdd538084b0229",
"md5": "17acb40b8a903fe60b810378ab77feea",
"sha256": "0e2785829bdce57f2dcf300da0203de83b5fd0251cfd0a8c5a85d0aa621a304d"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "17acb40b8a903fe60b810378ab77feea",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 367665,
"upload_time": "2025-07-21T10:52:42",
"upload_time_iso_8601": "2025-07-21T10:52:42.473891Z",
"url": "https://files.pythonhosted.org/packages/1b/f0/2b3de912d439543e87e063b7ece159a0c0757025b4ed25bdd538084b0229/asgi_tools-1.3.3-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fca97de7cb9372a820f8f85cf0aadb81ffdc2b0eabcaa4d706449db776d630d1",
"md5": "240442b04377c7596dea2ee85dfc94d5",
"sha256": "75b180d55729b9a2ddb534573b56ae20af73fbf38509225e84e5ae06a91b2fd8"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp312-cp312-macosx_10_13_universal2.whl",
"has_sig": false,
"md5_digest": "240442b04377c7596dea2ee85dfc94d5",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 485296,
"upload_time": "2025-07-21T10:52:43",
"upload_time_iso_8601": "2025-07-21T10:52:43.896769Z",
"url": "https://files.pythonhosted.org/packages/fc/a9/7de7cb9372a820f8f85cf0aadb81ffdc2b0eabcaa4d706449db776d630d1/asgi_tools-1.3.3-cp312-cp312-macosx_10_13_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e7d0ce7018e6125b980815a3590c5a518fb3b2c59a35d0dc01c983fe9c28dfc6",
"md5": "ba1ea2a39751858dda1f388c8858a90d",
"sha256": "d291611fa4655e8a0aab652b4b3d84d8b08f641e5ea8244e9d00a7c28df37735"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "ba1ea2a39751858dda1f388c8858a90d",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 373438,
"upload_time": "2025-07-21T10:52:44",
"upload_time_iso_8601": "2025-07-21T10:52:44.840212Z",
"url": "https://files.pythonhosted.org/packages/e7/d0/ce7018e6125b980815a3590c5a518fb3b2c59a35d0dc01c983fe9c28dfc6/asgi_tools-1.3.3-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7fba697643adb579753df475e8fd755daef1038fcd603021b4c02156de136a2c",
"md5": "c833b346a9b2e7cec2a32b40bfe10525",
"sha256": "ddd0d0e59ef0b42005916dcc1ccca3a570e524df491b831c17de8273210c4ebf"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "c833b346a9b2e7cec2a32b40bfe10525",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 1015967,
"upload_time": "2025-07-21T10:52:45",
"upload_time_iso_8601": "2025-07-21T10:52:45.874471Z",
"url": "https://files.pythonhosted.org/packages/7f/ba/697643adb579753df475e8fd755daef1038fcd603021b4c02156de136a2c/asgi_tools-1.3.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "13a849ccd47ca8689e2448108644843ae550a5073b95bb5f8065c6e5113f787b",
"md5": "c65bd5785c1e2acdb239873295e49731",
"sha256": "bb472c8df5cd6912513cdb35e41626b09958864a997f968c568593b2defe2416"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "c65bd5785c1e2acdb239873295e49731",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 1025443,
"upload_time": "2025-07-21T10:52:47",
"upload_time_iso_8601": "2025-07-21T10:52:47.373287Z",
"url": "https://files.pythonhosted.org/packages/13/a8/49ccd47ca8689e2448108644843ae550a5073b95bb5f8065c6e5113f787b/asgi_tools-1.3.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3266a3ad815f4b144bad7bef64ac05e62bbf7d5125ae3d5881a5f2d4ca6d29c7",
"md5": "2188b1d6336927e3ba7a7be1cbf46717",
"sha256": "df77d8f1d6169e6323dd1574529914f44f742a597bf38c9cb6a9e49982f9a85c"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "2188b1d6336927e3ba7a7be1cbf46717",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 994717,
"upload_time": "2025-07-21T10:52:48",
"upload_time_iso_8601": "2025-07-21T10:52:48.396563Z",
"url": "https://files.pythonhosted.org/packages/32/66/a3ad815f4b144bad7bef64ac05e62bbf7d5125ae3d5881a5f2d4ca6d29c7/asgi_tools-1.3.3-cp312-cp312-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e55208125da7471a8b16237a8c809dfb25f73c986114784b3d6c7fc7856f45e7",
"md5": "3b9166a04e3292e2a0327536ea7450a0",
"sha256": "7c3e6829afb440b2e940ce47dc66cf67c7a2c20147ee0a23ef51d178a64d5131"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "3b9166a04e3292e2a0327536ea7450a0",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 1012712,
"upload_time": "2025-07-21T10:52:49",
"upload_time_iso_8601": "2025-07-21T10:52:49.465184Z",
"url": "https://files.pythonhosted.org/packages/e5/52/08125da7471a8b16237a8c809dfb25f73c986114784b3d6c7fc7856f45e7/asgi_tools-1.3.3-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f5b641ff42606258474e9c5c5299f00e91968e24b106bbac435ec5111b4dc978",
"md5": "a46e978e030b0d60770625d66ab3a13d",
"sha256": "b74fda94b4575ad95d027162141d36830a708f7c5aace7b5d38b35737125ed43"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "a46e978e030b0d60770625d66ab3a13d",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 367093,
"upload_time": "2025-07-21T10:52:50",
"upload_time_iso_8601": "2025-07-21T10:52:50.504889Z",
"url": "https://files.pythonhosted.org/packages/f5/b6/41ff42606258474e9c5c5299f00e91968e24b106bbac435ec5111b4dc978/asgi_tools-1.3.3-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "be73ca29710e59a514c504a9608c941385982efeb8bdbb3fae76281a33012c8c",
"md5": "6eecc25fe63bc9be7281b2c7e48e71da",
"sha256": "52e11ada4abbc9dd1c0ad855ee00143e73d76bf4d4b275c6a62a1eece5ef5687"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp313-cp313-macosx_10_13_universal2.whl",
"has_sig": false,
"md5_digest": "6eecc25fe63bc9be7281b2c7e48e71da",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 482066,
"upload_time": "2025-07-21T10:52:51",
"upload_time_iso_8601": "2025-07-21T10:52:51.993232Z",
"url": "https://files.pythonhosted.org/packages/be/73/ca29710e59a514c504a9608c941385982efeb8bdbb3fae76281a33012c8c/asgi_tools-1.3.3-cp313-cp313-macosx_10_13_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0b3e96054940b8be1a4bf7221208c0fd77241cfe425bad95e5da4f7b167e183c",
"md5": "d7ff31f620dd628b39206bc6f5371d4a",
"sha256": "e1b282a904faf46019962fb1c41554edc9adbecaae0f90386acec3011bf464b3"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "d7ff31f620dd628b39206bc6f5371d4a",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 371892,
"upload_time": "2025-07-21T10:52:53",
"upload_time_iso_8601": "2025-07-21T10:52:53.383265Z",
"url": "https://files.pythonhosted.org/packages/0b/3e/96054940b8be1a4bf7221208c0fd77241cfe425bad95e5da4f7b167e183c/asgi_tools-1.3.3-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9e300174fa0fb0ef7974dadb90cbfc8e4ce91115447b0356020d4428b39cc9c3",
"md5": "8a18cfb1d6007b3539a7bd97106b7708",
"sha256": "8c2d833f211d5a14348d1666e1bc9985d1794b73f1b8b8ceb15c7d18f9324987"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"has_sig": false,
"md5_digest": "8a18cfb1d6007b3539a7bd97106b7708",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 1000198,
"upload_time": "2025-07-21T10:52:54",
"upload_time_iso_8601": "2025-07-21T10:52:54.951260Z",
"url": "https://files.pythonhosted.org/packages/9e/30/0174fa0fb0ef7974dadb90cbfc8e4ce91115447b0356020d4428b39cc9c3/asgi_tools-1.3.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4ec86b83b2e14af546f2ea6d107e15371b7d6d4bd4576aeceee4b3e0807741fd",
"md5": "8b9ed4875f86d101556a1852118df0ec",
"sha256": "2c4801ce8b8f9fc51265d309145639791d1c013d18d450684c36def0466e9c98"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "8b9ed4875f86d101556a1852118df0ec",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 1010391,
"upload_time": "2025-07-21T10:52:56",
"upload_time_iso_8601": "2025-07-21T10:52:56.977311Z",
"url": "https://files.pythonhosted.org/packages/4e/c8/6b83b2e14af546f2ea6d107e15371b7d6d4bd4576aeceee4b3e0807741fd/asgi_tools-1.3.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "53eb2c1512381deaa7643a78eb5e838c7c2a8f71c0ad7a465bd15538c01a703f",
"md5": "646d0e264bf5601a390ac81b9a940810",
"sha256": "ce68a1ce1e8e9d987ec7a9562a30c3e3bba111f7b265b9588b79f52250ba1673"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "646d0e264bf5601a390ac81b9a940810",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 980381,
"upload_time": "2025-07-21T10:52:58",
"upload_time_iso_8601": "2025-07-21T10:52:58.159890Z",
"url": "https://files.pythonhosted.org/packages/53/eb/2c1512381deaa7643a78eb5e838c7c2a8f71c0ad7a465bd15538c01a703f/asgi_tools-1.3.3-cp313-cp313-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "62df16ad40e2004165aff0cb5db6c25d6b6e234d804793e9b3d02093497574ff",
"md5": "9f87071b4b107344dd52422354b53477",
"sha256": "ecb750a90bf515e9fac9e35e171a3feecc317a2507448854bab44d2d80234bec"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "9f87071b4b107344dd52422354b53477",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 995299,
"upload_time": "2025-07-21T10:52:59",
"upload_time_iso_8601": "2025-07-21T10:52:59.200135Z",
"url": "https://files.pythonhosted.org/packages/62/df/16ad40e2004165aff0cb5db6c25d6b6e234d804793e9b3d02093497574ff/asgi_tools-1.3.3-cp313-cp313-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a5bbe63bb2787220bdea40a75d0140c6a1eca91678db6899f8ac1cd5f7d6c9ac",
"md5": "276c10e51d927b1e7afd51531028951f",
"sha256": "3ab567113dc3b5a06678801ef172a2d5d5bdb06333950a4dd005e140da1f3d30"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "276c10e51d927b1e7afd51531028951f",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 366726,
"upload_time": "2025-07-21T10:53:00",
"upload_time_iso_8601": "2025-07-21T10:53:00.363797Z",
"url": "https://files.pythonhosted.org/packages/a5/bb/e63bb2787220bdea40a75d0140c6a1eca91678db6899f8ac1cd5f7d6c9ac/asgi_tools-1.3.3-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2e170f19ac94eeb4429f16891b4860598a9cda04233050a7dd8730b9d5dabbba",
"md5": "c3be8d4b9fcbeaceaf4884b84af2fc87",
"sha256": "28941453e41f89d9fa330ab6a1ff3a63794b2c03c2d93994fde669bc0f8076ee"
},
"downloads": -1,
"filename": "asgi_tools-1.3.3.tar.gz",
"has_sig": false,
"md5_digest": "c3be8d4b9fcbeaceaf4884b84af2fc87",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 48884,
"upload_time": "2025-07-21T10:53:01",
"upload_time_iso_8601": "2025-07-21T10:53:01.317592Z",
"url": "https://files.pythonhosted.org/packages/2e/17/0f19ac94eeb4429f16891b4860598a9cda04233050a7dd8730b9d5dabbba/asgi_tools-1.3.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-21 10:53:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "klen",
"github_project": "asgi-tools",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "asgi-tools"
}