|
- Metadata-Version: 2.4
- Name: starlette
- Version: 0.47.2
- Summary: The little ASGI library that shines.
- Project-URL: Homepage, https://github.com/encode/starlette
- Project-URL: Documentation, https://www.starlette.io/
- Project-URL: Changelog, https://www.starlette.io/release-notes/
- Project-URL: Funding, https://github.com/sponsors/encode
- Project-URL: Source, https://github.com/encode/starlette
- Author-email: Tom Christie <tom@tomchristie.com>
- License-Expression: BSD-3-Clause
- License-File: LICENSE.md
- Classifier: Development Status :: 3 - Alpha
- Classifier: Environment :: Web Environment
- Classifier: Framework :: AnyIO
- 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.9
- 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: Topic :: Internet :: WWW/HTTP
- Requires-Python: >=3.9
- Requires-Dist: anyio<5,>=3.6.2
- Requires-Dist: typing-extensions>=4.10.0; python_version < '3.13'
- Provides-Extra: full
- Requires-Dist: httpx<0.29.0,>=0.27.0; extra == 'full'
- Requires-Dist: itsdangerous; extra == 'full'
- Requires-Dist: jinja2; extra == 'full'
- Requires-Dist: python-multipart>=0.0.18; extra == 'full'
- Requires-Dist: pyyaml; extra == 'full'
- Description-Content-Type: text/markdown
-
- <p align="center">
- <picture>
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/encode/starlette/master/docs/img/starlette_dark.svg" width="420px">
- <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/encode/starlette/master/docs/img/starlette.svg" width="420px">
- <img alt="starlette-logo" src="https://raw.githubusercontent.com/encode/starlette/master/docs/img/starlette_dark.svg">
- </picture>
- </p>
-
- <p align="center">
- <em>✨ The little ASGI framework that shines. ✨</em>
- </p>
-
- ---
-
- [](https://github.com/encode/starlette/actions)
- [](https://pypi.python.org/pypi/starlette)
- [](https://pypi.org/project/starlette)
-
- ---
-
- **Documentation**: <a href="https://www.starlette.io/" target="_blank">https://www.starlette.io</a>
-
- **Source Code**: <a href="https://github.com/encode/starlette" target="_blank">https://github.com/encode/starlette</a>
-
- ---
-
- # Starlette
-
- Starlette is a lightweight [ASGI][asgi] framework/toolkit,
- which is ideal for building async web services in Python.
-
- It is production-ready, and gives you the following:
-
- * A lightweight, low-complexity HTTP web framework.
- * WebSocket support.
- * In-process background tasks.
- * Startup and shutdown events.
- * Test client built on `httpx`.
- * CORS, GZip, Static Files, Streaming responses.
- * Session and Cookie support.
- * 100% test coverage.
- * 100% type annotated codebase.
- * Few hard dependencies.
- * Compatible with `asyncio` and `trio` backends.
- * Great overall performance [against independent benchmarks][techempower].
-
- ## Installation
-
- ```shell
- $ pip install starlette
- ```
-
- You'll also want to install an ASGI server, such as [uvicorn](https://www.uvicorn.org/), [daphne](https://github.com/django/daphne/), or [hypercorn](https://hypercorn.readthedocs.io/en/latest/).
-
- ```shell
- $ pip install uvicorn
- ```
-
- ## Example
-
- ```python title="main.py"
- from starlette.applications import Starlette
- from starlette.responses import JSONResponse
- from starlette.routing import Route
-
-
- async def homepage(request):
- return JSONResponse({'hello': 'world'})
-
- routes = [
- Route("/", endpoint=homepage)
- ]
-
- app = Starlette(debug=True, routes=routes)
- ```
-
- Then run the application using Uvicorn:
-
- ```shell
- $ uvicorn main:app
- ```
-
- ## Dependencies
-
- Starlette only requires `anyio`, and the following are optional:
-
- * [`httpx`][httpx] - Required if you want to use the `TestClient`.
- * [`jinja2`][jinja2] - Required if you want to use `Jinja2Templates`.
- * [`python-multipart`][python-multipart] - Required if you want to support form parsing, with `request.form()`.
- * [`itsdangerous`][itsdangerous] - Required for `SessionMiddleware` support.
- * [`pyyaml`][pyyaml] - Required for `SchemaGenerator` support.
-
- You can install all of these with `pip install starlette[full]`.
-
- ## Framework or Toolkit
-
- Starlette is designed to be used either as a complete framework, or as
- an ASGI toolkit. You can use any of its components independently.
-
- ```python
- from starlette.responses import PlainTextResponse
-
-
- async def app(scope, receive, send):
- assert scope['type'] == 'http'
- response = PlainTextResponse('Hello, world!')
- await response(scope, receive, send)
- ```
-
- Run the `app` application in `example.py`:
-
- ```shell
- $ uvicorn example:app
- INFO: Started server process [11509]
- INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
- ```
-
- Run uvicorn with `--reload` to enable auto-reloading on code changes.
-
- ## Modularity
-
- The modularity that Starlette is designed on promotes building re-usable
- components that can be shared between any ASGI framework. This should enable
- an ecosystem of shared middleware and mountable applications.
-
- The clean API separation also means it's easier to understand each component
- in isolation.
-
- ---
-
- <p align="center"><i>Starlette is <a href="https://github.com/encode/starlette/blob/master/LICENSE.md">BSD licensed</a> code.<br/>Designed & crafted with care.</i></br>— ⭐️ —</p>
-
- [asgi]: https://asgi.readthedocs.io/en/latest/
- [httpx]: https://www.python-httpx.org/
- [jinja2]: https://jinja.palletsprojects.com/
- [python-multipart]: https://multipart.fastapiexpert.com/
- [itsdangerous]: https://itsdangerous.palletsprojects.com/
- [sqlalchemy]: https://www.sqlalchemy.org
- [pyyaml]: https://pyyaml.org/wiki/PyYAMLDocumentation
- [techempower]: https://www.techempower.com/benchmarks/#hw=ph&test=fortune&l=zijzen-sf
|