asgi-tools


Nameasgi-tools JSON
Version 1.3.3 PyPI version JSON
download
home_pageNone
SummaryASGI Toolkit to build web applications
upload_time2025-07-21 10:53:01
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT License
keywords asgi asgi-tools request response asyncio trio
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            .. 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"
}
        
Elapsed time: 1.79431s