Metadata-Version: 2.4
Name: syntaxility-response-manager
Version: 2.0.0
Summary: SyntaxilitY Response Manager for FastAPI, Flask, Django, Machine Learning, Deep Learning and Artificial Intelligence responses, and powerful decorators.
Author-email: Tariq Mehmood <info.syntaxility@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/SyntaxilitY/SyntaxilitY-Response-Manager
Project-URL: Repository, https://github.com/SyntaxilitY/SyntaxilitY-Response-Manager
Project-URL: Documentation, https://github.com/SyntaxilitY/SyntaxilitY-Response-Manager#readme
Project-URL: Bug Tracker, https://github.com/SyntaxilitY/SyntaxilitY-Response-Manager/issues
Keywords: response-manager,fastapi,flask,django,machine-learning,deep-learning,ai,rest-api,api-response,pagination,decorators,syntaxility
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
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 :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Framework :: FastAPI
Classifier: Framework :: Flask
Classifier: Framework :: Django
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic>=2.0.0
Requires-Dist: typing_extensions>=4.0.0
Provides-Extra: fastapi
Requires-Dist: fastapi>=0.100.0; extra == "fastapi"
Requires-Dist: starlette>=0.27.0; extra == "fastapi"
Requires-Dist: uvicorn>=0.20.0; extra == "fastapi"
Provides-Extra: flask
Requires-Dist: flask>=2.3.0; extra == "flask"
Provides-Extra: django
Requires-Dist: django>=4.0.0; extra == "django"
Requires-Dist: djangorestframework>=3.14.0; extra == "django"
Provides-Extra: ml
Requires-Dist: numpy>=1.24.0; extra == "ml"
Provides-Extra: all
Requires-Dist: fastapi>=0.100.0; extra == "all"
Requires-Dist: starlette>=0.27.0; extra == "all"
Requires-Dist: uvicorn>=0.20.0; extra == "all"
Requires-Dist: flask>=2.3.0; extra == "all"
Requires-Dist: django>=4.0.0; extra == "all"
Requires-Dist: djangorestframework>=3.14.0; extra == "all"
Requires-Dist: numpy>=1.24.0; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: httpx>=0.24.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: build>=1.0.0; extra == "dev"
Requires-Dist: twine>=4.0.0; extra == "dev"
Dynamic: license-file

# SyntaxilitY Response Manager

A unified response manager and decorators for **FastAPI**, **Flask**,
**Django**, **Machine Learning**, **Deep Learning**, and **AI inference**
outputs.

---

## Installation

```bash
# FastAPI
pip install syntaxility-response-manager[fastapi]

# Flask
pip install syntaxility-response-manager[flask]

# Django / DRF
pip install syntaxility-response-manager[django]

# ML / NumPy extras
pip install syntaxility-response-manager[ml]

# Everything
pip install syntaxility-response-manager[all]
```

---

## FastAPI Examples

### HTTP 200 OK

```python
from fastapi import FastAPI
from syntaxility_response_manager import SyntaxilitYResponseManager, SyntaxilitYPagination

app = FastAPI()

@app.get("/users", tags=["HTTP"])
def list_users():
    try:
        response = SyntaxilitYPagination.build_pagination_response(
            metadata=[],
            total=1,
            page=1,
            limit=10,
        )
        return SyntaxilitYResponseManager.HTTP_200_OK(
            data=response,
            message="Users fetched successfully",
        )
    except Exception as e:
        return SyntaxilitYResponseManager.HTTP_500_INTERNAL_SERVER_ERROR(
            message=str(e)
        )
```

### HTTP 201 Created with `@TryCatch`

```python
from syntaxility_response_manager import SyntaxilitYResponseManager, TryCatch

@app.post("/users", tags=["HTTP"])
@TryCatch
def create_user():
    return SyntaxilitYResponseManager.HTTP_201_CREATED(
        data={"id": 1, "name": "Alice"},
        message="User created successfully",
    )
```

---

## Flask Examples

```python
from flask import Flask
from syntaxility_response_manager import SyntaxilitYResponseManager, TryCatch

app = Flask(__name__)

@app.route("/users")
@TryCatch
def list_users():
    return SyntaxilitYResponseManager.HTTP_200_OK(
        data={"users": []},
        message="Users fetched",
    )
```

---

## Django Examples

```python
# views.py
from syntaxility_response_manager import SyntaxilitYResponseManager, TryCatch

@TryCatch
def list_users(request):
    return SyntaxilitYResponseManager.HTTP_200_OK(
        data={"users": []},
        message="Users fetched",
    )
```

---

## ML / AI Examples

### Paginated ML Inference

```python
from fastapi import FastAPI, Query
from syntaxility_response_manager import SyntaxilitYResponseManager, SyntaxilitYPagination

app  = FastAPI()
data = [
    {"input": [1, 2],  "prediction": 0},
    {"input": [3, 4],  "prediction": 1},
    {"input": [5, 6],  "prediction": 1},
    {"input": [7, 8],  "prediction": 0},
    {"input": [9, 10], "prediction": 1},
]

@app.post("/predict", tags=["ML"])
def predict(page: int = Query(1, ge=1), limit: int = Query(2, ge=1)):
    params  = SyntaxilitYPagination.get_pagination_params(
        {"page": page, "limit": limit}
    )
    page, limit, skip = params["page"], params["limit"], params["skip"]
    batch  = data[skip: skip + limit]
    paging = SyntaxilitYPagination.build_pagination_response(
        metadata={}, total=len(data), page=page, limit=limit
    )
    return SyntaxilitYResponseManager.ML_INFERENCE_OK(
        predictions=batch,
        metadata={"model": "clf_v1", "version": "1.0", "pagination": paging["pagination"]},
        message="Paginated inference results",
    )
```

### ML Error Responses

```python
SyntaxilitYResponseManager.ML_INFERENCE_FAILED(message="GPU OOM")
SyntaxilitYResponseManager.ML_INFERENCE_PARTIAL(predictions=[0, None, 1])
SyntaxilitYResponseManager.ML_MODEL_NOT_FOUND(message="Model 'clf_v3' not found")
SyntaxilitYResponseManager.ML_INVALID_INPUT(message="Expected shape (N, 4), got (N, 3)")
```

---

## Using Individual Services Directly

```python
from syntaxility_response_manager.services import (
    FastAPIResponseService,
    FlaskResponseService,
    DjangoResponseService,
    MLResponseService,
)

# FastAPI
fastapi_svc = FastAPIResponseService()
fastapi_svc.HTTP_200_OK(data={...})

# Flask
flask_svc = FlaskResponseService()
flask_svc.HTTP_404_NOT_FOUND(message="Item not found")

# Django
django_svc = DjangoResponseService()
django_svc.HTTP_201_CREATED(data={...})

# ML
ml_svc = MLResponseService()
ml_svc.ML_INFERENCE_OK(predictions=[0, 1, 1])
```

---

## License

MIT — Copyright © 2026 SyntaxilitY

**Developer:** Tariq Mehmood  
**GitHub:** [SyntaxilitY](https://github.com/SyntaxilitY/SyntaxilitY-Response-Manager)  
**LinkedIn:** [Tariq Mehmood](https://www.linkedin.com/in/tariq-mehmood-3ab013254/)
