Metadata-Version: 2.1
Name: selva
Version: 0.19.3
Summary: ASGI Web Framework with Dependency Injection
Keywords: asgi,framework,asyncio,web
Author-Email: Livio Ribeiro <livioribeiro@outlook.com>
License: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.11
Requires-Dist: asgikit~=0.12.1
Requires-Dist: pydantic~=2.10.3
Requires-Dist: python-dotenv~=1.0.1
Requires-Dist: ruamel.yaml~=0.18.6
Requires-Dist: structlog~=24.4.0
Provides-Extra: jinja
Requires-Dist: jinja2~=3.1.4; extra == "jinja"
Provides-Extra: mako
Requires-Dist: mako~=1.3.8; extra == "mako"
Provides-Extra: sqlalchemy
Requires-Dist: SQLAlchemy[asyncio]~=2.0.36; extra == "sqlalchemy"
Provides-Extra: redis
Requires-Dist: redis~=5.2.1; extra == "redis"
Provides-Extra: memcached
Requires-Dist: aiomcache~=0.8.2; extra == "memcached"
Description-Content-Type: text/markdown

# Project Selva

Documentation: https://livioribeiro.github.io/selva/

Selva is a Python ASGI web framework built on top of [asgikit](https://pypi.org/project/asgikit/)
and inspired by Spring Boot, AspNet, FastAPI and Go's net/http.

It features a Dependency Injection system to help build robust and reliable applications.

## Quick start

Install `selva` and `uvicorn` to run application:

```shell
pip install selva uvicorn[standard]
```

Create a module called `application.py`:

```shell
touch application.py
```

Create a handler:

```python
from asgikit.requests import Request
from asgikit.responses import respond_text
from selva.web import get


@get
async def hello(request: Request):
    await respond_text(request.response, "Hello, World!")
```

Run application with `uvicorn` (Selva will automatically load `application.py`):

```shell
uvicorn selva.run:app --reload
```
