about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info')
-rw-r--r--.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/INSTALLER1
-rw-r--r--.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/METADATA181
-rw-r--r--.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/RECORD86
-rw-r--r--.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/WHEEL4
-rw-r--r--.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/entry_points.txt2
-rw-r--r--.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/licenses/LICENSE.md27
6 files changed, 301 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/INSTALLER b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/INSTALLER
new file mode 100644
index 00000000..a1b589e3
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/INSTALLER
@@ -0,0 +1 @@
+pip
diff --git a/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/METADATA b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/METADATA
new file mode 100644
index 00000000..8859cfae
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/METADATA
@@ -0,0 +1,181 @@
+Metadata-Version: 2.1
+Name: uvicorn
+Version: 0.27.1
+Summary: The lightning-fast ASGI server.
+Project-URL: Changelog, https://github.com/encode/uvicorn/blob/master/CHANGELOG.md
+Project-URL: Funding, https://github.com/sponsors/encode
+Project-URL: Homepage, https://www.uvicorn.org/
+Project-URL: Source, https://github.com/encode/uvicorn
+Author-email: Tom Christie <tom@tomchristie.com>
+License-Expression: BSD-3-Clause
+License-File: LICENSE.md
+Classifier: Development Status :: 4 - Beta
+Classifier: Environment :: Web Environment
+Classifier: Intended Audience :: Developers
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
+Classifier: Topic :: Internet :: WWW/HTTP
+Requires-Python: >=3.8
+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.5.0; extra == 'standard'
+Requires-Dist: python-dotenv>=0.13; extra == 'standard'
+Requires-Dist: pyyaml>=5.1; extra == 'standard'
+Requires-Dist: uvloop!=0.15.0,!=0.15.1,>=0.14.0; (sys_platform != 'win32' and (sys_platform != 'cygwin' and platform_python_implementation != 'PyPy')) and extra == 'standard'
+Requires-Dist: watchfiles>=0.13; extra == 'standard'
+Requires-Dist: websockets>=10.4; extra == 'standard'
+Description-Content-Type: text/markdown
+
+<p align="center">
+  <img width="320" height="320" src="https://raw.githubusercontent.com/tomchristie/uvicorn/master/docs/uvicorn.png" alt='uvicorn'>
+</p>
+
+<p align="center">
+<em>An ASGI web server, for Python.</em>
+</p>
+
+---
+
+[![Build Status](https://github.com/encode/uvicorn/workflows/Test%20Suite/badge.svg)](https://github.com/encode/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)
+
+**Documentation**: [https://www.uvicorn.org](https://www.uvicorn.org)
+
+---
+
+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.
+
+---
+
+<p align="center"><i>Uvicorn is <a href="https://github.com/encode/uvicorn/blob/master/LICENSE.md">BSD licensed</a> code.<br/>Designed & crafted with care.</i><br/>&mdash; 🦄  &mdash;</p>
+
+[asgi]: https://asgi.readthedocs.io/en/latest/
+[daphne]: https://github.com/django/daphne
+[hypercorn]: https://github.com/pgjones/hypercorn
+[mangum]: https://mangum.io
+[trio]: https://trio.readthedocs.io
diff --git a/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/RECORD b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/RECORD
new file mode 100644
index 00000000..c2779663
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/RECORD
@@ -0,0 +1,86 @@
+../../../bin/uvicorn,sha256=OdDe6U56hgY3iwsaTouD_a8IPstZiVMMooL4URFe0ag,247

+uvicorn-0.27.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4

+uvicorn-0.27.1.dist-info/METADATA,sha256=XPnBSYwjoHVMAJHEFOEISoQsuHmfgwEQaWpFOdczFGg,6330

+uvicorn-0.27.1.dist-info/RECORD,,

+uvicorn-0.27.1.dist-info/WHEEL,sha256=TJPnKdtrSue7xZ_AVGkp9YXcvDrobsjBds1du3Nx6dc,87

+uvicorn-0.27.1.dist-info/entry_points.txt,sha256=FW1w-hkc9QgwaGoovMvm0ZY73w_NcycWdGAUfDsNGxw,46

+uvicorn-0.27.1.dist-info/licenses/LICENSE.md,sha256=7-Gs8-YvuZwoiw7HPlp3O3Jo70Mg_nV-qZQhTktjw3E,1526

+uvicorn/__init__.py,sha256=yUFNyOURRd8gh7-5bAUAgvYVHlvGosTzD7QtO7fJXuk,147

+uvicorn/__main__.py,sha256=DQizy6nKP0ywhPpnCHgmRDYIMfcqZKVEzNIWQZjqtVQ,62

+uvicorn/__pycache__/__init__.cpython-312.pyc,,

+uvicorn/__pycache__/__main__.cpython-312.pyc,,

+uvicorn/__pycache__/_subprocess.cpython-312.pyc,,

+uvicorn/__pycache__/_types.cpython-312.pyc,,

+uvicorn/__pycache__/config.cpython-312.pyc,,

+uvicorn/__pycache__/importer.cpython-312.pyc,,

+uvicorn/__pycache__/logging.cpython-312.pyc,,

+uvicorn/__pycache__/main.cpython-312.pyc,,

+uvicorn/__pycache__/server.cpython-312.pyc,,

+uvicorn/__pycache__/workers.cpython-312.pyc,,

+uvicorn/_subprocess.py,sha256=qLk4nrhmOV6XgsFyxLSsY0IE1fh76-WmCv_hFyXpVYw,2430

+uvicorn/_types.py,sha256=l-8V0u0ymt1bQ3P1C_YiExeYLeFgUXi0B7JJzPcbLqg,7965

+uvicorn/config.py,sha256=zDPRCu0OE6mbfgVaK7ZyDb5Q_3iUPk3Zr4evO_qcT3E,21150

+uvicorn/importer.py,sha256=rUjBcH3xCBIvuEE7Buq4uWxjAzHPjEfP1dESQyAmPpU,1174

+uvicorn/lifespan/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0

+uvicorn/lifespan/__pycache__/__init__.cpython-312.pyc,,

+uvicorn/lifespan/__pycache__/off.cpython-312.pyc,,

+uvicorn/lifespan/__pycache__/on.cpython-312.pyc,,

+uvicorn/lifespan/off.py,sha256=vzXBbSkw_DmW7y9Kgba7fRWdJFBeJPtnzTnxUuJA8nM,302

+uvicorn/lifespan/on.py,sha256=XzBnwAjJFpO7GRA-sR2gGnnrCHBQH9niA4X-d8EIlyo,5182

+uvicorn/logging.py,sha256=imfUy8LUISa_xnVjKmj2OUEs3qr9FlLR_o4W6Ukja00,4272

+uvicorn/loops/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0

+uvicorn/loops/__pycache__/__init__.cpython-312.pyc,,

+uvicorn/loops/__pycache__/asyncio.cpython-312.pyc,,

+uvicorn/loops/__pycache__/auto.cpython-312.pyc,,

+uvicorn/loops/__pycache__/uvloop.cpython-312.pyc,,

+uvicorn/loops/asyncio.py,sha256=VcornZKJoV8yBYgLON3Gd8YKpUxlLlardxy_LJq_PhE,276

+uvicorn/loops/auto.py,sha256=BWVq18ce9SoFTo3z5zNW2IU2850u2tRrc6WyK7idsdI,400

+uvicorn/loops/uvloop.py,sha256=K4QybYVxtK9C2emDhDPUCkBXR4XMT5Ofv9BPFPoX0ok,148

+uvicorn/main.py,sha256=6y5jCRoP2V4b7jWNEwChExp8bWM0_vROk_u-6Zns68Y,16547

+uvicorn/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0

+uvicorn/middleware/__pycache__/__init__.cpython-312.pyc,,

+uvicorn/middleware/__pycache__/asgi2.cpython-312.pyc,,

+uvicorn/middleware/__pycache__/message_logger.cpython-312.pyc,,

+uvicorn/middleware/__pycache__/proxy_headers.cpython-312.pyc,,

+uvicorn/middleware/__pycache__/wsgi.cpython-312.pyc,,

+uvicorn/middleware/asgi2.py,sha256=U5zg_1wqQMuPGWWs-uJqlUiqhDmluuVf3hYe3J9dC_k,408

+uvicorn/middleware/message_logger.py,sha256=IHEZUSnFNaMFUFdwtZO3AuFATnYcSor-gVtOjbCzt8M,2859

+uvicorn/middleware/proxy_headers.py,sha256=hYZAAXSk5_iMohtMzdO9lQ4kVBZnU950FuLnjvIBZfc,3261

+uvicorn/middleware/wsgi.py,sha256=WZfcPLFRhasc3S6nGL2dSb7Iq_THnrJ1Bdux7zzdjI8,7218

+uvicorn/protocols/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0

+uvicorn/protocols/__pycache__/__init__.cpython-312.pyc,,

+uvicorn/protocols/__pycache__/utils.cpython-312.pyc,,

+uvicorn/protocols/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0

+uvicorn/protocols/http/__pycache__/__init__.cpython-312.pyc,,

+uvicorn/protocols/http/__pycache__/auto.cpython-312.pyc,,

+uvicorn/protocols/http/__pycache__/flow_control.cpython-312.pyc,,

+uvicorn/protocols/http/__pycache__/h11_impl.cpython-312.pyc,,

+uvicorn/protocols/http/__pycache__/httptools_impl.cpython-312.pyc,,

+uvicorn/protocols/http/auto.py,sha256=YfXGyzWTaaE2p_jkTPWrJCXsxEaQnC3NK0-G7Wgmnls,403

+uvicorn/protocols/http/flow_control.py,sha256=4ERvUKBa8Ocsmw-kpRmVkwbEnmuxPmKnOE-NV4mkE2M,1777

+uvicorn/protocols/http/h11_impl.py,sha256=-h3B1PtnT5go_7fIYMa5JJ7FUBS66dwW5FL4cjDrEto,20468

+uvicorn/protocols/http/httptools_impl.py,sha256=tOOFC2JJ6dMrBZdVl8W7nocWzqoK5Rqzl5wVkAnl9-A,21759

+uvicorn/protocols/utils.py,sha256=_LBUBuSiw9HesKilP1vv0-cuQRxZCmm7wHmTUUnp6e8,1875

+uvicorn/protocols/websockets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0

+uvicorn/protocols/websockets/__pycache__/__init__.cpython-312.pyc,,

+uvicorn/protocols/websockets/__pycache__/auto.cpython-312.pyc,,

+uvicorn/protocols/websockets/__pycache__/websockets_impl.cpython-312.pyc,,

+uvicorn/protocols/websockets/__pycache__/wsproto_impl.cpython-312.pyc,,

+uvicorn/protocols/websockets/auto.py,sha256=H7irPeGN2MdHE29hdPKwca9YTA7HaOuWdIxvRuOgRtM,548

+uvicorn/protocols/websockets/websockets_impl.py,sha256=kWlqERmip64SW0OQTQNAb1JfI9q4WwtlF_wmd1zy4bE,15630

+uvicorn/protocols/websockets/wsproto_impl.py,sha256=cvPXdve4lKFoSkbulFzAaSG8btYFOykIwNNqYecHhNk,15521

+uvicorn/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1

+uvicorn/server.py,sha256=Zu-hn8-QbNCOGf2xxfpZ6-Ovx3Eva5-Fn-u2srmq0eg,12247

+uvicorn/supervisors/__init__.py,sha256=YSH0n2BiqyN5m3QaT_QAkS0DkFE2xXHpKDc4ORbh82o,670

+uvicorn/supervisors/__pycache__/__init__.cpython-312.pyc,,

+uvicorn/supervisors/__pycache__/basereload.cpython-312.pyc,,

+uvicorn/supervisors/__pycache__/multiprocess.cpython-312.pyc,,

+uvicorn/supervisors/__pycache__/statreload.cpython-312.pyc,,

+uvicorn/supervisors/__pycache__/watchfilesreload.cpython-312.pyc,,

+uvicorn/supervisors/__pycache__/watchgodreload.cpython-312.pyc,,

+uvicorn/supervisors/basereload.py,sha256=iAXvd_uqku5py9B7uBV-rzqWBJAKV6o4_gyGns9xC2I,3924

+uvicorn/supervisors/multiprocess.py,sha256=EAF31mLkmFm-XHp1JwYZg9ghaCjkWkgD_Vbn_1Mffx0,2246

+uvicorn/supervisors/statreload.py,sha256=XmfYr1iC8XoMUrxxjQnrqQGmBShF0L1Q4n-OPxGVOh8,1588

+uvicorn/supervisors/watchfilesreload.py,sha256=E62mIa-w_SxtuDj9KX4h8ziufRMsYU4PkdCO0asK2zQ,3027

+uvicorn/supervisors/watchgodreload.py,sha256=5gSwqV8boxgrGE1j6uFm1utJaF7CuO0Aw5Q--mInIgY,5638

+uvicorn/workers.py,sha256=XKDxsZ4qrCc3adtWh6wtl3qQlExWPS0EGOsdBOvm1xg,3675

diff --git a/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/WHEEL b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/WHEEL
new file mode 100644
index 00000000..5998f3aa
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/WHEEL
@@ -0,0 +1,4 @@
+Wheel-Version: 1.0
+Generator: hatchling 1.21.1
+Root-Is-Purelib: true
+Tag: py3-none-any
diff --git a/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/entry_points.txt b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/entry_points.txt
new file mode 100644
index 00000000..4b00fcb6
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/entry_points.txt
@@ -0,0 +1,2 @@
+[console_scripts]
+uvicorn = uvicorn.main:main
diff --git a/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/licenses/LICENSE.md b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/licenses/LICENSE.md
new file mode 100644
index 00000000..a6bba145
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/uvicorn-0.27.1.dist-info/licenses/LICENSE.md
@@ -0,0 +1,27 @@
+Copyright © 2017-present, [Encode OSS Ltd](https://www.encode.io/).
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* Neither the name of the copyright holder nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.