Metadata-Version: 2.4
Name: future-framework
Version: 3.1.0
Summary: ASGI-based framework for web APIs
Author: nicolaipre
License-Expression: MIT
License-File: LICENSE
Requires-Dist: uvicorn>=0.51.0,<0.52.0
Requires-Dist: httpx>=0.28.1,<0.29.0
Requires-Dist: rich>=15.0.0,<16.0.0
Requires-Dist: elasticsearch>=8.15.0,<9.0.0
Requires-Dist: strawberry-graphql>=0.323.0,<0.324.0
Requires-Dist: python-dotenv>=1.2.2,<2.0.0
Requires-Dist: sqlalchemy[asyncio]>=2.0.51,<3.0.0
Requires-Dist: inflection>=0.5.1,<0.6.0
Requires-Dist: pymongo>=4.17.0,<5.0.0
Requires-Dist: aiosqlite>=0.21.0,<0.22.0
Requires-Dist: aiomysql>=0.2.0,<0.3.0
Requires-Dist: asyncpg>=0.30.0,<0.31.0
Requires-Dist: asynch>=0.2.5,<0.3.0
Requires-Dist: clickhouse-driver>=0.2.11,<0.3.0
Requires-Dist: redis>=8.0.0,<9.0.0
Requires-Dist: faker>=40.0.0,<41.0.0
Requires-Python: >=3.12, <4.0
Project-URL: Homepage, https://github.com/nicolaipre/future-framework
Project-URL: Repository, https://github.com/nicolaipre/future-framework
Project-URL: Documentation, https://nicolaipre.github.io/future-framework/
Project-URL: Bug Tracker, https://github.com/nicolaipre/future-framework/issues
Description-Content-Type: text/markdown

# Future
[ASGI](https://asgi.readthedocs.io/)-based framework for web APIs — routing, middleware, Active Record, migrations, seeds, OpenAPI, and interval tasks.

[![Build Status](https://github.com/nicolaipre/future-framework/actions/workflows/ci.yml/badge.svg)](https://github.com/nicolaipre/future-framework/actions)
[![Package Version](https://img.shields.io/pypi/v/future-framework)](https://pypi.org/project/future-framework/)
[![Coverage](https://codecov.io/gh/nicolaipre/future-framework/branch/master/graph/badge.svg)](https://codecov.io/gh/nicolaipre/future-framework)

## Documentation
Published at **[nicolaipre.github.io/future-framework](https://nicolaipre.github.io/future-framework/)**. To preview locally: `uv sync --group docs && uv run mkdocs serve`.

## Install
```bash
uv add future-framework
uv run future init myproject
```

Import name is `future` (`from future.application import Future`).

## Hello
```python
from future.application import Future
from future.interfaces.IController import IController
from future.lifespan import Lifespan
from future.response import Response
from future.routing import Get, RouteGroup

class HomeController(IController):
    async def index(self) -> Response:
        return self.response.json({"ok": True})

app = Future(lifespan=Lifespan([], [], []), config={"APP_DOMAIN": "", "APP_NAME": "Demo"})
app.add_routes([RouteGroup(name="Main", routes=[Get("/", HomeController.index, "home")])])
app.run(host="127.0.0.1", port=8000)
```

## License
See [LICENSE](LICENSE). Versioning: [CHANGELOG.md](CHANGELOG.md).
