docs: add AI code generation requirements and comprehensive Google-style docstrings
- Add AI code generation requirements to AGENTS.md - Add module-level docstrings to all 46 Python modules - Add detailed Google-style docstrings to all classes and functions - Remove all inline comments following self-documenting code principle - Include Args, Returns, Raises sections in function docstrings - Add Attributes and Examples sections to class docstrings
This commit is contained in:
42
app/main.py
42
app/main.py
@@ -1,4 +1,8 @@
|
||||
"""Application entry point with DDD architecture."""
|
||||
"""Application entry point with DDD architecture.
|
||||
|
||||
This module is the main entry point for the FastAPI application.
|
||||
Configures DI container, middleware, and routes following DDD principles.
|
||||
"""
|
||||
|
||||
from collections.abc import AsyncGenerator
|
||||
from contextlib import asynccontextmanager
|
||||
@@ -22,16 +26,29 @@ from app.presentation import router
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(app: FastAPI) -> AsyncGenerator[None]:
|
||||
"""Application lifespan manager."""
|
||||
# Startup
|
||||
"""Application lifespan manager.
|
||||
|
||||
Handles startup and shutdown tasks for the application.
|
||||
|
||||
Args:
|
||||
app: FastAPI application instance.
|
||||
|
||||
Yields:
|
||||
None during application runtime.
|
||||
"""
|
||||
await init_db()
|
||||
yield
|
||||
# Shutdown
|
||||
await close_db()
|
||||
|
||||
|
||||
def app_factory() -> FastAPI:
|
||||
"""Create and configure FastAPI application."""
|
||||
"""Create and configure FastAPI application.
|
||||
|
||||
Sets up DI container, exception handlers, middleware, and routes.
|
||||
|
||||
Returns:
|
||||
Configured FastAPI application instance.
|
||||
"""
|
||||
app = FastAPI(
|
||||
title=settings.app.name,
|
||||
debug=settings.app.debug,
|
||||
@@ -40,7 +57,6 @@ def app_factory() -> FastAPI:
|
||||
redoc_url="/redoc" if settings.is_dev else None,
|
||||
)
|
||||
|
||||
# Setup Dishka DI container
|
||||
container = make_async_container(
|
||||
DatabaseProvider(),
|
||||
RepositoryProvider(),
|
||||
@@ -50,10 +66,8 @@ def app_factory() -> FastAPI:
|
||||
)
|
||||
setup_dishka(container, app)
|
||||
|
||||
# Register exception handlers
|
||||
register_exception_handlers(app)
|
||||
|
||||
# CORS middleware
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
@@ -62,12 +76,15 @@ def app_factory() -> FastAPI:
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
# Include API routes
|
||||
app.include_router(router, prefix="/api")
|
||||
|
||||
# Health check endpoint
|
||||
@app.get("/health", tags=["health"])
|
||||
async def health_check() -> dict[str, str]:
|
||||
"""Health check endpoint.
|
||||
|
||||
Returns:
|
||||
Status information dictionary.
|
||||
"""
|
||||
return {
|
||||
"status": "ok",
|
||||
"app": settings.app.name,
|
||||
@@ -78,7 +95,10 @@ def app_factory() -> FastAPI:
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""Run the application."""
|
||||
"""Run the application.
|
||||
|
||||
Starts uvicorn server with application factory.
|
||||
"""
|
||||
uvicorn.run(
|
||||
app_factory,
|
||||
factory=True,
|
||||
|
||||
Reference in New Issue
Block a user