Metadata-Version: 2.4
Name: aquilia
Version: 1.0.0
Summary: Async-native Python web framework with flow-first routing
Home-page: https://github.com/axiomchronicles/aquilia
Author: Aquilia Contributors
License: MIT
Project-URL: Homepage, https://github.com/axiomchronicles/aquilia
Project-URL: Documentation, https://github.com/axiomchronicles/aquilia/docs
Project-URL: Repository, https://github.com/axiomchronicles/aquilia
Project-URL: Issues, https://github.com/axiomchronicles/aquilia/issues
Keywords: web,framework,async,asgi,http,api
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: uvicorn>=0.30.0
Requires-Dist: python-dotenv>=1.0.0
Requires-Dist: jinja2>=3.1.0
Requires-Dist: cryptography>=41.0.0
Requires-Dist: argon2-cffi>=23.1.0
Requires-Dist: passlib>=1.7.4
Requires-Dist: aiosqlite>=0.19.0
Provides-Extra: dev
Requires-Dist: pytest>=7.4.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: httpx>=0.24.0; extra == "dev"
Requires-Dist: aiosqlite>=0.19.0; extra == "dev"
Provides-Extra: mlops
Requires-Dist: numpy>=1.24.0; extra == "mlops"
Provides-Extra: mlops-onnx
Requires-Dist: onnxruntime>=1.16.0; extra == "mlops-onnx"
Requires-Dist: onnx>=1.14.0; extra == "mlops-onnx"
Provides-Extra: mlops-torch
Requires-Dist: torch>=2.0.0; extra == "mlops-torch"
Provides-Extra: mlops-s3
Requires-Dist: boto3>=1.28.0; extra == "mlops-s3"
Provides-Extra: mlops-explain
Requires-Dist: shap>=0.42.0; extra == "mlops-explain"
Requires-Dist: lime>=1.0.0; extra == "mlops-explain"
Provides-Extra: mlops-all
Requires-Dist: numpy>=1.24.0; extra == "mlops-all"
Requires-Dist: onnxruntime>=1.16.0; extra == "mlops-all"
Requires-Dist: onnx>=1.14.0; extra == "mlops-all"
Requires-Dist: torch>=2.0.0; extra == "mlops-all"
Requires-Dist: boto3>=1.28.0; extra == "mlops-all"
Requires-Dist: shap>=0.42.0; extra == "mlops-all"
Requires-Dist: lime>=1.0.0; extra == "mlops-all"
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

  Aquilia Logo
  
Aquilia
  
The speed of a microframework. The reliability of an enterprise engine.

  [![Version](https://img.shields.io/badge/version-1.0.0-green.svg)](https://aquilia.tubox.cloud)
  [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
  [![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)

---

**Aquilia** is a Manifest-First, async-native Python framework designed to bridge the gap between developer velocity and production-grade stability. It removes routing and deployment boilerplate, auto-generates infrastructure manifests (Docker/K8s), and comes with built-in MLOps capabilities.

## 🚀 Why Aquilia?

Current frameworks force a trade-off: use a microframework for speed but spend months on infrastructure, or use a "batteries-included" monolith that's hard to scale and deploy. Aquilia changes the game:

- **Manifest-First Architecture**: Your code define its own infrastructure. No more manual Dockerfile or K8s YAML maintenance.
- **Scoped Dependency Injection**: Built-in, enterprise-grade DI that handles complex lifecycles and provides deep observability.
- **Async-Native Core**: Built for modern, high-concurrency workloads from the ground up.
- **Integrated MLOps**: Native support for artifact versioning, lineage tracking, and model deployment.

## 📦 Installation

```bash
pip install aquilia
```

Or use the CLI to initialize a new project:

```bash
aq init my-awesome-app
```

## ⚡ Quick Start

Create a controller in `app/controllers.py`:

```python
from aquilia import Controller, GET, RequestCtx

class HelloWorld(Controller):
    @GET("/")
    async def hello(self, ctx: RequestCtx):
        return {"message": "Hello from Aquilia!"}
```

Register it in your `manifest.py`:

```python
from aquilia import AppManifest, ServiceConfig

class MyManifest(AppManifest):
    name = "main"
    version = "1.0.0"
    controllers = ["app.controllers:HelloWorld"]
```

## 🏛️ Core Pillars

### 1. The Manifest System
The `AppManifest` is the single source of truth for your application's requirements. It declares controllers, services, middleware, and database configurations. Aquilia uses this manifest to auto-generate:
- **Dockerfiles** tailored to your dependencies.
- **Kubernetes Manifests** for production-ready deployments.
- **OpenAPI Documentation** for your APIs.

### 2. Scoped Dependency Injection
Forget globals. Aquilia provides a hierarchical DI system:
- **Singleton**: Service lives for the app lifecycle.
- **App**: Scoped to the module level.
- **Request**: Fresh instance for every incoming HTTP request.

### 3. Integrated MLOps
Aquilia treats machine learning as a first-class citizen:
- **Artifact Registry**: Version and track data/model assets.
- **Lineage Tracing**: Know exactly which code produced which model.
- **Shadow Deployments**: Test new models in production without affecting real traffic.

## 🛠️ Subsystems

Aquilia is composed of several deeply integrated subsystems:
- **Aquilary**: The core registry and manifest loader.
- **Flow**: Typed routing and composable request pipelines.
- **Faults**: Structured error handling with recovery domains.
- **Mail/Cache/Sessions**: Essential services with enterprise interfaces.

## 🌐 Learn More

- **Documentation**: [https://aquilia.tubox.cloud](https://aquilia.tubox.cloud)
- **Architecture Guide**: [Architecture](https://aquilia.tubox.cloud/docs/architecture)
- **Quick Start**: [Get Started](https://aquilia.tubox.cloud/docs/quickstart)

---

Built with ❤️ by the Aquilia Team
