From 6a89d2410ebd4c35182c7864c8ef4b13b32229aa Mon Sep 17 00:00:00 2001 From: Polina Date: Thu, 2 Jul 2026 20:56:28 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?venv/Lib/site-packages/uvicorn-0.49.0.dist-info=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../uvicorn-0.49.0.dist-info/INSTALLER | 1 + .../uvicorn-0.49.0.dist-info/METADATA | 191 ++++++++++++++++++ .../uvicorn-0.49.0.dist-info/RECORD | 89 ++++++++ .../uvicorn-0.49.0.dist-info/REQUESTED | Bin 0 -> 1024 bytes .../uvicorn-0.49.0.dist-info/entry_points.txt | 2 + 5 files changed, 283 insertions(+) create mode 100644 venv/Lib/site-packages/uvicorn-0.49.0.dist-info/INSTALLER create mode 100644 venv/Lib/site-packages/uvicorn-0.49.0.dist-info/METADATA create mode 100644 venv/Lib/site-packages/uvicorn-0.49.0.dist-info/RECORD create mode 100644 venv/Lib/site-packages/uvicorn-0.49.0.dist-info/REQUESTED create mode 100644 venv/Lib/site-packages/uvicorn-0.49.0.dist-info/entry_points.txt diff --git a/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/INSTALLER b/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/METADATA b/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/METADATA new file mode 100644 index 0000000..390a458 --- /dev/null +++ b/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/METADATA @@ -0,0 +1,191 @@ +Metadata-Version: 2.4 +Name: uvicorn +Version: 0.49.0 +Summary: The lightning-fast ASGI server. +Project-URL: Changelog, https://uvicorn.dev/release-notes +Project-URL: Funding, https://github.com/sponsors/encode +Project-URL: Homepage, https://uvicorn.dev/ +Project-URL: Source, https://github.com/Kludex/uvicorn +Author-email: Tom Christie +Maintainer-email: Marcelo Trylesinski +License-Expression: BSD-3-Clause +License-File: LICENSE.md +Classifier: Development Status :: 4 - Beta +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Classifier: Programming Language :: Python :: 3.14 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Internet :: WWW/HTTP +Requires-Python: >=3.10 +Requires-Dist: click>=7.0 +Requires-Dist: h11>=0.8 +Requires-Dist: typing-extensions>=4.0; python_version < '3.11' +Provides-Extra: standard +Requires-Dist: colorama>=0.4; (sys_platform == 'win32') and extra == 'standard' +Requires-Dist: httptools>=0.8.0; extra == 'standard' +Requires-Dist: python-dotenv>=0.13; extra == 'standard' +Requires-Dist: pyyaml>=5.1; extra == 'standard' +Requires-Dist: uvloop>=0.15.1; (sys_platform != 'win32' and (sys_platform != 'cygwin' and platform_python_implementation != 'PyPy')) and extra == 'standard' +Requires-Dist: watchfiles>=0.20; extra == 'standard' +Requires-Dist: websockets>=10.4; extra == 'standard' +Description-Content-Type: text/markdown + +

+ uvicorn +

+ +

+An ASGI web server, for Python. +

+ +--- + +[![Build Status](https://github.com/Kludex/uvicorn/workflows/Test%20Suite/badge.svg)](https://github.com/Kludex/uvicorn/actions) +[![Package version](https://badge.fury.io/py/uvicorn.svg)](https://pypi.python.org/pypi/uvicorn) +[![Supported Python Version](https://img.shields.io/pypi/pyversions/uvicorn.svg?color=%2334D058)](https://pypi.org/project/uvicorn) +[![Discord](https://img.shields.io/discord/1051468649518616576?logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2)](https://discord.gg/RxKUF5JuHs) + +--- + +**Documentation**: [https://uvicorn.dev](https://uvicorn.dev) + +**Source Code**: [https://www.github.com/Kludex/uvicorn](https://www.github.com/Kludex/uvicorn) + +--- + +Uvicorn is an ASGI web server implementation for Python. + +Until recently Python has lacked a minimal low-level server/application interface for +async frameworks. The [ASGI specification][asgi] fills this gap, and means we're now able to +start building a common set of tooling usable across all async frameworks. + +Uvicorn supports HTTP/1.1 and WebSockets. + +## Quickstart + +Install using `pip`: + +```shell +$ pip install uvicorn +``` + +This will install uvicorn with minimal (pure Python) dependencies. + +```shell +$ pip install 'uvicorn[standard]' +``` + +This will install uvicorn with "Cython-based" dependencies (where possible) and other "optional extras". + +In this context, "Cython-based" means the following: + +- the event loop `uvloop` will be installed and used if possible. +- the http protocol will be handled by `httptools` if possible. + +Moreover, "optional extras" means that: + +- the websocket protocol will be handled by `websockets` (should you want to use `wsproto` you'd need to install it manually) if possible. +- the `--reload` flag in development mode will use `watchfiles`. +- windows users will have `colorama` installed for the colored logs. +- `python-dotenv` will be installed should you want to use the `--env-file` option. +- `PyYAML` will be installed to allow you to provide a `.yaml` file to `--log-config`, if desired. + +Create an application, in `example.py`: + +```python +async def app(scope, receive, send): + assert scope['type'] == 'http' + + await send({ + 'type': 'http.response.start', + 'status': 200, + 'headers': [ + (b'content-type', b'text/plain'), + ], + }) + await send({ + 'type': 'http.response.body', + 'body': b'Hello, world!', + }) +``` + +Run the server: + +```shell +$ uvicorn example:app +``` + +--- + +## Why ASGI? + +Most well established Python Web frameworks started out as WSGI-based frameworks. + +WSGI applications are a single, synchronous callable that takes a request and returns a response. +This doesn’t allow for long-lived connections, like you get with long-poll HTTP or WebSocket connections, +which WSGI doesn't support well. + +Having an async concurrency model also allows for options such as lightweight background tasks, +and can be less of a limiting factor for endpoints that have long periods being blocked on network +I/O such as dealing with slow HTTP requests. + +--- + +## Alternative ASGI servers + +A strength of the ASGI protocol is that it decouples the server implementation +from the application framework. This allows for an ecosystem of interoperating +webservers and application frameworks. + +### Daphne + +The first ASGI server implementation, originally developed to power Django Channels, is [the Daphne webserver][daphne]. + +It is run widely in production, and supports HTTP/1.1, HTTP/2, and WebSockets. + +Any of the example applications given here can equally well be run using `daphne` instead. + +``` +$ pip install daphne +$ daphne app:App +``` + +### Hypercorn + +[Hypercorn][hypercorn] was initially part of the Quart web framework, before +being separated out into a standalone ASGI server. + +Hypercorn supports HTTP/1.1, HTTP/2, and WebSockets. + +It also supports [the excellent `trio` async framework][trio], as an alternative to `asyncio`. + +``` +$ pip install hypercorn +$ hypercorn app:App +``` + +### Mangum + +[Mangum][mangum] is an adapter for using ASGI applications with AWS Lambda & API Gateway. + +### Granian + +[Granian][granian] is an ASGI compatible Rust HTTP server which supports HTTP/2, TLS and WebSockets. + +--- + +

Uvicorn is BSD licensed code.
Designed & crafted with care.

— 🦄 —

+ +[asgi]: https://asgi.readthedocs.io/en/latest/ +[daphne]: https://github.com/django/daphne +[hypercorn]: https://github.com/pgjones/hypercorn +[trio]: https://trio.readthedocs.io +[mangum]: https://github.com/jordaneremieff/mangum +[granian]: https://github.com/emmett-framework/granian diff --git a/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/RECORD b/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/RECORD new file mode 100644 index 0000000..99f3356 --- /dev/null +++ b/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/RECORD @@ -0,0 +1,89 @@ +../../Scripts/uvicorn.exe,sha256=jxY8m_t2w-Ops9Wu4MWQm0-gPDJn2_v9UXt1TAUUvq0,108369 +uvicorn-0.49.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +uvicorn-0.49.0.dist-info/METADATA,sha256=xOeLMlH-BitEF0pF64qdEHEly7vgYuVBJ2wDxQ6RFDs,6738 +uvicorn-0.49.0.dist-info/RECORD,, +uvicorn-0.49.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +uvicorn-0.49.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87 +uvicorn-0.49.0.dist-info/entry_points.txt,sha256=FW1w-hkc9QgwaGoovMvm0ZY73w_NcycWdGAUfDsNGxw,46 +uvicorn-0.49.0.dist-info/licenses/LICENSE.md,sha256=7-Gs8-YvuZwoiw7HPlp3O3Jo70Mg_nV-qZQhTktjw3E,1526 +uvicorn/__init__.py,sha256=dODKUIVij4EJeg9czHoZ1OATfCe3I_5KJK6LiQIMhZA,147 +uvicorn/__main__.py,sha256=DQizy6nKP0ywhPpnCHgmRDYIMfcqZKVEzNIWQZjqtVQ,62 +uvicorn/__pycache__/__init__.cpython-314.pyc,, +uvicorn/__pycache__/__main__.cpython-314.pyc,, +uvicorn/__pycache__/_compat.cpython-314.pyc,, +uvicorn/__pycache__/_subprocess.cpython-314.pyc,, +uvicorn/__pycache__/_types.cpython-314.pyc,, +uvicorn/__pycache__/config.cpython-314.pyc,, +uvicorn/__pycache__/importer.cpython-314.pyc,, +uvicorn/__pycache__/logging.cpython-314.pyc,, +uvicorn/__pycache__/main.cpython-314.pyc,, +uvicorn/__pycache__/server.cpython-314.pyc,, +uvicorn/__pycache__/workers.cpython-314.pyc,, +uvicorn/_compat.py,sha256=6X49c9ovzmMHir2S3syinOQMzSPBcp8MNuI9ZQrbYiU,2916 +uvicorn/_subprocess.py,sha256=fQ4JTajuXay6mVc8KQNGfXu6JHoab46aS6kyIMWJMPk,2776 +uvicorn/_types.py,sha256=JDM6E-hqZ6o_cSZvjDULjAv77PFH2pLe_Vgqshe8qH4,7677 +uvicorn/config.py,sha256=UhYkFgqeVqj38FZb6vwIn3qyVWYjr7u9eJfNP2LPhfc,23995 +uvicorn/importer.py,sha256=nRt0QQ3qpi264-n_mR0l55C2ddM8nowTNzT1jsWaam8,1128 +uvicorn/lifespan/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +uvicorn/lifespan/__pycache__/__init__.cpython-314.pyc,, +uvicorn/lifespan/__pycache__/off.cpython-314.pyc,, +uvicorn/lifespan/__pycache__/on.cpython-314.pyc,, +uvicorn/lifespan/off.py,sha256=nfI6qHAUo_8-BEXMBKoHQ9wUbsXrPaXLCbDSS0vKSr8,332 +uvicorn/lifespan/on.py,sha256=iETPFj6SFhPDPcdeGxfa43LKImJU7MI5i7QUUepBcPE,5173 +uvicorn/logging.py,sha256=IBPSo2qRBWJRj5C2nN7I1civFAj9jKZ5Azxk0JpPB98,4235 +uvicorn/loops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +uvicorn/loops/__pycache__/__init__.cpython-314.pyc,, +uvicorn/loops/__pycache__/asyncio.cpython-314.pyc,, +uvicorn/loops/__pycache__/auto.cpython-314.pyc,, +uvicorn/loops/__pycache__/uvloop.cpython-314.pyc,, +uvicorn/loops/asyncio.py,sha256=a8wO4fB4pCk-RLICq7CnGr_cxQI7MBLJj-Go4UQldD8,333 +uvicorn/loops/auto.py,sha256=pdTsMcqkbE8fvdNgLs1y4c6hsuN598mZOSOlC0a23S4,566 +uvicorn/loops/uvloop.py,sha256=Ca-TL-W8tbdEW5uvL_GrMih7G8e_t_vhNevi2NKYjEU,236 +uvicorn/main.py,sha256=UdyHBAwxHz9_NYB3uzrn8XVnpL2PrX4JrPulJiFtWx8,18785 +uvicorn/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +uvicorn/middleware/__pycache__/__init__.cpython-314.pyc,, +uvicorn/middleware/__pycache__/asgi2.cpython-314.pyc,, +uvicorn/middleware/__pycache__/message_logger.cpython-314.pyc,, +uvicorn/middleware/__pycache__/proxy_headers.cpython-314.pyc,, +uvicorn/middleware/__pycache__/wsgi.cpython-314.pyc,, +uvicorn/middleware/asgi2.py,sha256=YQrQNm3RehFts3mzk3k4yw8aD8Egtj0tRS3N45YkQa0,394 +uvicorn/middleware/message_logger.py,sha256=IHEZUSnFNaMFUFdwtZO3AuFATnYcSor-gVtOjbCzt8M,2859 +uvicorn/middleware/proxy_headers.py,sha256=2CEkCr_CsQYcNzZdnqkha8WB7vH6oX_S2sePHCOJZHc,7078 +uvicorn/middleware/wsgi.py,sha256=VnbnkdCL3_ctLWzk1j39xvxysuoAB3kSYmi8TsOLpNs,7125 +uvicorn/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +uvicorn/protocols/__pycache__/__init__.cpython-314.pyc,, +uvicorn/protocols/__pycache__/utils.cpython-314.pyc,, +uvicorn/protocols/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +uvicorn/protocols/http/__pycache__/__init__.cpython-314.pyc,, +uvicorn/protocols/http/__pycache__/auto.cpython-314.pyc,, +uvicorn/protocols/http/__pycache__/flow_control.cpython-314.pyc,, +uvicorn/protocols/http/__pycache__/h11_impl.cpython-314.pyc,, +uvicorn/protocols/http/__pycache__/httptools_impl.cpython-314.pyc,, +uvicorn/protocols/http/auto.py,sha256=YfXGyzWTaaE2p_jkTPWrJCXsxEaQnC3NK0-G7Wgmnls,403 +uvicorn/protocols/http/flow_control.py,sha256=050WVg31EvPOkHwynCoMP1zXFl_vO3U4durlc5vyp4U,1701 +uvicorn/protocols/http/h11_impl.py,sha256=K7SHLVsYORBde6cUGNwDt9rbS2vPfUbLkzbVOnEYeDk,21161 +uvicorn/protocols/http/httptools_impl.py,sha256=zJN4yQl26yzPqdyjYOFYimssb_Z8JfURMbJy8sqxLI0,22314 +uvicorn/protocols/utils.py,sha256=1hKdDCmo_GtGrK1zZfa70jL7Hr3mDE8RnL69O4rHQRg,2058 +uvicorn/protocols/websockets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +uvicorn/protocols/websockets/__pycache__/__init__.cpython-314.pyc,, +uvicorn/protocols/websockets/__pycache__/auto.cpython-314.pyc,, +uvicorn/protocols/websockets/__pycache__/websockets_impl.cpython-314.pyc,, +uvicorn/protocols/websockets/__pycache__/websockets_sansio_impl.cpython-314.pyc,, +uvicorn/protocols/websockets/__pycache__/wsproto_impl.cpython-314.pyc,, +uvicorn/protocols/websockets/auto.py,sha256=pAEMIsyXQ12CL6ffaEJQ2cQEC8yAr8sr7bC0H6hzBfs,590 +uvicorn/protocols/websockets/websockets_impl.py,sha256=O2EW1zGQmcB65-kbxkA0XnU-sbSbPSsUKvzh8N-QQoQ,14849 +uvicorn/protocols/websockets/websockets_sansio_impl.py,sha256=KnCKcpF7VEpu5wxudtk0u7SmwY2O3dk52Q8rrQ614Bs,20198 +uvicorn/protocols/websockets/wsproto_impl.py,sha256=JKmDJJ-tcb9PVvNkpP_wz-RsvonfwmSbDKWEX7GSNM4,19538 +uvicorn/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +uvicorn/server.py,sha256=fXk3__HBf1g-oh_4_OXIpb8tnTyafxuWRiEet6SQEvM,13368 +uvicorn/supervisors/__init__.py,sha256=wT8eOEIqT1yWQgytZtv5taWMul7xoTIY0xm1m4oyPTw,507 +uvicorn/supervisors/__pycache__/__init__.cpython-314.pyc,, +uvicorn/supervisors/__pycache__/basereload.cpython-314.pyc,, +uvicorn/supervisors/__pycache__/multiprocess.cpython-314.pyc,, +uvicorn/supervisors/__pycache__/statreload.cpython-314.pyc,, +uvicorn/supervisors/__pycache__/watchfilesreload.cpython-314.pyc,, +uvicorn/supervisors/basereload.py,sha256=mYOPopNS6fVTrqfQ4HzclH7Xw-VVQy7ZDSINv5_lu04,4018 +uvicorn/supervisors/multiprocess.py,sha256=_lU92Bnf_IqibFmmNoojY3J3fR6LzSBa76BpmcSMfHc,7580 +uvicorn/supervisors/statreload.py,sha256=XPaEtVXaasII1kkG32UUG8oD7-fS0FwyXkQLF9QYPbA,1548 +uvicorn/supervisors/watchfilesreload.py,sha256=u-MuYm0LsZMN670u_TtSWiMBUA2z4j1sIe3O2A67Ep4,2923 +uvicorn/workers.py,sha256=lMCubn1Wi-4h2jxrXNMmhOJZy7ZP8QxbZbP3_2O1iHE,3873 diff --git a/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/REQUESTED b/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/REQUESTED new file mode 100644 index 0000000000000000000000000000000000000000..06d7405020018ddf3cacee90fd4af10487da3d20 GIT binary patch literal 1024 ScmZQz7zLvtFd70QH3R?z00031 literal 0 HcmV?d00001 diff --git a/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/entry_points.txt b/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/entry_points.txt new file mode 100644 index 0000000..4b00fcb --- /dev/null +++ b/venv/Lib/site-packages/uvicorn-0.49.0.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +uvicorn = uvicorn.main:main