💩(summary) init a FastAPI app
Bootsrap a generic FastAPI app to kick-start the microservice.
This commit is contained in:
committed by
aleb_the_flash
parent
0f70b544ed
commit
16bee00eb4
59
src/summary/pyproject.toml
Normal file
59
src/summary/pyproject.toml
Normal file
@@ -0,0 +1,59 @@
|
||||
|
||||
[project]
|
||||
name = "summary"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"fastapi[standard]>=0.105.0",
|
||||
"uvicorn>=0.24.0",
|
||||
"pydantic>=2.5.0",
|
||||
"pydantic-settings>=2.1.0",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = [
|
||||
"ruff==0.7.4",
|
||||
]
|
||||
|
||||
[build-system]
|
||||
requires = ["setuptools>=61.0"]
|
||||
build-backend = "setuptools.build_meta"
|
||||
|
||||
|
||||
[tool.ruff]
|
||||
target-version = "py310"
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = [
|
||||
"B", # flake8-bugbear
|
||||
"C4", # flake8-comprehensions
|
||||
"D", # pydocstyle
|
||||
"E", # pycodestyle error
|
||||
"F", # Pyflakes
|
||||
"I", # Isort
|
||||
"ISC", # flake8-implicit-str-concat
|
||||
"PLC", # Pylint Convention
|
||||
"PLE", # Pylint Error
|
||||
"PLR", # Pylint Refactor
|
||||
"PLW", # Pylint Warning
|
||||
"RUF100", # Ruff unused-noqa
|
||||
"S", # flake8-bandit
|
||||
"T20", # flake8-print
|
||||
"W", # pycodestyle warning
|
||||
]
|
||||
|
||||
[tool.ruff.lint.per-file-ignores]
|
||||
"tests/*" = [
|
||||
"S101", # use of assert
|
||||
]
|
||||
|
||||
[tool.ruff.lint.pydocstyle]
|
||||
# Use Google-style docstrings.
|
||||
convention = "google"
|
||||
|
||||
[tool.ruff.lint.flake8-bugbear]
|
||||
extend-immutable-calls = [
|
||||
"fastapi.Depends",
|
||||
"fastapi.params.Depends",
|
||||
"fastapi.params.Query",
|
||||
"fastapi.Query",
|
||||
]
|
||||
1
src/summary/summary/__init__.py
Normal file
1
src/summary/summary/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
"""Summary package."""
|
||||
10
src/summary/summary/config.py
Normal file
10
src/summary/summary/config.py
Normal file
@@ -0,0 +1,10 @@
|
||||
"""Module for managing application configuration and settings."""
|
||||
|
||||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
"""Configuration settings loaded from environment variables and .env file."""
|
||||
|
||||
app_name: str = "Awesome API"
|
||||
model_config = SettingsConfigDict(env_file=".env")
|
||||
33
src/summary/summary/main.py
Normal file
33
src/summary/summary/main.py
Normal file
@@ -0,0 +1,33 @@
|
||||
"""Application entry point."""
|
||||
|
||||
from functools import lru_cache
|
||||
from typing import Annotated
|
||||
|
||||
from config import Settings
|
||||
from fastapi import Depends, FastAPI
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
|
||||
@lru_cache
|
||||
def get_settings():
|
||||
"""Load and cache application settings."""
|
||||
return Settings()
|
||||
|
||||
|
||||
@app.get("/")
|
||||
async def root(settings: Annotated[Settings, Depends(get_settings)]):
|
||||
"""Root endpoint that returns app name."""
|
||||
return {"message": f"Hello World, using {settings.app_name}"}
|
||||
|
||||
|
||||
@app.get("/__heartbeat__")
|
||||
async def heartbeat():
|
||||
"""Health check endpoint for monitoring."""
|
||||
return {"status": "ok"}
|
||||
|
||||
|
||||
@app.get("/__lbheartbeat__")
|
||||
async def lbheartbeat():
|
||||
"""Health check endpoint for load balancer."""
|
||||
return {"status": "ok"}
|
||||
Reference in New Issue
Block a user