| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- Metadata-Version: 2.1
- Name: starlette
- Version: 0.27.0
- 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.7
- 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: Topic :: Internet :: WWW/HTTP
- Requires-Python: >=3.7
- Requires-Dist: anyio<5,>=3.4.0
- Requires-Dist: typing-extensions>=3.10.0; python_version < '3.10'
- Provides-Extra: full
- Requires-Dist: httpx>=0.22.0; extra == 'full'
- Requires-Dist: itsdangerous; extra == 'full'
- Requires-Dist: jinja2; extra == 'full'
- Requires-Dist: python-multipart; extra == 'full'
- Requires-Dist: pyyaml; extra == 'full'
- Description-Content-Type: text/markdown
- <p align="center">
- <a href="https://www.starlette.io/"><img width="420px" src="https://raw.githubusercontent.com/encode/starlette/master/docs/img/starlette.png" alt='starlette'></a>
- </p>
- <p align="center">
- <em>✨ The little ASGI framework that shines. ✨</em>
- </p>
- <p align="center">
- <a href="https://github.com/encode/starlette/actions">
- <img src="https://github.com/encode/starlette/workflows/Test%20Suite/badge.svg" alt="Build Status">
- </a>
- <a href="https://pypi.org/project/starlette/">
- <img src="https://badge.fury.io/py/starlette.svg" alt="Package version">
- </a>
- </p>
- ---
- **Documentation**: [https://www.starlette.io/](https://www.starlette.io/)
- ---
- # 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].
- ## Requirements
- Python 3.7+ (For Python 3.6 support, install version 0.19.1)
- ## Installation
- ```shell
- $ pip3 install starlette
- ```
- You'll also want to install an ASGI server, such as [uvicorn](http://www.uvicorn.org/), [daphne](https://github.com/django/daphne/), or [hypercorn](https://pgjones.gitlab.io/hypercorn/).
- ```shell
- $ pip3 install uvicorn
- ```
- ## Example
- **example.py**:
- ```python
- 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 example:app
- ```
- For a more complete example, see [encode/starlette-example](https://github.com/encode/starlette-example).
- ## 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 `pip3 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://andrew-d.github.io/python-multipart/
- [itsdangerous]: https://pythonhosted.org/itsdangerous/
- [sqlalchemy]: https://www.sqlalchemy.org
- [pyyaml]: https://pyyaml.org/wiki/PyYAMLDocumentation
- [techempower]: https://www.techempower.com/benchmarks/#hw=ph&test=fortune&l=zijzen-sf
|