Metadata-Version: 2.1
Name: selva
Version: 0.7.6
Summary: ASGI Web Framework with Dependency Injection
Home-page: https://github.com/livioribeiro/selva
License: MIT
Keywords: asgi,framework,asyncio,web
Author: Livio Ribeiro
Author-email: livioribeiro@outlook.com
Requires-Python: >=3.11,<4.0
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 :: Implementation :: CPython
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Dist: asgikit (>=0.5,<0.6)
Requires-Dist: loguru (>=0.7,<0.8)
Requires-Dist: pydantic (>=2.4,<3.0)
Requires-Dist: python-dotenv (>=1.0.0,<2.0.0)
Requires-Dist: strictyaml (>=1.7,<2.0)
Project-URL: Repository, https://github.com/livioribeiro/selva
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 controller:

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


@controller
class Controller:
    @get
    async def hello(self, 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
```

